Test Description:
This test shows the fast recovery algorithm of TCP Reno with multiple packet drops.
Expected output:
  • After the first packet loss, duplicate ACKs are received.
    • When duplicate ACK count reaches the threshold of 3, fast retransmission is performed. TCP resets ssthresh to one half of number of packets in-flight (min(cwnd, rwnd)/2) but no less than 2. The packet which is presumed lost is retransmitted. cwnd is set to ssthresh + 3 * MSS
    • Fast recovery begins when the 4th duplicate ACK is received. With each duplicate ACKs above 3, cwnd increases by 1 MSS up to the limit imposed in this test. The max usable window is restricted to 14 packets, and no new packet can be sent for any duplicate ACK.
    • After the ACK of the retransmitted packet is received which acknowledged all outstanding packets, Fast Recovery is finished. The cwnd is set to ssthresh (7 packets), and because the pipe is empty, a burst of 7 packets is sent. Congestion avoidance is performed.
  • Another packet is dropped by the drop tail queue because of the burst of 7 packets. Fast retransmission/fast recovery is performed again.
    • The ssthresh is set to 3 packets after 3 duplicate ACKs. The cwnd is set to 6 packets (6*MSS).
    • Each duplicate ACK received increases the cwnd by 1 MSS.
    • In this case new packets are sent during fast recovery.
    • After the ACK which acknowledged all outstanding packet is received, Fast Recovery is finished. The cwnd is set to ssthresh (3 packets)
    • Because 2 packets are outstanding, no burst of packets is seen.
Test Topology
  Server .................Router.................Client

             8Mbs 5ms              800kbs 100ms
   6(0)------------------0(1)0(0)-----------------7(0)
SSF Configuration Test File: f15.dml
send window = receive window = max cnwd = 14 packets
SSF Tcpdump File: f15.tcpdump

Figure 1: Sequence number plot for tcpdump at router.

Server tcpdump, RTT and Congestion window plot
(EPS format plot)

Figure 2: Sequence number plot, RTT plot and cwnd plot for tcpdump at server

Note that in this test cwnd is upper bounded by 14 MSS (MaxConWnd), in order to run the test under the conditions similar to the NS-2 test.


NS Test with the same parameters

NS tcpdump trace file:f15.tr


Trace Analysis:

The output is consistent with what we expected.