-
Notifications
You must be signed in to change notification settings - Fork 5.2k
http3: prepare for HTTP Datagrams support #25925
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
http3: prepare for HTTP Datagrams support #25925
Conversation
CapsuleProtocolHandler decodes received HTTP/3 Datagrams into Capsules, and encodes Capsules into HTTP/3 Datagrams. This commit does not change the behavior of Envoy. See the comments in EnvoyQuicClientSession and EnvoyQuicServerSession classes for more details. Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
|
/assign @DavidSchinazi Hi David, can you review the commit in this PR? I left a few questions you could answer in some TODOs. |
|
Exciting! I'll let @DavidSchinazi do first pas. |
|
Thanks for pointing it out, Ryan. I will fix the clang-tidy errors as well as the msan/asan ones. |
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
DavidSchinazi
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this! First pass complete
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
|
/wait on CI (though you can ping David if you think it's ready for another review pass) |
|
Thanks for the reminder, Alyssa. David will take a look at it soon. I will fix the CI errors in the meantime. |
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
DavidSchinazi
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice progress!
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
|
/wait on CI |
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
|
/wait on CI |
|
@jeongseokson GitHub UI/Usability is kinda terrible. But if you reply to comments from the "Files Changed" view instead of the "Conversation" view, you can do "Start Review" in which case all of your comments will be sent in a single email instead of one email per comment. Just FYI |
|
@RyanTheOptimist Ah! I didn't know that. Thanks for the information, Ryan. |
Sure thing! It's completely undiscoverable. sigh I'm glad we have GitHub but sometimes I find it really annoying. |
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
RyanTheOptimist
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great. Just a few small comments.
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
RyanTheOptimist
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me! @alyssawilk to give this a final review.
|
/retest |
|
Retrying Azure Pipelines: |
|
@mattklein123 you Ok with datagram support 1) being added and 2) being treated like HTTP/3 and getting google-only sign off rather than requiring cross-company LGTMs? |
alyssawilk
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great overall, just a few final comments
/wait
mobile/.bazelrc
Outdated
| build --define envoy_mobile_listener=disabled | ||
| build --define=library_autolink=disabled | ||
| build --define=envoy_mobile_swift_cxx_interop=enabled | ||
| build --define=envoy_enable_http_datagram=disabled |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cc @RenjieTang we'll want to do this for android/iOS when this is imported
Sure SGTM! |
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
|
/retest |
|
Retrying Azure Pipelines: |
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
Signed-off-by: Jeongseok Son <jeongseok.son@gmail.com>
jeongseokson
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the comments, Alyssa. Please take a look at the commits and let me know if you have any further comments.
|
/retest |
|
Retrying Azure Pipelines: |
alyssawilk
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah thanks for the rename and with one more offline round wiht Ryan on multiple headers I've got no objections. I'll defer to him for merge :-)
RyanTheOptimist
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! Thanks for doing this!
Commit Message:
This commit prepares Envoy for HTTP Datagrams and the Capsule Protocol (RFC 9297) support. The added CapsuleProtocolHandler is used to decode received HTTP/3 Datagrams into Capsules, and encode Capsules into HTTP/3 Datagrams in the EnvoyQuicClientStream and EnvoyQuicServerStream.
This commit does not enable HTTP Datagrams support in Envoy, so it does not change the behavior of Envoy under any circumstances. A subsequent CL will enable the feature with CONNECT-UDP support.
Additional Description:
Risk Level: Low. The current commit does not change the behavior of Envoy.
Testing: unit tests
Docs Changes: N/A
Release Notes: Add a build feature
envoy_http_datagramsto allow disabling HTTP Datagram support.