| 1 | |
| 2 |
|
| 3 | ====================
|
| 4 | Thin-streams and TCP
|
| 5 | ====================
|
| 6 |
|
| 7 | A wide range of Internet-based services that use reliable transport
|
| 8 | protocols display what we call thin-stream properties. This means
|
| 9 | that the application sends data with such a low rate that the
|
| 10 | retransmission mechanisms of the transport protocol are not fully
|
| 11 | effective. In time-dependent scenarios (like online games, control
|
| 12 | systems, stock trading etc.) where the user experience depends
|
| 13 | on the data delivery latency, packet loss can be devastating for
|
| 14 | the service quality. Extreme latencies are caused by TCP's
|
| 15 | dependency on the arrival of new data from the application to trigger
|
| 16 | retransmissions effectively through fast retransmit instead of
|
| 17 | waiting for long timeouts.
|
| 18 |
|
| 19 | After analysing a large number of time-dependent interactive
|
| 20 | applications, we have seen that they often produce thin streams
|
| 21 | and also stay with this traffic pattern throughout its entire
|
| 22 | lifespan. The combination of time-dependency and the fact that the
|
| 23 | streams provoke high latencies when using TCP is unfortunate.
|
| 24 |
|
| 25 | In order to reduce application-layer latency when packets are lost,
|
| 26 | a set of mechanisms has been made, which address these latency issues
|
| 27 | for thin streams. In short, if the kernel detects a thin stream,
|
| 28 | the retransmission mechanisms are modified in the following manner:
|
| 29 |
|
| 30 | 1) If the stream is thin, fast retransmit on the first dupACK.
|
| 31 | 2) If the stream is thin, do not apply exponential backoff.
|
| 32 |
|
| 33 | These enhancements are applied only if the stream is detected as
|
| 34 | thin. This is accomplished by defining a threshold for the number
|
| 35 | of packets in flight. If there are less than 4 packets in flight,
|
| 36 | fast retransmissions can not be triggered, and the stream is prone
|
| 37 | to experience high retransmission latencies.
|
| 38 |
|
| 39 | Since these mechanisms are targeted at time-dependent applications,
|
| 40 | they must be specifically activated by the application using the
|
| 41 | TCP_THIN_LINEAR_TIMEOUTS and TCP_THIN_DUPACK IOCTLS or the
|
| 42 | tcp_thin_linear_timeouts and tcp_thin_dupack sysctls. Both
|
| 43 | modifications are turned off by default.
|
| 44 |
|
| 45 | References
|
| 46 | ==========
|
| 47 | More information on the modifications, as well as a wide range of
|
| 48 | experimental data can be found here:
|
| 49 |
|
| 50 | "Improving latency for interactive, thin-stream applications over
|
| 51 | reliable transport"
|
| 52 | http://simula.no/research/nd/publications/Simula.nd.477/simula_pdf_file
|