Re: [iccrg] draft-briscoe-iccrg-prague-congestion-control: CE-marked bytes or packets?

rrs <rrs@lakerest.net> Thu, 11 August 2022 13:30 UTC

Return-Path: <rrs@lakerest.net>
X-Original-To: iccrg@ietfa.amsl.com
Delivered-To: iccrg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 87B9AC15C532 for <iccrg@ietfa.amsl.com>; Thu, 11 Aug 2022 06:30:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.909
X-Spam-Level:
X-Spam-Status: No, score=-6.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Vt_SBpTRKq-Y for <iccrg@ietfa.amsl.com>; Thu, 11 Aug 2022 06:30:14 -0700 (PDT)
Received: from smtp-out.a.misk.com (smtp-out.a.misk.com [199.47.128.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DE7E9C14F74D for <iccrg@irtf.org>; Thu, 11 Aug 2022 06:30:13 -0700 (PDT)
X-Authenticated-User: rrs@lakerest.net
Received: from 10.1.1.186 (072-239-136-185.res.spectrum.com [72.239.136.185]) by smtp.misk.com (MiskSMTP) with ESMTPSA id 64984b393a8d4e2b87e0d338b8115f47 for <iccrg@irtf.org>; Thu, 11 Aug 2022 13:29:35 +0000
Message-ID: <cfc8e089-32cc-5b54-9361-889b76ed0d82@lakerest.net>
Date: Thu, 11 Aug 2022 09:29:34 -0400
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.11.0
Content-Language: en-US
To: Neal Cardwell <ncardwell=40google.com@dmarc.ietf.org>, Bob Briscoe <ietf@bobbriscoe.net>, "Tilmans, Olivier (Nokia - BE/Antwerp)" <olivier.tilmans@nokia-bell-labs.com>, "De Schepper, Koen (Koen)" <koen.de_schepper@nokia.com>
Cc: iccrg IRTF list <iccrg@irtf.org>
References: <CADVnQykxwaqZTGXR-ZMYLEem0rKfAcT7KkHYgsF4dBdWvi2k4w@mail.gmail.com>
From: rrs <rrs@lakerest.net>
In-Reply-To: <CADVnQykxwaqZTGXR-ZMYLEem0rKfAcT7KkHYgsF4dBdWvi2k4w@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/iccrg/9XXODezjs_2a2AtBvtfyDsTOxj0>
Subject: Re: [iccrg] draft-briscoe-iccrg-prague-congestion-control: CE-marked bytes or packets?
X-BeenThere: iccrg@irtf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Discussions of Internet Congestion Control Research Group \(ICCRG\)" <iccrg.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/iccrg>, <mailto:iccrg-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/iccrg/>
List-Post: <mailto:iccrg@irtf.org>
List-Help: <mailto:iccrg-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/iccrg>, <mailto:iccrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Thu, 11 Aug 2022 13:30:18 -0000

Neal:


Just a couple of thoughts on your toy example  .. inline :)

On 8/10/22 6:11 PM, Neal Cardwell wrote:
> Re:
>    https://datatracker.ietf.org/doc/html/draft-briscoe-iccrg-prague-congestion-control-01
>
> and the passages:
>
> "2.3.2.  Moving Average of ECN Feedback
> ...it measures the fraction, frac, of ACKed bytes that carried ECN
> feedback over the previous round trip. ...
>
> 2.4.3.  Additive Increase and ECN Feedback
> ...a Prague CC applies additive increase irrespective of its CWR
> state, but only for bytes that have been ACK'd without ECN feedback.
> ...  This approach reduces additive increase as the marking
> probability increases..."
>
> I was curious about the design choice to specify that the algorithm
> reacts to the fraction of *bytes* that have been CE-marked instead of
> the fraction of *packets*. IMHO it would be useful for the document to
> outline the motivation.
>
> Apologies if I have missed this in previous e-mail discussions or
> presentations. I may well have. :-)
>
> I can imagine a number of potential reasons why it could be
> advantageous to react to the fraction of packets CE-marked rather than
> the fraction of bytes CE-marked:
>
> (1) AFAICT byte counters distort the path's ECN marking probability
> more than using packet counters. For example, suppose we have a round
> trip with 100 packets sent at roughly uniform intervals across the
> round trip time:
>
> o  99 packets of 1 byte each, all CE-marked
> o 1 packet of 1000 bytes that was not CE-marked
>
> Then the byte-based Prague "frac" ("the fraction, frac, of ACKed bytes
> that carried ECN feedback over the previous round trip") is:
>
>    99 bytes / 1099 bytes ~= .09
>
> Whereas the fraction of ACKed packets that carried ECN feedback is:
>
>     99 packets / 100 packet = .99
>
> So in this toy example there is a >10x difference in the CE "frac"
> signal depending on whether bytes or packets are counted.
>
> And given that these packets were spaced uniformly across the round
> trip, 99% of the time the bottleneck had excess queuing. This 99%
> number is well reflected in a packet-based "frac", but seems to imply
> that the byte-based "frac" approach dramatically underestimates the
> probability that a packet will encounter excessive queuing, aka the
> packet CE marking probability.

So lets make this a bit more concrete of a toy. Lets say the bottleneck 
is 20Mbps.

Now your 99 packets of 1 byte (assuming v4 and no timestamps enabled) 
are going to each take 22 microseconds to traverse the bottleneck 
(assuming bytes of 14<enet>, 20 <ip>, 20 <tcp> 1 <data>). Your 1000 byte 
packet is going to take 421 microseconds. So you have a delay through 
the bottleneck for a total of 2,599 microseconds which other packets 
will feel.

Now lets compare that to someone who sent all 1000 byte packets i.e. 421 
x 100. So the delay held by those packets preventing the bottleneck from 
forwarding other packets is 42,100 microseconds or about 1:16.

I suspect when you look at the number of bytes as indicating how long 
your packets take to send through the link thus blocking others the 
situation looks a bit different (at least not near as lopsided as your 
simple example illustrated)

:-)

R