Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt
Andrew Mcgregor <andrewmcgr@google.com> Fri, 03 June 2016 01:51 UTC
Return-Path: <andrewmcgr@google.com>
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 1A6CA12D158 for <aqm@ietfa.amsl.com>; Thu, 2 Jun 2016 18:51:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.126
X-Spam-Level:
X-Spam-Status: No, score=-4.126 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-1.426, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
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 a97jbyG0BsXc for <aqm@ietfa.amsl.com>; Thu, 2 Jun 2016 18:51:01 -0700 (PDT)
Received: from mail-oi0-x236.google.com (mail-oi0-x236.google.com [IPv6:2607:f8b0:4003:c06::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 407AF12B005 for <aqm@ietf.org>; Thu, 2 Jun 2016 18:51:01 -0700 (PDT)
Received: by mail-oi0-x236.google.com with SMTP id w184so105807803oiw.2 for <aqm@ietf.org>; Thu, 02 Jun 2016 18:51:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=qIauuf8XE0n5JJxLNP8w1mnfGHfUbl2Q529rfsrNt10=; b=cn8jG1wAoYK28fbPVUaBpv0AtaKYL/lel1gAqq79N44Fcg5NgygI0zspTuetxiRgf2 S3lONAPNPnsN50g8fvnAafviyhcUwJDsgH4Va8EadbI8NNFhSh20HeBblOzpAOVC3ZUz X4s9clzWqzOP7wDlj3FMirGGdkyahERsLhYh8W1/NO/nQQpJtrJ58mo7EzeUaOw28PwM canDJ/FwqDMsXcBN8qcwwWDEI9Ylb4V5NZEfyM91A3aZ3oLi0skPO1GgiElhR2C6YRjX u5lotGbBCQ5W/E49IO5m7ZCeB0cFKOfr4h/MNL+zS2IWCViFHCsQVBlDaPPRokgmMKNg rTiw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=qIauuf8XE0n5JJxLNP8w1mnfGHfUbl2Q529rfsrNt10=; b=QczI4gax5zWKzai/M422Pyo3e6D3Znkc5vwJzoQ1V/nrKzGmc7gEwXg0lZT8Vxol0F 8m+Z9JQoD2dI+LPOQMe9sG3s6DQ7zOKGPU96n60Q+MWMALEpgxzpa1s/gtXyRREh/YAJ ylGOZdB7XWaeQM6kNgJzJ1fEOM33pnljjMjfy5BNs4QNCPT0EUBcquradnrLk9YXhr/s 55Zdx9JeEZGfGQdmnkEmrnUgHTMzDWqv/RbMjyNVEDqQ7D5Jr8PdhMXpC25MNB8NYOv3 jBhHyfTR0tgy7X7fdjyW3LdiGeWjKGaQTt7wgUFytYmamliCj12rScy1S0GqAJ55ZK+f 45DQ==
X-Gm-Message-State: ALyK8tIKCPkt2kR/UPyNNaEO3ywxb8yRtQaYkjMHcmuXOR5MXP+L7d/A+ifr3QmjK5k4O4oEvm6cIWlPqBLrTK5V
X-Received: by 10.202.0.5 with SMTP id 5mr475208oia.1.1464918659866; Thu, 02 Jun 2016 18:50:59 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.182.126.170 with HTTP; Thu, 2 Jun 2016 18:50:58 -0700 (PDT)
In-Reply-To: <56F0635A.7060004@student.kit.edu>
References: <20160316000053.5163.88345.idtracker@ietfa.amsl.com> <56EEC35B.3000007@mti-systems.com> <56F0635A.7060004@student.kit.edu>
From: Andrew Mcgregor <andrewmcgr@google.com>
Date: Fri, 03 Jun 2016 11:50:58 +1000
Message-ID: <CAPRuP3k9NuTpK7WsRfOymJbTSup5aY7RgUtEDd-wsapXJxbKVg@mail.gmail.com>
To: Polina Goltsman <polina.goltsman@student.kit.edu>
Content-Type: multipart/alternative; boundary="001a1137ad425909de053455f462"
Archived-At: <http://mailarchive.ietf.org/arch/msg/aqm/N89aCpEdbhp5ygPvI5V2nCP0CAQ>
Cc: Wesley Eddy <wes@mti-systems.com>, Jana Iyengar <jri@google.com>, "aqm@ietf.org" <aqm@ietf.org>
Subject: Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.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: Fri, 03 Jun 2016 01:51:05 -0000
Thank you Polina. We have incorporated most of these (sometimes with slightly different solutions than you suggested), and a new draft will be out very shortly. I felt that by far the most important was the different way the Linux implementation addressed re-entry to the dropping state, and the pseudocode now does exactly that. Andrew On 22 March 2016 at 08:10, Polina Goltsman <polina.goltsman@student.kit.edu> wrote: > Dear Wesley, Dear All, > > First of all our feedback regarding different "re-entering dropping state" > in the document and in the Linux implementation ( > http://www.ietf.org/mail-archive/web/aqm/current/msg01686.html) was not > addressed. > > As FQ-CoDel relies on CoDel, this issue is also (partly) relevant for the > FQ-CoDel document. In the introduction FQ-CoDel references ns-3 and Linux > implementations where the first one uses the re-entering logic from the > CoDel document while the second from CoDel Linux implementation. The > algorithm that has seen widespread testing according to Section 7 is (I > suppose) the Linux version. Is this situation acceptable for an algorithm > specification? > > *[since this comment was supposed to be sent before the end of 2015, feel > free to (silently) ignore it]* > Second, unlike Rasool Al-Saadi (see > http://www.ietf.org/mail-archive/web/aqm/current/msg01693.html) I do not > like the document. Although I agree that the pseudocode is sufficient to > create a working implementation, however, in my opinion, the rest of the > document makes implementing CoDeL more confusing (at least without reading > [CODEL2012] first). Is it normal for a RFC, which, as I assume, should > primarily contain an algorithm specification to contain the algorithm > specification ONLY in form of pseudocode? > These are two items that I found the most confusing: > (1) section 3 introduces estimator, setpoint, and control loop which are > not clearly distinguishable in pseudocode. It would be nice if section 4 > explained how the three entities transition into the routines in > pseudocode. > (2) IMHO, there is some missing explanations. For example, the document > never says how exactly "bad"/persistent queue is determined. The document > says in Section 3.1 that the minimum is tracked, but it never says that > persistent queue is when the minimum is above setpoint/target for at least > an interval. As another example, Section 3.3 could say how the controller > looks like exactly. > > I also have some small comments and nits regarding the latest version > (-03): > > --- > > in the whole document there are several places of using "we" to > (supposedly) refer to the authors. According to Bob Briscoe's message ( > http://www.ietf.org/mail-archive/web/aqm/current/msg01805.html), "we" do > not necessary refer to the authors in a rfc. Are these "we"s ok? > > --- > > abstract: > > This document describes a general *framework* called CoDel > > IMHO the word "framework" is too overloaded and too broad. It might be > better to call CoDel an AQM or something that has "queue" in it. Other ways > (e.g., http://queue.acm.org/detail.cfm?id=2839461) probably also use it > to control a queue. > > --- > > section 1: > > (nit) > Despite this > awareness, the problem has only gotten worse as Moore's Law growth in > memory density fueled an exponential increase in buffer pool size. > Efforts to deploy AQM have been frustrated by difficult configuration > and negative impact on network utilization. *This problem,* recently > christened "bufferbloat", [TSV2011] [BB2011] has become increasingly > important throughout the Internet but particularly at the consumer > edge. > > it reads like "this problem" refers to "efforts to deploy AQM" and not to > "increase in buffer pool size" > > --- > > (nit) > > To understand > queue management, it is critical to understand the difference between > the necessary, useful *"good" queue*, and the counterproductive *"bad" > queue*. > > strictly speaking "good" and "bad" queue were not defined either before or > in this sentence (it is explained in section 3 or in [CODEL2012]) > > --- > > (nit) > > o treat "good queue" and "bad queue" differently, that is, keep > delay low while permitting necessary bursts of traffic > > (1) see above > (2) I would say that the goal is "to keep delay low while ..." and to > treat good/bad queue differently is a mechanism used to achieve the goal > > --- > > section 2: > > (nit) > In this document, *the characters ">>" preceding an indented > line(s)* > indicates a compliance requirement statement using the key words > listed above. This convention aids reviewers in quickly identifying > or finding the explicit compliance requirements of this RFC. > > I maybe missing something, but I can't find any use of "characters ">>"" > anywhere except this line in any (txt,html, pdf) of the versions. > > --- > > section 3: > > generally IMHO it would be nice to introduce *interval* and *target* so > it is more obvious that these are parameters (or some other kind of > variables). Interval is more or less obvious (although imho should be more > explicit). The target is first introduced at the end of section 3.2 as: > > This results in a particularly simple form for the > setpoint: the ideal range for the permitted standing queue is between > 5% and 10% of the TCP connection's RTT. Thus *target* is simply 5% of > the interval of section 3.1 <https://tools.ietf.org/html/draft-ietf-aqm-codel-03#section-3.1>. > > It was not previously defined that *target* is a parameter with a meaning > of *setpoint*. I don't think that this is clear for people who do not > know what target is in advance. > > [It seems that it was intended to introduce *interval* and *target* > parameters in section 4] > > --- > > Instead of averages > *we recommend* tracking the minimum sojourn time, then, > > "we recommend" or "CoDeL does"? According to the last paragraph in Section > 3.1, tracking minimum is a core part of CoDeL: > > These two innovations, use of sojourn time as observed values *and the > local minimum as the statistic to monitor queue congestion* are key to > CoDel's estimator building block. > > --- > > Since the peak queue delay* is simply f r*, power is solely a function > > is it f/r ? > > --- > (nit) > > The only remaining building block needed for a basic AQM is a > 'control loop' algorithm to effectively drive the queueing system > from any *'persistent queue above target'* state to a state where the > *persistent queue is below target*. > > It would be nice to explicitly state that the "persistent queue above > target" is indication of "bad" queue/congestion somewhere above or in this > line. I think that these terms are used in [codel2012] but were not used > before in the document. See also the next item. > > --- > In section 3.3 there are three "states": > > - > > 'persistent queue above target' state > > - > > 'has persistent queue' state > > - > > dropping state > > > It would be nice to a) use the same one b) explain how CoDeL gets in/out > of there > > --- > (probably nit) > > When > *the minimum sojourn time first crosses the target* and *CoDel drops a > packet*, the earliest the controller could see the effect of the drop > > from current sentence it could be inferred that the two events occur at > the same time which is not the case. Maybe " when persistent queue above > target is detected" would be better. > > --- > > variation is less than the target, and so the *initial drop spacing > SHOULD be set to the estimator's interval plus twice the target > (i.e., initial drop spacing = 1.1 * interval)* to ensure that the > > this contradicts the pseudocode: > > dodequeue_result codel_queue_t::dodequeue(time_t now) > > ... > first_above_time_ = now + interval_; > > section 4: > > To keep from > making drops when it would starve the output link, CoDel makes > another check before dropping to see if at least an MTU worth of > bytes remains in the buffer. If not, the packet SHOULD NOT be > dropped and, *currently*, CoDel exits the drop state. > > what is the meaning of "currently" ? in the current experimental version? > > --- > (nit) > > In practice, this value is not known or measured *(*though see > Section 6.2 <https://tools.ietf.org/html/draft-ietf-aqm-codel-03#section-6.2> for an application where interval is measured. > > missing closing bracket > > Section 5 / pseudocode: (all nits) > > The variables are introduced as first_time_above, dropping, but are used > as first_time_above_, dropping_ (with underscores at end). > > --- > > *Packet** CoDelQueue::dequeue() > > a pointer to current packet was introduced as packet_t > > *--- > > double* now = clock();; > > time units were supposed to be of type time_t > > *--- > > dodequeueResult* r = dodequeue(now); > > compare with: typedef struct { ... } *dodequeue_result* below (present in > two routines) > > --- > > dodequeueResult r = {* NULL, queue_t::dequeue() *}; > > shouldn't it be {queue_t::dequeue(), false} ? > > > Best Regards, > Polina > > > * note the reply by Dave Taht: > http://www.ietf.org/mail-archive/web/aqm/current/msg01687.html > > On 03/20/2016 04:35 PM, Wesley Eddy wrote: > > It looks like the WGLC feedback on the document body is incorporated, so > this is good. > > Is there a reason to stay with Informational and not Experimental like > we've done with PIE an d FQ-CoDel? > > Also, idnits has some problems with the references that should be fixed > (e.g. "NATAL2010" is probably supposed to be "NETAL2010"): > > https://tools.ietf.org/idnits?url=https://tools.ietf.org/id/draft-ietf-aqm-codel-03.txt > > > > _______________________________________________ > aqm mailing list > aqm@ietf.org > https://www.ietf.org/mailman/listinfo/aqm > > -- Andrew McGregor | SRE | andrewmcgr@google.com | +61 4 1071 2221
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Roland Bless
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Jonathan Morton
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Klatsky, Carl
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Dave Täht
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Jonathan Morton
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Michael Menth
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Goltsman, Polina
- [aqm] I-D Action: draft-ietf-aqm-codel-03.txt internet-drafts
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Wesley Eddy
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Polina Goltsman
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Wesley Eddy
- Re: [aqm] I-D Action: draft-ietf-aqm-codel-03.txt Andrew Mcgregor