Thin-streams and TCP¶
A wide range of Internet-based services that use reliable transportprotocols display what we call thin-stream properties. This meansthat the application sends data with such a low rate that theretransmission mechanisms of the transport protocol are not fullyeffective. In time-dependent scenarios (like online games, controlsystems, stock trading etc.) where the user experience dependson the data delivery latency, packet loss can be devastating forthe service quality. Extreme latencies are caused by TCP’sdependency on the arrival of new data from the application to triggerretransmissions effectively through fast retransmit instead ofwaiting for long timeouts.
After analysing a large number of time-dependent interactiveapplications, we have seen that they often produce thin streamsand also stay with this traffic pattern throughout its entirelifespan. The combination of time-dependency and the fact that thestreams provoke high latencies when using TCP is unfortunate.
In order to reduce application-layer latency when packets are lost,a set of mechanisms has been made, which address these latency issuesfor thin streams. In short, if the kernel detects a thin stream,the retransmission mechanisms are modified in the following manner:
If the stream is thin, fast retransmit on the first dupACK.
If the stream is thin, do not apply exponential backoff.
These enhancements are applied only if the stream is detected asthin. This is accomplished by defining a threshold for the numberof packets in flight. If there are less than 4 packets in flight,fast retransmissions can not be triggered, and the stream is proneto experience high retransmission latencies.
Since these mechanisms are targeted at time-dependent applications,they must be specifically activated by the application using theTCP_THIN_LINEAR_TIMEOUTS and TCP_THIN_DUPACK IOCTLS or thetcp_thin_linear_timeouts and tcp_thin_dupack sysctls. Bothmodifications are turned off by default.
References¶
More information on the modifications, as well as a wide range ofexperimental data can be found here:
“Improving latency for interactive, thin-stream applications overreliable transport”http://simula.no/research/nd/publications/Simula.nd.477/simula_pdf_file