-
Notifications
You must be signed in to change notification settings - Fork 123
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
fix: Resend stream data on ZeroRttRejected
#2062
Conversation
This is currently failing.
Signed-off-by: Lars Eggert <[email protected]>
Failed Interop TestsQUIC Interop Runner, client vs. server neqo-latest as client
neqo-latest as server
All resultsSucceeded Interop TestsQUIC Interop Runner, client vs. server neqo-latest as client
neqo-latest as server
Unsupported Interop TestsQUIC Interop Runner, client vs. server neqo-latest as client
neqo-latest as server
|
As far as I can tell, this is required by RFC 9001 @larseggert:
|
Right. But at least I understood "reset the state of all streams" to mean "reset what you think has been sent/acked on each stream" and not "make it so the streams never existed". If what we do is correct, we need the client to correctly handle this, i.e., manually RTX that data wherever we are currently logging |
Look OK, @mxinden? Let's see what the CI says.
This fix to the client isn't causing any RTX of the rejected 0-RTT stream data. Search for |
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.
Keep in mind that a rejection of 0-RTT could be due to a reduction in the number of streams that you are allowed to create. You can't just rewind, you have to start over completely.
ZeroRttRejected
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2062 +/- ##
==========================================
- Coverage 95.35% 95.32% -0.04%
==========================================
Files 112 112
Lines 36505 36505
==========================================
- Hits 34811 34797 -14
- Misses 1694 1708 +14 ☔ View full report in Codecov by Sentry. |
Benchmark resultsPerformance differences relative to 836ffc6. coalesce_acked_from_zero 1+1 entries: No change in performance detected.time: [98.674 ns 98.941 ns 99.218 ns] change: [-1.2969% -0.4584% +0.1898%] (p = 0.26 > 0.05) coalesce_acked_from_zero 3+1 entries: No change in performance detected.time: [116.77 ns 117.03 ns 117.32 ns] change: [-1.5219% -0.3367% +0.5575%] (p = 0.59 > 0.05) coalesce_acked_from_zero 10+1 entries: No change in performance detected.time: [116.59 ns 117.06 ns 117.63 ns] change: [-0.5935% +0.0176% +0.6404%] (p = 0.96 > 0.05) coalesce_acked_from_zero 1000+1 entries: No change in performance detected.time: [97.542 ns 97.730 ns 97.973 ns] change: [-0.2295% +0.4837% +1.1881%] (p = 0.19 > 0.05) RxStreamOrderer::inbound_frame(): Change within noise threshold.time: [111.36 ms 111.42 ms 111.48 ms] change: [+0.1193% +0.1904% +0.2645%] (p = 0.00 < 0.05) transfer/pacing-false/varying-seeds: No change in performance detected.time: [26.190 ms 27.354 ms 28.531 ms] change: [-10.821% -5.4934% +0.3695%] (p = 0.06 > 0.05) transfer/pacing-true/varying-seeds: No change in performance detected.time: [36.566 ms 38.312 ms 40.051 ms] change: [-7.3887% -1.3559% +5.1352%] (p = 0.68 > 0.05) transfer/pacing-false/same-seed: No change in performance detected.time: [32.760 ms 33.495 ms 34.214 ms] change: [-5.0436% -2.1540% +0.9448%] (p = 0.18 > 0.05) transfer/pacing-true/same-seed: Change within noise threshold.time: [40.954 ms 43.649 ms 46.314 ms] change: [-16.419% -8.7932% -1.4414%] (p = 0.03 < 0.05) 1-conn/1-100mb-resp (aka. Download)/client: Change within noise threshold.time: [114.03 ms 114.40 ms 114.76 ms] thrpt: [871.39 MiB/s 874.12 MiB/s 876.95 MiB/s] change: time: [-1.6153% -1.1535% -0.6610%] (p = 0.00 < 0.05) thrpt: [+0.6654% +1.1670% +1.6418%] 1-conn/10_000-parallel-1b-resp (aka. RPS)/client: No change in performance detected.time: [308.73 ms 312.41 ms 316.17 ms] thrpt: [31.629 Kelem/s 32.010 Kelem/s 32.391 Kelem/s] change: time: [-1.3711% +0.2503% +1.8516%] (p = 0.76 > 0.05) thrpt: [-1.8179% -0.2497% +1.3901%] 1-conn/1-1b-resp (aka. HPS)/client: No change in performance detected.time: [40.308 ms 41.010 ms 41.696 ms] thrpt: [23.983 elem/s 24.384 elem/s 24.809 elem/s] change: time: [-2.3273% +0.0196% +2.3971%] (p = 0.99 > 0.05) thrpt: [-2.3410% -0.0196% +2.3827%] Client/server transfer resultsTransfer of 33554432 bytes over loopback.
|
I think this is good to go. I see no more (There are still some on the interop runner, because quic-interop/quic-network-simulator#133 is not merged (my local copy has it). With this (and the QNS patch), hopefully there are fewer spurious QNS failures so we can determine if #1998 is good to go, too. |
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.
Change looks good to me. Thank you for the debugging work!
Make the neqo client re-initiate 0-RTT requests that were rejected by the server.