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 _______________________________________________ aqm mailing list aqm@ietf.org https://www.ietf.org/mailman/listinfo/aqm