Skip to content

agnosticdev/AckBundling: SwiftQUIC: Improve ACK Bundling#5

Merged
agnosticdev merged 1 commit into
mainfrom
agnosticdev/AckBundling
Jun 10, 2026
Merged

agnosticdev/AckBundling: SwiftQUIC: Improve ACK Bundling#5
agnosticdev merged 1 commit into
mainfrom
agnosticdev/AckBundling

Conversation

@agnosticdev

Copy link
Copy Markdown
Collaborator

This change utilizes the ACK delay timer to pickup and send one-off ACKs that were not previously being bundled with stream frames in the same packet.
I did some analysis when SwiftQUIC was being used on the server and found that when h2load makes 5000 HTTP3 GET requests for 1k we are sending back 7557 packets back to h2load.
For example:

7557 packets are sent back to h2load 
2552 of these packets are single ACK packets
2450 of those 7557 response packets contain bundled ACKs with stream frames

This did not seem correct because the 1k stream frames should not have taken up the entire packet. Upon evaluating the packet trace I found that we were not bundling ACK frames as efficiently as we could. This change improves that situation and now I see:

5059 packets are sent back to h2load
Only 54 of these packets are single ACK packets without stream frames
4947 of those 5059 packets now contain bundled ACKs with stream frames

So almost all of the QUIC packets that carry the HTTP3 response also contain a bundle ACK ase well.

@agnosticdev agnosticdev self-assigned this Jun 10, 2026
@agnosticdev agnosticdev merged commit 919cd6e into main Jun 10, 2026
20 checks passed
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.

3 participants