A protocol for differentiating congestion-related packet loss versus
random packet loss in a wireless data connection. The protocol monitors
changes in the length of a transmission queue in a wireless data
connection over an interval substantially equal to the amount of time it
takes to transmit a window of data packets and receive acknowledgements
corresponding to all data packets transmitted in the window. If packet
loss is preceded by an increase in the queue length over two consecutive
intervals, the packet loss is designated as being due to congestion and a
congestion avoidance algorithm is initiated. Otherwise, the packet loss
is designated as random loss and the transmission window is maintained at
its current size. The protocol reduces the transmission rate only when
congestion is identified as the cause of lost packets; otherwise wireless
losses can simply be quickly retransmitted without a reduction in the
data transmission rate.