Skip to content
This repository has been archived by the owner on Apr 16, 2021. It is now read-only.

add a QUIC blog post #194

Closed
wants to merge 7 commits into from
Closed

Conversation

marten-seemann
Copy link

DO NOT MERGE / PUBLISH YET!

This is my first draft of a blog post about QUIC.
I'd like to ask for some feedback. Is everything understandable? Did I miss anything important?

@ghost ghost added the stage: skeleton label Nov 12, 2018
@victorb
Copy link
Contributor

victorb commented Nov 12, 2018

Seems to be missing the header in the document to make it show up in the blog listing. Take a look at https://raw.githubusercontent.com/ipfs/blog/master/content/post/19-ipfs-0-4-3-released.md for an example of what I mean.

Copy link
Collaborator

@lidel lidel left a comment

Choose a reason for hiding this comment

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

Did a first pass and added some suggestions as inline comments below:

content/post/quic/article.md Outdated Show resolved Hide resolved
content/post/quic/article.md Outdated Show resolved Hide resolved

![tcp-handshake](tcp-handshake.png)

In order to establish a new encrypted connection between two hosts (the same applies to TLS 1.2 connection), the client first initiates a TCP connection. The three-way handshake necessary to establish a TCP connection takes one network roundtrip time. After that, the client initiates the cryptographic handshake (secio for libp2p connections, or TLS for browsers). Establishing a secio or TLS 1.2 connection takes another two roundtrip times. Once that is done, client and server are set up to exchange application data.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Would be useful to provide info what secio is, or at least point at a relevant repo:

Suggested change
In order to establish a new encrypted connection between two hosts (the same applies to TLS 1.2 connection), the client first initiates a TCP connection. The three-way handshake necessary to establish a TCP connection takes one network roundtrip time. After that, the client initiates the cryptographic handshake (secio for libp2p connections, or TLS for browsers). Establishing a secio or TLS 1.2 connection takes another two roundtrip times. Once that is done, client and server are set up to exchange application data.
In order to establish a new encrypted connection between two hosts (the same applies to TLS 1.2 connection), the client first initiates a TCP connection. The three-way handshake necessary to establish a TCP connection takes one network roundtrip time. After that, the client initiates the cryptographic handshake ([secio](https://github.com/libp2p/go-libp2p-secio) for libp2p connections, or TLS for browsers). Establishing a secio or TLS 1.2 connection takes another two roundtrip times. Once that is done, client and server are set up to exchange application data.

Copy link
Author

Choose a reason for hiding this comment

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

There's a secio spec in progress, so maybe we can link to that (if the spec lands before this blog post).

content/post/quic/article.md Outdated Show resolved Hide resolved
lidel and others added 3 commits November 14, 2018 11:38
Co-Authored-By: marten-seemann <martenseemann@gmail.com>
Co-Authored-By: marten-seemann <martenseemann@gmail.com>
@lidel
Copy link
Collaborator

lidel commented Nov 14, 2018

@marten-seemann @b5 asked if anyone been looking into weather or not flipping to QUIC helps with NAT traversal issues.
I wonder if it is something worth mentioning in blog post, and/or if we should ask for feedback on NAT traversal issues and QUIC (post already mentions middleboxes losing ability to mess things up etc)

content/post/quic/article.md Outdated Show resolved Hide resolved
content/post/quic/article.md Outdated Show resolved Hide resolved
b5 and others added 3 commits November 15, 2018 12:06
Co-Authored-By: marten-seemann <martenseemann@gmail.com>
Co-Authored-By: marten-seemann <martenseemann@gmail.com>
@daviddias
Copy link
Contributor

@marten-seemann what's the status on this post?

@marten-seemann
Copy link
Author

Should be mostly done, but since we didn't publish it so far, I was considering delaying it until we roll out the next QUIC update later this quarter.

@Stebalien
Copy link
Contributor

Status: A QUIC update is just around the corner but... go-ipfs is in a feature freeze. This should be published along with the 0.5.0 release.


QUIC is a new UDP based internet transport that was invented by Google in 2013 and rolled out as an experiment in Google Chrome and Google's frontend servers over the next few years. According to Google's [measurements](https://www.ietf.org/proceedings/99/slides/slides-99-maprg-the-quic-transport-protocol-design-and-internet-scale-deployment-00.pdf), on lossy connections QUIC reduces search latency (the time it takes to fully load the Google Search page) by 3.6 to 8% and the YouTube rebuffer rate (the number of times a YouTube video stops to load new data) by 15 to 18%.

In 2016, the IETF formed a Working Group to specify the QUIC protocol, which is scheduled to complete the protocol specification by mid 2019.
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we add context here about why WE are talking about it? Aka - "In 0.4.18, go-ipfs released experimental QUIC support, and in May 2019 libp2p released 0.1.0 of the go-libp2p-quic-transport. We aim for QUIC to become the default network transport in the near future to solve many of the long standing issues with TCP - including better NAT traversal, faster connection establishment, and lower resource utilization."

Copy link
Contributor

Choose a reason for hiding this comment

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

Note as well that there is a Node.js implementation in the works, and that folks can read more on that soon! (NearForm is working on a post about the implementation work which we've helped fund)

@jessicaschilling
Copy link
Contributor

Closing due to age.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants