TCP Fast Open

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. It works by using a TFO cookie (a TCP option) which is a cryptographic cookie that is stored on the client side, set upon the initial connection with server.[1] When the client later reconnects, it sends the initial SYN packet along with the "TFO cookie" and data to authenticate. If successful, the server may start sending data to the client even before the receipt of the final ACK packet of the three way handshake, thus skipping on waiting for a round trip and lowering the latency in the start of transmission of data. 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 was, as of February 2012, an IETF Internet draft.[3] The specification was published as RFC 7413 in December 2014.[4] TCP Fast Open shares the goal of bypassing the three-way handshake of TCP with an earlier proposal from 1994, called T/TCP (RFC 1644). In contrast to TCP Fast Open, T/TCP paid no attention to security,[4] opening path for vulnerabilities and failing to gain traction.

IPv4 support for TFO was merged into the Linux kernel mainline in versions 3.6 (support for clients) and 3.7 (support for servers),[5][6] and was turned on by default in version 3.13.[7] TFO support for IPv6 servers was merged in version 3.16.[8] Google Chrome and Chromium browsers have support for TFO on Linux, including Chrome OS and Android.

See also

References

  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. 4.0 4.1 Yuchung Cheng, Jerry Chu, Sivasankar Radhakrishnan, and Arvind Jain (December 2014). "TCP Fast Open". IETF. Retrieved 10 January 2015.
  5. Kerrisk, Michael (2012-08-01). "TCP Fast Open: expediting web services". LWN.net. The client-side support has been merged for Linux 3.6
  6. 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
  7. "Linux Kernel 3.13, Section 1.10. TCP Fast Open enabled by default". kernelnewbies.org. 19 January 2014. Retrieved 11 February 2014.
  8. "Linux Kernel 3.16, Section 1.4. TCP Fast Open server mode on IPv6 support". kernelnewbies.org. 3 August 2014. Retrieved 14 September 2014.

External links