Skip to content

Rename the datagram high water mark to max buffered datagrams - #4036

Open
jesup wants to merge 1 commit into
mainfrom
users/jesup/rename_max_buffered_datagrams
Open

jesup wants to merge 1 commit into
mainfrom
users/jesup/rename_max_buffered_datagrams

Conversation

@jesup

@jesup jesup commented Oct 2, 2026

Copy link
Copy Markdown
Member

No description provided.

The WebTransport spec replaced outgoingHighWaterMark with
outgoingMaxBufferedDatagrams.  Follow it: DatagramQueue::set_high_water_mark
and Connection::set_datagram_high_water_mark become
set_max_buffered_datagrams, and DatagramQueueOutcome::AboveWatermark becomes
MaxBufferedReached.
Copilot AI balanced review requested due to automatic review settings October 2, 2026 21:49
@jesup

jesup commented Oct 2, 2026 •

Copy link
Copy Markdown
Member Author

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟢 Approval recommended

The terminology change is consistently propagated through implementations, callers, documentation, and tests.

Review effort: Balanced
Findings: None

What changed in this PR

Renames datagram backpressure terminology from “high water mark” to “max buffered datagrams” across transport and HTTP/3 without changing behavior.

Changes:

  • Renames public methods and DatagramQueueOutcome::MaxBufferedReached.
  • Updates internal fields, constants, documentation, and tracing.
  • Updates transport, WebTransport, and CONNECT-UDP tests.
File Description
neqo-transport/​src/​quic_datagrams.rs Renames queue configuration API.
neqo-transport/​src/​datagram_queue.rs Renames core queue terminology and outcome.
neqo-transport/​src/​connection/​tests/​datagram.rs Updates transport tests.
neqo-transport/​src/​connection/​mod.rs Renames the connection API.
neqo-http3/​tests/​connect_udp.rs Updates CONNECT-UDP tests.
neqo-http3/​src/​webtransport.rs Renames the test-only session setter.
neqo-http3/​src/​features/​extended_connect/​tests/​webtransport/​datagrams.rs Updates WebTransport tests.
neqo-http3/​src/​features/​extended_connect/​session.rs Propagates the renamed setter.
neqo-http3/​src/​connection.rs Renames the extended-connect helper.
neqo-http3/​src/​connect_udp.rs Renames the default buffering constant and calls.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I found no problems in PR #4036: it only renames things, and nothing about how the code behaves changes.

@codecov

codecov Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.98%. Comparing base (9d7e35b) to head (fdf2b5a).
⚠️ Report is 6 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4036      +/-   ##
==========================================
- Coverage   97.10%   96.98%   -0.13%     
==========================================
  Files         114      118       +4     
  Lines       41005    41441     +436     
  Branches    41005    41441     +436     
