TCP Acceleration

From Wikipedia, the free encyclopedia

TCP Acceleration is the name of a series of techniques for achieving better throughput on an Internet connection than standard TCP achieves, without modifying the end applications. It is an alternative or a supplement to TCP tuning.

Commonly used approaches include ack pacing, TCP proxying in middleboxes and TCP offload engines.

[edit] TCP proxying in middleboxes

This is referred to by some as "transparent TCP acceleration", but that term is also used for other methods.

TCP proxying involves breaking of long end-to-end control loops to several smaller control loops by intercepting and relaying TCP connections within the network. By adopting this procedure, it allows for the TCP flows to have a shorter reaction time to packet losses which may occur within the network and thus guarantees a higher throughput. This acceleration function has been implemented on a network processor (XScale IXP 2350) by Sameer Ladiwala for his Masters Thesis at the University of Massachusetts, Amherst.

The idea of a TCP accelerator is to terminate TCP connections inside the network processor and then relay the data to a second connection toward the end system. The data packets that originate from the sender are buffered at the accelerator node, which is responsible for performing local retransmissions in the event of packet loss. Thus, in case of losses, the feedback loop between the sender and the receiver is shortened to the one between the acceleration node and the receiver which guarantees a faster delivery of data to the receiver.

Since TCP is a rate-adaptive protocol, the rate at which the TCP sender injects packets into the network is directly proportional to the prevailing load condition within the network as well as the processing capacity of the receiver. The prevalent conditions within the network are judged by the sender on the basis of the acknowlgedgments received by it. The acceleration node splits the feedback loop between the sender and the receiver and thus guarantees a shorter round trip time (RTT) per packet. A shorter RTT is beneficial as it ensures a quicker response time to any changes in the network and a faster adaption by the sender to combat these changes.

Disadvantages of the method include the fact that the TCP session has to be directed through the accelerator; this means that if routing changes, so that the accelerator is no longer in the path, the connection will be broken. It also destroys the end-to-end property of the TCP ack mechanism; when the ACK is received by the sender, the packet has been stored by the accelerator, not delivered to the receiver.

If the recipient system is using very small buffers, the ability of the accelerator node to buffer large payloads of data brings about a significant improvement in the connection throughput. The UMass TCP accelerator allocates 128 kB per connection to buffer at most two times the maximum allowable window size bytes of payload data (making the maximum window size 64 kB). It advertises a maximum window of 64 kB till the amount of unacknowledged buffered data exceeds half the buffer space allocated to the connection. At this stage, it varies the window in proportion to the free space in the buffer. Thus, by adopting this approach, accelerated TCP allows the sender to grow its window at a greater rate than conventional TCP which results in a performance improvement. If the recipient uses buffers larger than 64 kB, as is commonly done using TCP window scaling, this cannot be taken advantage of by the sender.

[edit] See also

Languages