HP-UX TCP/IP Performance White Paper, March 2008

6
sufficiently large for a given bandwidth-delay product, the transport is better positioned to taking full
advantage of the remote TCP's advertised window.
2.2 Selective Acknowledgement (RFC 2018)
TCP may experience poor performance when multiple packets are lost from one window of data. Selective
Acknowledgment (SACK), described in RFC 2018, is effective in recovering from loss of multiple segments
in a window. It accomplishes this by extending TCP's original, simple "ACK to the first hole in the data"
algorithm with one that describes holes past the first lost segment. This information, sent from the receiver to
the sender as an option field in the TCP header, allows the sender to retransmit lost segments sooner. In
addition, the acknowledgment of segments after the first hole in sequence space using SACK allows the
sender to avoid retransmission of segments which were not lost.
SACK is configured in HP-UX with the ndd tunable tcp_sack_enable, which can be set to the following
values:
0: Never initiate, nor accept the use of SACK
1: Always ask for, and accept the use of SACK
2: Do not ask for, but accept the use of SACK (Default)
The default value of 2 is somewhat conservative, as the system will not initiate the use of SACK on a
connection. It may be necessary to keep this value in some cases, as other TCP implementations which do
not support SACK may be improperly implemented and may not ignore this option when it is requested in a
TCP SYN segment. However, if the remote initiates the connection and asks for SACK, HP-UX will honor
that request.
A tcp_sack_enable value of 1 should be used if you want the system to use SACK for those connections
initiated from the system itself (i.e. applications on the system calling connect() or t_connect()).
2.3 Limited Transmit (RFC 3042)
HP-UX implements TCP Limited Transmit (RFC 3042), which provides faster recovery from packet loss.
When a segment is lost, exercising the TCP Fast Retransmit algorithm (RFC 2001) is much faster than
waiting for the TCP retransmit timeout.
In order to trigger the TCP Fast Retransmit, three duplicate acknowledgments need to be received.
However, when the congestion window is small, enough duplicate acknowledgments may not be produced.
The Limited Transmit feature attempts to induce necessary duplicate acknowledgments in such situations.
For each of the first two duplicate ACKs, Limited Transmit sends a new data segment (if new data is
available). If a previous segment has in fact been lost, these new segments will induce additional duplicate
acknowledgments. This improves the chances of initiating Fast Retransmit.
Limited Transmit can be used either with or without the TCP selective acknowledgement (SACK) mechanism.
2.4 Large Initial Congestion Window (RFC 3390)
The congestion window is the flow-control imposed by the sending TCP entity. When TCP starts a new
connection or re-starts transmission after a long idle period, it starts conservatively by sending a few
segments, i.e. the initial congestion window, and does not utilize the whole window advertised by the
receiving TCP.