Re: [tsvwg] L4S and the detection of RFC3168 AQMs

Bob Briscoe <ietf@bobbriscoe.net> Fri, 12 February 2021 23:31 UTC

Return-Path: <ietf@bobbriscoe.net>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7A3BC3A0D7B for <tsvwg@ietfa.amsl.com>; Fri, 12 Feb 2021 15:31:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.433
X-Spam-Level:
X-Spam-Status: No, score=-1.433 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=bobbriscoe.net
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 zsPUSVeeA9Jy for <tsvwg@ietfa.amsl.com>; Fri, 12 Feb 2021 15:31:55 -0800 (PST)
Received: from mail-ssdrsserver2.hosting.co.uk (mail-ssdrsserver2.hosting.co.uk [185.185.84.51]) (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 98A833A10E8 for <tsvwg@ietf.org>; Fri, 12 Feb 2021 15:31:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=bobbriscoe.net; s=default; h=Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:References:Cc:To:From:Subject:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=tz6i8uK0Wo6loAl/5YQQQqc1uCh7kQFUlYs6w234Iqg=; b=mDwGAHOGKxrSbnvVn42GWY0b6 sd9akOGl/kPrRebrQ+eIxRGmIIUGfX4+Xsxoyja6KUAmZG0zxNdQ0zCrZuLGgPU/2kthLyTCIN3SW n/MxKACjPru1fzHqE0+AgO2JhTDMZZ0YS+HBN2cQfoHZ6FGEqUn7rTEkiun89nvNQPZ//AGtpvU1k 5LQGN3xmSF7POr76JPqMfupfwk4ZZq1VZWstuk4LGyA1V4d2BtAilBmwHdy8IDQBwwZN5CrJJbTfk ts1w3j6OOV8RZeU4oVNNbMvNA+ZGcgnpexYg17ZavUsi9AyJaeU9V/sw+KrPuk/8kp9oi0lMVZgwB fGY+Z0gMA==;
Received: from 67.153.238.178.in-addr.arpa ([178.238.153.67]:53490 helo=[192.168.1.11]) by ssdrsserver2.hosting.co.uk with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from <ietf@bobbriscoe.net>) id 1lAhuS-0006Ct-10; Fri, 12 Feb 2021 23:31:36 +0000
From: Bob Briscoe <ietf@bobbriscoe.net>
To: Martin Duke <martin.h.duke@gmail.com>, "alex.burr@ealdwulf.org.uk" <alex.burr@ealdwulf.org.uk>
Cc: "Scheffenegger, Richard" <rs.ietf@gmx.at>, "Black, David" <David.Black@dell.com>, TSVWG <tsvwg@ietf.org>
References: <125328289.3455959.1607381048136.ref@mail.yahoo.com> <125328289.3455959.1607381048136@mail.yahoo.com> <3F562A25-F4F2-4335-9ED7-54299500B8F6@cablelabs.com> <a35cf206-2fc7-c60e-c713-c4f916106bde@bobbriscoe.net> <CAM4esxQQe4MJsU3ZvdVWVeSC6z+YWCytDd3i2im27qhnss1_og@mail.gmail.com> <CACL_3VE_FD7wdwXGgbYsBnj0+ox-m6s6V=uZVaVZdgK-fLT2KQ@mail.gmail.com> <CAM4esxT1SjveX3AKbOcfjD317ojTNsxfgk84OAQ7=6v-YjQDow@mail.gmail.com> <MN2PR19MB4045BA04C4F56F3A19F2587383CA0@MN2PR19MB4045.namprd19.prod.outlook.com> <CAM4esxTSUUuNVsV-Dh4FU31QpJXfYK9rPR819xj00SD5DZzppA@mail.gmail.com> <592c7815-126e-fab7-3122-8df71aed9d30@gmx.at> <c22ffa78-9ff6-f2fd-2ade-345a72ec2db1@bobbriscoe.net> <CAM4esxQKQ17uMLmJr+PVS1Db50nZffi8Gto2TbBOqWYXP32__w@mail.gmail.com> <7bfed921-a5ba-6cbb-cf65-2abf96a86c1d@bobbriscoe.net>
Message-ID: <4a02ea13-08ad-e8f6-2a42-910eb20ed3ed@bobbriscoe.net>
Date: Fri, 12 Feb 2021 23:31:35 +0000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0
MIME-Version: 1.0
In-Reply-To: <7bfed921-a5ba-6cbb-cf65-2abf96a86c1d@bobbriscoe.net>
Content-Type: multipart/alternative; boundary="------------8597C961B0DCB2337307EFFD"
Content-Language: en-GB
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - ssdrsserver2.hosting.co.uk
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - bobbriscoe.net
X-Get-Message-Sender-Via: ssdrsserver2.hosting.co.uk: authenticated_id: in@bobbriscoe.net
X-Authenticated-Sender: ssdrsserver2.hosting.co.uk: in@bobbriscoe.net
X-Source:
X-Source-Args:
X-Source-Dir:
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/EqiEHuz3YXw-c6LrdES_cISQQ44>
Subject: Re: [tsvwg] L4S and the detection of RFC3168 AQMs
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tsvwg/>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 12 Feb 2021 23:31:59 -0000

