Re: [tsvwg] Éric Vyncke's No Objection on draft-ietf-tsvwg-l4s-arch-19: (with COMMENT)

Bob Briscoe <ietf@bobbriscoe.net> Sat, 27 August 2022 14:03 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 35259C14CE42; Sat, 27 Aug 2022 07:03:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.107
X-Spam-Level:
X-Spam-Status: No, score=-2.107 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_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=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=bobbriscoe.net
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 sKSefhJS35oK; Sat, 27 Aug 2022 07:03:49 -0700 (PDT)
Received: from mail-ssdrsserver2.hostinginterface.eu (mail-ssdrsserver2.hostinginterface.eu [185.185.85.90]) (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 889ABC14CE37; Sat, 27 Aug 2022 07:03:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=bobbriscoe.net; s=default; h=In-Reply-To:References:Cc:To:Subject:From: MIME-Version:Date:Message-ID:Content-Type: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=enAp9Sdb57fokfe9AI1u57YzWG0GwVrwlEQ3vq1lBWE=; b=GzkBJmUTKqYtoT/KbSuMYKngav 0Nq1StQxJK7RXwmEiuOmOKo/uHJCWjziY/7YsrIYQFnBUTyZy+MvUbVAElWXGWq5YItiApfGfzkiX iNrUr5s6oSuZRJefV9Miufh4bb3Q8IUokl+jDOSEERaEk786Pi2j8kJTX0ds/XsxxwsLA8DMku2k9 5VDJ5lYxqKDIEqTSq1dtkFqOTrOQSP+lQGlZl35rglh6ojn0ICRNRgG8wdKNVDJ/GPtKy5p3Z1PQQ CD+3aqZzZASeKtdbIn8Oev4yd6e6cCagPI9XPVKvr+P/y5HJ2kYoeX1pE64X2f6ATNN8dfxvCjQhu aUlNpVrw==;
Received: from 67.153.238.178.in-addr.arpa ([178.238.153.67]:40194 helo=[192.168.1.4]) by ssdrsserver2.hostinginterface.eu with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.95) (envelope-from <ietf@bobbriscoe.net>) id 1oRwPe-0008F7-I3; Sat, 27 Aug 2022 15:03:44 +0100
Content-Type: multipart/alternative; boundary="------------nN5W7KZX50B0Db1lQc5Lvk77"
Message-ID: <def8f184-054b-d162-bb76-d413b5fc7608@bobbriscoe.net>
Date: Sat, 27 Aug 2022 15:03:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0
From: Bob Briscoe <ietf@bobbriscoe.net>
To: Éric Vyncke <evyncke@cisco.com>, The IESG <iesg@ietf.org>
Cc: draft-ietf-tsvwg-l4s-arch@ietf.org, benno@NLnetLabs.nl, tsvwg-chairs@ietf.org, tsvwg@ietf.org
References: <166136881709.47121.7036332053834717830@ietfa.amsl.com>
Content-Language: en-GB
In-Reply-To: <166136881709.47121.7036332053834717830@ietfa.amsl.com>
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - ssdrsserver2.hostinginterface.eu
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.hostinginterface.eu: authenticated_id: in@bobbriscoe.net
X-Authenticated-Sender: ssdrsserver2.hostinginterface.eu: in@bobbriscoe.net
X-Source:
X-Source-Args:
X-Source-Dir:
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/vVBmgo7kJOr4_wDz-V1NAnCuXNk>
Subject: Re: [tsvwg] Éric Vyncke's No Objection on draft-ietf-tsvwg-l4s-arch-19: (with COMMENT)
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.39
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: Sat, 27 Aug 2022 14:03:54 -0000

Eric,

Thank you for taking the time to do a full review and comments.
Pls see a diff that includes the edits against your comments (and some 
for other people that crept in):
https://bobbriscoe.net/tmp/draft-ietf-tsvwg-l4s-arch-20c-DIFF-19.html

Also see [BB] inline for explanations and push-back on some:


