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

Tracking Issue: QUIC 0.5-RTT Optimization #1961

Open
4 tasks
marten-seemann opened this issue Dec 21, 2022 · 1 comment
Open
4 tasks

Tracking Issue: QUIC 0.5-RTT Optimization #1961

marten-seemann opened this issue Dec 21, 2022 · 1 comment
Labels
effort/days Estimated to take multiple days, but less than a week kind/enhancement A net-new feature or improvement to an existing feature P1 High: Likely tackled by core team if no one steps up

Comments

@marten-seemann
Copy link
Contributor

marten-seemann commented Dec 21, 2022

#1959 proposes to prioritize making 0.5-RTT data in QUIC usable to send Identify data immediately. This would cut off 1 RTT from the QUIC handshake, bringing the time it takes to establish a libp2p QUIC connection + run Identify from 2 to 1 RTTs.

Done Criteria:

@marten-seemann marten-seemann added kind/enhancement A net-new feature or improvement to an existing feature P0 Critical: Tackled by core team ASAP effort/days Estimated to take multiple days, but less than a week labels Dec 21, 2022
@marten-seemann
Copy link
Contributor Author

This will also require a modification to Identify.
Currently Identify works by opening a new stream, and have the peer send the identify response on that stream. This necessarily consumes an entire round trip.

What we we need to do instead is the following:

  • open an Identify Push stream as soon as we start handling a new connection
  • accept an Identify Push message in IdentifyWait

This is reasonable clean, the migration is ugly though. We'll have to deal with peers that don't open an Identify Push stream to us, so we'll still need to keep the old logic of doing an Identify request around. This will lead to sending the initial Identify message twice.

After a transition period, we can optimize this: On transports where we expect the server to be able to open a stream during the handshake (QUIC), we can wait for a short time (10ms? 20ms?) for the Identify Push stream, and only open the Identify stream if we don't receive one.

@marten-seemann marten-seemann added P1 High: Likely tackled by core team if no one steps up and removed P0 Critical: Tackled by core team ASAP labels Jan 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/days Estimated to take multiple days, but less than a week kind/enhancement A net-new feature or improvement to an existing feature P1 High: Likely tackled by core team if no one steps up
Projects
None yet
Development

No branches or pull requests

1 participant