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.