==========================================
+ Hits        39817    40190     +373     
- Misses       1174     1227      +53     
- Partials       14       24      +10     
Flag Coverage Δ
freebsd 94.51% <100.00%> (-0.07%) ⬇️
linux 97.19% <100.00%> (+0.03%) ⬆️
macos 95.34% <100.00%> (+0.06%) ⬆️
windows 95.43% <100.00%> (+0.06%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
neqo-common 99.30% <ø> (-0.01%) ⬇️
neqo-http3 95.36% <100.00%> (+<0.01%) ⬆️
neqo-qpack 96.94% <ø> (-0.04%) ⬇️
neqo-transport 97.99% <100.00%> (+0.05%) ⬆️
neqo-udp 95.37% <ø> (ø)
mtu 89.13% <ø> (ø)

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to main at ea3f3d7.

neqo-pr as clientneqo-pr as server
neqo-pr vs. go-x-net: BP BA
neqo-pr vs. haproxy: BP BA
neqo-pr vs. kwik: ⚠️Z L1 C1 🚀C2 BA
neqo-pr vs. linuxquic: 🚀C1 ⚠️L1 BA
neqo-pr vs. lsquic: L1 C1
neqo-pr vs. msquic: Z A L1 C1
neqo-pr vs. mvfst: A ⚠️BA
neqo-pr vs. neqo: Z A
neqo-pr vs. nginx: BP BA
neqo-pr vs. ngtcp2: Z L1 C1 CM
neqo-pr vs. picoquic: Z A
neqo-pr vs. quic-go: A
neqo-pr vs. quiche: BP BA
neqo-pr vs. s2n-quic: CM
neqo-pr vs. tquic: S BP BA
neqo-pr vs. xquic: S R Z A L1 C1
aioquic vs. neqo-pr: ⚠️C1 CM
go-x-net vs. neqo-pr: ⚠️BA CM
kwik vs. neqo-pr: BP BA CM
msquic vs. neqo-pr: ⚠️C1 CM
mvfst vs. neqo-pr: Z L1 C1 CM
neqo vs. neqo-pr: Z A
openssl vs. neqo-pr: LR M A CM
quic-go vs. neqo-pr: CM
quic-zig vs. neqo-pr: CM
quiche vs. neqo-pr: 🚀L1 CM
quinn vs. neqo-pr: 🚀C1 V2 CM
s2n-quic vs. neqo-pr: CM
tquic vs. neqo-pr: CM
xquic vs. neqo-pr: M CM
All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

@codspeed

codspeed Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will degrade performance by 0.61%

⚡ 1 improved benchmark
❌ 4 regressed benchmarks
✅ 94 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
❌ Simulation simulated/pacing-false/same-seed 73 ms 75.3 ms -3.06%
❌ WallTime walltime/pacing-true/varying-seeds 2.1 ms 2.1 ms -2.66%
❌ WallTime walltime/1000-streams/each-1-bytes 3.7 ms 3.8 ms -2.53%
❌ Simulation simulated/pacing-true/same-seed 73.6 ms 75.2 ms -2.22%
⚡ WallTime 1-conn/10_000-parallel-1b-resp (aka. RPS) 68.9 ms 63.9 ms +7.83%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing users/jesup/rename_max_buffered_datagrams (fdf2b5a) with main (ea3f3d7)

Open in CodSpeed

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Client/server transfer results

Performance differences relative to ea3f3d7.

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server Mean±σ Min–Max Median±MAD MiB/s±σ ΔMedian
google-neqo-cubic 71.8 ± 0.3 71.0 – 72.4 71.8 ± 0.3 446.0 ± 2.1 💔 +2.6 (+3.7%)
neqo-neqo-newreno 19.9 ± 0.1 19.6 – 20.2 19.9 ± 0.1 1611.3 ± 10.5 💚 -0.3 (-1.4%)

Table above only shows statistically significant changes. See all results below.

All results

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server Mean±σ Min–Max Median±MAD MiB/s±σ ΔMedian
google-google 131.8 ± 0.5 130.5 – 133.1 131.8 ± 0.5 242.8 ± 0.9
google-neqo-cubic 71.8 ± 0.3 71.0 – 72.4 71.8 ± 0.3 446.0 ± 2.1 💔 +2.6 (+3.7%)
neqo-google-cubic 239.5 ± 53.3 186.8 – 485.1 229.8 ± 32.5 133.6 ± 29.7 +5.4 (+2.4%)
neqo-neqo-cubic 19.7 ± 0.1 19.4 – 20.0 19.7 ± 0.2 1625.9 ± 10.9 +0.2 (+0.9%)
neqo-neqo-cubic-nopacing 19.9 ± 0.1 19.6 – 20.2 19.9 ± 0.1 1610.5 ± 10.6 -0.1 (-0.5%)
neqo-neqo-newreno 19.9 ± 0.1 19.6 – 20.2 19.9 ± 0.1 1611.3 ± 10.5 💚 -0.3 (-1.4%)
neqo-neqo-newreno-nopacing 19.3 ± 0.2 18.9 – 19.8 19.3 ± 0.2 1660.1 ± 13.4 +0.0 (+0.1%)
neqo-quiche-cubic 33.0 ± 0.3 32.5 – 33.8 33.0 ± 0.3 969.8 ± 7.9 +0.2 (+0.7%)
neqo-s2n-cubic 38.5 ± 0.2 38.0 – 39.0 38.5 ± 0.2 832.1 ± 4.9 +0.0 (+0.0%)
quiche-neqo-cubic 37.7 ± 0.5 37.0 – 40.1 37.6 ± 0.5 847.7 ± 11.7 +0.3 (+0.9%)
quiche-quiche 38.8 ± 0.2 38.5 – 39.4 38.8 ± 0.2 823.9 ± 4.2
s2n-neqo-cubic 112.2 ± 0.4 111.6 – 113.3 112.2 ± 0.4 285.1 ± 1.0 +0.2 (+0.1%)
s2n-s2n ⚠️ 162.4 ± 20.0 134.5 – 256.9 159.2 ± 1.0 197.0 ± 24.3

Download data for profiler.firefox.com or download performance comparison data.

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Benchmark results

No significant performance differences relative to ea3f3d7.

All results
transfer/1-conn/1-100mb-req (aka. Upload)/mtu-1500
       time:   [50.524 ms 50.560 ms 50.597 ms]
       thrpt:  [1.9301 GiB/s 1.9315 GiB/s 1.9329 GiB/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
2 (2.00%) high severe
transfer/1-conn/1-100mb-resp (aka. Download)/mtu-1500
       time:   [51.418 ms 51.453 ms 51.487 ms]
       thrpt:  [1.8967 GiB/s 1.8980 GiB/s 1.8993 GiB/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
transfer/1-conn/1-1b-resp (aka. HPS)/mtu-1500
       time:   [2.9631 ms 2.9645 ms 2.9659 ms]
       thrpt:  [337.16   B/s 337.32   B/s 337.48   B/s]
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1500
       time:   [65.980 ms 66.242 ms 66.509 ms]
       thrpt:  [150.36 Kelem/s 150.96 Kelem/s 151.56 Kelem/s]
Found 6 outliers among 100 measurements (6.00%)
2 (2.00%) low mild
4 (4.00%) high mild
streams-flow-controlled/walltime/1-streams/each-4194304-bytes
       time:   [10.769 ms 10.772 ms 10.776 ms]
       thrpt:  [371.20 MiB/s 371.32 MiB/s 371.44 MiB/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
streams-flow-controlled/walltime/10-streams/each-1048576-bytes
       time:   [28.552 ms 28.572 ms 28.589 ms]
       thrpt:  [349.78 MiB/s 349.99 MiB/s 350.24 MiB/s]
Found 5 outliers among 100 measurements (5.00%)
3 (3.00%) low severe
2 (2.00%) high mild
streams/walltime/1-streams/each-1000-bytes
       time:   [130.13 µs 130.65 µs 131.31 µs]
       thrpt:  [7.2626 MiB/s 7.2995 MiB/s 7.3288 MiB/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
streams/walltime/1000-streams/each-1-bytes
       time:   [3.8332 ms 3.8453 ms 3.8568 ms]
       thrpt:  [253.20 KiB/s 253.97 KiB/s 254.77 KiB/s]
streams/walltime/1000-streams/each-1000-bytes
       time:   [12.490 ms 12.499 ms 12.507 ms]
       thrpt:  [76.252 MiB/s 76.303 MiB/s 76.354 MiB/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) low mild
1 (1.00%) high mild
transfer/walltime/pacing-false/same-seed
       time:   [2.0529 ms 2.0537 ms 2.0546 ms]
       thrpt:  [1.9012 GiB/s 1.9020 GiB/s 1.9028 GiB/s]
transfer/walltime/pacing-false/varying-seeds
       time:   [2.0381 ms 2.0392 ms 2.0405 ms]
       thrpt:  [1.9143 GiB/s 1.9156 GiB/s 1.9166 GiB/s]
transfer/walltime/pacing-true/same-seed
       time:   [2.0370 ms 2.0382 ms 2.0397 ms]
       thrpt:  [1.9151 GiB/s 1.9165 GiB/s 1.9177 GiB/s]
transfer/walltime/pacing-true/varying-seeds
       time:   [2.0906 ms 2.0927 ms 2.0951 ms]
       thrpt:  [1.8645 GiB/s 1.8666 GiB/s 1.8685 GiB/s]

Instructions per cycle

Criterion reported no significant timing changes.

All benchmarks
Benchmark IPC before IPC after ΔIPC
transfer/1-conn/1-100mb-req (aka. Upload)/mtu-1500 3.13 3.10 -1.0%
transfer/1-conn/1-100mb-resp (aka. Download)/mtu-1500 3.19 3.17 -0.9%
transfer/walltime/pacing-false/same-seed 2.89 2.87 -0.5%
streams-flow-controlled/walltime/1-streams/each-4194304-bytes 2.99 2.98 -0.4%
streams/walltime/1-streams/each-1000-bytes 2.53 2.54 +0.4%
streams/walltime/1000-streams/each-1-bytes 3.30 3.29 -0.2%
transfer/walltime/pacing-false/varying-seeds 2.88 2.87 -0.2%
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1500 3.19 3.20 +0.2%
transfer/walltime/pacing-true/same-seed 2.89 2.89 +0.1%
streams/walltime/1000-streams/each-1000-bytes 2.98 2.98 -0.1%
transfer/1-conn/1-1b-resp (aka. HPS)/mtu-1500 2.24 2.25 +0.1%
transfer/walltime/pacing-true/varying-seeds 2.86 2.86 -0.1%
streams-flow-controlled/walltime/10-streams/each-1048576-bytes 3.14 3.14 -0.0%
Profiles for profiler.firefox.com (62)

Download data for profiler.firefox.com or download performance comparison data.

This branch has not been deployed

No deployments
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.

3 participants