Skip to content
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: Add confirmed parameter to PTO calculation #2127

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

larseggert
Copy link
Collaborator

@larseggert larseggert commented Sep 18, 2024

Rather than having the caller determine for which space a PTO should be calculated for.

Also arm PTOs in the application packet number space before the handshake is complete, so 0-RTT gets RTX'ed.

Broken out of #1998

Rather than having the caller determine for which space a PTO should be calculated for.

Broken out of mozilla#1998

I'm ambivalent if we want this change - thoughts?
Copy link

codecov bot commented Sep 18, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Please upload report for BASE (main@d6279bf). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2127   +/-   ##
=======================================
  Coverage        ?   95.35%           
=======================================
  Files           ?      112           
  Lines           ?    36344           
  Branches        ?        0           
=======================================
  Hits            ?    34657           
  Misses          ?     1687           
  Partials        ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

github-actions bot commented Sep 18, 2024

Benchmark results

Performance differences relative to d6279bf.

coalesce_acked_from_zero 1+1 entries: No change in performance detected.
       time:   [99.131 ns 99.389 ns 99.656 ns]
       change: [-0.6464% -0.1009% +0.4813%] (p = 0.75 > 0.05)

Found 9 outliers among 100 measurements (9.00%)
5 (5.00%) high mild
4 (4.00%) high severe

coalesce_acked_from_zero 3+1 entries: No change in performance detected.
       time:   [117.02 ns 117.38 ns 117.76 ns]
       change: [-0.7137% +0.0365% +1.0553%] (p = 0.94 > 0.05)

Found 17 outliers among 100 measurements (17.00%)
3 (3.00%) low mild
3 (3.00%) high mild
11 (11.00%) high severe

coalesce_acked_from_zero 10+1 entries: No change in performance detected.
       time:   [116.81 ns 117.36 ns 118.00 ns]
       change: [-0.9475% -0.2742% +0.3536%] (p = 0.43 > 0.05)

Found 16 outliers among 100 measurements (16.00%)
4 (4.00%) low severe
2 (2.00%) low mild
10 (10.00%) high severe

coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [97.394 ns 97.547 ns 97.714 ns]
       change: [-0.5211% +0.4304% +1.4109%] (p = 0.41 > 0.05)

Found 7 outliers among 100 measurements (7.00%)
3 (3.00%) high mild
4 (4.00%) high severe

RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [110.88 ms 110.92 ms 110.95 ms]
       change: [-0.2485% -0.1930% -0.1333%] (p = 0.00 < 0.05)

Found 5 outliers among 100 measurements (5.00%)
2 (2.00%) low mild
2 (2.00%) high mild
1 (1.00%) high severe

transfer/pacing-false/varying-seeds: Change within noise threshold.
       time:   [25.351 ms 26.393 ms 27.432 ms]
       change: [-11.686% -6.1750% -0.4850%] (p = 0.04 < 0.05)

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mild

transfer/pacing-true/varying-seeds: No change in performance detected.
       time:   [34.734 ms 36.221 ms 37.699 ms]
       change: [-7.3691% -1.2320% +5.5718%] (p = 0.72 > 0.05)
transfer/pacing-false/same-seed: No change in performance detected.
       time:   [25.291 ms 26.061 ms 26.834 ms]
       change: [-4.9918% -0.8113% +3.4423%] (p = 0.71 > 0.05)
transfer/pacing-true/same-seed: No change in performance detected.
       time:   [39.871 ms 41.999 ms 44.216 ms]
       change: [-9.1223% -2.5982% +4.2685%] (p = 0.45 > 0.05)

Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild

1-conn/1-100mb-resp (aka. Download)/client: Change within noise threshold.
       time:   [115.27 ms 115.82 ms 116.37 ms]
       thrpt:  [859.32 MiB/s 863.37 MiB/s 867.50 MiB/s]
change:
       time:   [+0.6663% +1.2356% +1.8143%] (p = 0.00 < 0.05)
       thrpt:  [-1.7819% -1.2205% -0.6619%]

Found 7 outliers among 100 measurements (7.00%)
6 (6.00%) low mild
1 (1.00%) high severe

1-conn/10_000-parallel-1b-resp (aka. RPS)/client: No change in performance detected.
       time:   [315.87 ms 319.52 ms 323.15 ms]
       thrpt:  [30.946 Kelem/s 31.297 Kelem/s 31.659 Kelem/s]
change:
       time:   [-1.3445% +0.1907% +1.7889%] (p = 0.82 > 0.05)
       thrpt:  [-1.7575% -0.1903% +1.3628%]

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mild

1-conn/1-1b-resp (aka. HPS)/client: Change within noise threshold.
       time:   [33.728 ms 33.939 ms 34.170 ms]
       thrpt:  [29.266  elem/s 29.464  elem/s 29.649  elem/s]
change:
       time:   [-1.9671% -1.0531% -0.1525%] (p = 0.02 < 0.05)
       thrpt:  [+0.1528% +1.0643% +2.0066%]

Found 12 outliers among 100 measurements (12.00%)
5 (5.00%) low mild
7 (7.00%) high severe

Client/server transfer results

Transfer of 33554432 bytes over loopback.

Client Server CC Pacing Mean [ms] Min [ms] Max [ms] Relative
msquic msquic 192.4 ± 112.3 102.5 545.7 1.00
neqo msquic reno on 273.2 ± 93.0 209.0 435.1 1.00
neqo msquic reno 210.9 ± 8.0 201.8 228.0 1.00
neqo msquic cubic on 276.5 ± 88.5 214.2 454.7 1.00
neqo msquic cubic 277.9 ± 123.0 207.0 557.4 1.00
msquic neqo reno on 128.0 ± 88.8 78.1 378.0 1.00
msquic neqo reno 167.9 ± 95.3 93.5 333.1 1.00
msquic neqo cubic on 92.2 ± 20.5 83.2 168.9 1.00
msquic neqo cubic 128.8 ± 85.2 81.5 335.7 1.00
neqo neqo reno on 212.0 ± 80.8 138.4 389.8 1.00
neqo neqo reno 152.3 ± 38.3 126.4 299.5 1.00
neqo neqo cubic on 234.6 ± 112.5 127.8 512.5 1.00
neqo neqo cubic 263.8 ± 147.7 141.4 637.5 1.00

⬇️ Download logs

Copy link

github-actions bot commented Sep 18, 2024

Failed Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

Copy link

Firefox builds for this PR

The following builds are available for testing. Crossed-out builds did not succeed.

Copy link
Collaborator

@mxinden mxinden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes make sense to me. Only one question related to tests.

Comment on lines +967 to +968
const TEST_RTT: Duration = ms(7000);
const TEST_RTTVAR: Duration = ms(3500);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why these particular values? And why do they need to be that high?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They came out of a discussion with @martinthomson at the Vancouver IETF

@larseggert
Copy link
Collaborator Author

@martinthomson I'd appreciate a review, since the code I am touching is pretty complex.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants