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