Skip to content

blog: post about turning QUIC frames into datagrams#494

Open
matheus23 wants to merge 15 commits into
mainfrom
matheus23/frames-to-datagrams
Open

blog: post about turning QUIC frames into datagrams#494
matheus23 wants to merge 15 commits into
mainfrom
matheus23/frames-to-datagrams

Conversation

@matheus23

@matheus23 matheus23 commented Jul 7, 2026

Copy link
Copy Markdown
Member

My ramblings about QUIC

@matheus23 matheus23 self-assigned this Jul 7, 2026
@vercel

vercel Bot commented Jul 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
iroh-computer Ready Ready Preview, Comment Jul 23, 2026 4:18pm

Request Review

@n0bot n0bot Bot added this to iroh Jul 7, 2026
@github-project-automation github-project-automation Bot moved this to 🚑 Needs Triage in iroh Jul 7, 2026
@matheus23
matheus23 marked this pull request as ready for review July 21, 2026 14:14

@flub flub left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

partial review only

Comment thread src/app/blog/quic-frames-to-datagrams/page.mdx Outdated
Comment thread src/app/blog/quic-frames-to-datagrams/page.mdx Outdated
Each packet in the initial or handshake encryption level is a so-called "long header" packet which means it also has a length field indicating where the packet ends.
This allows us to put two packets prepended with their QUIC headers back-to-back into a datagram.

This does not work with the data encryption level. In that level the header doesn't contain a length field, presumably to save some bytes, as packet coalescing is pretty much only useful during the handshake and it's worth saving those bytes after the handshake when no coalescing happens instead.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With a nitpicking view this kind of mixes up encryption levels and packet types. The long header is a 1-RTT packet type. That is kind of orthogonal to the encryption level it goes in.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjusted, PTAL.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some clarification for what you're writing: "The long header is a 1-RTT packet type" This seems weird to me. Aren't 1-RTT packets using a short header?

In my mind "a {Initial,Handshake,1-RTT} packet" is shorthand for "a packet encrypted using the {Initital,Handshake,1-RTT} encryption level".
I guess it could be misunderstood for "a packet in the Initial packet number space" though - and then 1-RTT and "data" would disambiguate that somewhat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🚑 Needs Triage

Development

Successfully merging this pull request may close these issues.

2 participants