feat(bin/client): add --proxy to proxy HTTP/3 connection#3206
feat(bin/client): add --proxy to proxy HTTP/3 connection#3206mxinden wants to merge 1 commit intomozilla:mainfrom
Conversation
This commit enables the `neqo-client` to proxy an HTTP/3 connection through a MASQUE CONNECT-UDP proxy.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3206 +/- ##
==========================================
- Coverage 93.52% 93.49% -0.04%
==========================================
Files 125 125
Lines 36660 36674 +14
Branches 36660 36674 +14
==========================================
+ Hits 34286 34288 +2
- Misses 1527 1539 +12
Partials 847 847
|
Failed Interop TestsQUIC Interop Runner, client vs. server, differences relative to d070393. 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
|
Client/server transfer resultsPerformance differences relative to d070393. Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Table above only shows statistically significant changes. See all results below. All resultsTransfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Download data for |
Benchmark resultsSignificant performance differences relative to d070393. 1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client: 💔 Performance has regressed by +8.8622%. time: [233.59 ms 233.94 ms 234.34 ms]
thrpt: [426.73 MiB/s 427.46 MiB/s 428.10 MiB/s]
change:
time: [+8.5992% +8.8622% +9.1094] (p = 0.00 < 0.05)
thrpt: [-8.3489% -8.1408% -7.9183]
Performance has regressed.
Found 6 outliers among 100 measurements (6.00%)
1 (1.00%) low mild
4 (4.00%) high mild
1 (1.00%) high severeAll results1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client: No change in performance detected. time: [209.07 ms 209.50 ms 210.11 ms]
thrpt: [475.93 MiB/s 477.32 MiB/s 478.32 MiB/s]
change:
time: [-0.4487% -0.1261% +0.2117] (p = 0.48 > 0.05)
thrpt: [-0.2113% +0.1262% +0.4507]
No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) low mild
2 (2.00%) high mild
2 (2.00%) high severe1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client: Change within noise threshold. time: [277.82 ms 279.92 ms 282.06 ms]
thrpt: [35.453 Kelem/s 35.725 Kelem/s 35.995 Kelem/s]
change:
time: [-2.7496% -1.7607% -0.7899] (p = 0.00 < 0.05)
thrpt: [+0.7962% +1.7923% +2.8273]
Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client: No change in performance detected. time: [38.543 ms 38.722 ms 38.921 ms]
thrpt: [25.693 B/s 25.825 B/s 25.945 B/s]
change:
time: [-0.3338% +0.3210% +1.0367] (p = 0.36 > 0.05)
thrpt: [-1.0260% -0.3200% +0.3349]
No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
1 (1.00%) high mild
8 (8.00%) high severe1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client: 💔 Performance has regressed by +8.8622%. time: [233.59 ms 233.94 ms 234.34 ms]
thrpt: [426.73 MiB/s 427.46 MiB/s 428.10 MiB/s]
change:
time: [+8.5992% +8.8622% +9.1094] (p = 0.00 < 0.05)
thrpt: [-8.3489% -8.1408% -7.9183]
Performance has regressed.
Found 6 outliers among 100 measurements (6.00%)
1 (1.00%) low mild
4 (4.00%) high mild
1 (1.00%) high severedecode 4096 bytes, mask ff: No change in performance detected. time: [11.303 µs 11.340 µs 11.382 µs]
change: [-0.1365% +0.0779% +0.2954] (p = 0.50 > 0.05)
No change in performance detected.
Found 14 outliers among 100 measurements (14.00%)
2 (2.00%) low severe
5 (5.00%) low mild
2 (2.00%) high mild
5 (5.00%) high severedecode 1048576 bytes, mask ff: No change in performance detected. time: [2.9925 ms 3.0049 ms 3.0199 ms]
change: [-0.4217% +0.1272% +0.7399] (p = 0.68 > 0.05)
No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
8 (8.00%) high severedecode 4096 bytes, mask 7f: No change in performance detected. time: [19.605 µs 19.711 µs 19.853 µs]
change: [-2.9515% -0.5158% +0.9665] (p = 0.75 > 0.05)
No change in performance detected.
Found 18 outliers among 100 measurements (18.00%)
3 (3.00%) low mild
1 (1.00%) high mild
14 (14.00%) high severedecode 1048576 bytes, mask 7f: No change in performance detected. time: [5.0336 ms 5.0466 ms 5.0604 ms]
change: [-0.4295% +0.0111% +0.4227] (p = 0.94 > 0.05)
No change in performance detected.
Found 16 outliers among 100 measurements (16.00%)
16 (16.00%) high severedecode 4096 bytes, mask 3f: Change within noise threshold. time: [6.2342 µs 6.2903 µs 6.3615 µs]
change: [+0.1758% +0.9684% +2.1048] (p = 0.03 < 0.05)
Change within noise threshold.
Found 13 outliers among 100 measurements (13.00%)
2 (2.00%) high mild
11 (11.00%) high severedecode 1048576 bytes, mask 3f: No change in performance detected. time: [1.7579 ms 1.7596 ms 1.7625 ms]
change: [-0.0134% +0.0831% +0.2550] (p = 0.35 > 0.05)
No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
2 (2.00%) high mild
3 (3.00%) high severe1-streams/each-1000-bytes/wallclock-time: No change in performance detected. time: [584.18 µs 586.37 µs 589.06 µs]
change: [-0.6389% -0.0499% +0.5524] (p = 0.87 > 0.05)
No change in performance detected.
Found 6 outliers among 100 measurements (6.00%)
6 (6.00%) high severe1-streams/each-1000-bytes/simulated-time: No change in performance detected. time: [118.79 ms 119.03 ms 119.26 ms]
thrpt: [8.1882 KiB/s 8.2046 KiB/s 8.2210 KiB/s]
change:
time: [-0.2567% +0.0166% +0.2608] (p = 0.90 > 0.05)
thrpt: [-0.2602% -0.0166% +0.2574]
No change in performance detected.1000-streams/each-1-bytes/wallclock-time: No change in performance detected. time: [12.324 ms 12.362 ms 12.400 ms]
change: [-0.6527% -0.2416% +0.1861] (p = 0.27 > 0.05)
No change in performance detected.1000-streams/each-1-bytes/simulated-time: No change in performance detected. time: [2.3294 s 2.3329 s 2.3364 s]
thrpt: [428.01 B/s 428.65 B/s 429.30 B/s]
change:
time: [-0.1123% +0.1126% +0.3325] (p = 0.32 > 0.05)
thrpt: [-0.3314% -0.1124% +0.1124]
No change in performance detected.1000-streams/each-1000-bytes/wallclock-time: No change in performance detected. time: [50.168 ms 50.291 ms 50.414 ms]
change: [-0.6469% +0.0106% +0.5138] (p = 0.98 > 0.05)
No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) low mild
1 (1.00%) high mild1000-streams/each-1000-bytes/simulated-time: No change in performance detected. time: [16.173 s 16.390 s 16.606 s]
thrpt: [58.807 KiB/s 59.584 KiB/s 60.382 KiB/s]
change:
time: [-2.0230% -0.2247% +1.7122] (p = 0.82 > 0.05)
thrpt: [-1.6834% +0.2252% +2.0648]
No change in performance detected.coalesce_acked_from_zero 1+1 entries: No change in performance detected. time: [89.130 ns 89.411 ns 89.713 ns]
change: [-0.6587% -0.2105% +0.2262] (p = 0.35 > 0.05)
No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
6 (6.00%) high mild
2 (2.00%) high severecoalesce_acked_from_zero 3+1 entries: No change in performance detected. time: [106.20 ns 106.58 ns 106.99 ns]
change: [-0.0905% +0.3121% +0.7826] (p = 0.17 > 0.05)
No change in performance detected.
Found 16 outliers among 100 measurements (16.00%)
3 (3.00%) low mild
2 (2.00%) high mild
11 (11.00%) high severecoalesce_acked_from_zero 10+1 entries: No change in performance detected. time: [105.69 ns 106.15 ns 106.68 ns]
change: [-0.5899% +0.1313% +0.8325] (p = 0.75 > 0.05)
No change in performance detected.
Found 12 outliers among 100 measurements (12.00%)
3 (3.00%) low mild
1 (1.00%) high mild
8 (8.00%) high severecoalesce_acked_from_zero 1000+1 entries: No change in performance detected. time: [91.617 ns 91.754 ns 91.904 ns]
change: [-0.6684% -0.0373% +0.5939] (p = 0.91 > 0.05)
No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
5 (5.00%) high mild
4 (4.00%) high severeRxStreamOrderer::inbound_frame(): No change in performance detected. time: [110.32 ms 110.39 ms 110.47 ms]
change: [-0.1355% +0.0816% +0.2367] (p = 0.45 > 0.05)
No change in performance detected.
Found 15 outliers among 100 measurements (15.00%)
13 (13.00%) low mild
1 (1.00%) high mild
1 (1.00%) high severesent::Packets::take_ranges: No change in performance detected. time: [4.5154 µs 4.6219 µs 4.7190 µs]
change: [-1.5789% +1.6726% +5.1656] (p = 0.32 > 0.05)
No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mildtransfer/pacing-false/varying-seeds/wallclock-time/run: Change within noise threshold. time: [25.795 ms 25.851 ms 25.908 ms]
change: [+1.0546% +1.3658% +1.6573] (p = 0.00 < 0.05)
Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mildtransfer/pacing-false/varying-seeds/simulated-time/run: No change in performance detected. time: [25.131 s 25.164 s 25.198 s]
thrpt: [162.55 KiB/s 162.77 KiB/s 162.99 KiB/s]
change:
time: [-0.3196% -0.1314% +0.0672] (p = 0.19 > 0.05)
thrpt: [-0.0672% +0.1315% +0.3206]
No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mildtransfer/pacing-true/varying-seeds/wallclock-time/run: Change within noise threshold. time: [26.059 ms 26.102 ms 26.145 ms]
change: [+0.6962% +0.9142% +1.1353] (p = 0.00 < 0.05)
Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mildtransfer/pacing-true/varying-seeds/simulated-time/run: No change in performance detected. time: [24.859 s 24.889 s 24.919 s]
thrpt: [164.37 KiB/s 164.57 KiB/s 164.77 KiB/s]
change:
time: [-0.2354% -0.0627% +0.1106] (p = 0.49 > 0.05)
thrpt: [-0.1104% +0.0627% +0.2360]
No change in performance detected.transfer/pacing-false/same-seed/wallclock-time/run: Change within noise threshold. time: [25.174 ms 25.194 ms 25.214 ms]
change: [+0.5266% +0.7350% +0.8979] (p = 0.00 < 0.05)
Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mildtransfer/pacing-false/same-seed/simulated-time/run: No change in performance detected. time: [25.234 s 25.234 s 25.234 s]
thrpt: [162.32 KiB/s 162.32 KiB/s 162.32 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.transfer/pacing-true/same-seed/wallclock-time/run: Change within noise threshold. time: [26.001 ms 26.033 ms 26.081 ms]
change: [+1.9049% +2.1283% +2.3539] (p = 0.00 < 0.05)
Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severetransfer/pacing-true/same-seed/simulated-time/run: No change in performance detected. time: [25.207 s 25.207 s 25.207 s]
thrpt: [162.50 KiB/s 162.50 KiB/s 162.50 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.Download data for |
|
| Branch | masque-client |
| Testbed | On-prem |
🚨 1 Alert
| Benchmark | Measure Units | View | Benchmark Result (Result Δ%) | Upper Boundary (Limit %) |
|---|---|---|---|---|
| 1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client | Latency milliseconds (ms) | 📈 plot 🚷 threshold 🚨 alert (🔔) | 233.94 ms(+12.61%)Baseline: 207.74 ms | 217.43 ms (107.59%) |
Click to view all benchmark results
| Benchmark | Latency | Benchmark Result nanoseconds (ns) (Result Δ%) | Upper Boundary nanoseconds (ns) (Limit %) |
|---|---|---|---|
| 1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client | 📈 view plot 🚷 view threshold 🚨 view alert (🔔) | 233,940,000.00 ns(+12.61%)Baseline: 207,738,396.79 ns | 217,428,249.02 ns (107.59%) |
| 1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client | 📈 view plot 🚷 view threshold | 209,500,000.00 ns(+3.78%)Baseline: 201,876,232.46 ns | 211,767,000.36 ns (98.93%) |
| 1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client | 📈 view plot 🚷 view threshold | 38,722,000.00 ns(+14.48%)Baseline: 33,823,238.48 ns | 45,844,174.57 ns (84.46%) |
| 1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client | 📈 view plot 🚷 view threshold | 279,920,000.00 ns(-3.26%)Baseline: 289,347,675.35 ns | 302,490,945.42 ns (92.54%) |
| 1-streams/each-1000-bytes/simulated-time | 📈 view plot 🚷 view threshold | 119,030,000.00 ns(+0.20%)Baseline: 118,798,256.51 ns | 120,550,383.25 ns (98.74%) |
| 1-streams/each-1000-bytes/wallclock-time | 📈 view plot 🚷 view threshold | 586,370.00 ns(-0.64%)Baseline: 590,154.23 ns | 611,373.81 ns (95.91%) |
| 1000-streams/each-1-bytes/simulated-time | 📈 view plot 🚷 view threshold | 2,332,900,000.00 ns(-76.78%)Baseline: 10,047,409,418.84 ns | 24,467,402,847.85 ns (9.53%) |
| 1000-streams/each-1-bytes/wallclock-time | 📈 view plot 🚷 view threshold | 12,362,000.00 ns(-7.96%)Baseline: 13,431,715.43 ns | 15,206,258.83 ns (81.30%) |
| 1000-streams/each-1000-bytes/simulated-time | 📈 view plot 🚷 view threshold | 16,390,000,000.00 ns(-8.67%)Baseline: 17,946,715,430.86 ns | 20,925,259,986.63 ns (78.33%) |
| 1000-streams/each-1000-bytes/wallclock-time | 📈 view plot 🚷 view threshold | 50,291,000.00 ns(-0.57%)Baseline: 50,579,258.52 ns | 55,953,081.40 ns (89.88%) |
| RxStreamOrderer::inbound_frame() | 📈 view plot 🚷 view threshold | 110,390,000.00 ns(+0.61%)Baseline: 109,723,226.45 ns | 111,400,838.39 ns (99.09%) |
| coalesce_acked_from_zero 1+1 entries | 📈 view plot 🚷 view threshold | 89.41 ns(+0.38%)Baseline: 89.07 ns | 90.36 ns (98.95%) |
| coalesce_acked_from_zero 10+1 entries | 📈 view plot 🚷 view threshold | 106.15 ns(+0.10%)Baseline: 106.04 ns | 107.10 ns (99.11%) |
| coalesce_acked_from_zero 1000+1 entries | 📈 view plot 🚷 view threshold | 91.75 ns(+1.04%)Baseline: 90.81 ns | 95.17 ns (96.41%) |
| coalesce_acked_from_zero 3+1 entries | 📈 view plot 🚷 view threshold | 106.58 ns(+0.04%)Baseline: 106.54 ns | 107.54 ns (99.11%) |
| decode 1048576 bytes, mask 3f | 📈 view plot 🚷 view threshold | 1,759,600.00 ns(+4.99%)Baseline: 1,676,009.02 ns | 1,881,159.47 ns (93.54%) |
| decode 1048576 bytes, mask 7f | 📈 view plot 🚷 view threshold | 5,046,600.00 ns(-0.27%)Baseline: 5,060,128.46 ns | 5,105,802.57 ns (98.84%) |
| decode 1048576 bytes, mask ff | 📈 view plot 🚷 view threshold | 3,004,900.00 ns(-0.55%)Baseline: 3,021,483.37 ns | 3,056,275.70 ns (98.32%) |
| decode 4096 bytes, mask 3f | 📈 view plot 🚷 view threshold | 6,290.30 ns(-10.32%)Baseline: 7,013.79 ns | 9,799.18 ns (64.19%) |
| decode 4096 bytes, mask 7f | 📈 view plot 🚷 view threshold | 19,711.00 ns(-0.21%)Baseline: 19,751.61 ns | 20,332.89 ns (96.94%) |
| decode 4096 bytes, mask ff | 📈 view plot 🚷 view threshold | 11,340.00 ns(-0.21%)Baseline: 11,363.48 ns | 12,324.78 ns (92.01%) |
| sent::Packets::take_ranges | 📈 view plot 🚷 view threshold | 4,621.90 ns(-1.40%)Baseline: 4,687.39 ns | 4,931.49 ns (93.72%) |
| transfer/pacing-false/same-seed/simulated-time/run | 📈 view plot 🚷 view threshold | 25,234,000,000.00 ns(-0.48%)Baseline: 25,355,603,621.73 ns | 25,903,133,595.74 ns (97.42%) |
| transfer/pacing-false/same-seed/wallclock-time/run | 📈 view plot 🚷 view threshold | 25,194,000.00 ns(-0.88%)Baseline: 25,418,181.09 ns | 26,968,956.48 ns (93.42%) |
| transfer/pacing-false/varying-seeds/simulated-time/run | 📈 view plot 🚷 view threshold | 25,164,000,000.00 ns(-0.07%)Baseline: 25,180,849,094.57 ns | 25,232,796,453.69 ns (99.73%) |
| transfer/pacing-false/varying-seeds/wallclock-time/run | 📈 view plot 🚷 view threshold | 25,851,000.00 ns(+1.08%)Baseline: 25,576,036.22 ns | 27,138,580.09 ns (95.26%) |
| transfer/pacing-true/same-seed/simulated-time/run | 📈 view plot 🚷 view threshold | 25,207,000,000.00 ns(-0.87%)Baseline: 25,428,404,426.56 ns | 26,013,822,912.59 ns (96.90%) |
| transfer/pacing-true/same-seed/wallclock-time/run | 📈 view plot 🚷 view threshold | 26,033,000.00 ns(-2.28%)Baseline: 26,639,468.81 ns | 28,598,574.66 ns (91.03%) |
| transfer/pacing-true/varying-seeds/simulated-time/run | 📈 view plot 🚷 view threshold | 24,889,000,000.00 ns(-0.43%)Baseline: 24,995,704,225.35 ns | 25,052,379,462.45 ns (99.35%) |
| transfer/pacing-true/varying-seeds/wallclock-time/run | 📈 view plot 🚷 view threshold | 26,102,000.00 ns(+0.05%)Baseline: 26,089,303.82 ns | 27,696,086.63 ns (94.24%) |
This commit enables the
neqo-clientto proxy an HTTP/3 connection through a MASQUE CONNECT-UDP proxy.Example: