Skip to content

Blog post about 0rtt #329

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

Merged
merged 10 commits into from
May 27, 2025
Merged

Blog post about 0rtt #329

merged 10 commits into from
May 27, 2025

Conversation

rklaehn
Copy link
Contributor

@rklaehn rklaehn commented May 23, 2025

Blog post exploring 0rtt using a simple pingpong example

Code is here: n0-computer/iroh#3323

Todo: reference example once it is merged!

Copy link

vercel bot commented May 23, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
iroh-computer ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 27, 2025 2:40pm


# What is 0-RTT

Iroh connections are just peer to peer QUIC connections, using a fork of the quinn rust crate. QUIC is using TLS for encryption.
Copy link
Contributor

Choose a reason for hiding this comment

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

Quinn should be capitalised.

@rklaehn rklaehn requested a review from flub May 27, 2025 07:38
Copy link
Contributor

@flub flub left a comment

Choose a reason for hiding this comment

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

LGTM, but would be good to get someone with more TLS knowledge review at least that section.


### ClientHello

Like before, the client sends a `ClientHello` message. The `ClientHello` for a connection attempt using 0-RTT must contain a set of ids of pre shared keys, otherwise it is not possible for the server to decrypt subsequent user data before the full handshake is complete. In addition it has an `early data` flag set.
Copy link
Contributor

Choose a reason for hiding this comment

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

Double checking: you're sure that in QUIC's use of TLS the early data flag is also set when using 0-RTT? I hope your wireshark captures could confirm this.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

if there is no early_data flag, you are not allowed to send early data. So I would assume that it is set.

@rklaehn
Copy link
Contributor Author

rklaehn commented May 27, 2025

LGTM, but would be good to get someone with more TLS knowledge review at least that section.

I think both Phillip and dig are quite busy. And I am pretty sure that the basic mechanism is correct. If there is some tiny error people can complain about it and provide some additional publicity...

Copy link
Contributor

@ramfox ramfox left a comment

Choose a reason for hiding this comment

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

pushed some minor nits! looks great. Followed along and everything works as expected.

@rklaehn
Copy link
Contributor Author

rklaehn commented May 27, 2025

OK, :shipit: ...

@rklaehn rklaehn merged commit a468dea into main May 27, 2025
4 checks passed
@rklaehn rklaehn deleted the 0rtt branch May 27, 2025 15:53
@github-project-automation github-project-automation bot moved this from 🏗 In progress to ✅ Done in iroh May 27, 2025
Copy link
Member

@matheus23 matheus23 left a comment

Choose a reason for hiding this comment

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

Lol still had this pending comment in my review queue 🙃

export const post = {
draft: false,
author: 'Rüdiger Klaehn',
date: '2025-05-21',
Copy link
Member

Choose a reason for hiding this comment

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

Reminder comment to fix the date when it comes out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

4 participants