Re: [aqm] I-D Action: draft-ietf-aqm-pie-05.txt

Rasool Al-Saadi <ralsaadi@swin.edu.au> Tue, 22 March 2016 03:20 UTC

Return-Path: <ralsaadi@swin.edu.au>
X-Original-To: aqm@ietfa.amsl.com
Delivered-To: aqm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5FC1F12D109 for <aqm@ietfa.amsl.com>; Mon, 21 Mar 2016 20:20:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RP_MATCHES_RCVD=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id an-wW51HxM0p for <aqm@ietfa.amsl.com>; Mon, 21 Mar 2016 20:20:43 -0700 (PDT)
Received: from iport2.cc.swin.edu.au (iport2.cc.swin.edu.au [136.186.0.52]) by ietfa.amsl.com (Postfix) with ESMTP id BA8A212D1B0 for <aqm@ietf.org>; Mon, 21 Mar 2016 20:20:42 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="5.24,375,1454936400"; d="scan'208";a="18230500"
Received: from gsp-ex03.ds.swin.edu.au (HELO outlook.swin.edu.au) ([136.186.126.19]) by iport2.cc.swin.edu.au with ESMTP; 22 Mar 2016 14:20:41 +1100
Received: from GSP-EX02.ds.swin.edu.au ([169.254.2.94]) by gsp-ex03.ds.swin.edu.au ([169.254.3.89]) with mapi id 14.03.0279.002; Tue, 22 Mar 2016 14:20:40 +1100
From: Rasool Al-Saadi <ralsaadi@swin.edu.au>
To: "aqm@ietf.org" <aqm@ietf.org>
Thread-Topic: [aqm] I-D Action: draft-ietf-aqm-pie-05.txt
Thread-Index: AQHRc/c85Ma2ukqlGEaDxxqLRko+gZ9k511g
Date: Tue, 22 Mar 2016 03:20:39 +0000
Message-ID: <6545444AE21C2749939E637E56594CEA3C1D01A0@gsp-ex02.ds.swin.edu.au>
References: <20160301201602.24979.59154.idtracker@ietfa.amsl.com>
In-Reply-To: <20160301201602.24979.59154.idtracker@ietfa.amsl.com>
Accept-Language: en-AU, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [136.186.126.11]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/aqm/-2HYq6WjfsQF5A396pwo-CeAP2M>
Cc: Grenville Armitage <garmitage@swin.edu.au>
Subject: Re: [aqm] I-D Action: draft-ietf-aqm-pie-05.txt
X-BeenThere: aqm@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Discussion list for active queue management and flow isolation." <aqm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/aqm>, <mailto:aqm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/aqm/>
List-Post: <mailto:aqm@ietf.org>
List-Help: <mailto:aqm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/aqm>, <mailto:aqm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 22 Mar 2016 03:20:46 -0000

Dear all,

Thank you for revising PIE Internet Draft as it has become much clearer than previous versions. However, I have some comments regarding then new draft:

1) In page 12, section 5.2 (Departure Rate Estimation),

>    current_qdelay = queue_.byte_length() *
>                     PIE->avg_dq_time_/DQ_THRESHOLD;
>

This code assumes that DQ_THRESHOLD of bytes are de-queued during  avg_dq_time , but this is not very accurate as we can de-queue DQ_THRESHOLD + MSS during the measurement cycle (the condition is PIE->dq_count_ > DQ_THRESHOLD). Are you trying to simplify the code or a very accurate current_qdelay calculation is not required?
 

2) In the same section mentioned above,

>    * Upon a packet deque:
>
>      if PIE->in_measurement_ == FALSE and queue.byte_length() >
>      DQ_THRESHOLD:
>         PIE->in_measurement_ = TRUE;
>         PIE->measurement_start_ = now;
>         PIE->dq_count_ = 0;
>
>      if PIE->in_measurement_ == TRUE:
>         PIE->dq_count_ = PIE->dq_count_ + deque_pkt_size;
>         if PIE->dq_count_ > DQ_THRESHOLD then
>            weight = DQ_THRESHOLD/2^16
>            PIE->avg_dq_time_ = (now-PIE->measurement_start_)*weight
>                                + PIE->avg_dq_time_*(1-weight);
>            PIE->dq_count_=0;
>            PIE->measurement_start_ = now

This code works correctly first time when in_measurement_== FALSE then, it will stay in measurement state even when there are no DQ_THRESHOLD worth of bytes in the queue. So, PIE->avg_dq_time_ will be wrong as it includes the time of filling the queue with DQ_THRESHOLD worth of bytes plus the time of de-queuing  it. The simple solution for that is just by changing the last two lines of the code:

>            PIE->dq_count_=0;
>            PIE->measurement_start_ = now

By 
         PIE->in_measurement_ = FALSE;

BTW, the code in the end of the daft is correct.


3) In page 16, section 6 (Implementation Cost), the paragraph that describes combing SFQ with PIE is not clear and confusing.

