Test Description:
This test shows the behavior of generic Tahoe TCP with one and two packet drops. No delayed ack.
This test can be compared to a generic Reno TCP test with the same parameters - see test 13
Expected output:
  • For the link between 5(0) and 0(1)
    • 1 packet will be dropped when cwnd size reaches 16 packets. A fast retransmission will happen when 3 duplicate ACKs are received. The ACK for the fast retransmission acknowledges all the received packets before the fast retransmission. Then a slow start continues until cwnd reaches the new ssthresh of 8 packets.
  • For the link between 6(0) and 0(2)
    • 2 packets will be dropped when cwnd size reaches 4 packets. A fast retransmission will happen when 3 duplicate ACKs are received. The ACK for the fast retransmission acknowledges all the received packets before the fast retransmission. Then a slow start continues until cwnd reaches the new ssthresh of 2 packets.
Test Topology:
 Server ................Router..................Client

          8Mbs 5ms
 5(0)------------------0(1)       800kbs 100ms
                            0(0)-----------------7(0)
 6(0)------------------0(2)
          8Mbs 5ms
SSF Configuration Test File: f4.dml
send window = receive window = 16 packets
SSF Tcpdump File:
f4.tcpdump
f4serv1.tcpdump
f4serv2.tcpdump
Figure 1: Sequence number plot for tcpdump at router.

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

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

(EPS format plot for bottom connection)

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


NS Test Trace with the same parameters

NS tcpdump trace file: f4.tr


Trace Analysis:

The output is consistent with expected output.

For the top connection:

  • Packet loss, fast retransmission and slow start:
    • 1 packet is dropped when cwnd size reaches 16 packets. A fast retransmission happens when 3 duplicate ACKs are received. The cwnd is set to 1 MSS for a slow start. The sshtresh is set to max(flight-size/2, 2*MSS) for congestion avoidance. From Figure 2 plot 3 we can see the new value for ssthresh is 8 packets.
    • When new data ACK is received, cwnd increases to 2 MSS because of slow start and no sent unacked packets outside. 2 packet are sent.
  • Congestion avoidance:
    • When cwnd reaches ssthresh of 8 packets, the congestion avoidance takes over. The cwnd will now increase roughly 1 MSS per roundtrip time.
For the bottom connection:
  • Packet loss, fast retransmission and slow start:
    • The 2nd and 4th packets from a window (with cnwd = 4) are dropped by the router. When ack for the 1st packet arrives, cwnd size reaches 5 packets, but server can send only 2 packets (not 5) because usable window stays limited. When a dup ack (for the 3rd packet in the previous window) arrives, server does nothing. Later, 2 two more dup acks for the just sent 2 packets arrive, and fast retransmission takes place.
    • A fast retransmission happens when 3 duplicate ACKs received. The cwnd is set to 1 MSS for a slow start. The sshtresh is set to max(flight-size/2, 2*MSS) for congestion avoidance. From Figure 2 plot 3 we can see the new value for ssthresh is 2 MSS, because cwnd is 5 MSS and ssthresh must be an integer multiple of MSS.
  • Congesion avoidance:
    • When cwnd reaches ssthresh of 4 packets, the congestion avoidance takes over. The cwnd will increase roughly 1 MSS per roundtrip time.
  • Another packet loss, fast retransmission and slow start:
    • A fast retransmission happens when 3 duplicate ACKs are received. The cwnd is set to 1 MSS for a slow start. The sshtresh is set to max(flight-size/2, 2*MSS) for congestion avoidance. From Figure 2 plot 3 we can see the new value for ssthresh is larger than before because cwnd has increased to a higher value by the time packet loss is detected.