-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
add support for providing a custom Connection ID generator via Config #3452
add support for providing a custom Connection ID generator via Config #3452
Conversation
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
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.
Is this PR sufficient so that one could implement QUIC-LB using this config option?
Codecov ReportBase: 85.69% // Head: 85.57% // Decreases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## master #3452 +/- ##
==========================================
- Coverage 85.69% 85.57% -0.12%
==========================================
Files 136 137 +1
Lines 9992 10016 +24
==========================================
+ Hits 8562 8571 +9
- Misses 1052 1067 +15
Partials 378 378
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
ba25d23
to
56645dc
Compare
This PR doesn't make any assumption on the scheme used for the ConnectionIDs, so yes, from my understanding of that draft, one could provide a custom generator to the Config that follows the QUIC LB connection ID scheme. |
I have updated the PR with more doc and the suggested improvements. |
@marten-seemann is this good to go, or do you want to address anything extra? |
Sorry for the long delay! If I understand correctly, a
Just to help me understand, can you explain a bit more about your use case? |
So, in my opinion, unless there is a valid use-case, making that change would require changing other parts of the code unrelated to this feature. At least as far as my understanding of the code goes.
For instance, in our use-case, our format doesn't do that.
Basically we have a datacenter with servers using the same IP (anycast). So connections from clients have as dstIP the same anycast IP. Le me know if you need more details. If not, I can add the extra documentation on the connection id len assumption. |
Thank you for your explanation, that makes a lot of sense to me.
Indeed, one would need to call the generator when parsing packet headers. I'm ok with not implementing this (we can still add it later, when somebody makes a compelling case), as long as we're really clear about the API contract of the generator. So yes, a clarification of the documentation there would be appreciated. |
b218ee4
to
4174adf
Compare
This work makes it possible for servers or clients to control how ConnectionIDs are generated, which in turn will force peers in the connection to use those ConnectionIDs as destination connection IDs when sending packets. This is useful for scenarios where we want to perform some kind selection on the QUIC packets at the L4 level.
4174adf
to
0bc50d9
Compare
Thanks. Done, updated doc to be more clear. Also, rebased with master. |
@joliveirinha The linter is unhappy. Can you please fix? |
I was trying to add an integration test to this PR, but I don't permissions to push to the branch. Maybe you could apply this commit: 6522274? |
@marten-seemann done. |
@joliveirinha The linter is still unhappy with the PR. |
you are right. missed that! should be fine now. |
@joliveirinha The linter is still unhappy :( |
f694d77
to
ddee101
Compare
No problem. I think now it is ok :) maybe we should have a makefile that runs these tests locally. |
Unfortunately, it's not that easy. The CI config specifies a certain version of golangci-lint, and test failure will depend on that. Would be great if there was a way to run a GitHub Actions workflow locally, but as far as I know GitHub doesn't provide an easy way to do that. |
This work makes it possible for servers or clients to control how
ConnectionIDs are generated, which in turn will force peers in the
connection to use those ConnectionIDs as destination connection IDs when sending packets.
This is useful for scenarios where we want to perform some kind
selection on the QUIC packets at the L4 level.