Martin, Alex, list,

Towards a write-up, here's the way I see Alex's ideas being used for 
out-of-band testing (in contrast to Alex's thoughts, which were for 
in-band testing).

First a reminder of Alex's first idea for a DualQ Coupled AQM (idea A1):
* Make it mandatory for a DualQ Coupled AQM not to mark ECT0 packets, so 
Classic ECN AQMs without L4S support are distinguishable as the only 
AQMs that mark ECT0.

Second a reminder of Alex's second idea for an FQ-L4S AQM (idea A2):
* always marks ECT1,
* but it drops rather than marks ECT0 packets if there has been any 
(recent) ECT1 in the same flow.
* If there hasn't been any ECT1 in a queue, it just marks ECT0 classically.

==Out of band test==
A test server would fill the path with ECT0 until it's getting a strong 
congestion signal (CE or loss), then it would switch a low fraction (say 
5%) of packets to ECT1. The table below then shows the various patterns 
of marking that might occur and what can be concluded about the 
bottleneck. An empty cell means "don't care".

For completeness, I've included all the invalid cases too (explained 
below the table).
If the table is unreadable without HTML email, see 
https://bobbriscoe.net/projects/latency/DisableECT0_OOB_TruthTable.pdf
which also includes the full Truth Table.

All ECT0 	95% ECT0 	5% ECT1 	
drop 	mark 	drop 	mark 	drop 	mark 	Bottleneck queue behaviour
 >0 	0 	>0 	0 	>0 	0 	Tail-drop or Non-ECN AQM (FQ or FIFO)

	>0 	
	>0 	
	>0 	Classic ECN AQM (FQ or FIFO)

	>0 	
	>0 	
	~100% 	FQ-L4S AQM without A2

	>0 	>0 	0 	
	>0 	FQ-L4S AQM with A2
 >0 	0 	>0 	0 	
	>0 	DualQ L4S AQM
*All possible invalid experiment runs*
0 	0 	
	
	
	
	Uncongested

	
	0 	0 	
	
	Uncongested

	
	
	
	0 	0 	Uncongested

	
	
	>0 	
	0 	ECT0 but no ECT1 marking yet

	>0 	
	
	
	0 	ECT0 but no ECT1 marking yet

	0 	
	>0 	
	
	No ECT0 marking until ECT1 starts


Terminology:

  * congestion mark = CE
  * congestion indication = drop or CE


So that I could check the design of the experiment, I wrote out all the 
possible 2^6 combinations of congestion outputs and crossed off the ones 
that represented each valid output pattern. Then I kept adding invalid 
cases until all the output combinations were crossed off. This led to 
the following invalid cases where an experiment run has to be aborted:

  * If no congestion indication (drop or marking) can be induced on an
    ECT0 packet, either before ECT1 packets are introduced or after, the
    run has to time out;
  * Whether or not there are congestion indications on any ECT0 packets,
    a run has to eventually time out if there is never a congestion
    indication on an ECT1 packet;
  * If any ECT0 packet has been marked, a run has to eventually time out
    if no ECT1 packet is ever marked;
  * If no ECT0 packet is marked before ECT1 packets are introduced, but
    an ECT0 packet is marked after, the run has to abort.


Cheers


Bob

