From nobody Fri May 28 03:03:33 2021
Return-Path: <pete@heistp.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 9C9813A22F1
 for <tsvwg@ietfa.amsl.com>; Fri, 28 May 2021 03:03:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 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,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001]
 autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key)
 header.d=heistp.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 yv-tMGvCH2Bn for <tsvwg@ietfa.amsl.com>;
 Fri, 28 May 2021 03:03:26 -0700 (PDT)
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [IPv6:2a00:1450:4864:20::334])
 (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 B086E3A22EF
 for <tsvwg@ietf.org>; Fri, 28 May 2021 03:03:25 -0700 (PDT)
Received: by mail-wm1-x334.google.com with SMTP id r13so1305232wmq.1
 for <tsvwg@ietf.org>; Fri, 28 May 2021 03:03:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heistp.net; s=google; 
 h=message-id:subject:from:to:cc:date:in-reply-to:references
 :user-agent:mime-version;
 bh=05MJIhWaE1frUPHwZgkir5pK2q1/SYIA4hmzzf+fUbo=;
 b=QyPcqynZGCwW0P8Vo2orgktL6jsVOJCWo0pZHyTacS8VudWVAqNz4uvcG0/3Nz5hY8
 N0gLXOp17lZjv3xB9RWGyD8X++9hzFcYhtr4Hwtljp1jR3mOy8LufOnlTHx9OWofQ2f7
 m5OiUibA3hE3J2rkvzQ+1MMw7o70ZhdvF3D3xLEu/iuRHThrQgljUi5H4eUS9VCmMdK2
 1gHdRZfShbvKEMEPb+XMivB7G/Wm7EgYQRrf58KvjDwHzgXAP5uMfvBCYYkLd0WflPas
 Vmf/PjOPU/UwTyG1Us2Q6YadGcKmV9dEjKvOCIKIoBvUxJl4uI4L6uekBy2HB6cJFn8f
 mgpA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to
 :references:user-agent:mime-version;
 bh=05MJIhWaE1frUPHwZgkir5pK2q1/SYIA4hmzzf+fUbo=;
 b=DACf7+oqsRstVEKPGTwHoqR0lDwBxo8HoLI9sxZ+80C87iKbtaohxBfy0FQKeY4anO
 tUTfpcRI3nHJXlGf3+qS1FNlwmd6rdLgUPgOO4DhDiNhSpHgMpCPHz+1fxpMUPVtvDVo
 AEYLrmBU30VkNyAv7sWN4ZFUv8XSN/i1Lz6Gl5jtg55uZlyy7jvWDhMhLQ6a9gYTP/oD
 M1H4/Fd+KeY7ERBq3rZzu5YUph7BU4nkdw+VzuyokIXowAYNqhkf1SeV+uDWbgIliFoQ
 YVTEhllGPuYVlivg78pLqEsXs21sRL9R4VcOKiaOUSG809C0e/xhPlbZCmvGp/8yO1d3
 Tv+Q==
X-Gm-Message-State: AOAM531WmWgApcL85Vzt3p3aNGZFhDz2pE3R0IPrmn6GY2ygx9FLiR2V
 3je9HAjf0YKav06sIngMT2OBpw==
X-Google-Smtp-Source: ABdhPJz8EkE9+znM9azson38jpokzjjTAInbm/8m3PCJRzzKu5ajxGLYl64Op6kVl1o2sWdEOcbvbg==
X-Received: by 2002:a1c:a944:: with SMTP id s65mr4891915wme.181.1622196202065; 
 Fri, 28 May 2021 03:03:22 -0700 (PDT)
Received: from [10.72.0.88] (h-1169.lbcfree.net. [185.193.85.130])
 by smtp.gmail.com with ESMTPSA id u3sm6279317wre.76.2021.05.28.03.03.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 28 May 2021 03:03:21 -0700 (PDT)
Message-ID: <2783a54145a2f1a3afda15ecdb31b741e999b1a0.camel@heistp.net>
From: Pete Heist <pete@heistp.net>
To: "De Schepper, Koen (Nokia - BE/Antwerp)"
 <koen.de_schepper@nokia-bell-labs.com>
Cc: "tsvwg@ietf.org" <tsvwg@ietf.org>
Date: Fri, 28 May 2021 12:03:20 +0200
In-Reply-To: <AM9PR07MB73130BB0B4DA87986065C869B9239@AM9PR07MB7313.eurprd07.prod.outlook.com>
References: <162158815765.22731.15608328324211025925@ietfa.amsl.com>
 <f8ed1105-d1db-55ce-eb1f-00de8a83b0e8@bobbriscoe.net>
 <3F147A3D-BD68-4F0A-89FF-9A92284FF0A5@gmx.de>
 <MN2PR19MB404590F453EF73E681A7F17D83299@MN2PR19MB4045.namprd19.prod.outlook.com>
 <0b7edf59-5bce-3189-8745-324083c98ce4@bobbriscoe.net>
 <MN2PR19MB4045C6483D844FD602A543F083259@MN2PR19MB4045.namprd19.prod.outlook.com>
 <e5e965b1-31f9-3780-be6a-2003e2e8a0bc@bobbriscoe.net>
 <MN2PR19MB40455B5E0706806B3FCDE18C83249@MN2PR19MB4045.namprd19.prod.outlook.com>
 <AM9PR07MB73130BB0B4DA87986065C869B9239@AM9PR07MB7313.eurprd07.prod.outlook.com>
Content-Type: multipart/alternative; boundary="=-rNcZk+cFx63hIvtwkf4Z"
User-Agent: Evolution 3.40.1 
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/UJqbQ1q6s5nsA5ujS3CurVPnDfc>
Subject: Re: [tsvwg] New rev of draft-ietf-tsvwg-ecn-l4s-id-17
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, 28 May 2021 10:03:32 -0000


--=-rNcZk+cFx63hIvtwkf4Z
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Hi Koen,

On Thu, 2021-05-27 at 08:46 +0000, De Schepper, Koen (Nokia -
BE/Antwerp) wrote:
> I agree that larger (adaptive) replay window is the main solution,
> and removes all other needs. The adaptive window could easily grow
> based on the gap that an early packet is creating, allowing the next
> packets to fill the gap (optionally shrinking the window afterwards
> back to gradually smaller values).
>  
> As an alternative, another smarter reordering-safe mechanism would
> help as well. I think a symmetric window that also drops (or “keeps
> aside without moving the window”) sporadic early packets, will
> perform better… It would drop (or delay) only the expedited CE(s).

I'm just double checking, we're on the same page that the reordering
that affects tunnel anti-replay mechanisms doesn't require CE marks,
right? It isn't just expedited CEs that can advance the window past the
tunnel's valid traffic, but any traffic marked ECT(1), legitimately or
not. David wrote a crystal clear explanation earlier, in which CE marks
are only mentioned in order to clear up that prior misconception:

https://mailarchive.ietf.org/arch/msg/tsvwg/PEVCuDJfbrel74ud8kNJtmVwhHA/

Regards,
Pete

> This all avoids the need for different SA’s and/or DCSPs…
>  
> Koen.
>  
> From: tsvwg <tsvwg-bounces@ietf.org> On Behalf Of Black, David
> Sent: Wednesday, May 26, 2021 9:34 PM
> To: Bob Briscoe <ietf@bobbriscoe.net>; Gorry Fairhurst
> <gorry@erg.abdn.ac.uk>; Wesley Eddy <wes@mti-systems.com>
> Cc: tsvwg@ietf.org
> Subject: Re: [tsvwg] New rev of draft-ietf-tsvwg-ecn-l4s-id-17
>  
> Inline … --David
>  
> From: Bob Briscoe <ietf@bobbriscoe.net>
> Sent: Wednesday, May 26, 2021 1:16 PM
> To: Black, David; Gorry Fairhurst; Wesley Eddy
> Cc: tsvwg@ietf.org
> Subject: Re: [tsvwg] New rev of draft-ietf-tsvwg-ecn-l4s-id-17
>  
> [EXTERNAL EMAIL] 
> David,
> On 25/05/2021 21:22, Black, David wrote:
> > Two comments:
> >  
> > [1] This VPN discussion appears to be assuming a remote access VPN,
> > so it does not align well with site-to-site VPNs:
> >  
> > > This particular path divergence occurs iff an ECT0 flow is CE-
> > marked /prior/ to the VPN ingress:
> > > * In general where the VPN ingress is on the end-system
> > (transport mode) that doesn't happen.
> > > * There is however a chance that CE could be introduced before a
> > 'bump in the wire' VPN ingress (tunnel mode). 
> >  
> > For site-to-site VPNs, the last line above is a significant
> > understatement.  A scenario that helps to understand this is ROBO,
> > specifically a sizeable remote office or branch office such as a
> > large retail store, where the remote or branch VPN gateway is a
> > potential bottleneck node for outbound traffic courtesy of fan-in
> > from multiple end systems and the LAN having more bandwidth than
> > the (purchased) VPN bandwidth.
> 
> [BB] Wouldn't that particular bottleneck apply marking at the egress
> of the VPN gateway after encap?
> [David>] That depends on the details of how the VPN is integrated
> with the network, e.g., if queue is upstream of encap.
>  
> > [2] I think the whole approach of parallel SAs is not a good idea –
> > it would be better to recommend larger replay windows, perhaps much
> > larger, and/or use DSCPs to direct traffic to parallel SAs (which
> > would disambiguate CE across L4S and non-L4S traffic).
> 
> [BB] You haven't given any reasons.
>  
> [David>] Sure:
> * See RFC 7657 for general discussion about why variable QoS
> treatment
> within a single reliable transport protocol session is not a good
> idea – that discussion is couched in Diffserv terms, but it's
> applicable to L4S ECN-based service differentiation.
> * Asking VPNs to classify traffic based on ECN field values is also
> asking for the possibility of discard of traffic marked with some of
> those values, which is not a good place to go given the desire for
> the ECN field to remain end-to-end.
> * Using DSCPs is a "reduce to previous case" approach that doesn't
> involve modification of any security specs and aligns with existing
> VPN implementations that are cognizant of DSCPs.
> * Larger replay windows are a lower-effort approach that ought to
> apply to deployed VPNs whose replay window is configurable.  In
> practice, this is the place to start if L4S causes VPN problems.
> 
> 
> Bob
> 
> >  
> > Thanks, --David
> >  
> > From: Bob Briscoe <ietf@bobbriscoe.net> 
> > Sent: Sunday, May 23, 2021 6:00 PM
> > To: Black, David; Gorry Fairhurst; Wesley Eddy
> > Cc: tsvwg@ietf.org
> > Subject: Re: [tsvwg] New rev of draft-ietf-tsvwg-ecn-l4s-id-17
> >  
> > [EXTERNAL EMAIL] 
> > David, 
> > See inline, tagged [BB]...
> > On 21/05/2021 23:02, Black, David wrote:
> > > > section 6.2 with its, "use two SAs, one for ECT(1) and one for
> the rest" seems a bit limited
> > >  
> > > The situation is more severe than that, and it's problematic if
> there's any non-L4S TCP traffic that uses ECN involved.  The two SAs
> are actually for 2 ECN values each:
> > >  
> > >    To avoid this limitation, a VPN ingress participating in the
> L4S
> > >    experiment SHOULD map packets onto two parallel SAs indexed by
> the
> > >    lowest significant bit of the IP-ECN field.
> > >  
> > > That indexing puts Not-ECT [00b] and ECT(0) [10b] packets into
> one SA, and puts ECT(1) [01b] and CE [11b] packets into another. 
> Non-L4S TCP uses ECT(0) and CE, hence a flow that carries any
> congestion indications is split across those two SAs.  ECMP based on
> SPI (deployed technology) that puts those parallel SAs on different
> network paths is not assured to preserve packet order across those
> SAs, and packet reordering is not a good thing to do to a non-L4S TCP
> flow.
> > 
> > [BB] Yes, this would be a potential problem.
> > 
> > This particular path divergence occurs iff an ECT0 flow is CE-
> > marked /prior/ to the VPN ingress:
> > * In general where the VPN ingress is on the end-system (transport
> > mode) that doesn't happen.
> > * There is however a chance that CE could be introduced before a
> > 'bump in the wire' VPN ingress (tunnel mode).
> > 
> > For a VPN participating in the L4S experiment with two SAs, if
> > there was any CE before the ingress, we did think carefully about
> > which way to classify it:
> > * If CE goes with ECT0, then if a subsequent L4S node gives ECT0
> > more queue delay than CE, the VPN anti-replay function could
> > discard some ECT0 packets.
> > * If CE goes with ECT1, it avoids anti-replay discard completely.
> > We had tried to think of possible problems with splitting Classic
> > flows across SAs,  but we hadn't thought of your point where ECMP
> > on the SPI makes CE and ECT0 from the same flow taking different
> > paths.
> > 
> > I believe it is still best to classify CE with ECT1, based on the
> > following reasoning. I think the scenario would occur with very low
> > probability {Note 1}, and if it did, the CE might either arrive a
> > little earlier or a little later than data packets around them. 
> > * If earlier, the benefit of ECN would not be lost, but there would
> > be an extremely small chance (p_s * p_r * p_N) of an occasional
> > spurious re-xmt {Note 2}.
> > * If later, the chance that a delayed CE would be mistaken for a
> > drop and trigger a spurious re-xmt and a congestion response would
> > probably be higher, but still very small (p_s * p_r * p_l) {Note
> > 3}. That would lose the benefit of ECN but, at least for Classic
> > flows, a single CE is meant to trigger a large congestion response
> > as if it was a loss anyway.
> > 
> > I don't want to belittle the point you've made, because this is
> > certainly a new problem. However, I do think the probabilities need
> > to be put in perspective.
> > 
> > I suspect the ECMP problem with any ECN (3168 or L4S) is likely to
> > be a greater concern. You might recall that João Taveira from
> > Fastly pointed this out during a tsvwg discussion on ECN back in
> > 2017. This link should jump to 14:25 mins into a 2017 NANOG talk
> > from Lorenzo Saino of Fastly about how they had to disable ECN
> > negotiation when Apple clients started to request ECN in 2015 -
> > because a number of different ECMP vendors still hash on the ToS
> > byte for ECMP and load balancing, so the data would have been
> > routed to a different server from the handshake: 
> >     https://youtu.be/ciClZdwHelU?t=805 [youtu.be]
> > 
> > Regards
> > 
> > 
> > 
> > Bob
> > 
> > {Note 1}: Reasoning for scenario occurring with low probability
> > (we'll call it p_s):
> > Usually, an institution provides a tunnel-mode VPN between
> > physically secured networks (e.g. between their intranet and an
> > employee's home laptop). AQM deployment would be unusual in the
> > interior of corporate and institutional intranets, because the
> > bottleneck is more likely elsewhere (e.g. in the access link
> > between the site and the Internet). However, there are bound to be
> > some cases of tunnel-mode VPNs where the traffic arriving could
> > have already been ECN-marked (for instance Jonathan Morton's
> > example of gamers providing a VPN end-point on the public Internet
> > to hide their own IP address). 
> > Then, to experience this problem, there also has to be some load
> > balancing or ECMP after the VPN ingress but before the egress. I'm
> > sure that will occur sometime somewhere (let's say with probability
> > p_r). The likelihood of the scenario occurring will then be p_s *
> > p_r.
> > 
> > {Note 2}:
> > * N packets in a row within a Classic flow have to be CE-marked for
> > early CE packets to result in a spurious re-xmt, let's say that
> > happens with probability p_N. As already explained in Appx B of
> > ecn-l4s-id, N was traditionally 3, but RACK is making it larger.
> > And the main sources of ECN marking for Classic flows are FQ_CoDel
> > and CAKE, both of which take great care not to mark multiple
> > packets in a row. So p_N is going to be tiny.
> > And the probability of a spurious re-xmt with early reordering will
> > be the vanishingly small product (p_s * p_r * p_N).
> > 
> > {Note 3}:
> > * Let's say p_l (for late) is the probability that the reordering
> > between the two SAs is sufficient to make each CE packet arrive
> > late enough  to be deemed a loss. p_l is unlikely to be as small as
> > p_N, but the overall probability of this occurring is still reduced
> > because the probability that CE marking precedes that VPN (p_s),
> > and that there's routing keyed on flow IDs and SPIs (p_r). So the
> > overall probability of a spurious rexmt due to late reordering is
> > (p_s * p_r * p_l).
> > 
> > 
> > 
> > Bob
> > 
> > 
> > >  
> > > Thanks, --David
> > >  
> > > -----Original Message-----
> > > From: Sebastian Moeller <moeller0@gmx.de> 
> > > Sent: Friday, May 21, 2021 5:27 PM
> > > To: Bob Briscoe
> > > Cc: Gorry Fairhurst; Black, David; Wesley Eddy; tsvwg@ietf.org
> > > Subject: Re: [tsvwg] New rev of draft-ietf-tsvwg-ecn-l4s-id-17
> > >  
> > >  
> > > [EXTERNAL EMAIL] 
> > >  
> > > Bob, chairs,
> > >  
> > > section 6.2 with its, "use two SAs, one for ECT(1) and one for
> the rest" seems a bit limited since it ignores that VPNs might
> propagate both DSCPs and ECN bits between the layers, so IMHO a
> better approach might be to recommend to treat DSCP+ECN bits as one
> aggregate byte (let's cal it TOS ;) ) as the extra ECT(1)-SA seems to
> be required for all SAs that already exist to deal with multiple
> supported DSCPs. So in a sense the recommendation would be to double
> the number of SAs.
> > 
> > [BB] Yes, we ought to reword it to say that the VPN ingress should
> > use two SAs indexed on the LSB of the ECN field, and, if it was
> > also classifying on DSCPs, it could also consider classifying any
> > low latency DSCP(s) with the L4S packets. To avoid the anti-replay
> > problem, there would only need to be one SA configured per each
> > degree of queuing delay, not one for every ECN x DSCP combination.
> > 
> > 
> > >  
> > >  
> > > Also:
> > > "and the current draft of DTLS 1.3 says "The receiver       
> > >      SHOULD pick a window large enough to handle any plausible
> reordering,      
> > >      which depends on the data rate."  However, in practice, the
> size of  
> > >      the VPN's anti-replay window is not always scaled
> appropriately."
> > >  
> > > L4S on a 10 ms path under load can introduce re-ordering in the
> range of 50 ms (roughly twice the difference between the L- and C-
> queue delay targets), re-ordering tolerance 5 times of the path RTT
> seems to be a bit on the high side to expect, no?
> > 
> > [BB] The above text that I quoted from the DTLS spec. is
> > reasonable, both practically (see below) and in terms of taking
> > responsibility for the problem. Beyond its window, the anti-replay
> > function presumes a packet is guilty of a replay attack with no
> > evidence, purely because it chooses not to hold that amount of
> > evidence. Therefore it's proper that it holds a sufficient window
> > of evidence for any plausible reordering.
> > 
> > BTW, the C-queue target has never been 25ms. I noticed JM said that
> > incorrectly as well recently.
> > * A default C queue delay target of 15ms has always been
> > recommended in aqm-dualq-coupled. That results in PI2 Qdelay of
> > about 25ms at the 99%ile or 30ms at the 99.9%ile. We have been
> > considering whether to change the default target to 10ms for some
> > time, but not done so yet.
> > * Low Latency DOCSIS specifies a default C queue delay target of
> > 10ms. 
> > 
> > So a replay window allowing for 30ms of packets at the interface
> > rate would be sufficient.
> > At 1Gb/s (say) using 1500B packets, that's a replay window of 2500
> > packets.
> > 
> > Quoting Pete Heist's info here https://github.com/heistp/l4s-
> > tests/#dropped-packets-for-tunnels-with-replay-protection-enabled
> > [github.com] :
> > > "Modern Linux kernels have a default maximum replay window size
> > > of 4096 (XFRMA_REPLAY_ESN_MAX inxfrm.h [elixir.bootlin.com]).
> > > Wireguard uses a hardcoded value of 8192 with no option for
> > > runtime configuration, increased from 2048 in May 2020 bythis
> > > commit [git.zx2c4.com]."
> > Regards
> > 
> > 
> > 
> > Bob
> > 
> > 
> > >  
> > >  
> > >  
> > >  
> > >  
> > > Regards
> > >   Sebastian
> > >  
> > >  
> > > > On May 21, 2021, at 11:21, Bob Briscoe <ietf@bobbriscoe.net>
> wrote:
> > > >  
> > > > Chairs, list,
> > > >  
> > > > We've posted a new rev of draft-ietf-tsvwg-ecn-l4s-id-17
> attempting to address all the discussion since the last posting just
> before the interim. In particular:
> > > > * review comments on a careful read from Gorry and the chairs
> > > > * the VPN anti-replay problem
> > > > * added an out-of-band test for an RFC3168 ECN AQM in a shared
> queue.
> > > >  
> > > > There are a couple of outstanding discussions, which I'm sure
> will continue on the list, e.g. the role of RFC4774 and whether to
> remove any of Appx C. But it was considered better to get the queued
> up changes out, to re-base the discussions.
> > > >  
> > > > This is quite an extensive set of changes, so pls check and
> pass any comments to the list.
> > > >  
> > > > Thanks for everyone who is contributing, and particularly to
> the chairs for continuing to referee this all. We've added
> appropriate thanks in the Acks section.
> > > >  
> > > >  
> > > > Bob
> > > >  
> > > >  
> > > > On 21/05/2021 10:09, internet-drafts@ietf.org wrote:
> > > > > A New Internet-Draft is available from the on-line Internet-
> Drafts directories.
> > > > > This draft is a work item of the Transport Area Working Group
> WG of the IETF.
> > > > >  
> > > > >         Title           : Explicit Congestion Notification
> (ECN) Protocol for Very Low Queuing Delay (L4S)
> > > > >         Authors         : Koen De Schepper
> > > > >                           Bob Briscoe
> > > > > Filename        : draft-ietf-tsvwg-ecn-l4s-id-17.txt
> > > > > Pages           : 57
> > > > > Date            : 2021-05-21
> > > > >  
> > > > > Abstract:
> > > > >    This specification defines the protocol to be used for a
> new network
> > > > >    service called low latency, low loss and scalable
> throughput (L4S).
> > > > >    L4S uses an Explicit Congestion Notification (ECN) scheme
> at the IP
> > > > >    layer that is similar to the original (or 'Classic') ECN
> approach,
> > > > >    except as specified within.  L4S uses 'scalable'
> congestion control,
> > > > >    which induces much more frequent control signals from the
> network and
> > > > >    it responds to them with much more fine-grained
> adjustments, so that
> > > > >    very low (typically sub-millisecond on average) and
> consistently low
> > > > >    queuing delay becomes possible for L4S traffic without
> compromising
> > > > >    link utilization.  Thus even capacity-seeking (TCP-like)
> traffic can
> > > > >    have high bandwidth and very low delay at the same time,
> even during
> > > > >    periods of high traffic load.
> > > > >  
> > > > >    The L4S identifier defined in this document distinguishes
> L4S from
> > > > >    'Classic' (e.g. TCP-Reno-friendly) traffic.  It gives an
> incremental
> > > > >    migration path so that suitably modified network
> bottlenecks can
> > > > >    distinguish and isolate existing traffic that still
> follows the
> > > > >    Classic behaviour, to prevent it degrading the low queuing
> delay and
> > > > >    low loss of L4S traffic.  This specification defines the
> rules that
> > > > >    L4S transports and network elements need to follow with
> the intention
> > > > >    that L4S flows neither harm each other's performance nor
> that of
> > > > >    Classic traffic.  Examples of new active queue management
> (AQM)
> > > > >    marking algorithms and examples of new transports (whether
> TCP-like
> > > > >    or real-time) are specified separately.
> > > > >  
> > > > >  
> > > > > The IETF datatracker status page for this draft is:
> > > > >
> https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-ietf-tsvwg-ecn-l4s-id/__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9qj70HfR$
> [datatracker[.]ietf[.]org]
> > > > >  
> > > > > There is also an htmlized version available at:
> > > > >
> https://urldefense.com/v3/__https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-ecn-l4s-id-17__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9vC50L2Y$
> [datatracker[.]ietf[.]org]
> > > > >  
> > > > > A diff from the previous version is available at:
> > > > >
> https://urldefense.com/v3/__https://www.ietf.org/rfcdiff?url2=draft-ietf-tsvwg-ecn-l4s-id-17__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9oZoDRib$
> [ietf[.]org]
> > > > >  
> > > > >  
> > > > > Internet-Drafts are also available by anonymous FTP at:
> > > > >
> https://urldefense.com/v3/__ftp://ftp.ietf.org/internet-drafts/__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9rKXcwvA$
> [ftp[.]ietf[.]org]
> > > > >  
> > > > >  
> > > >  
> > > > -- 
> > > >
> ________________________________________________________________
> > > > Bob Briscoe                              
> https://urldefense.com/v3/__http://bobbriscoe.net/__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9gj_uPXC$
> [bobbriscoe[.]net]
> > > >  
> > >  
> > 
> > 
> > -- 
> > ________________________________________________________________
> > Bob Briscoe                               http://bobbriscoe.net/
> [bobbriscoe.net]
>  
> -- 
> ________________________________________________________________
> Bob Briscoe                               http://bobbriscoe.net/
> [bobbriscoe.net]


--=-rNcZk+cFx63hIvtwkf4Z
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<html><head>


<style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
code
	{mso-style-priority:99;
	font-family:"Courier New";}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0cm;
	font-size:10.0pt;
	font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:0cm;
	margin-left:36.0pt;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:Consolas;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:1250969149;
	mso-list-type:hybrid;
	mso-list-template-ids:-2058997572 67698689 67698691 67698693 67698689 6769=
8691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l1
	{mso-list-id:1568295961;
	mso-list-template-ids:1632376246;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:36.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1:level2
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:72.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1:level3
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:108.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1:level4
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:144.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1:level5
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:180.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1:level6
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:216.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1:level7
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:252.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1:level8
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:288.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l1:level9
	{mso-level-number-format:bullet;
	mso-level-text:=EF=82=B7;
	mso-level-tab-stop:324.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
ol
	{margin-bottom:0cm;}
ul
	{margin-bottom:0cm;}
--></style>
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple" style=3D"word-wrap:brea=
k-word"><div>Hi Koen,</div><div><br></div><div>On Thu, 2021-05-27 at 08:46 =
+0000, De Schepper, Koen (Nokia - BE/Antwerp) wrote:</div><blockquote type=
=3D"cite" style=3D"margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding=
-left:1ex"><div class=3D"WordSection1"><p class=3D"MsoNormal">I agree that =
larger (adaptive) replay window is the main solution, and removes all other=
 needs. The adaptive window could easily grow based on the gap that an earl=
y packet is creating, allowing the next packets to fill the gap (optionally=
 shrinking the window afterwards back to gradually smaller values).<o:p></o=
:p></p><p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><p class=3D"MsoNormal">A=
s an alternative, another smarter reordering-safe mechanism would help as w=
ell. I think a symmetric window that also drops (or =E2=80=9Ckeeps aside wi=
thout moving the window=E2=80=9D) sporadic early packets, will perform bett=
er=E2=80=A6 It would drop (or delay) only the expedited CE(s).</p></div></b=
lockquote><div><br></div><div>I'm just double checking, we're on the same p=
age that the reordering that affects tunnel anti-replay mechanisms doesn't =
require CE marks, right? It isn't just expedited CEs that can advance the w=
indow past the tunnel's valid traffic, but any traffic marked ECT(1), legit=
imately or not. David wrote a crystal clear explanation earlier, in which C=
E marks are only mentioned in order to clear up that prior misconception:</=
div><div><br></div><div><a href=3D"https://mailarchive.ietf.org/arch/msg/ts=
vwg/PEVCuDJfbrel74ud8kNJtmVwhHA/">https://mailarchive.ietf.org/arch/msg/tsv=
wg/PEVCuDJfbrel74ud8kNJtmVwhHA/</a></div><div><br></div><div>Regards,</div>=
<div>Pete</div><div><br></div><blockquote type=3D"cite" style=3D"margin:0 0=
 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div class=3D"Word=
Section1"><p class=3D"MsoNormal">This all avoids the need for different SA=
=E2=80=99s and/or DCSPs=E2=80=A6<o:p></o:p></p><p class=3D"MsoNormal"><o:p>=
&nbsp;</o:p></p><p class=3D"MsoNormal">Koen.<o:p></o:p></p><p class=3D"MsoN=
ormal"><o:p>&nbsp;</o:p></p><div><div style=3D"border:none;border-top:solid=
 #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm"><p class=3D"MsoNormal"><b>From:</=
b> tsvwg &lt;tsvwg-bounces@ietf.org&gt; <b>On Behalf Of </b>Black, David<br=
><b>Sent:</b> Wednesday, May 26, 2021 9:34 PM<br><b>To:</b> Bob Briscoe &lt=
;ietf@bobbriscoe.net&gt;; Gorry Fairhurst &lt;gorry@erg.abdn.ac.uk&gt;; Wes=
ley Eddy &lt;wes@mti-systems.com&gt;<br><b>Cc:</b> tsvwg@ietf.org<br><b>Sub=
ject:</b> Re: [tsvwg] New rev of draft-ietf-tsvwg-ecn-l4s-id-17<o:p></o:p><=
/p></div></div><p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><div><p class=3D=
"MsoNormal"><span style=3D"color:#993366">Inline =E2=80=A6 --David<o:p></o:=
p></span></p></div><p class=3D"MsoNormal"><span style=3D"color:#993366"><o:=
p>&nbsp;</o:p></span></p><div><div style=3D"border:none;border-top:solid #E=
1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm"><p class=3D"MsoNormal"><b>From:</b> =
Bob Briscoe &lt;<a href=3D"mailto:ietf@bobbriscoe.net">ietf@bobbriscoe.net<=
/a>&gt;<br><b>Sent:</b> Wednesday, May 26, 2021 1:16 PM<br><b>To:</b> Black=
, David; Gorry Fairhurst; Wesley Eddy<br><b>Cc:</b> <a href=3D"mailto:tsvwg=
@ietf.org">tsvwg@ietf.org</a><br><b>Subject:</b> Re: [tsvwg] New rev of dra=
ft-ietf-tsvwg-ecn-l4s-id-17<o:p></o:p></p></div></div><p class=3D"MsoNormal=
"><o:p>&nbsp;</o:p></p><div><p><span style=3D"color:#CE1126">[EXTERNAL EMAI=
L] <o:p></o:p></span></p></div><p class=3D"MsoNormal" style=3D"margin-botto=
m:12.0pt">David,<o:p></o:p></p><div><p class=3D"MsoNormal">On 25/05/2021 21=
:22, Black, David wrote:<o:p></o:p></p></div><blockquote type=3D"cite" styl=
e=3D"margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><p =
class=3D"MsoNormal"><span style=3D"color:#1F497D">Two comments:</span><o:p>=
</o:p></p><p class=3D"MsoNormal"><span style=3D"color:#1F497D">&nbsp;</span=
><o:p></o:p></p><p class=3D"MsoNormal"><span style=3D"color:#1F497D">[1] Th=
is VPN discussion appears to be assuming a remote access VPN, so it does no=
t align well with site-to-site VPNs:</span><o:p></o:p></p><p class=3D"MsoNo=
rmal"><span style=3D"color:#1F497D">&nbsp;</span><o:p></o:p></p><p class=3D=
"MsoNormal">&gt; This particular path divergence occurs iff an ECT0 flow is=
 CE-marked /prior/ to the VPN ingress:<br>&gt; * In general where the VPN i=
ngress is on the end-system (transport mode) that doesn't happen.<br>&gt; *=
 There is however a chance that CE could be introduced before a 'bump in th=
e wire' VPN ingress (tunnel mode).<span style=3D"color:#1F497D">&nbsp;</spa=
n><o:p></o:p></p><p class=3D"MsoNormal"><span style=3D"color:#1F497D">&nbsp=
;</span><o:p></o:p></p><p class=3D"MsoNormal"><span style=3D"color:#1F497D"=
>For site-to-site VPNs, the last line above is a significant understatement=
.&nbsp; A scenario that helps to understand this is ROBO, specifically a si=
zeable remote office or branch office such as a large retail store, where t=
he remote or branch VPN gateway is a potential bottleneck node for outbound=
 traffic courtesy of fan-in from multiple end systems and the LAN having mo=
re bandwidth than the (purchased) VPN bandwidth.</span><o:p></o:p></p></blo=
ckquote><p class=3D"MsoNormal"><br>[BB] Wouldn't that particular bottleneck=
 apply marking at the egress of the VPN gateway after encap?<span style=3D"=
color:#993366"><o:p></o:p></span></p><p class=3D"MsoNormal"><i><span style=
=3D"color:#993366">[David&gt;] That depends on the details of how the VPN i=
s integrated with the network, e.g., if queue is upstream of encap.<o:p></o=
:p></span></i></p><p class=3D"MsoNormal"><span style=3D"color:#993366"><o:p=
>&nbsp;</o:p></span></p><blockquote type=3D"cite" style=3D"margin:0 0 0 .8e=
x; border-left:2px #729fcf solid;padding-left:1ex"><p class=3D"MsoNormal"><=
span style=3D"color:#1F497D">[2] I think the whole approach of parallel SAs=
 is not a good idea =E2=80=93 it would be better to recommend larger replay=
 windows, perhaps much larger, and/or use DSCPs to direct traffic to parall=
el SAs (which would disambiguate CE across L4S and non-L4S traffic).</span>=
<o:p></o:p></p></blockquote><p class=3D"MsoNormal"><br>[BB] You haven't giv=
en any reasons.<span style=3D"color:#993366"><o:p></o:p></span></p><p class=
=3D"MsoNormal"><b><i><span style=3D"color:#993366"><o:p>&nbsp;</o:p></span>=
</i></b></p><p class=3D"MsoNormal"><i><span style=3D"color:#993366">[David&=
gt;] Sure:<o:p></o:p></span></i></p><ul style=3D"margin-top:0cm" type=3D"di=
sc"><li class=3D"MsoListParagraph" style=3D"color:#993366;margin-left:0cm;m=
so-list:l0 level1 lfo3"><i>See RFC 7657 for general discussion about why va=
riable QoS treatment within a single reliable transport protocol session is=
 not a good idea =E2=80=93 that discussion is couched in Diffserv terms, bu=
t it's applicable to L4S ECN-based service differentiation.<o:p></o:p></i><=
/li><li class=3D"MsoListParagraph" style=3D"color:#993366;margin-left:0cm;m=
so-list:l0 level1 lfo3"><i>Asking VPNs to classify traffic based on ECN fie=
ld values is also asking for the possibility of discard of traffic marked w=
ith some of those values, which is not a good place to go given the desire =
for the ECN field to remain end-to-end.<o:p></o:p></i></li><li class=3D"Mso=
ListParagraph" style=3D"color:#993366;margin-left:0cm;mso-list:l0 level1 lf=
o3"><i>Using DSCPs is a "reduce to previous case" approach that doesn't inv=
olve modification of any security specs and aligns with existing VPN implem=
entations that are cognizant of DSCPs.<o:p></o:p></i></li><li class=3D"MsoL=
istParagraph" style=3D"color:#993366;margin-left:0cm;mso-list:l0 level1 lfo=
3"><i>Larger replay windows are a lower-effort approach that ought to apply=
 to deployed VPNs whose replay window is configurable.&nbsp; In practice, t=
his is the place to start if L4S causes VPN problems.<o:p></o:p></i></li></=
ul><p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><br><br>Bob<br><br=
><o:p></o:p></p><blockquote type=3D"cite" style=3D"margin:0 0 0 .8ex; borde=
r-left:2px #729fcf solid;padding-left:1ex"><p class=3D"MsoNormal"><span sty=
le=3D"color:#1F497D">&nbsp;</span><o:p></o:p></p><div><p class=3D"MsoNormal=
"><span style=3D"color:#1F497D">Thanks, --David</span><o:p></o:p></p></div>=
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">&nbsp;</span><o:p></o:=
p></p><div><div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding=
:3.0pt 0cm 0cm 0cm"><p class=3D"MsoNormal"><b>From:</b> Bob Briscoe <a href=
=3D"mailto:ietf@bobbriscoe.net">&lt;ietf@bobbriscoe.net&gt;</a> <br><b>Sent=
:</b> Sunday, May 23, 2021 6:00 PM<br><b>To:</b> Black, David; Gorry Fairhu=
rst; Wesley Eddy<br><b>Cc:</b> <a href=3D"mailto:tsvwg@ietf.org">tsvwg@ietf=
.org</a><br><b>Subject:</b> Re: [tsvwg] New rev of draft-ietf-tsvwg-ecn-l4s=
-id-17<o:p></o:p></p></div></div><p class=3D"MsoNormal">&nbsp;<o:p></o:p></=
p><div><p><span style=3D"color:#CE1126">[EXTERNAL EMAIL] </span><o:p></o:p>=
</p></div><p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">David, <br>=
See inline, tagged [BB]...<o:p></o:p></p><div><p class=3D"MsoNormal">On 21/=
05/2021 23:02, Black, David wrote:<o:p></o:p></p></div><blockquote type=3D"=
cite" style=3D"margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-lef=
t:1ex"><blockquote type=3D"cite" style=3D"margin:0 0 0 .8ex; border-left:2p=
x #729fcf solid;padding-left:1ex"><pre>section 6.2 with its, "use two SAs, =
one for ECT(1) and one for the rest" seems a bit limited<o:p></o:p></pre></=
blockquote><pre>&nbsp;<o:p></o:p></pre><pre>The situation is more severe th=
an that, and it's problematic if there's any non-L4S TCP traffic that uses =
ECN involved.&nbsp; The two SAs are actually for 2 ECN values each:<o:p></o=
:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;&nbsp; To avoid this limita=
tion, a VPN ingress participating in the L4S<o:p></o:p></pre><pre>&nbsp;&nb=
sp; experiment SHOULD map packets onto two parallel SAs indexed by the<o:p>=
</o:p></pre><pre>&nbsp;&nbsp; lowest significant bit of the IP-ECN field.<o=
:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>That indexing puts Not-ECT =
[00b] and ECT(0) [10b] packets into one SA, and puts ECT(1) [01b] and CE [1=
1b] packets into another.&nbsp; Non-L4S TCP uses ECT(0) and CE, hence a flo=
w that carries any congestion indications is split across those two SAs.&nb=
sp; ECMP based on SPI (deployed technology) that puts those parallel SAs on=
 different network paths is not assured to preserve packet order across tho=
se SAs, and packet reordering is not a good thing to do to a non-L4S TCP fl=
ow.<o:p></o:p></pre></blockquote><p class=3D"MsoNormal" style=3D"margin-bot=
tom:12.0pt"><br>[BB] Yes, this would be a potential problem.<br><br>This pa=
rticular path divergence occurs iff an ECT0 flow is CE-marked /prior/ to th=
e VPN ingress:<br>* In general where the VPN ingress is on the end-system (=
transport mode) that doesn't happen.<br>* There is however a chance that CE=
 could be introduced before a 'bump in the wire' VPN ingress (tunnel mode).=
<br><br>For a VPN participating in the L4S experiment with two SAs, if ther=
e was any CE before the ingress, we did think carefully about which way to =
classify it:<br>* If CE goes with ECT0, then if a subsequent L4S node gives=
 ECT0 more queue delay than CE, the VPN anti-replay function could discard =
some ECT0 packets.<br>* If CE goes with ECT1, it avoids anti-replay discard=
 completely. We had tried to think of possible problems with splitting Clas=
sic flows across SAs,&nbsp; but we hadn't thought of your point where ECMP =
on the SPI makes CE and ECT0 from the same flow taking different paths.<br>=
<br>I believe it is still best to classify CE with ECT1, based on the follo=
wing reasoning. I think the scenario would occur with very low probability =
{Note 1}, and if it did, the CE might either arrive a little earlier or a l=
ittle later than data packets around them. <br>* If earlier, the benefit of=
 ECN would not be lost, but there would be an extremely small chance (p_s *=
 p_r * p_N) of an occasional spurious re-xmt {Note 2}.<br>* If later, the c=
hance that a delayed CE would be mistaken for a drop and trigger a spurious=
 re-xmt and a congestion response would probably be higher, but still very =
small (p_s * p_r * p_l) {Note 3}. That would lose the benefit of ECN but, a=
t least for Classic flows, a single CE is meant to trigger a large congesti=
on response as if it was a loss anyway.<br><br>I don't want to belittle the=
 point you've made, because this is certainly a new problem. However, I do =
think the probabilities need to be put in perspective.<br><br>I suspect the=
 ECMP problem with any ECN (3168 or L4S) is likely to be a greater concern.=
 You might recall that Jo=C3=A3o Taveira from Fastly pointed this out durin=
g a tsvwg discussion on ECN back in 2017. This link should jump to 14:25 mi=
ns into a 2017 NANOG talk from Lorenzo Saino of Fastly about how they had t=
o disable ECN negotiation when Apple clients started to request ECN in 2015=
 - because a number of different ECMP vendors still hash on the ToS byte fo=
r ECMP and load balancing, so the data would have been routed to a differen=
t server from the handshake: <br>&nbsp;&nbsp;&nbsp; <a href=3D"https://urld=
efense.com/v3/__https:/youtu.be/ciClZdwHelU?t=3D805__;!!LpKI!y0AavGemYqNsy2=
Urub76LQ2eIuIinYWTadbh2ddv0r80YQabjQCK8HywtmUFhVbc$">https://youtu.be/ciClZ=
dwHelU?t=3D805 [youtu.be]</a><br><br>Regards<br><br><br><br>Bob<br><br>{Not=
e 1}: Reasoning for scenario occurring with low probability (we'll call it =
p_s):<br>Usually, an institution provides a tunnel-mode VPN between physica=
lly secured networks (e.g. between their intranet and an employee's home la=
ptop). AQM deployment would be unusual in the interior of corporate and ins=
titutional intranets, because the bottleneck is more likely elsewhere (e.g.=
 in the access link between the site and the Internet). However, there are =
bound to be some cases of tunnel-mode VPNs where the traffic arriving could=
 have already been ECN-marked (for instance Jonathan Morton's example of ga=
mers providing a VPN end-point on the public Internet to hide their own IP =
address). <br>Then, to experience this problem, there also has to be some l=
oad balancing or ECMP after the VPN ingress but before the egress. I'm sure=
 that will occur sometime somewhere (let's say with probability p_r). The l=
ikelihood of the scenario occurring will then be p_s * p_r.<br><br>{Note 2}=
:<br>* N packets in a row within a Classic flow have to be CE-marked for ea=
rly CE packets to result in a spurious re-xmt, let's say that happens with =
probability p_N. As already explained in Appx B of ecn-l4s-id, N was tradit=
ionally 3, but RACK is making it larger. And the main sources of ECN markin=
g for Classic flows are FQ_CoDel and CAKE, both of which take great care no=
t to mark multiple packets in a row. So p_N is going to be tiny.<br>And the=
 probability of a spurious re-xmt with early reordering will be the vanishi=
ngly small product (p_s * p_r * p_N).<br><br>{Note 3}:<br>* Let's say p_l (=
for late) is the probability that the reordering between the two SAs is suf=
ficient to make each CE packet arrive late enough&nbsp; to be deemed a loss=
. p_l is unlikely to be as small as p_N, but the overall probability of thi=
s occurring is still reduced because the probability that CE marking preced=
es that VPN (p_s), and that there's routing keyed on flow IDs and SPIs (p_r=
). So the overall probability of a spurious rexmt due to late reordering is=
 (p_s * p_r * p_l).<br><br><br><br>Bob<br><br><br><o:p></o:p></p><blockquot=
e type=3D"cite" style=3D"margin:0 0 0 .8ex; border-left:2px #729fcf solid;p=
adding-left:1ex"><pre>&nbsp;<o:p></o:p></pre><pre>Thanks, --David<o:p></o:p=
></pre><pre>&nbsp;<o:p></o:p></pre><pre>-----Original Message-----<o:p></o:=
p></pre><pre>From: Sebastian Moeller <a href=3D"mailto:moeller0@gmx.de">&lt=
;moeller0@gmx.de&gt;</a> <o:p></o:p></pre><pre>Sent: Friday, May 21, 2021 5=
:27 PM<o:p></o:p></pre><pre>To: Bob Briscoe<o:p></o:p></pre><pre>Cc: Gorry =
Fairhurst; Black, David; Wesley Eddy; <a href=3D"mailto:tsvwg@ietf.org">tsv=
wg@ietf.org</a><o:p></o:p></pre><pre>Subject: Re: [tsvwg] New rev of draft-=
ietf-tsvwg-ecn-l4s-id-17<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>&=
nbsp;<o:p></o:p></pre><pre>[EXTERNAL EMAIL] <o:p></o:p></pre><pre>&nbsp;<o:=
p></o:p></pre><pre>Bob, chairs,<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre=
><pre>section 6.2 with its, "use two SAs, one for ECT(1) and one for the re=
st" seems a bit limited since it ignores that VPNs might propagate both DSC=
Ps and ECN bits between the layers, so IMHO a better approach might be to r=
ecommend to treat DSCP+ECN bits as one aggregate byte (let's cal it TOS ;) =
) as the extra ECT(1)-SA seems to be required for all SAs that already exis=
t to deal with multiple supported DSCPs. So in a sense the recommendation w=
ould be to double the number of SAs.<o:p></o:p></pre></blockquote><p class=
=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><br>[BB] Yes, we ought to rew=
ord it to say that the VPN ingress should use two SAs indexed on the LSB of=
 the ECN field, and, if it was also classifying on DSCPs, it could also con=
sider classifying any low latency DSCP(s) with the L4S packets. To avoid th=
e anti-replay problem, there would only need to be one SA configured per ea=
ch degree of queuing delay, not one for every ECN x DSCP combination.<br><b=
r><br><o:p></o:p></p><blockquote type=3D"cite" style=3D"margin:0 0 0 .8ex; =
border-left:2px #729fcf solid;padding-left:1ex"><pre>&nbsp;<o:p></o:p></pre=
><pre>&nbsp;<o:p></o:p></pre><pre>Also:<o:p></o:p></pre><pre>"and the curre=
nt draft of DTLS 1.3 says "The receiver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 <o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SHOULD pick a window l=
arge enough to handle any plausible reordering,&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p; <o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;which depends on the=
 data rate."&nbsp; However, in practice, the size of&nbsp; <o:p></o:p></pre=
><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the VPN's anti-replay window is not alw=
ays scaled appropriately."<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre=
>L4S on a 10 ms path under load can introduce re-ordering in the range of 5=
0 ms (roughly twice the difference between the L- and C-queue delay targets=
), re-ordering tolerance 5 times of the path RTT seems to be a bit on the h=
igh side to expect, no?<o:p></o:p></pre></blockquote><p class=3D"MsoNormal"=
><br>[BB] The above text that I quoted from the DTLS spec. is reasonable, b=
oth practically (see below) and in terms of taking responsibility for the p=
roblem. Beyond its window, the anti-replay function presumes a packet is gu=
ilty of a replay attack with no evidence, purely because it chooses not to =
hold that amount of evidence. Therefore it's proper that it holds a suffici=
ent window of evidence for any plausible reordering.<br><br>BTW, the C-queu=
e target has never been 25ms. I noticed JM said that incorrectly as well re=
cently.<br>* A default C queue delay target of 15ms has always been recomme=
nded in aqm-dualq-coupled. That results in PI2 Qdelay of about 25ms at the =
99%ile or 30ms at the 99.9%ile. We have been considering whether to change =
the default target to 10ms for some time, but not done so yet.<br>* Low Lat=
ency DOCSIS specifies a default C queue delay target of 10ms. <br><br>So a =
replay window allowing for 30ms of packets at the interface rate would be s=
ufficient.<br>At 1Gb/s (say) using 1500B packets, that's a replay window of=
 2500 packets.<br><br>Quoting Pete Heist's info here <a href=3D"https://url=
defense.com/v3/__https:/github.com/heistp/l4s-tests/*dropped-packets-for-tu=
nnels-with-replay-protection-enabled__;Iw!!LpKI!y0AavGemYqNsy2Urub76LQ2eIuI=
inYWTadbh2ddv0r80YQabjQCK8Hywtt-9Grg1$">https://github.com/heistp/l4s-tests=
/#dropped-packets-for-tunnels-with-replay-protection-enabled [github.com]</=
a> :<o:p></o:p></p><blockquote type=3D"cite" style=3D"margin:0 0 0 .8ex; bo=
rder-left:2px #729fcf solid;padding-left:1ex"><p class=3D"MsoNormal">"Moder=
n Linux kernels have a default maximum replay window size of 4096 (<code><s=
pan style=3D"font-size:10.0pt">XFRMA_REPLAY_ESN_MAX</span></code> in<a href=
=3D"https://urldefense.com/v3/__https:/elixir.bootlin.com/linux/latest/sour=
ce/include/uapi/linux/xfrm.h__;!!LpKI!y0AavGemYqNsy2Urub76LQ2eIuIinYWTadbh2=
ddv0r80YQabjQCK8Hywtu2jvbJy$">xfrm.h [elixir.bootlin.com]</a>). Wireguard u=
ses a hardcoded value of 8192 with no option for runtime configuration, inc=
reased from 2048 in May 2020 by<a href=3D"https://urldefense.com/v3/__https=
:/git.zx2c4.com/wireguard-linux/commit/drivers/net/wireguard?id=3Dc78a0b4a7=
8839d572d8a80f6a62221c0d7843135__;!!LpKI!y0AavGemYqNsy2Urub76LQ2eIuIinYWTad=
bh2ddv0r80YQabjQCK8HywtrpY39m8$">this commit [git.zx2c4.com]</a>."<o:p></o:=
p></p></blockquote><p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt">Re=
gards<br><br><br><br>Bob<br><br><br><o:p></o:p></p><blockquote type=3D"cite=
" style=3D"margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1e=
x"><pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;<o:p>=
</o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>Re=
gards<o:p></o:p></pre><pre>&nbsp; Sebastian<o:p></o:p></pre><pre>&nbsp;<o:p=
></o:p></pre><pre>&nbsp;<o:p></o:p></pre><blockquote type=3D"cite" style=3D=
"margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><pre>On=
 May 21, 2021, at 11:21, Bob Briscoe <a href=3D"mailto:ietf@bobbriscoe.net"=
>&lt;ietf@bobbriscoe.net&gt;</a> wrote:<o:p></o:p></pre><pre>&nbsp;<o:p></o=
:p></pre><pre>Chairs, list,<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pr=
e>We've posted a new rev of draft-ietf-tsvwg-ecn-l4s-id-17 attempting to ad=
dress all the discussion since the last posting just before the interim. In=
 particular:<o:p></o:p></pre><pre>* review comments on a careful read from =
Gorry and the chairs<o:p></o:p></pre><pre>* the VPN anti-replay problem<o:p=
></o:p></pre><pre>* added an out-of-band test for an RFC3168 ECN AQM in a s=
hared queue.<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>There are a c=
ouple of outstanding discussions, which I'm sure will continue on the list,=
 e.g. the role of RFC4774 and whether to remove any of Appx C. But it was c=
onsidered better to get the queued up changes out, to re-base the discussio=
ns.<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>This is quite an exten=
sive set of changes, so pls check and pass any comments to the list.<o:p></=
o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>Thanks for everyone who is contr=
ibuting, and particularly to the chairs for continuing to referee this all.=
 We've added appropriate thanks in the Acks section.<o:p></o:p></pre><pre>&=
nbsp;<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>Bob<o:p></o:p></pre>=
<pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>On 21/05/2021 =
10:09, <a href=3D"mailto:internet-drafts@ietf.org">internet-drafts@ietf.org=
</a> wrote:<o:p></o:p></pre><blockquote type=3D"cite" style=3D"margin:0 0 0=
 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><pre>A New Internet-=
Draft is available from the on-line Internet-Drafts directories.<o:p></o:p>=
</pre><pre>This draft is a work item of the Transport Area Working Group WG=
 of the IETF.<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp; : Explicit Congestion Notification (ECN) Protocol for=
 Very Low Queuing Delay (L4S)<o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; Authors&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
: Koen De Schepper<o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bob Briscoe<o:p></o:p></pre><pre> =
Filename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : draft-ietf-tsvwg-ecn-l=
4s-id-17.txt<o:p></o:p></pre><pre> Pages&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; : 57<o:p></o:p></pre><pre> Date&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;: 2021-05-21<o:p></o:p></p=
re><pre>&nbsp;<o:p></o:p></pre><pre>Abstract:<o:p></o:p></pre><pre>&nbsp;&n=
bsp; This specification defines the protocol to be used for a new network<o=
:p></o:p></pre><pre>&nbsp;&nbsp; service called low latency, low loss and s=
calable throughput (L4S).<o:p></o:p></pre><pre>&nbsp;&nbsp; L4S uses an Exp=
licit Congestion Notification (ECN) scheme at the IP<o:p></o:p></pre><pre>&=
nbsp;&nbsp; layer that is similar to the original (or 'Classic') ECN approa=
ch,<o:p></o:p></pre><pre>&nbsp;&nbsp; except as specified within.&nbsp; L4S=
 uses 'scalable' congestion control,<o:p></o:p></pre><pre>&nbsp;&nbsp; whic=
h induces much more frequent control signals from the network and<o:p></o:p=
></pre><pre>&nbsp;&nbsp; it responds to them with much more fine-grained ad=
justments, so that<o:p></o:p></pre><pre>&nbsp;&nbsp; very low (typically su=
b-millisecond on average) and consistently low<o:p></o:p></pre><pre>&nbsp;&=
nbsp; queuing delay becomes possible for L4S traffic without compromising<o=
:p></o:p></pre><pre>&nbsp;&nbsp; link utilization.&nbsp; Thus even capacity=
-seeking (TCP-like) traffic can<o:p></o:p></pre><pre>&nbsp;&nbsp; have high=
 bandwidth and very low delay at the same time, even during<o:p></o:p></pre=
><pre>&nbsp;&nbsp; periods of high traffic load.<o:p></o:p></pre><pre>&nbsp=
;<o:p></o:p></pre><pre>&nbsp;&nbsp; The L4S identifier defined in this docu=
ment distinguishes L4S from<o:p></o:p></pre><pre>&nbsp;&nbsp; 'Classic' (e.=
g. TCP-Reno-friendly) traffic.&nbsp; It gives an incremental<o:p></o:p></pr=
e><pre>&nbsp;&nbsp; migration path so that suitably modified network bottle=
necks can<o:p></o:p></pre><pre>&nbsp;&nbsp; distinguish and isolate existin=
g traffic that still follows the<o:p></o:p></pre><pre>&nbsp;&nbsp; Classic =
behaviour, to prevent it degrading the low queuing delay and<o:p></o:p></pr=
e><pre>&nbsp;&nbsp; low loss of L4S traffic.&nbsp; This specification defin=
es the rules that<o:p></o:p></pre><pre>&nbsp;&nbsp; L4S transports and netw=
ork elements need to follow with the intention<o:p></o:p></pre><pre>&nbsp;&=
nbsp; that L4S flows neither harm each other's performance nor that of<o:p>=
</o:p></pre><pre>&nbsp;&nbsp; Classic traffic.&nbsp; Examples of new active=
 queue management (AQM)<o:p></o:p></pre><pre>&nbsp;&nbsp; marking algorithm=
s and examples of new transports (whether TCP-like<o:p></o:p></pre><pre>&nb=
sp;&nbsp; or real-time) are specified separately.<o:p></o:p></pre><pre>&nbs=
p;<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>The IETF datatracker st=
atus page for this draft is:<o:p></o:p></pre><pre><a href=3D"https://urldef=
ense.com/v3/__https:/datatracker.ietf.org/doc/draft-ietf-tsvwg-ecn-l4s-id/_=
_;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9qj70HfR$"=
>https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-ietf-ts=
vwg-ecn-l4s-id/__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU=
68p06V9qj70HfR$</a> [datatracker[.]ietf[.]org]<o:p></o:p></pre><pre>&nbsp;<=
o:p></o:p></pre><pre>There is also an htmlized version available at:<o:p></=
o:p></pre><pre><a href=3D"https://urldefense.com/v3/__https:/datatracker.ie=
tf.org/doc/html/draft-ietf-tsvwg-ecn-l4s-id-17__;!!LpKI!xeGDaVTRL33QRdX3Tos=
2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9vC50L2Y$">https://urldefense.com/v3/_=
_https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-ecn-l4s-id-17__;!!L=
pKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9vC50L2Y$</a> [=
datatracker[.]ietf[.]org]<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>=
A diff from the previous version is available at:<o:p></o:p></pre><pre><a h=
ref=3D"https://urldefense.com/v3/__https:/www.ietf.org/rfcdiff?url2=3Ddraft=
-ietf-tsvwg-ecn-l4s-id-17__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6=
OO_m4gWSHU68p06V9oZoDRib$">https://urldefense.com/v3/__https://www.ietf.org=
/rfcdiff?url2=3Ddraft-ietf-tsvwg-ecn-l4s-id-17__;!!LpKI!xeGDaVTRL33QRdX3Tos=
2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9oZoDRib$</a> [ietf[.]org]<o:p></o:p><=
/pre><pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>Internet-=
Drafts are also available by anonymous FTP at:<o:p></o:p></pre><pre><a href=
=3D"https://urldefense.com/v3/__ftp:/ftp.ietf.org/internet-drafts/__;!!LpKI=
!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9rKXcwvA$">https:/=
/urldefense.com/v3/__ftp://ftp.ietf.org/internet-drafts/__;!!LpKI!xeGDaVTRL=
33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68p06V9rKXcwvA$</a> [ftp[.]ietf[.]=
org]<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pr=
e></blockquote><pre>&nbsp;<o:p></o:p></pre><pre>-- <o:p></o:p></pre><pre>__=
______________________________________________________________<o:p></o:p></=
pre><pre>Bob Briscoe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=3D"https://urlde=
fense.com/v3/__http:/bobbriscoe.net/__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYt=
ZXHcEP8W5a6OO_m4gWSHU68p06V9gj_uPXC$">https://urldefense.com/v3/__http://bo=
bbriscoe.net/__;!!LpKI!xeGDaVTRL33QRdX3Tos2AURXirtYtZXHcEP8W5a6OO_m4gWSHU68=
p06V9gj_uPXC$</a> [bobbriscoe[.]net]<o:p></o:p></pre><pre>&nbsp;<o:p></o:p>=
</pre></blockquote><pre>&nbsp;<o:p></o:p></pre></blockquote><p class=3D"Mso=
Normal" style=3D"margin-bottom:12.0pt"><br><br><o:p></o:p></p><pre>-- <o:p>=
</o:p></pre><pre>__________________________________________________________=
______<o:p></o:p></pre><pre>Bob Briscoe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a hr=
ef=3D"https://urldefense.com/v3/__http:/bobbriscoe.net/__;!!LpKI!y0AavGemYq=
Nsy2Urub76LQ2eIuIinYWTadbh2ddv0r80YQabjQCK8HywtoRgTac-$">http://bobbriscoe.=
net/ [bobbriscoe.net]</a><o:p></o:p></pre></blockquote><p class=3D"MsoNorma=
l" style=3D"margin-bottom:12.0pt"><o:p>&nbsp;</o:p></p><pre>-- <o:p></o:p><=
/pre><pre>________________________________________________________________<=
o:p></o:p></pre><pre>Bob Briscoe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=3D"h=
ttps://urldefense.com/v3/__http:/bobbriscoe.net/__;!!LpKI!z5o0nAykh9F3vkOXq=
wkB6EByr7rXTsxWZsk8cnefqdJrD1IFy5L0W8qh71SgIKm1$">http://bobbriscoe.net/ [b=
obbriscoe.net]</a><o:p></o:p></pre></div></blockquote><div><br></div><div><=
span></span></div></body></html>

--=-rNcZk+cFx63hIvtwkf4Z--

