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.
-
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.
|