|
|
|
Simulation Network:
Notes:
|
Simulation result:
|
Notes:
|
Simulation Network: (2 identical flows)
The simulation is ran many times
The CWND values of the two identical flows in some of the experiements:
Notes:
|
The throughput plot of the two identical flows in some of the experiements:
Note:
|
Simulation Network: (1 UDP flow with 1 TCP flow)
Notes:
|
The Throughput plot for the UDP/TCP experiment:
Result:
|
|
(BTW, requiring additional information inside an Internet router will almost always guarantee that your method will only be academically relevant
Because no company will ever put the information in their routers)
|
|
Parameters: wq = 0.002 (exponential factor in averaging queue size) minth = min. threshold = min(buffer size/4, RTT) maxth = 2 * minth minq = safe threshold (no drops) (2 for small buffers, 4 for large buffers) |
P = arriving packet
|
P = transmitted packet
|
|
Problem:
|
|
- see above algorithms
CalculateQueueLength() { // ------------------------------------------- // This is RED's avg. queue lenght algorithm // ------------------------------------------- if ( q > 0 || packet was transmitted ) { avg = ( 1 - wq ) * avg + wq * q; // avg is computed every time a packet is // transmitted (was omitted in RED) } else { m = f ( time - q_idle_time ); avg = (1 - wq)m * avg; q_idle_time = time; } // ---------------------------------------------- // Compute the average occupancy for each flow // ---------------------------------------------- if ( NActive > 0 ) { avgcq = avg / NActive; // That's how many packet a flow should have in queue } else { avgcq = avg; // Just a choice the author made... } // Fix "underflow problem" if ( avgcq < 1 ) avgcq = 1; if ( q == 0 || packet was transmitted ) q_idle_time = time; } |
4 TCP flows are started at different times: 20 sec, 40 sec, 60 sec and 80 sec.
Throughput plot:
Results:
And we know that drop tail cannot protect anything.
This is the throughput results using "basic" FRED:
(The throughput of the last 8 TCP connections are not displayed - it's already crowded...)
This is the throughput results using "limited buffer size" FRED: