|
|
This granularity influence also how often TCP checks to see if
it should time out on a segment. Under tests
was found that for losses that resulted in a timeout,
it took Reno
an average of 1100ms from the time it sent a segment that was lost,
until it timed out and resent the segment,
whereas less that 300ms would have been the correct timeout
interval
had a more accurate
clock been used.
Vegas then fixes this problem using a finer coarse-grained timer. |
|
Thus, TCP Vegas uses a more accurate timer.
(Whereas TCP Reno - with a less accurate timer - always waits for THREE duplicate ACKs to conclude if a packet is lost.
Packet loss determination using one duplicate ACK:
|
Often in congestion, TCP flows will lose a large amount of packets The loss are often so great that the receiver will send LESS than 3 duplicate ACKs In other words, the sender will often recover the timeout !!! |
|
Notes:
|
|
TCP Vegas will only decrease CWND when a packet is lost during the current transmission rate
Case 1: CWND = CWND /2 (change in transmission rate) | P V --------------+----------------------- \ / ^ \ / | ..... / | | | Detect packet P is lost |
Notes:
|
Notes:
|
the Round Trip Time RTT as (part of) a congestion indication signal.
In fact, Raj Jain was the first to use this technique in 1989 - see his paper: click here
Number of packets sent in RTT time ------------------------------------- RTT |
(They included the number of packets sent, is because the number of packets sent will affect the RTT somewhat)
(By the way, this fraction is equal to the average throughput )
|
Now there is no way to know when a connection is not congested.
So an estimate for the value of BaseRTT is:
BaseRTT = min ( RTT of packets observed ) |
TCP Vegas can compute the expected throughput that it should get when the network is NOT congested as follows:
CWND Expected Throughput = ------------------ BaseRTT |
Next, TCP Vegas calculates the current Actual throughput
This is done as follows:
"Distinguished" ACK for Packet "Distinguished" Packet --------X--------X---X-------X----X------------+----- \ / \ / \ / .............................. |<------------------------------------>| SampleRTT |
This is the SampleRTT
# Bytes sent in SampleRTT Actual Throughput = ----------------------------- SampleRTT |
If there is no congestion, the Actual Throughput will be very close to the (optimal) Expected Throughput
The difference between Actual Throughput and Expected Throughput will be greater when there is congestion.
Expected (best possible) Throughput - Actual Throughput: increase CWND CWND unchanged decrease CWND |---------------------+------------------------------+-------------------- 0 α β |
Congestion decision:
|
If there was some retransmission within the SampleRTT period, TCP Vegas will not perform this step (because it would have changed CWND in the mean time !)
(the value of the difference: Actually Throughput - Expected Throughput) to regulate the slow start procedure)
increase interval evaluation interval increase interval |--------------------|---------------------|--------------------|..... CWND increases CWND is unchanged CWND increases exponential in this period exponential in this period in this period |
(Expected Throughput - Actual Throughput) < δ |
then TCP Vegas assumes that the exponential increase in window size (and thransmission rate) in the last increase interval DID NOT cause (too much) congestion.
TCP Vegas will then increase the CWND (congestion window) exponentially in the next round of transmission
(Expected Throughput - Actual Throughput) > δ |
then TCP Vegas assumes that the exponential increase in window size (and thransmission rate) in the last increase interval STARTED to cause some congestion.
TCP Vegas will then enter the congestion avoidance phase (linear increase and linear decrease - see: click here )