feat: accept connection ID validation in amplificationlimit test#442
Open
larseggert wants to merge 2 commits intoquic-interop:masterfrom
Open
feat: accept connection ID validation in amplificationlimit test#442larseggert wants to merge 2 commits intoquic-interop:masterfrom
amplificationlimit test#442larseggert wants to merge 2 commits intoquic-interop:masterfrom
Conversation
amplificationlimit test
Contributor
Author
|
@marten-seemann ping? |
The amplificationlimit test failure criteria implemented by this code was too narrow. RFC 9000 Section 8.1 paragraph 2 (https://datatracker.ietf.org/doc/html/rfc9000#section-8.1-2) contains an additional criterion for when it's safe to stop applying the amplification limit. The interop runner should permit that exit criterion and mark the test as passed. The RFC states: "Additionally, an endpoint MAY consider the peer address validated if the peer uses a connection ID chosen by the endpoint and the connection ID contains at least 64 bits of entropy." Updated `TestCaseAmplificationLimit.check()` in `testcases.py` to accept both RFC 9000 Section 8.1 exit criteria: 1. **Original criterion**: Server receives a Handshake packet from the client (existing behavior) 2. **New criterion**: Client uses a server-chosen connection ID with ≥64 bits of entropy - Added tracking of server-chosen connection IDs from Initial packets (lines 830-841) - Filter SCIDs to only include those with at least 8 bytes (64 bits) of entropy - Added validation check in packet processing loop (lines 864-876) - When client Initial packet uses a matching server-chosen CID, mark address as validated - Includes debug logging for visibility into which criterion triggered success - More accurate RFC 9000 compliance testing - Accepts valid server implementations that use connection ID-based address validation - Reduces false negatives in interoperability testing
e27136a to
1deadb8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat: accept connection ID validation in amplificationlimit test
Context
The amplificationlimit test failure criteria implemented by this code was too narrow.
RFC 9000 Section 8.1 paragraph 2 (https://datatracker.ietf.org/doc/html/rfc9000#section-8.1-2)
contains an additional criterion for when it's safe to stop applying the amplification limit.
The interop runner should permit that exit criterion and mark the test as passed.
The RFC states: "Additionally, an endpoint MAY consider the peer address validated if the
peer uses a connection ID chosen by the endpoint and the connection ID contains at least
64 bits of entropy."
Changes
Updated
TestCaseAmplificationLimit.check()intestcases.pyto accept both RFC 9000Section 8.1 exit criteria:
Implementation
Benefits
Note
Accept server-chosen connection ID validation with ≥64-bit entropy in
TestCaseAmplificationLimit.get_paths_rawfor theamplificationlimittest in testcases_quic.pyTrack server Initial
scidvalues with ≥16 hex chars, record them in a set, and mark the test as succeeded when a client Initialdcidmatches, exiting early.📍Where to Start
Start in
TestCaseAmplificationLimit.get_paths_rawin testcases_quic.py.Macroscope summarized 1deadb8.