quiche
quiche copied to clipboard
Explicit Congestion Notification support
This PR extends the commits of the WIP ECN PR (#1287) and addresses the remaining TODO points, namely the ACK ECN validation, the ECN path probing, and the actual ECN support to the apps quiche-client
and quiche-server
.
Just for the validation, we did a few runs on the Internet with a large file transfer (download of a 100 MB file). Here are attached some log snippets from the server's viewpoint.
With plain ECT0 (no CE marking):
... rx frm ACK delay=3 blocks=[1489..79492] ecn_counts=Some(EcnCounts { ect0_count: 79491, ect1_count: 0, ecn_ce_count: 0 }) ... tx frm ACK delay=20 blocks=[25298..25469, 25471..25484, 25486..25503] ecn_counts=Some(EcnCounts { ect0_count: 24319, ect1_count: 0, ecn_ce_count: 0 }) ...
With ECT1 and a L4S network putting CE marks:
... rx frm ACK delay=2 blocks=[5506..80852] ecn_counts=Some(EcnCounts { ect0_count: 0, ect1_count: 79574, ecn_ce_count: 1277 }) ... tx frm ACK delay=21 blocks=[26215..26415] ecn_counts=Some(EcnCounts { ect0_count: 25871, ect1_count: 0, ecn_ce_count: 0 }) ...
If needed, I can provide the full logs (not provided here given their size).