On 24/08/2022 20:20, Éric Vyncke via Datatracker wrote:
> Éric Vyncke has entered the following ballot position for
> draft-ietf-tsvwg-l4s-arch-19: No Objection
>
> When responding, please keep the subject line intact and reply to all
> email addresses included in the To and CC lines. (Feel free to cut this
> introductory paragraph, however.)
>
>
> Please refer tohttps://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/  
> for more information about how to handle DISCUSS and COMMENT positions.
>
>
> The document, along with other ballot positions, can be found here:
> https://datatracker.ietf.org/doc/draft-ietf-tsvwg-l4s-arch/
>
>
>
> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
>
>
> # Éric Vyncke, INT AD, comments for draft-ietf-tsvwg-l4s-arch-19
> CC @evyncke
>
> Thank you for the work put into this document. Please note that I am far from
> being an expert on transport issues... so I am afraid that my review is not
> deep and may have missed obvious points.
>
>   I especially like the incremental deployment approach.
>
> Please find below some non-blocking COMMENT points (but replies would be
> appreciated even if only for my own education), and some nits.
>
> Special thanks to Wesley Eddy for the shepherd's detailed write-up *including*
> the rough (?) WG consensus *and* the justification of the intended status.
>
> Please note that Benno Overeinder is the Internet directorate reviewer (at my
> request) and you may want to consider this int-dir reviews as well when Benno
> will complete the review (no need to wait for it though):
> https://datatracker.ietf.org/doc/draft-ietf-tsvwg-l4s-arch/reviewrequest/16167/
>
> I hope that this review helps to improve the document,
>
> Regards,
>
> -éric
>
> ## COMMENTS
>
> ### id-nits and obsolete references
>
> [id-nits]
> (https://author-tools.ietf.org/api/idnits?url=https://www.ietf.org/archive/id/draft-ietf-tsvwg-l4s-arch-19.txt)
> indicates two references to obsolete RFC (4960 and 7540). Probably worth
> updating the references.

[BB] Have done for 7540-> 9113
But I've mention that the x-ref to 4960 is intended, despite being 
obsolete, cos that's where the appendix outlining how ECN would be added 
to SCTP was (removed in 9260 that obsoletes it).

> ### Multicast ?
>
> While the answer seems obvious, should there be a mention that L4S technique
> only applies to unicast traffic ?

Multicast and anycast are addressed (very briefly) in the 'Scope' 
section of the EXP spec of the L4S ECN protocol.
https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-ecn-l4s-id-28#section-1.3

L4S ECN is just as applicable with multicast as Classic [RFC3168] ECN, 
especially for unreliable multicast. For reliable multicast, there are 
the obvious scaling problems with feedback, but it's not untenable for 
small groups.

There's no architectural differences between multicast ECN and multicast 
L4S ECN to warrant saying anything in the L4S architecture. I think that 
sentence in ecn-l4s-id is sufficient. The original ECN spec [RFC3168] 
(that L4S ECN builds on) says that developing additional transport 
layers for unicast and multicast is for further study, and that's still 
the case.


[BTW, I was the one who pointed out that the original ECN draft (that 
became RFC3168) didn't mention multicast. And I posted this draft during 
the WGLC in 2001 that suggested a cool way of multicasting ECN (but 
probably impractical to implement):
https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-ecn-ip-00#section-6

Actually, I'd be interested in your opinion of whether the scheme for 
suppressing all-but-one congestion marking during multicast forwarding 
would be any more feasible to implement today than it was then.
If you're interested, Figure 3 in the tech report that the above draft 
was derived from helps you quickly grock this multicast forwarding of 
only one ECN marking:
https://bobbriscoe.net/projects/2020comms/ecn/protocol/ip/ecnip_tr.pdf
]

> ###
>
> ### Very long abstract...
>
> This is probably the longest abstract for the last couple of months ;-)
>
> No need to reply or change the document, but the abstract also somehow smells
> like a marketing text...

[BB] Length has already been dealt with, following similar comment(s).
https://bobbriscoe.net/tmp/draft-ietf-tsvwg-l4s-arch-20a-DIFF-19.html

> ### Section 1, on purpose ?
>
> ```
>     ... Queuing in access
>     network bottlenecks is typically configured to cause overall network
>     delay to roughly double during a long-running flow, relative to
>     expected base (unloaded) path delay [BufferSize].
> ```
>
> Is this really configured so on purpose ? Probably not, even if the above text
> seems to indicate that this is on purpose.

[BB] I'm afraid it is on purpose. This is how TCP Reno has worked since 
1988. TCP's well-known halving on each drop implies that, at the top of 
each sawtooth, the buffer holds a base round trip's worth of queue 
delay, so total RTT oscillates between 1 & 2 base RTTs. That's the 
implication of one bandwidth-delay product of buffer.

BTW, that's tiny compared to the bloated buffers some operators 
configure (multiple seconds of buffer).
See the bufferbloat project, which has been evangelizing getting buffers 
down to this minimum of just one (additional) round trip's worth of 
buffer, preferably with an AQM too.
But state-of-the-art AQMs (pre-L4S) still have to accommodate TCP's 
large sawteeth in the buffer.

