Skip to content
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

Explicit Congestion Notification support #1351

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

qdeconinck
Copy link
Contributor

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.

@qdeconinck
Copy link
Contributor Author

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).

ghedo and others added 4 commits January 10, 2024 17:52
This adds support for reporting incoming ECN counts via the "ECN Counts"
field in ACK frames.

Applications can report the ECN marking for incoming packets through the
new `ecn` field of `RecvInfo`, and internally quiche will track the ECN
counters, and creates ACK frames with the ECN Counts field.

TODO:
* Fetch ECN markings for incoming packets in apps.
TODO:
* Set ECN markings for outgoing packets in apps.
* Probe ECN for each path.
* Validate ECN counts in ACKs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants