-
Notifications
You must be signed in to change notification settings - Fork 149
feat(bin/client): add --proxy to proxy HTTP/3 connection #3206
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
base: main
Are you sure you want to change the base?
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: