Subject: [aqm] Feedback as a response to PIE drafts WGLC

From: Rasool Al-Saadi <[email-masked]>
Date: Tue, 22 Dec 2015 10:51:42 +0000

Dear all,

As I mentioned in a previous email in this mailing list, we (myself and Grenville Armitage) are implementing PIE (and CoDel, and potentially fq_codel and fq_pie) independently targeting FreeBSD/ipfw/dummynet as a small project funded by Comcast Corporation.

We have some confusions regarding some points in the recent PIE Internet draft (draft-ietf-aqm-pie-03) and we hope to take our points as feedback response to the PIE I-D "Last Call" as well as answering our questions to make us able to implement PIE correctly.

1. In section 4.2 (page 8), the text says " MUST auto-tune the alpha and beta parameters based on drop probability drop_prob_" and the pseudo-code under it does not include anything related to alpha and beta.

2. Confusing uses of 'p' vs 'drop_probe':

2(a). In section 4.2 (page 8), the pseudo-code under "* MUST decay the drop probability exponentially:" uses variable p, and it is not clear whether p is the same as drop_prob_ or not?
         if (current_qdelay_ == 0 &&  qdelay_old_ == 0) {

             p = p*0.98;    //1- 1/64 is sufficient

         }

2(b). In section 5.4 (page 14),"... is incremented by the amount of drop probability, p.". Is p the same as drop_prob_ or not?

2(c). In section 5.5 "Cap Drop Adjustment" (page14) , the pseudo-code also uses p variable, but this time we have PIE->drop_probe_ and p in the same statement. Again, what does p represent for?

2(d). In calculate_drop_prob() (page 20), the pseudo-code uses different probability scaling (scales p instead of drop_probe_ and now, it is clear from the code that they are not the same) than the in-text pseudo-code.

3. In section 5.2 (page 11), the rate estimation pseudo-code uses two variable names (measurement_start_ and start_) and it seems there is an editing error (start_ must be measurement_start_).

4. In section 5.3 (page 13), the text says " If it is on, PIE SHOULD be turned off when congestion is over, i.e. when the drop probability, queue length and estimated queue delay all reach 0", while the pseudo-code under it uses different if-condition (there is no condition for queue length == 0 and estimated queue delay == 0).
       if (drop_prob_ == 0 and current_qdelay_ < QDELAY_REF and
       qdelay_old < QDELAY_REF)
           PIE_active_ = FALSE;
           burst_allowance_ = MAX_BURST;

5. There are a number of inconsistent parts between the pseudo-code at the end of the draft and the text/in-text pseudo-code mentioned within PIE description text:

5(a). The default values for QDELAY_REF and T_UPDATE within the text are 15ms while in the pseudo-code are 16ms.

5(b). In drop_early(), there is " //Safeguard PIE to be work conserving" condition which is never mentioned in the draft-text

5(c). In dequeue rate estimation pseudo-code, avg_dq_time and weight variables are not described in the text and not clear why they are used.

Regards,
Rasool Al-Saadi