On 11/02/2021 00:22, Bob Briscoe wrote:
> Martin,
>
> Greg and I spoke about this very question earlier in the week.
>
> At minimum, we could write all the details covered in this thread into 
> the tech report about Classic ECN AQM Fallback that Asad & I prepared 
> earlier. "We" might mean Alex or me, or someone else? I would be happy 
> to either ACK Alex or include him as a co-author - if he was willing.
>
> I feel that would be more appropriate than an IETF draft at the mo, at 
> least while it's not implemented or tested. Then the IETF drafts 
> (l4sops, ecn-l4s-id, dualQ, etc.) could give a brief outline of the 
> idea, while referring out for fuller details.
>
> In that tech report, there is already a section on ideas for the 
> design of active tests, which it says have not been implemented or 
> tested. It would be published on arXiv as a new version, which is 
> suitable as an archival ref.
>
> Then, as Alex suggests, we would need to update the dualQ draft.
> As Alex pointed out, not supporting ECT0 can later be reversed (e.g. 
> if the L4S experiment later moves to PS), whereas supporting ECT0 from 
> the start, them removing it later would miss the opportunity to 
> provide certainty. This is the part I like most.
>
> We would also have to not make ECT0 support the default in the 
> reference Linux implementation of the DualQ.
>
>
> Bob
>
> On 10/02/2021 18:37, Martin Duke wrote:
>> Well this all seems very promising!
>>
>> Does anyone have the bandwidth to write something down? Should there 
>> be a separate draft that articulates the design? Would this replace 
>> the current Prague approach?
>>
>> Martin
>>
>> On Tue, Feb 9, 2021 at 3:09 PM Bob Briscoe <in@bobbriscoe.net 
>> <mailto:in@bobbriscoe.net>> wrote:
>>
>>     Richard,
>>
>>     First, thank you for reviving this thread, because it brought Alex's
>>     last posting (in Dec) to my attention. I'll respond to that
>>     separately
>>     (probably mañana, as it's getting late).
>>
>>     Pls see inline tagged [BB]...
>>
>>     On 09/02/2021 11:05, Scheffenegger, Richard wrote:
>>     > Martin, group,
>>     >
>>     >
>>     > AccECN is not tied to RFC3168 (and quite the opposite, it tries
>>     to be as
>>     > impartial to the specifics of when/why packets were marked in
>>     whichever
>>     > way).
>>
>>     [BB] Also, in case people aren't aware: an L4S sender using TCP MUST
>>     negotiate the use of Accurate ECN TCP feedback with its peer. So
>>     I think
>>     there's no case where a transport would not provide feedback for
>>     Alex's
>>     idea.
>>
>>     >
>>     > Therefore the Packet-CE counter (you refer to it as PCE, while
>>     the draft
>>     > refers to the (full) counter as cep [from CE_packet] is incremented
>>     > regardless of which packet arrives with the CE mark (control, data,
>>     > retransmission, ...).
>>     >
>>     > Similar for the Byte-CE counter (BCE, in the AccECN draft ceb from
>>     > CE_bytes). As only TCP payload bytes arriving with the CE mark
>>     would be
>>     > accounted, the behavior as expected in the discussion below is
>>     already
>>     > implicitly available when using AccECN.
>>
>>     [BB] ...only if the data receiver supports sending the AccECN TCP
>>     Option
>>     (optional) and the new TCP Option traverses the path successfully
>>     and
>>     the data sender supports reading the TCP Option (optional).
>>
>>     Nonetheless, if any of these three is not the case, it might
>>     still be
>>     possible to work out whether a CE marking was on a probe packet...
>>
>>     The ACK that carries the CE packet counter also carries an ACKno
>>     (and
>>     possibly SACK options). When a zero-sized probe is sent, it won't
>>     elicit
>>     an ACK on its own (TCP doesn't ACK pure ACKs). But if the probe
>>     is CE
>>     marked, when the data receiver ACKs subsequent data packet(s),
>>     the CE
>>     packet counter will include any CE marking on the probe. It seems
>>     that
>>     doesn't help, because the data sender cannot tell whether the CE
>>     mark
>>     was on the data packets or the probe. But if the counter ever
>>     increases
>>     by more than the number of data packets covered by the ACK, the
>>     probe
>>     must have been marked as well.
>>
>>     That sounds like having to wait quite a time for the possibility
>>     of all
>>     packets together being marked. But there might be a more
>>     deterministic
>>     way by use the same trick that keep alive probes use...
>>
>>     That is, send a zero-sized probe with SEG.SEQ = SND.NXT-1. Being
>>     out of
>>     window, each of these probes would immediately elicit a pure ACK
>>     from
>>     the receiver. This might cause problems alongside the other regular
>>     ACKs, because I think these might look like Dup ACKs (when the
>>     trick was
>>     invented for keepalives, this wasn't a problem 'cos there were no
>>     other
>>     data packets being ACK'd). However, it's possible the sender can
>>     work
>>     out that they are not Dup ACKs, given it knows it sent a probe.
>>
>>     (I'm not totally certain of my facts here - we'd need a TCP
>>     expert to
>>     confirm - Richard?)
>>
>>
>>     Bob
>>
>>     >
>>     >
>>     > There may be some ambiguity, as AccECN doesn't strictly require an
>>     > immediate ACK on a CE (only that the next packet after a
>>     received CE
>>     > mark has to convey the changed CE-related counters), but in the
>>     general
>>     > case, AccECN would allow and support such a detection scheme.
>>
>>     [BB]
>>
>>
>>     >
>>     > Best regards,
>>     >    Richard
>>     >
>>     >
>>     >
>>     > Am 12.12.2020 um 00:22 schrieb Martin Duke:
>>     >> Excellent, thank you for the reminder. So the L4S sender could
>>     >> interleave some ECT(0) marked pure ACKs (or retransmissions of
>>     the last
>>     >> acknowledged byte) and hope that the PCE counter increases without
>>     >> corresponding increases in BCE.
>>     >>
>>     >> The AccECN spec might need to be updated to specify that these
>>     should be
>>     >> reported in PCE even though they are not 3168 compliant.
>>     >>
>>     >> Scheduling these probes might not exactly be trivial, but if
>>     they are
>>     >> temporally correlated with ECT(1)->CE marks, this would be highly
>>     >> suggestive, yes?
>>     >>
>>     >> On Fri, Dec 11, 2020 at 3:03 PM Black, David
>>     <David.Black@dell.com <mailto:David.Black@dell.com>
>>     >> <mailto:David.Black@dell.com <mailto:David.Black@dell.com>>>
>>     wrote:
>>     >>
>>     >>     In which case, RFC 8311 Section 4.3 allows experimental
>>     usage of ECN
>>     >>     with such packets
>>     (https://tools.ietf.org/html/rfc8311#section-4.3
>>     >> <https://tools.ietf.org/html/rfc8311#section-4.3>).____
>>     >>
>>     >>     __ __
>>     >>
>>     >>     Thanks, --David____
>>     >>
>>     >>     __ __
>>     >>
>>     >>     [EXTERNAL EMAIL] ____
>>     >>
>>     >>     My understanding of 3168 is that only in-window data
>>     packets are
>>     >>     marked ECT(0). A zero-length segment is a equivalent to a
>>     pure ACK,
>>     >>     which is not marked.____
>>     >>
>>     >>     __ __
>>     >>
>>     >>     On Fri, Dec 11, 2020 at 12:09 PM C. M. Heard
>>     <heard@pobox.com <mailto:heard@pobox.com>
>>     >>     <mailto:heard@pobox.com <mailto:heard@pobox.com>>> wrote:____
>>     >>
>>     >>         On Fri, Dec 11, 2020 at 11:51 AM Martin Duke
>>     >>         <martin.h.duke@gmail.com
>>     <mailto:martin.h.duke@gmail.com> <mailto:martin.h.duke@gmail.com
>>     <mailto:martin.h.duke@gmail.com>>>
>>     >>         wrote:____
>>     >>
>>     >>             This falls under the "much easier to do in other
>>     transports"
>>     >>             category, where I could just send a PING or
>>     HEARTBEAT marked
>>     >>             ECT(0) to test the queue in mid-connection, without
>>     >>             affecting the latency of anything that matters.
>>     But in the
>>     >>             TCP case, I'm not sure how to resolve Bob's second
>>     objection
>>     >>             (running ECT(0) for a long time would be
>>     unacceptable).____
>>     >>
>>     >>         __ __
>>     >>
>>     >>         Could zero-length TCP segments be used instead of PING or
>>     >>         HEARTBEAT? ____
>>     >>
>>     >>         ____
>>     >>
>>     >>         Mike Heard ____
>>     >>
>>     >
>>
>>     -- 
>>     ________________________________________________________________
>>     Bob Briscoe http://bobbriscoe.net/
>>
>
> -- 
> ________________________________________________________________
> Bob Briscoehttp://bobbriscoe.net/

-- 
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/