You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MEDIUM: mux-quic: do not account release buf in alloc window
Since a recent rework, a new tx buffer can only be allocated if the size
of all allocated buffers in used does not exceed the underlying
connection congestion window.
This model caused a severe throughput degradation when a single stream
is used and the congestion window is smaller than bufsize, due a poor
network conditions. In this case, the stream can allocate a single
buffer only. Once it is full, stream emission is interrupted until every
ACKs are received to free the buffer. This is an extremely unefficient
transfer model. Such issue can be reproduced using the following ngtcp2
with 10% rate loss :
ngtcp2-client -q --no-quic-dump --no-http-dump --exit-on-all-streams-close \
-r 0.1 127.0.0.1 20443 "https://[::]:20443/?s=100m"
To solve this, buffer allocation limit must be relaxed in part. This is
the purpose of this two-part commits serie. This first patch updates
QUIC MUX buffer accounting : as soon as a Tx buffer is fully sent and
released, it is removed from connection buffer window.
This single change fixes completely the degraded case described above.
However, it is not sufficient as it virtually removes any limit on
stream buffer allocation. Indeed, each time a new buffer is released, a
QCS can reallocate a new buffer, which could increase heavily memory
consumption. As such, another limitation must be implemented to prevent
this. This will be the purpose of the next commit.
0 commit comments