We show how to establish TLS connections using one less round trip. In our approach, which we call TurboTLS, the initial client-to-server and server-to-client flows of the TLS handshake are sent over UDP rather than TCP. At the same time, in the same flights, the three-way TCP handshake is carried out. Once the TCP connection is established, the client and server can complete the final flight of the TLS handshake over the TCP connection and continue using it for application data. No changes are made to the contents of the TLS handshake protocol, only its delivery mechanism. We avoid problems with UDP fragmentation by using request-based fragmentation, in which the client sends in advance enough UDP requests to provide sufficient room for the server to fit its response with one response packet per request packet. Clients can detect which servers support this without an additional round trip, if the server advertises its support in a DNS HTTPS resource record. Experiments using our software implementation show substantial latency improvements. On reliable connections, we effectively eliminate a round trip without any noticeable cost. To ensure adequate performance on unreliable connections, we use lightweight packet ordering and buffering; we can have a client wait a very small time to receive a potentially lost packet (e.g., a fraction of the RTT observed for the first fragment) before falling back to TCP without any further delay, since the TCP connection was already in the process of being established. This approach offers substantial performance improvements with low complexity, even in heterogeneous network environments with poorly configured middleboxes.
翻译:我们展示了如何使用少一个圆程来建立 TLS 连接。 在我们的方法中,我们称之为 TurboTLS 的TLS, 最初客户端对服务器和服务器对客户端的流动是通过UDP而不是TCP 传递的。 同时, 在同一飞行中, 3个方向的TCP 握手是执行的。 一旦 TCP 连接建立起来, 客户和服务器就可以完成 TLS 的最后飞行, 在 TCP 连接上进行握手, 并继续使用它的数据 。 我们的方法是, TLS 握手协议的内容没有改变, 只有它的交付机制。 我们通过使用基于请求的碎块, 避免了用户端点的客户端断开的客户端问题。 客户端可以检测哪些服务器支持, 而无需额外的往返, 如果服务器在低频端 HTTPS 资源记录上宣传支持, 客户端和软盘执行的实验显示显著的拉特度改进。 在可靠的连接上, 我们有效地消除了中端连接, 而没有明显的成本。 保证服务器在低空端的连接中, 能够正常连接。