Hey guys, I'm trying to figure out how to implement happy eyeballs for QUIC.
One of the differences between QUIC and TCP/TLS is that the first flight has a CPU cost in the form of TLS secret generation. If you create two separate QUIC connections, one for IPv4 and one for IPv6, you will pay this cost twice unless the delay between connections is sufficiently large enough.
Alternatively, if the QUIC client sends a copy of the Initial packet over both IPv4 and IPv6, I believe you can avoid this duplicate work. The packets being transmitted over IPv4 and IPv6 would be the same. The server would finish the handshake using the earliest (or both?) socket family.
Does this make sense? Is there any guidance on if happy eyeballs should happen at the transport or application level for QUIC?
Hey guys, I'm trying to figure out how to implement happy eyeballs for QUIC.
One of the differences between QUIC and TCP/TLS is that the first flight has a CPU cost in the form of TLS secret generation. If you create two separate QUIC connections, one for IPv4 and one for IPv6, you will pay this cost twice unless the delay between connections is sufficiently large enough.
Alternatively, if the QUIC client sends a copy of the Initial packet over both IPv4 and IPv6, I believe you can avoid this duplicate work. The packets being transmitted over IPv4 and IPv6 would be the same. The server would finish the handshake using the earliest (or both?) socket family.
Does this make sense? Is there any guidance on if happy eyeballs should happen at the transport or application level for QUIC?