-
Notifications
You must be signed in to change notification settings - Fork 126
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: Don't encode large RTT guesses in tickets #2114
Conversation
Because under lossy conditions (e.g., QNS `handshakeloss` test), the guess can be multiple times the actual RTT, which when encoded in the resumption ticket will cause an extremely slow second handshake, often causing the test to time out. Broken out of mozilla#1998 Fixes mozilla#2088
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
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2114 +/- ##
=======================================
Coverage 95.35% 95.35%
=======================================
Files 112 112
Lines 36316 36334 +18
=======================================
+ Hits 34628 34647 +19
+ Misses 1688 1687 -1 ☔ View full report in Codecov by Sentry. |
Benchmark resultscoalesce_acked_from_zero 1+1 entries:time: [99.188 ns 99.537 ns 99.890 ns] Found 13 outliers among 100 measurements (13.00%) 10 (10.00%) high mild 3 (3.00%) high severe coalesce_acked_from_zero 3+1 entries:time: [116.94 ns 117.30 ns 117.68 ns] Found 15 outliers among 100 measurements (15.00%) 3 (3.00%) low mild 12 (12.00%) high severe coalesce_acked_from_zero 10+1 entries:time: [116.54 ns 117.73 ns 119.75 ns] Found 14 outliers among 100 measurements (14.00%) 4 (4.00%) low severe 1 (1.00%) low mild 2 (2.00%) high mild 7 (7.00%) high severe coalesce_acked_from_zero 1000+1 entries:time: [97.464 ns 97.579 ns 97.710 ns] Found 15 outliers among 100 measurements (15.00%) 9 (9.00%) high mild 6 (6.00%) high severe RxStreamOrderer::inbound_frame():time: [110.92 ms 111.06 ms 111.28 ms] Found 8 outliers among 100 measurements (8.00%) 7 (7.00%) low mild 1 (1.00%) high severe transfer/pacing-false/varying-seeds:time: [26.854 ms 27.948 ms 29.038 ms] Found 1 outliers among 100 measurements (1.00%) 1 (1.00%) low mild transfer/pacing-true/varying-seeds:time: [33.862 ms 35.583 ms 37.332 ms] Found 2 outliers among 100 measurements (2.00%) 2 (2.00%) high mild transfer/pacing-false/same-seed:time: [32.313 ms 33.059 ms 33.798 ms] transfer/pacing-true/same-seed:time: [40.343 ms 42.721 ms 45.125 ms] 1-conn/1-100mb-resp (aka. Download)/client:time: [114.10 ms 114.42 ms 114.74 ms] thrpt: [871.52 MiB/s 873.96 MiB/s 876.43 MiB/s] Found 1 outliers among 100 measurements (1.00%) 1 (1.00%) low mild 1-conn/10_000-parallel-1b-resp (aka. RPS)/client:time: [313.76 ms 317.20 ms 320.61 ms] thrpt: [31.190 Kelem/s 31.525 Kelem/s 31.871 Kelem/s] Found 1 outliers among 100 measurements (1.00%) 1 (1.00%) low mild 1-conn/1-1b-resp (aka. HPS)/client:time: [33.876 ms 34.118 ms 34.381 ms] thrpt: [29.086 elem/s 29.310 elem/s 29.520 elem/s] Found 9 outliers among 100 measurements (9.00%) 6 (6.00%) high mild 3 (3.00%) high severe Client/server transfer resultsTransfer of 33554432 bytes over loopback.
|
This needs more work. I thought the code here neqo/neqo-transport/src/path.rs Lines 971 to 990 in 75372c2
was an optimization, but the idle_timeout_crazy_rtt test hangs when I remove it.
@martinthomson do you remember why this was put in? This kind of RTT guessing isn't using packet number and so becomes very wrong very quickly when there is loss. |
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 elaborate test!
Because under lossy conditions (e.g., QNS
handshakeloss
test), the guess can be multiple times the actual RTT, which when encoded in the resumption ticket will cause an extremely slow second handshake, often causing the test to time out.Broken out of #1998
Fixes #2088