Test Description:
This test shows the basic behavior of TCP Tahoe including Slow start, Congestion avoidance, Fast Retransmission with multiple packet drops. (generic Tahoe).
Expected output:
  • When a packet is dropped, duplicate ACKs are received. When the count of duplicate ACK reaches the threshold of 3, the packet which is presumed lost is retransmitted.
  • Congestion window is set to one packet. ssthresh is set to half the number of packets in-flight. In this test, ssthresh is set to 13 packets.
  • The ACK of the retransmitted packet is received with acknowledgment of two packets. Slow start is performed.
    • When congestion window is less than ssthresh, one packet increment is add to congestion window.
    • When congestion window is strictly greater than or equal tossthresh, congestion avoidance is performed. The congestion window increment is calculated by formula MSS*MSS/cwnd. Congestion window will increase by one packet roughly per one round-trip time.
Test Topology
 Server................Router...................Client

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

Figure 1: sequence plot for the tcpdump at Router
Zoom in on SSF trace

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

Figure 2: sequence plot, RTT plot and cwnd plot for the Server

NS Test with the same parameters

NS Test Trace: f2.tr

Zoom in on NS trace


Trace Analysis:

The test output is consistent with expected output.
  • Packet loss and fast retransmission:
    • When three duplicate packets were received, packet with sequence #24961 was retransmitted.
    • From Figure 2 plot 3, we can see ssthresh is set to flight-size/2, which is min(cwnd,rwnd)/2 = 27/2 =13 packets, cwnd is set to 1 MSS.
  • Slow start:
    • After receiving new ACK # 26881, slow start algorithm increased congestion window to 2 packets, and 2 more packets are sent. Both of them are retransmitted packets. This is the unique behavior of Tahoe variant of TCP.
      • According to the send window management algorithm (see SSF TCP implementation), the usable window is:
        D = snd_una + snd_wnd - snd_nxt
      • In SSF TCP a new data packet can be sent only when D >= MSS, implying:
        min(cwnd, rwnd) - (snd_nxt - snd_una) >= MSS
        For Tahoe TCP snd_nxt is snd_una plus packet length of the fast-retransmitted packet.
    • When new ACK arrives, it is the first non-duplicate ACK (for the retransmitted packet), and snd_nxt is set to to snd_una.
    • In our case as shown in Figure 2 plot 3:
      • min(cwnd,rwnd) = 2*MSS
      • (snd_nxt - snd.una) = 0
      and 2 packets can be sent.
  • The slow start continues until cwnd reaches ssthresh.
  • When congestion window reaches the threshold of 13 packets, congestion avoidance is performed. The congestion window increases approx. by one packet per round-trip time.