Dear all, 

We have a question regarding the NS-2 implementations of RED, CoDel, PIE and 
others AQMs. Especially, we believe that the way buffer-overflows are managed 
is not the same for each AQM scheme.

In "Multimedia-unfriendly TCP Congestion Control and Home Gateway Queue 
Management" (L. Stewart et al.) details that :
"PS: The queue is packet (slot) based, and the maximum queue length is 
specified as an integer number of packets:
if (NumPktsInQ ≥ PktQueueLength)
      drop incoming packet"

However: 
1- In droptail.cc: if((q_->length() + 1) >= qlim_) buffer overflow is detected
2- In RED/PIE/CoDel/etc.: if((q_->length() >= qlim_) buffer overflow is detected

In the case of RED/PIE, when there are buffer overflows, the incoming packet 
may not be dropped. As a result, the incoming packet needs to be stored before 
the other packet is selected for drop: if((q_->length() >= qlim_) should be 
avoided - and if((q_->length() + 1) >= qlim_) preferred. 

In the case of CoDel, when there are buffer overflows, the incoming packets are 
dropped. if((q_->length() >= qlim_) is a good solution.

Anyway, the authors of "Multimedia-unfriendly TCP Congestion Control and Home 
Gateway Queue Management" (L. Stewart et al.) illustrate the impact of this 
setting that should be carefully discussed. This point is of interest while 
comparing the performance of various AQM schemes with NS-2. 

We believe that AQMs that need information about incoming packets before 
tail-dropping them MUST detect buffer over flow when if((q_->length() + 1) >= 
qlim_).
Any thoughts? 

Kind regards, 

Amadou B. Bagayoko & Nicolas Kuhn

_______________________________________________
aqm mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/aqm

Reply via email to