> ### Section 1, TCP only ?
>
> The following text seems to indicate that TCP is the major transport protocol,
> but (see caveat about my lack of transport expertise) it seems to me that QUIC
> (and plain UDP) are becoming more important: ```
>     The root of the problem is the presence of standard TCP congestion
>     control (Reno [RFC5681]) or compatible variants (e.g. TCP
>     Cubic [RFC8312]).
> ```
> I.e., if similar mechanisms exist in QUIC, then it is worth mentioning.

[BB] Reno is the default CC in QUIC. I've reworded:

    The root of the problem is the presence of standard congestion
    control (Reno [RFC5681]) or compatible variants (e.g. CUBIC
    [RFC8312]) that are used in TCP and in other transports such as
    QUIC [RFC9000].


See diff (link at the start) for this in context.

> ### Section 2, incremental deployment ?
>
> ```
>     ... Because ECN support is
>     essential for L4S, senders use the ECN field as the protocol that
>     allows the network to identify which packets are L4S and which are
>     Classic.
> ```
> seems to contradict the 'incremental deployment' statement as the network needs
> to be able to differentiate traffic. Or did I miss something ?

[BB] This is all explained in the following subsections on deployment: 
§6.4.3 
<https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-l4s-arch-19#section-6.4.3> 
& §6.4.4 after it.

> ### Section 2, which part of the host ?
>
> ```
>        ... A host needs to distinguish L4S and Classic packets
>        with an identifier so that the network can classify them into
>        their separate treatments. ...
> ```
> I would assume that a host stack as a local API so that applications can signal
> L4S vs. classic traffic.

[BB] Yup. That's one obvious way.

> Also, it is unclear (to me) whether it is the sending part of the host or the
> receiving part ?

[BB] s/host/sending host/
See diff for this in context.

> Finally, with some transport services (e.g., QUIC) moving to the user space, is
> the above statement still applicable ?

[BB] Definitely, yes.

And this is why the draft just says "the sending host", 'cos where in 
the stack it's sent from depends on the type of transport.
For instance:
* Google's L4S support within BBRv2 is in the kernel if over TCP (but 
BBRv2 is also implemented within QUIC).
* Apple's L4S congestion control in QUIC is in userland over UDP, which 
developers can now enable in MacOS and iOS to test their apps.
* NVIDIA has implemented L4S congestion control over raw UDP for 
testing, and so has Nokia, both for video transport
* Ericsson has implement L4S in their real-time media SCReAM congestion 
control over RTP/RTCP (over UDP of course)
* Meta is testing the Prague congestion control that we (the L4S design 
team) implemented as a reference for TCP in the Linux kernel

So you can see, there are nearly as many possibilities as initial 
implementations (the above were all brought to the first L4S interop in 
Philly at IETF-114).
See https://l4s.net/#code for links to most (always slightly out of date 
- it's fashionable).


> ### Section 4.1
>
> Unsure how `unassignment of an identifier` relates to item a) below.

