Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

netem: Routine to parse QUIC Client Initial packets #2480

Open
1 of 3 tasks
kelmenhorst opened this issue May 23, 2023 · 0 comments
Open
1 of 3 tasks

netem: Routine to parse QUIC Client Initial packets #2480

kelmenhorst opened this issue May 23, 2023 · 0 comments
Assignees

Comments

@kelmenhorst
Copy link
Collaborator

netem should be able to parse QUIC Client Initials, in particular the TLS Client Hello contained in the Initial packet.
Background: QUIC Initial packets are protected by AEAD using initial (known!) keys. This Initial protection "exists to ensure that the sender of the packet is on the network path" (RFC 9000).

Such a parser is useful for netem because it will allow us to emulate packet filters, middleboxes, that inspect and filter based on Client Hello and QUIC header fields. Consequently, we can better test probe-cli's QUIC-based experiments using netemx.

We consider this issue finished, once the following tasks are resolved:

  • Implement a parser and decryption routine for QUIC Client Initials and QUIC CRYPTO frames, as described in RFC 9001. To parse the content of the TLS Client Hello, we can leverage the existing routine implemented in netem/tlsparse.go
  • Decide whether this parser should be extended to parse other QUIC packets, and/or other QUIC frame types as well, or whether we should stick to this specialized functionality (do we need to parse other QUIC packets/frames to extend netem?)
  • Implement unit tests using real QUIC Initial packets to ensure that the parser works.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant