test(transport): maximum throughput on unlimited bandwidth and 50ms
This commit adds a basic smoke test using the test-fixture simulator, asserting that on a connection with unlimited bandwidth and 50ms round-trip-time Neqo can eventually achieve > 1 Gbit/s throughput.
Showcases the potential that a future stream flow-control auto-tuning algorithm can have.
See https://github.com/mozilla/neqo/issues/733.
Draft for now. Not familiar enough with the simulator yet. Will be helpful for an implementation of https://github.com/mozilla/neqo/issues/733.
As expected, test is currently failing. I can not quite yet explain the value of 106 Mbit/s. I would expect a value closer to 160 Mbit/s given the 1 MiB send and receive stream buffer. (See calculation in https://github.com/mozilla/neqo/issues/1820.)
thread 'unlimited_bandwidth_50ms_delay_connection' panicked at neqo-transport/tests/network.rs:227:5:
expect transfer on 50ms connection with unlimited bandwidth to eventually surpass 1 Gbit/s but got 106.41665660578931 Mbit/s.
Failed Interop Tests
- aioquic vs. neqo-latest: A
- go-x-net vs. neqo-latest: U A
- kwik vs. neqo-latest: A
- lsquic vs. neqo-latest: R A
- msquic vs. neqo-latest: Z A
- mvfst vs. neqo-latest: Z 3 A L1 C1
- neqo vs. neqo-latest: A
- neqo-latest vs. aioquic: Z A L1
- neqo-latest vs. go-x-net: A
- neqo-latest vs. haproxy: Z A
- neqo-latest vs. kwik: A
- neqo-latest vs. lsquic: A C1
- neqo-latest vs. msquic: Z A L1 C1
- neqo-latest vs. mvfst: DC U A L1 L2 C1 C2
- neqo-latest vs. neqo: Z A
- neqo-latest vs. neqo-latest: A
- neqo-latest vs. nginx: A
- neqo-latest vs. ngtcp2: A
- neqo-latest vs. picoquic: A
- neqo-latest vs. quic-go: Z A
- neqo-latest vs. quiche: A L1 C1
- neqo-latest vs. quinn: E A
- neqo-latest vs. s2n-quic: R A
- neqo-latest vs. xquic: A C1
- ngtcp2 vs. neqo-latest: C20 A
- picoquic vs. neqo-latest: R A
- quic-go vs. neqo-latest: A
- quiche vs. neqo-latest: R 3 A
- quinn vs. neqo-latest: R Z E A
- s2n-quic vs. neqo-latest: A
- xquic vs. neqo-latest: M A
Succeeded and unsupported tests
Succeeded Interop Tests
- aioquic vs. neqo-latest: H DC LR C20 M S R Z 3 B L1 L2 C1 C2 6
- chrome vs. neqo-latest: 3
- go-x-net vs. neqo-latest: H DC LR M B L2 C2 6
- kwik vs. neqo-latest: H DC LR C20 M S R Z 3 B U L1 L2 C1 C2 6 V2
- lsquic vs. neqo-latest: H DC LR M S 3 B E L1 L2 C1 C2 6 V2
- msquic vs. neqo-latest: H DC LR C20 M S R B U L1 L2 C1 C2 6 V2
- mvfst vs. neqo-latest: H DC LR M B L2 C2 6
- neqo vs. neqo-latest: H DC LR C20 M S R Z 3 B U E L1 L2 C1 C2 6 V2
- neqo-latest vs. aioquic: H DC LR C20 M S R 3 B U L2 C1 C2 6
- neqo-latest vs. go-x-net: H DC LR M B U L2 C2 6
- neqo-latest vs. haproxy: H DC LR C20 M S R 3 B U L1 L2 C1 C2 6 V2
- neqo-latest vs. kwik: H DC LR C20 M S R Z 3 B U L1 L2 C1 C2 6 V2
- neqo-latest vs. lsquic: H DC LR C20 M S R Z 3 B U E L1 L2 C2 6 V2
- neqo-latest vs. msquic: H DC LR C20 M S R B U L2 C2 6 V2
- neqo-latest vs. mvfst: H LR M R Z 3 B 6
- neqo-latest vs. neqo: H DC LR C20 M S R 3 B U E L1 L2 C1 C2 6 V2
- neqo-latest vs. neqo-latest: H DC LR C20 M S R Z 3 B U E L1 L2 C1 C2 6 V2
- neqo-latest vs. nginx: H DC LR C20 M S R Z 3 B U L1 L2 C1 C2 6
- neqo-latest vs. ngtcp2: H DC LR C20 M S R Z 3 B U E L1 L2 C1 C2 6 V2
- neqo-latest vs. picoquic: H DC LR C20 M S R Z 3 B U E L1 L2 C1 C2 6 V2
- neqo-latest vs. quic-go: H DC LR C20 M S R 3 B U L1 L2 C1 C2 6
- neqo-latest vs. quiche: H DC LR C20 M S R Z 3 B U L2 C2 6
- neqo-latest vs. quinn: H DC LR C20 M S R Z 3 B U L2 C2 6
- neqo-latest vs. s2n-quic: H DC LR C20 M S 3 B U E L1 L2 C1 C2 6
- neqo-latest vs. xquic: H DC LR C20 M R Z 3 B U L1 L2 C2 6
- ngtcp2 vs. neqo-latest: H DC LR M S R Z 3 B U E L1 L2 C1 C2 6 V2
- picoquic vs. neqo-latest: H DC LR C20 M S Z 3 B U E L1 L2 C1 C2 6 V2
- quic-go vs. neqo-latest: H DC LR C20 M S R Z 3 B U L1 L2 C1 C2 6
- quiche vs. neqo-latest: H DC LR M S Z B L1 L2 C1 C2 6
- quinn vs. neqo-latest: H DC LR C20 M S 3 B U L2 C2 6
- s2n-quic vs. neqo-latest: H DC LR M S R 3 B E L1 L2 C1 C2 6
- xquic vs. neqo-latest: H DC LR C20 S R Z 3 B U L1 L2 C1 C2 6
Unsupported Interop Tests
- aioquic vs. neqo-latest: U E V2
- chrome vs. neqo-latest: H DC LR C20 M S R Z B U E A L1 L2 C1 C2 6 V2
- go-x-net vs. neqo-latest: C20 S R Z 3 E L1 C1 V2
- kwik vs. neqo-latest: E
- lsquic vs. neqo-latest: C20 Z U
- msquic vs. neqo-latest: 3 E
- mvfst vs. neqo-latest: C20 S R U E V2
- neqo-latest vs. aioquic: E V2
- neqo-latest vs. go-x-net: C20 S R Z 3 E L1 C1 V2
- neqo-latest vs. haproxy: E
- neqo-latest vs. kwik: E
- neqo-latest vs. msquic: 3 E
- neqo-latest vs. mvfst: C20 S E V2
- neqo-latest vs. nginx: E V2
- neqo-latest vs. quic-go: E V2
- neqo-latest vs. quiche: E V2
- neqo-latest vs. quinn: L1 C1 V2
- neqo-latest vs. s2n-quic: Z V2
- neqo-latest vs. xquic: S E V2
- quic-go vs. neqo-latest: E V2
- quiche vs. neqo-latest: C20 U E V2
- quinn vs. neqo-latest: L1 C1 V2
- s2n-quic vs. neqo-latest: C20 Z U V2
- xquic vs. neqo-latest: E V2 QUIC Interop Runner, client vs. server
Closing here in favor of https://github.com/mozilla/neqo/pull/2203.