TCP Tuning

This article needs to be cleaned up to conform to a higher standard of quality.
This article has been tagged since September 2005.
See Wikipedia:How to edit a page and Category:Wikipedia help for help, or this article's talk page.


Tuning of TCP for high performance networks.

Observation, the "wizard gap" - people with well tuned networks perform 10x to 1000x as fast as ordinary users, especially on high speed (gigabit and beyond) networks. Image:Http://people.internet2.edu/~ghb/wizcamp/images/wizgap02.jpg

The structure of this page draws heavily from the work of Matt Mathis.

Contents

Technical introduction

Network and system characteristics

Bandwidth*delay product (BDP)

Bandwidth*delay product (BDP) is a term primarily used in conjunction with the TCP to refer to the number of bytes necessary to fill a TCP "path". TCP has a concept of windows which are used for congestion control and for determining the optimum size of packet that is resilient to packet loss, packet truncation (due to link layer maximum transmission unit) or reordering.

High performance networks have very large BDPs, on the order of (xxx) (bytes). Operating systems and protocols designed as recently as a few years ago when networks were slower were tuned for BDPs of orders of magnitude smaller, with implications for tuning.

(graph goes here of historical BDP measures, is there one?)

Buffers

The original TCP configurations supported buffers of 64K Bytes, which was adequate for slow links or links with small round trip times (RTTs). Larger buffers are required by the high performance options described below.

Buffering is used throughout high performance network systems to handle delays in the system. In general, buffer size will need to be scaled proportional to the amount of data "in flight" at any time. For very high performance applications that are not sensitive to network delays, it is possible to interpose large end to end buffering delays by putting in intermediate data storage points in an end to end system, and then to use automated and scheduled non-real-time data transfers to get the data to their final endpoints.

(the second paragraph may or may not belong in this section - move it below to a piece on "avoiding long lived TCP flows")

TCP Networking Options for High Performance

  • RFC 2018 - TCP Selective Acknowledgment Options
  • RFC 1323 - TCP Extensions for High Performance
  • Maximum Buffer Sizes on the host
  • Application Buffers
  • Path MTU

External links