quinn-rs / quinn

Async-friendly QUIC implementation in Rust
Apache License 2.0
3.57k stars 364 forks source link

congestion control question: unreliable datagrams and reliable streams interaction #1773

Closed gopakumarce closed 2 months ago

gopakumarce commented 3 months ago

Hi,

So I had a simple test where over the quic connection I have an h3-quic stream established, and then I pump a bunch of unreliable datagram packets over the quic connection. After a few seconds, my h3-quic connection terminates complaining with an error that says the h3 control stream is terminated (which I guess is because of some timeout). And even for the datagram packets, I can see that they get rate limited to about 100mbps (a simple test with client and server as docker containers all in one laptop). So my question is - what mechanism is employed for congestion control between unreliable datagrams and reliable streams, can the former overwhelm the latter ?

Rgds, Gopa.

Ralith commented 3 months ago

Quinn currently prioritizes all application datagrams above all streams.

gopakumarce commented 3 months ago

Quinn currently prioritizes all application datagrams above all streams.

Thx for the response @Ralith - so I would also assume that the datagrams go through the congestion control tool ?

Ralith commented 3 months ago

All application data is congestion-controlled.