ABSTRACT
In this paper, we consider TCP throughput deadlock problems caused by an inter play between the Nagle algorithm, delayed acknowledgment algorithm, and sev eral implementation details. For some combinations of send and receive buffers, a TCP sender cannot send more segments due to the Nagle algorithm and, at the same time, a TCP receiver cannot acknowledge more segments received due to the delayed acknowledgment algorithm. The outcome is a deadlock, which can only be resolved by the receiver’s timer. Although the deadlock can take place in any types of networks, it is generally more difficult to ensure deadlock-free connec tions on high-speed networks. Moreover, the impact is much more significant on high-speed networks, and the deadlock renders the connection practically unus able. Several straightforward solutions, such as turning off the Nagle algorithm and acknowledging every segment, have been proposed; however, they reintro duce the same problems that they were initially designed for. In this paper we pro pose an adaptive acknowledgment algorithm (A3) to eliminate throughput dead locks on the receiver side while preserving the original intent of employing the Nagle algorithm and delayed acknowledgment. An A3-receiver uses the same de layed acknowledgment as before, but with an additional component to adaptively
compute the acknowledgment threshold, which is adjusted according to the maxi mum amount of segments sent by the sender. By adapting to the sender’s state, an A3-receiver can avoid deadlocks when there is no network congestion. To further adapt to possible network congestion, A3-receivers are enhanced by incorporating a slow-start-like algorithm to adjust the acknowledgment threshold when network congestion is suspected. The resulting algorithm is referred to as congestionsensitive A3 (CSA3). Extensive simulation experiments have confirmed the effec tiveness of both A3 and CSA3.