[BB] It's in the last sentence of a):

        [RFC8311  <https://datatracker.ietf.org/doc/html/rfc8311>] also
        reclassifies the original experimental assignment of the ECT(1)
        codepoint as an ECN nonce [RFC3540  <https://datatracker.ietf.org/doc/html/rfc3540>] as historic.


Actually, I can see that sentence is hard to parse. See diff for a new 
attempt.


> ### Section 6.1
>
> Again, please bear with my lack of knowledge, but I wonder what is the 'load'
> in the text below. Is the 'load' only interactive traffic(then I wonder how there could be no congestion)  or is it a mix with non-interactive traffic (the
> proverbial SW upgrade,which can be delayed): ```
>     With the L4S approach, the following existing applications also
>     experience significantly better quality of experience under load:
> ```

[BB] Load means anything that is filling the pipe - it will include the 
application listed, which might alone be able to fill the pipe. But it 
could also include many applications running in parallel, perhaps a mix 
of those listed, or perhaps including your s/w download. Or ...

BTW, I've marked a couple of passages green in your text that make me 
think there's a misconception here somewhere.
An example might help: in this demo: 
https://riteproject.eu/dctth/#1511dispatchwg there were 4 large file 
downloads in parallel to the interactive video app. On the left, the 
video app _and_ all the downloads were using an L4S congestion control 
(all actually TCP Prague) so they all filled the pipe all the time. 
Nonetheless _all_ the packets (including those of the downloads) 
experienced very low queueing delay.

> ### Section 6.3
>
> This section could probably be extended as Wi-Fi & satellite links have
> properties going beyond latency (e.g., packet loss).

[BB] I've added a para as follows:

"Also certain link types, particularly radio-based links, are far more 
prone to transmission losses. Section 6.4.3 explains how L4S congestion 
controls have to respond as drastically to loss as the Classic controls. 
Nonetheless, research referred to in the same section has demonstrated 
potential for considerably more effective loss repair at the link layer, 
due to the relaxed ordering constraints of L4S packets."

For this in context, see diff.

> For a non native English reader, the use of 'pole' is really hard to parse.

[BB] As a Brit, I had never heard of the expression 'longest pole in the 
tent' (which apparently has fairly recent American origins). However, I 
adopted it, 'cos it painted a strong picture in my mind. So I'm 
surprised to hear it doesn't translate well. I'll leave it unless you 
really think this would be a bad move.

> ### Section 8.1 and others
>
> I wonder whether this section belongs to security considerations or rather to
> deployment considerations.

[BB] It is a common misconception in computing to think of security as 
just /information/ security. But isolation, starvation prevention, 
traffic policing etc, are all security-related functions.

> ### Section 8.4
>
> The text does not convince me that ECN can be trusted (i.e., the network
> provides ECN integrity). Should there simply be some text about 'best effort' ?

[BB] Drop cannot be trusted as a congestion signal either, because the 
sender doesn't have to respond to it. But Internet congestion control 
has depending on this untrustworthy signal for 34 years, and worked 
well. The interesting question is 'Why?' That might be where you are 
going with your comment about 'best effort'?

     Aside: This appendix about ECN integrity in l4s-arch currently 
gives a slightly briefer version of similar info in an appendix of 
ecn-l4s-id, and then refers to it.
     So, instead, we've decided to have the info in one place 
(ecn-l4s-id) and in l4s-arch just cross-refer to it along with a much 
briefer single-sentence summary of what it's about.

To your point (if I understand it correctly), I've added the following 
at the end:
"At the time of writing, It is not common to protect the integrity of 
congestion feedback, whether loss or Classic ECN. If this position 
changes during the L4S experiment, one or more of the above techniques 
might need to be developed and deployed."

Is that sthg like what you were looking for?

> ### Privacy considerations
>
> Does the use of visible ECN marking leak some information about its
> (potentially encrypted) content ?

[BB]
If you mean the ECN codepoint chosen by the sender:
     See §8.5 on Privacy Considerations, and conversation with Roman 
Danyliw on this point subsequent to his review:
https://mailarchive.ietf.org/arch/msg/tsvwg/pV0uW56svXtlA24fuLO14KgkPCM/
     In summary,
         draft says identifier for a very broad class helps people hide 
in the crowd from correlation analysis
         Roman wondered if early or late adopters would be more identifiable
         My response was, anyone who cares about privacy that much can 
choose not to stand out, sop avoid being either.
else, if you mean ECN congestion markings applied by the network
     Probably not (it might help identify the behaviour of the 
congestion control, which might )


> ## NITS
>
> ### E.g. comma
>
> AFAIK, all 'e.g.' must be followed by a comma.

[BB] That's American English style, which tends to have more commas 
generally.
I've written in British English style.
https://english.stackexchange.com/a/231071/334027
https://english.stackexchange.com/a/351762/334027

The RFC Editor will be the final arbiter of style. They ensure an RFC is 
consistently either one or the other, and have their own British English 
editors.

> ### Spec
>
> Suggest to use 'specification' rather than 'spec' ;-)

[BB] I checked this during writing. Apparently, like fridge, spec is now 
considered a word in its own right, and addition of a full-stop is 
deprecated.
https://chambers.co.uk/search/?query=spec&title=21st
https://www.merriam-webster.com/dictionary/spec

As I said, the edits for you are in this diff:
https://bobbriscoe.net/tmp/draft-ietf-tsvwg-l4s-arch-20c-DIFF-19.html


Thank again very much for your careful review.
I look forward to seeing any further responses you might have.



Bob


>
> ## Notes
>
> This review is in the ["IETF Comments" Markdown format][ICMF], You can use the
> [`ietf-comments` tool][ICT] to automatically convert this review into
> individual GitHub issues.
>
> [ICMF]:https://github.com/mnot/ietf-comments/blob/main/format.md
> [ICT]:https://github.com/mnot/ietf-comments
>
> *************
> As noted inhttps://www.ietf.org/blog/handling-iesg-ballot-positions/, a
> DISCUSS ballot is a request to have a discussion; I really think that the
> document would be improved with a change here, but can be convinced otherwise.
>
>
>


-- 
________________________________________________________________
Bob Briscoehttp://bobbriscoe.net/