Add support for multi-process port sharing with CIBIR.#5798
Add support for multi-process port sharing with CIBIR.#5798ProjectsByJackHe wants to merge 15 commits intomainfrom
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5798 +/- ##
==========================================
- Coverage 85.99% 85.66% -0.34%
==========================================
Files 60 60
Lines 18729 18740 +11
==========================================
- Hits 16106 16053 -53
- Misses 2623 2687 +64 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
guhetier
left a comment
There was a problem hiding this comment.
In general, I am concerned that we keep adding incremental exceptions to the port reservation logic to solve the next issue, but without having a clear design goal.
This code will be hard to maintain and confusing for apps as there is no simple rule about what can be done with ports.
I think we need to take the time soon to come up with a clear story about when can port be shared and when they can't + document it + check we implement it.
I agree. I added a CIBIR.md. |
please see the updated XDP.md and CIBIR.md |
|
Maybe we should actually go through the rest of the standardization process for https://datatracker.ietf.org/doc/draft-banks-quic-cibir/ since you're still using it.... |
Do you have more context about it? I am interested in understanding whether we should work on standardizing CIBIR or if another solution was adopted by other deployments that we should align with. |
I know of no other solution/proposal that achieves what CIBIR does. We can chat more on Discord about the process. |
Description
Fixes #5795
The XDP datapath can be configured to intercept packets based on QUIC Connection ID instead of local port.
This behavior existed in MsQuic but was not heavily exercised until recently.
One issue was that MsQuic always attempted to reserve UDP / TCP sockets for each application server process.
But for multiple server processes that may want to share a single port, we would run into port collision errors.
This PR adds support for CIBIR across multiple processes on the same port and document the behavior
Testing
A new DataPathTest was added.
Documentation
Settings.md