TCP Fast Open

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In computer networking, TCP Fast Open (TFO) is an extension to speed up the opening of successive Transmission Control Protocol (TCP) connections between two endpoints.

Details[edit]

It works by using a TFO cookie (a TCP option) in the initial SYN packet to authenticate a previously connected client. If successful, it may start sending data to the client before the receipt of the final ACK packet of the three way handshake is received, skipping a round trip and lowering the latency in the start of transmission of data. This cryptographic cookie is stored on the client side and is set upon the initial connection. It is then repeated back whenever the client reconnects.[1]

The cookie is generated by applying a block cipher keyed on a key held secret by the server to the client's IP address, generating a MAC tag that cannot be forged.

The proposal was originally presented in 2011[2] and is, as of February 2012, an IETF Internet draft.[3]

Implementations[edit]

IPv4 support for TFO was merged into the Linux kernel mainline in versions 3.6 (support for clients) and 3.7 (support for servers),[4][5] and was turned on by default in version 3.13.[6] TFO support for IPv6 servers was merged in version 3.16.[7]

Google Chrome and Chromium browsers have support, which is disabled by default, on Linux, Chrome OS, and Android operating systems.

Alternatives[edit]

TCP Fast Open is similar to an earlier proposal from 1994, called T/TCP (RFC 1644), which was not widely adopted due to security issues.

See also[edit]

References[edit]

  1. ^ Kerrisk, Michael (2012-08-01). "TCP Fast Open: expediting web services". LWN.net. 
  2. ^ Radhakrishnan S, Cheng Y, Chu J, Jain A, Raghavan B (2011-12-06). "TCP Fast Open". ACM CoNEXT. 
  3. ^ Cheng Y, Chu J, Radhakrishnan S, Jain A (2013-01-26). TCP Fast Open. IETF. I-D draft-ietf-tcpm-fastopen-06. https://tools.ietf.org/html/draft-ietf-tcpm-fastopen-06.
  4. ^ Kerrisk, Michael (2012-08-01). "TCP Fast Open: expediting web services". LWN.net. "The client-side support has been merged for Linux 3.6" 
  5. ^ Vaughan-Nichols, Steven J (2012-12-11). "Linux 3.7 arrives, ARM developers rejoice". Linux and Open Source (ZDNet). "Linux 3.7. TCP Fast Open will now be supported on servers" 
  6. ^ 1.10. TCP Fast Open enabled by default. "Linux Kernel 3.13". kernelnewbies.org. 19 January 2014. Retrieved 11 February 2014. 
  7. ^ 1.4. TCP Fast Open server mode on IPv6 support. "Linux Kernel 3.16". kernelnewbies.org. 3 August 2014. Retrieved 14 September 2014.