Windows 10 Anniversary updates to TCPAnniversary Update adds support for newer TCP protocol options to improve speed and reduce latency
2016-11-22 by Philip
Tags: TFO, ICW, TCP, ACK
Windows 10 Anniversary update adds support for a few newer TCP protocol options aimed to improve web browsing speed and reduce latency. Even though many of them are not user-editable in the client variants of the OS, I will outline the important changes below.
TCP Fast Open (TFO) - RFC 7413
TFO allows for sending and receiving data in the initial SYN packets during the TCP handshake. If supported by both the client and the server, it allows for reduced latency in establishing successive TCP connections to the same server. This is accomplished by storing a TFO cookie on the client after the initial TCP handshake. This TFO cookie is sent to the server if the client later reconnects, allowing successive TCP handshakes to skip one roundtrip delay, reducing latency.
TCP Fast Open is enabled by default in the Windows 10 Anniversary update and newer Linux 3.7+ kernels. It is not available in Chrome for PCs (Only under Android/Chrome OS, see: chrome://flags/ and look for "TCP Fast Open" flag). It can be enabled in MS Edge (look at the About:Flags setting "TCP Fast Open").
You can see the current value in command prompt using: netsh int tcp show global
It can be set using: netsh int tcp set global fastopen=enabled
Recommendation: Leave as is, enabled in the OS is ok as applications need to support/enable it separately. It still needs wider adoption.
Note: It may cause issues with dropped packets by some older middleware/routers/firewalls that do not like SYN packets with larger headers.
Initial Congestion Window (IW, or ICW) - RFC 6928
The Initial Congestion Window determines how much data TCP can send out before waiting for acknowledgements and adjusting the transfer speed depending on line conditions. Traditionally (RFC 3390), this was between 2 and 4 segments, however, with faster broadband connections it has been proposed to increase the permitted TCP Initial Window (IW) to 10 segments.
The default value in Windows 10 and Server 2012 R2 was 4 MSS, it was increased to 10 MSS for the Internet template with the anniversary update, which is a good thing. It can't be changed directly on Windows 10 Home/Pro, you'd have to change the template to "compat" to limit it, which is counterproductive.
Our take: IW of 10 is better than 4.
Tail Loss Probe (TLP) - experimental IETF draft
Aims to improve packet loss recovery. It is enabled by default for connections with over 10ms rtt. Again, for client variants of Windows 10 (Home/Pro), it is only adjustable if you change the template from "Internet" to "compat", which disables it.
Our take: It is better to leave enabled, which is the default.
Recent ACKnowledgement (RACK) - experimental IETF draft
Detects packet loss based on time rather than checking packet sequence. It is enabled by default for connections over 10ms rtt that use SACK. Client Windows 10 OSes have it enabled in the "Internet" template, disabled in the "compat" template, and the setting is read-only.
Our take: undecided, may be useful in some fringe situations and the benefit may be offset by overhead. Needs further testing.
Windows Low Extra Delay BAckground Transport (LEDBAT) - RFC 6817
It is a Congestion Control module designed for background transfers, so that they consume only unused background bandwidth, without interfering with other TCP connections. It is undocumented, experimental, and not easily configurable.
Our take: irrelevant, as we can't test, change, or use it.
The Anniversary update improves and builds up on some new experimental TCP options which is a good thing. Increasing the Initial Congestion Window to 10 segments and support for TCP Fast open are both great. At the same time, Microsoft has locked down a lot of those settings and they are not user-editable in Windows 10 Home/Pro.