"SFQ can also be combined with PIE to further improve latency for various flows with different priorities. If the timestamp is used to obtain queueing latency, PIE can be adopted directly to each individual queue.
If the latency is obtained via the deque rate calculation, we recommend one PIE instance using the overall queue length divided by the overall deque rate. Then the overall PIE->drop_prob_ is modified using each individual queue divided by the maximum individual queue length: PIE-
>drop_prob_(i)=queue_.byte_length(i)/max(queue_.byte_length(i)). "

I am not sure if I interpreted the paragraph correctly or not.  It seems that there are two cases when using PIE with SFQ scheduler :
1- When timestamp is used to calculate queue delay, each queue has a separate drop probability calculation background process  i.e. each queue uses normal PIE instance.

2-  When deque rate calculation is used to calculate queue delay, here I am completely confused about what does the text means and hope you clearly it:  

"we recommend one PIE instance using the overall queue length divided by the overall deque rate. Then the overall PIE->drop_prob_ is modified using each individual queue divided by the maximum individual queue length: PIE-
>drop_prob_(i)=queue_.byte_length(i)/max(queue_.byte_length(i))."
	
For new drop_prob calculation, how can drop_prob_ be just a division of queue lengths?
	drop_prob_(i)=queue_.byte_length(i)/max(queue_.byte_length(i))


4) In page 20, the code of enque function:

>//called on each packet arrival
>  enque(Packet packet) {
>       if (PIE->drop_prob_ == 0 && current_qdelay < QDELAY_REF
>           && PIE->qdelay_old_ < QDELAY_REF) {
>           PIE->burst_allowance_ = MAX_BURST;
>       }

According to the description and the code in section 4.4 (Burst Tolerance), the condition should be
       if (PIE->drop_prob_ == 0 && current_qdelay < QDELAY_REF/2
           && PIE->qdelay_old_ < QDELAY_REF/2) {

5) In pages 23 and 24,

>       //If the queue has been idle for a while, turn off PIE
>       //reset counters when accessing the queue after some idle
>       //period if PIE was active before
>       if ( PIE->drop_prob_ == 0 && PIE->qdelay_old_ == 0
>            && queue_.byte_length() == 0) {
>            PIE->active_ = INACTIVE;

According to section 5.3 (Turning PIE on and off), the condition of deactivating PIE should be:

if (PIE->drop_prob_ == 0 and current_qdelay < QDELAY_REF/2 and
      PIE->qdelay_old_ < QDELAY_REF/2) {


6) In page 26,
 
> if ( PIE->dq_count_ >= DQ_THRESHOLD) {
And
> if (queue_.byte_length() >= DQ_THRESHOLD &&

Just to make the conditions consistence with section 5.2 (Departure Rate Estimation),  use '>' instead of '>=' or change the condition in the code of section 5.2 to use '>=' instead of '>'.


Regards,
Rasool Al-Saadi

> -----Original Message-----
> From: aqm [mailto:aqm-bounces@ietf.org] On Behalf Of internet-
> drafts@ietf.org
> Sent: Wednesday, 2 March 2016 7:16 AM
> To: i-d-announce@ietf.org
> Cc: aqm@ietf.org
> Subject: [aqm] I-D Action: draft-ietf-aqm-pie-05.txt
> 
> 
> A New Internet-Draft is available from the on-line Internet-Drafts directories.
> This draft is a work item of the Active Queue Management and Packet
> Scheduling of the IETF.
> 
>         Title           : PIE: A Lightweight Control Scheme To Address the Bufferbloat
> Problem
>         Authors         : Rong Pan
>                           Preethi Natarajan
>                           Fred Baker
> 	Filename        : draft-ietf-aqm-pie-05.txt
> 	Pages           : 26
> 	Date            : 2016-03-01
> 
> Abstract:
>    Bufferbloat is a phenomenon where excess buffers in the network cause
>    high latency and jitter. As more and more interactive applications
>    (e.g. voice over IP, real time video streaming and financial
>    transactions) run in the Internet, high latency and jitter degrade
>    application performance. There is a pressing need to design
>    intelligent queue management schemes that can control latency and
>    jitter; and hence provide desirable quality of service to users.
> 
>    This document presents a lightweight active queue management design,
>    called PIE (Proportional Integral controller Enhanced), that can
>    effectively control the average queueing latency to a target value.
>    Simulation results, theoretical analysis and Linux testbed results
>    have shown that PIE can ensure low latency and achieve high link
>    utilization under various congestion situations. The design does not
>    require per-packet timestamp, so it incurs very small overhead and is
>    simple enough to implement in both hardware and software.
> 
> 
> The IETF datatracker status page for this draft is:
> https://datatracker.ietf.org/doc/draft-ietf-aqm-pie/
> 
> There's also a htmlized version available at:
> https://tools.ietf.org/html/draft-ietf-aqm-pie-05
> 
> A diff from the previous version is available at:
> https://www.ietf.org/rfcdiff?url2=draft-ietf-aqm-pie-05
> 
> 
> Please note that it may take a couple of minutes from the time of submission
> until the htmlized version and diff are available at tools.ietf.org.
> 
> Internet-Drafts are also available by anonymous FTP at:
> ftp://ftp.ietf.org/internet-drafts/
> 
> _______________________________________________
> aqm mailing list
> aqm@ietf.org
> https://www.ietf.org/mailman/listinfo/aqm