@@ -385,7 +385,7 @@ protocol used by HTTP for another twenty-plus years.
385385
386386Adding security to HTTP-over-TCP in the form of SSL and TLS further
387387exacerbated performance issues, even as advancements to HTTP mitigated
388- some of the orginal problems. As noted in the preceding section, it
388+ some of the original problems. As noted in the preceding section, it
389389takes at least one round trip time to establish a secure TLS
390390session. The relatively recent introduction of 0-RTT data reduces the
391391latency before the first data can be sent; it also comes with some
@@ -397,7 +397,7 @@ to complete its 3-way handshake before the first TLS handshake
397397message-which is just data as far as TCP is concerned-can be sent. So
398398the sequence of events was:
399399
400- - Client initiates TCP 3-way handshake to establish TCP session.
400+ - Client initiates TCP 3-way handshake to establish TCP session.
401401
402402- TLS handshake establishes security parameters for client-server
403403 communication.
@@ -407,7 +407,7 @@ the sequence of events was:
407407In other words, in the original TLS-over-TCP model it would take at
408408least three RTTs to get a response to a single HTTPS request. In fact
409409up until TLS 1.3 arrived it was at least four RTTs due to the use of
410- two RTTs to complete the TLS handshake.
410+ two RTTs to complete the TLS handshake.
411411
412412This is not the only problem with running HTTP over TCP. A reliable,
413413ordered byte stream as provided by TCP isn't exactly the right model
@@ -431,9 +431,7 @@ In this section we will focus on how QUIC particularly improves the
431431performance of TLS compared to running over TCP. QUIC is quite a
432432comprehensive re-working of the transport layer that could fill its
433433own book-indeed the set of RFCs that define it run to the hundreds of
434- pages.
435-
436-
434+ pages.
437435
438436QUIC originated at Google in 2012 and was subsequently developed as a
439437proposed standard at the IETF. It has already seen a solid amount of
@@ -446,28 +444,67 @@ underlying transport.
446444
447445The single most important change in QUIC from the perspective of TLS
448446performance is that it doesn't treat the transport and security
449- handshakes as two distinct layers. Insteady , QUIC has build a
447+ handshakes as two distinct layers. Instead , QUIC has build a
450448cryptographic handshake based on TLS into the transport. This is
451- illustrated by Figure foo.
449+ illustrated by Figure foo. As RFC 9001 puts it:
452450
453451
452+ *Rather than a strict layering, these two protocols cooperate: QUIC
453+ uses the TLS handshake; TLS uses the reliability, ordered delivery,
454+ and record layer provided by QUIC. *
454455
455456
456- .. more to come
457-
458-
457+ .. _fig-quic-tls :
458+ .. figure :: figures/QUIC-TLS.png
459+ :width: 500px
460+ :align: center
459461
460- QUIC is a most interesting development in the world of transport
461- protocols. Many of the limitations of TCP have been known for decades,
462- but QUIC represents one of the most successful efforts to date to
463- stake out a different point in the design space. Because QUIC was
464- inspired by experience with HTTP, TLS, and the Web—which arose long after
465- TCP was well established in the Internet—it presents a fascinating
466- case study in the unforeseen consequences of layered designs and in
467- the evolution of the Internet. There is a lot more to it that we can
468- cover here. The definitive reference for QUIC is RFC 9000, while a
469- more readable overview of the protocol and its deployment is reported
470- in this paper from SIGCOMM 2017.
462+ Protocol stacks compared. (a) HTTP over TLS over TCP. (b) HTTP and
463+ TLS Handshake over QUIC.
464+
465+ This rearrangement of layers takes a bit of work to understand. The
466+ central idea is that QUIC has the ability to provide encryption and
467+ authentication to the data it transmits once it has a set of keys to
468+ work with. So the TLS handshake operates pretty much as it did over
469+ TCP, but instead of wrapping up TLS handshake messages in the TLS
470+ record layer before sending them out over TCP, we can send the TLS
471+ handshake messages over QUIC directly. QUIC also provides the
472+ reliability, congestion control, etc. that TCP provides. Once the TLS
473+ handshake is complete, the keying material for the connection is
474+ passed to QUIC, which now is able to encrypt and authenticate the data
475+ that is sent by HTTP.
476+
477+ The most obvious practical impact of this is that the establishment of
478+ a QUIC connection takes place at the same time as the transmission of TLS
479+ handshake messages, rather than taking place prior to the TLS
480+ handshake as with TCP. By the time the TLS handshake completes, the
481+ two ends of the QUIC connection have all the state needed to transmit
482+ data such as HTTP messages. Furthermore, in the cases where 0-RTT data
483+ can be sent (because there are shared secrets cached from a
484+ previous connection), the first HTTP request can actually be sent at
485+ the same time as the client Hello message.
486+
487+ A final detail of note is that QUIC runs on top of UDP rather than
488+ directly over IP. The reason behind this is that there are plenty of
489+ middleboxes in the Internet that assume that the only acceptable
490+ transport protocols are TCP and UDP and block anything else. So while
491+ UDP doesn't add much in the way of useful functionality to QUIC, it
492+ was an expedient step to run QUIC over UDP to ease deployment
493+ of QUIC in the Internet.
494+
495+ QUIC is an interesting development in the world of transport protocols
496+ and not just for its impact on security. Many of the limitations of
497+ TCP have been known for decades, but QUIC represents one of the most
498+ successful efforts to date to stake out a different point in the
499+ design space. Because QUIC was inspired by experience with HTTP, TLS,
500+ and the Web—which arose long after TCP was well established in the
501+ Internet—it presents a fascinating case study in the unforeseen
502+ consequences of layered designs and in the evolution of the
503+ Internet. There is a lot more to it that we can cover here. The
504+ definitive reference for QUIC is RFC 9000, while RFC 9001 covers the
505+ relationship of TLS to QUIC. A more readable overview of the
506+ protocol's design and deployment appears in the following paper from
507+ SIGCOMM 2017.
471508
472509
473510.. _reading_quic :
@@ -478,6 +515,9 @@ in this paper from SIGCOMM 2017.
478515 <https://research.google/pubs/the-quic-transport-protocol-design-and-internet-scale-deployment/> `__.
479516 SIGCOMM 2017.
480517
518+ We also covered the impact of QUIC on congestion control in our book
519+ on TCP Congestion Control.
520+ `TCP Congestion Control: A Systems Approach <https://tcpcc.systemsapproach.org >`__.
481521
482522
4835236.5 A Systems View of TLS
0 commit comments