Re: [trill] Adam Roach's Discuss on draft-ietf-trill-ecn-support-05: (with DISCUSS and COMMENT)
Donald Eastlake <d3e3e3@gmail.com> Sun, 25 February 2018 22:44 UTC
Return-Path: <d3e3e3@gmail.com>
X-Original-To: trill@ietfa.amsl.com
Delivered-To: trill@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3457E124207; Sun, 25 Feb 2018 14:44:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.449
X-Spam-Level:
X-Spam-Status: No, score=-2.449 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1Yrc5BaVy6Dv; Sun, 25 Feb 2018 14:44:19 -0800 (PST)
Received: from mail-it0-x232.google.com (mail-it0-x232.google.com [IPv6:2607:f8b0:4001:c0b::232]) (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 5BADA124BAC; Sun, 25 Feb 2018 14:44:19 -0800 (PST)
Received: by mail-it0-x232.google.com with SMTP id p204so8646206itc.4; Sun, 25 Feb 2018 14:44:19 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=uvpf+Pdm3zZWZjVEwVtk8bgCvITCOsyd8YO13r/NWSc=; b=oX0EU5vuZfJlBaY+GpW4RyZdabVrVHse+4zLOJRHLOVprl2rqdZMaezqSGRkSFK0g9 AunzGGILXedqL69k2rq5dsRkc10MmuYrQ7pgZxoI8pH0gUQPP1sQW5t+vc7dytrFWIjr r/sqN2BOgmOArFQdLqbOVFciXM8eujBSYXQDPJjtqCxcx+E0/RWP2i77Ica8YKPLkoyV AX+IJDVDdP0+zgW4bWk6pOOdp6AvIDGCDYouqDlf13JvCybJgVpEYuPmgh4Ua4SMOhw/ VDjzIwStacJcziXp0GKW8EEk1mzP0Zkmjrc5CW/vx6Kr4s8JNoQ+rRqSXX+M3VKfBOb/ 9d3A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=uvpf+Pdm3zZWZjVEwVtk8bgCvITCOsyd8YO13r/NWSc=; b=i2zUQhVxiyPAbpqWGTEtx8EnyG585nsrOM8TWtuWChpDkWRKDLcuvF3ephYEn+Hosc 7hm9iUk2cE8KVpYPoo6wHGsldf6xO2sWoEa5KHJI4Xe3lnsi/+n1mJyGS+TuzIX+4S6E z/0B+ZS1Lw18xri0wvHfeNUgSUgJ/ItWeQXqvDzBm33JpjnjNvu1Cp6SQwtMR9ZGKiG3 Km+VyVGtEOa3Mcc1IMbf57CZU6zpqXUDQsBB8Hpv4JASsdnfOZG9aSAJq/hFctcSNth7 YOEAUnZYLZNP1aHjO0Ow6VGHerIsmCZYQZZgT//IZjCqLUpOINExvdFC6i6WkZ7Do7s2 XRhA==
X-Gm-Message-State: APf1xPApbGRomhKFrwpnJg5MZErGf2/R/tHpGDByFg6xG1UKfIBc0OIh S05j+1/agc31oN9ll5w1+Yd0DGZsdkyALWtN/ZY=
X-Google-Smtp-Source: AG47ELtGsNULBbDkLRb5klKDAAmTe5mMP72bOuKdcZ+tuJFmayIpj5y6T5DWaoR03xMbyJkHpOs3K/m5Qi6AYk5Lkbg=
X-Received: by 10.36.25.202 with SMTP id b193mr10412908itb.105.1519598658465; Sun, 25 Feb 2018 14:44:18 -0800 (PST)
MIME-Version: 1.0
Received: by 10.107.57.193 with HTTP; Sun, 25 Feb 2018 14:44:02 -0800 (PST)
In-Reply-To: <69e06846-5a8e-e595-39b8-98d855f937dd@bobbriscoe.net>
References: <151805235597.17192.8686136333532184356.idtracker@ietfa.amsl.com> <CAF4+nEGcZF4dNTgKQXbk2NWBFRkYo_E9m0uraaaKU6Nk+hRrQg@mail.gmail.com> <19c91a23-60af-8e25-8a59-fe90c718ce9a@nostrum.com> <69e06846-5a8e-e595-39b8-98d855f937dd@bobbriscoe.net>
From: Donald Eastlake <d3e3e3@gmail.com>
Date: Sun, 25 Feb 2018 17:44:02 -0500
Message-ID: <CAF4+nEHqe4nB36UsUgw_gaP64=78u5U83B8P32eH5xJNYEq-iQ@mail.gmail.com>
To: Adam Roach <adam@nostrum.com>, Alia Atlas <akatlas@gmail.com>
Cc: draft-ietf-trill-ecn-support@ietf.org, trill-chairs@ietf.org, The IESG <iesg@ietf.org>, trill IETF mailing list <trill@ietf.org>, Bob Briscoe <ietf@bobbriscoe.net>
Content-Type: multipart/alternative; boundary="001a1144b9da3d370e056611229c"
Archived-At: <https://mailarchive.ietf.org/arch/msg/trill/AP2vIKTAZQXqp79e_u9wxHKrXds>
Subject: Re: [trill] Adam Roach's Discuss on draft-ietf-trill-ecn-support-05: (with DISCUSS and COMMENT)
X-BeenThere: trill@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Developing a hybrid router/bridge." <trill.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/trill>, <mailto:trill-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/trill/>
List-Post: <mailto:trill@ietf.org>
List-Help: <mailto:trill-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/trill>, <mailto:trill-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 25 Feb 2018 22:44:24 -0000
Hi Adam, The just posted revision -07 is believed to resolve your comments. Thanks, Donald =============================== Donald E. Eastlake 3rd +1-508-333-2270 (cell) 155 Beaver Street, Milford, MA 01757 USA d3e3e3@gmail.com On Fri, Feb 23, 2018 at 6:57 PM, Bob Briscoe <ietf@bobbriscoe.net> wrote: > @Adam, Thx for your patience. (It turned out I didn't see your DISCUSS cos > I had created a bug in my own e-mail filters - sry for that). > > @Donald (as editor), Adam's right that we risk implementers doing their > own thing if they judge that Table 3 might be wrong, because its apparent > illogicality is not explained without reading the references. So, I've > suggested one further change to text, inline... > > > > On 20/02/18 22:22, Adam Roach wrote: > > Bob -- > > Thanks for taking the time to explain the history and rationale of Table 3 > to me. I'm going to clear my DISCUSS based on this explanation, since it > seems that the technical solution in the document is correct, if a bit > non-obvious. Some additional comments inline. > > [For those of you who did not see Bob's response: it appears that my > original DISCUSS email did not reach him, so he replied to a reduced > audience. I have restored the traditional IESG review distribution to this > email. For this reason, I am eliding less of Bob's response than I usually > would] > > On 2/20/18 12:51 PM, Bob Briscoe wrote: > > > >>> On Thu, Feb 8, 2018 at 2:15 PM, Adam Roach <adam@nostrum.com> wrote: >>> >>>> On 2/8/18 11:53 AM, Donald Eastlake wrote: >>>> >>>> Hi Adam, >>>> >>>> On Wed, Feb 7, 2018 at 8:12 PM, Adam Roach <adam@nostrum.com> wrote: >>>> > Adam Roach has entered the following ballot position for >>>> > draft-ietf-trill-ecn-support-05: Discuss >>>> > >>>> > ... >>>> > >>>> > ------------------------------------------------------------ >>>> ---------- >>>> > DISCUSS: >>>> > ------------------------------------------------------------ >>>> ---------- >>>> > >>>> > Thanks to the authors, chairs, shepherd, and working group for the >>>> effort that >>>> > has been put into this document. >>>> > >>>> > I have concerns about some ambiguity and/or self-contradiction in this >>>> > specification, but I suspect these should be easy to fix. In >>>> particular, the >>>> > behavior defined in Table 3 doesn't seem to be consistent with the >>>> behavior >>>> > described in the prose. >>>> > >>>> > For easy reference, I've copied Table 3 here: >>>> > >>>> >> +---------+----------------------------------------------+ >>>> >> | Inner | Arriving TRILL 3-bit ECN Codepoint Name | >>>> >> | Native +---------+------------+------------+----------+ >>>> >> | Header | Not-ECT | ECT(0) | ECT(1) | CE | >>>> >> +---------+---------+------------+------------+----------+ >>>> >> | Not-ECT | Not-ECT | Not-ECT(*) | Not-ECT(*) | <drop> | >>>> >> | ECT(0) | ECT(0) | ECT(0) | ECT(1) | CE | >>>> >> | ECT(1) | ECT(1) | ECT(1)(*) | ECT(1) | CE | >>>> >> | CE | CE | CE | CE(*) | CE | >>>> >> +---------+---------+------------+------------+----------+ >>>> >> >>>> >> Table 3. Egress ECN Behavior >>>> >> >>>> >> An asterisk in the above table indicates a currently unused >>>> >> combination that SHOULD be logged. In contrast to [RFC6040], in >>>> TRILL >>>> >> the drop condition is the result of a valid combination of events >>>> and >>>> >> need not be logged. >>>> > >>>> > The prose in this document indicates: >>>> > >>>> > 1. Ingress gateway either copies the native header value to the >>>> TRILL ECN >>>> > codepoint (resulting in any of the four values above) or doesn't >>>> insert >>>> > any ECN information in the TRILL header. >>>> > >>>> > 2. Intermediate gateways can set the CCE flag, resulting in "CE" in >>>> the >>>> > table above. >>>> > >>>> > Based on the above, a packet arriving at an egress gateway can only >>>> be in one of >>>> > the following states: >>>> > >>>> > A. TRILL header is Not-ECT because no TRILL node inserted ECN >>>> information. >>>> > >>>> > B. TRILL header value == Native header value because the ingress >>>> gateway >>>> > copied it from native to TRILL. >>>> > >>>> > C. TRILL header is "CE" because an intermediate node indicated >>>> congestion. >>>> >>>> Sort of... But note that the TRILL header ECN bit s can indicate >>>> non-ECT while the CCE bit is set making the overall TRILL Header "CE". >>>> >>>> >>>> Right. That's part of case C. My states above assume application of >>>> Table 2 has already taken place. >>>> >>>> >>>> > If that's correct, I would think that any state other than those >>>> three needs >>>> > to be marked with an (*). In particular, these two states fall into >>>> that >>>> > classification, and seem to require an asterisk: >>>> >>>> [BB] These states are not tagged (*) cos they can arise with variants > of ECN marking behaviour referred to in Section 4 (explained beneath each > bullet below). By design (explained further below), a consistent encap and > decap behaviour is intended to support all variants of ECN, because subnet > ingress and egress nodes will very probably be deployed independently of > each other and of intermediate nodes and/or L4 endpoints. > > Nonetheless, you're right that this is completely non-obvious to a reader > coming to this new. So let's change the text: > CURRENT: > > An asterisk in the above table indicates a currently unused > combination that SHOULD be logged. In contrast to [RFC6040 <https://tools.ietf.org/html/rfc6040>], in TRILL > the drop condition is the result of a valid combination of events and > need not be logged. > > SUGGESTED (2nd attempt): > > An asterisk in the above table indicates a combination that is currently > unused in all variants of ECN marking (see Section 4) and therefore > SHOULD be logged. > > With one exception, the mappings in Table 3 are consistent with those > for IP-in-IP tunnels [RFC6040], which ensures backward compatibility with > all current and past variants of ECN marking (see Section 4). It also > ensures forward compatibility with any future form of ECN marking that > complies with the guidelines in [ECNencapGuide], including cases where > ECT(1) represents a second level of marking severity below CE. > > The one exception is that the drop condition in Table 3 need not be > logged because, with TRILL, it is the result of a valid combination of > events. > > > > Thanks. That definitely helps; but see my comments below. > > > >>>> > - Native==CE && TRILL==ECT(0) >>>> >>>> [BB] You have indeed highlighted an awkward wrinkle here - we could > have tagged this combination with '(*)', cos it is strictly currently > unused by trill. However, I'm going to argue against a '(*)'... > > My explanation starts with some history: Back in 2001 when ECN in IP was > first defined [RFC3168], an IP-in-IP tunnel ingress set the outer to ECT(0) > if ECN in the native header was anything but Not-ECT (0b00). This was > intended to close off a perceived covert channel in IPsec. However, since > then the security area agreed that this added over-paranoid complexity. So, > since [RFC6040] an IP-in-IP tunnel ingress now just copies the native ECN > to the outer, and TRILL ECN follows this new simpler model. > > Altho this spec does not allow a TRILL ingress RBrIdge to exhibit the old > IP-in-IP legacy behaviour, I think it best not to tag this combination as > 'currently unused'. Because, wherever possible, we want trill's ECN encap > and decap to mimic IP-in-IP (a principle explained further down this > email). > > A more specific reason: there is already a congestion monitoring technique > being proposed that fakes the legacy IP-in-IP behaviour to measure > congestion across a tunnel (draft-ietf-tsvwg-tunnel-congestion-feedback). > Before it becomes an RFC, I wouldn't be surprised if that draft gets > extended from IP-in-IP to IP-in-TRILL and other L2 protocols as well. If > that likely event happened, we would have to update this trill-ecn spec to > remove the '(*)' again. In the mean time, there's little harm in not > logging a combination that is not harmful, even tho it is stricty > 'currently unused'. > > (sry about the triple negative!) > > > This is a great explanation. I understand the risks of putting > forward-looking speculation in RFCs, but could I convince you to at least > explain in the document that the reason for this state not being considered > out of the ordinary is to mimic legacy IP-in-IP ECN behavior? Any > acknowledgement of why this case is being treated the way it is would be > sufficient to prevent implementors from deciding that the table is wrong. > > > > >>>> > - Native==ECT(0) && TRILL==ECT(1) >>>> >>>> [BB] The standards track PCN variant of ECN [RFC6660] uses ECT(1) as a > lower severity of congestion notification than CE. Hence the asymmetry > where a native ECT(0) header can have an ECT(1) outer, but not vice versa. > > > As with the case above, it would be good (inasmuch as it would serve to > un-confuse implementors) to include an explanation that this case makes > sense due to RFC 6660's handling of ECT(0) versus ECT(1). Such a comment > would also address my concern quoted below. > > > >>>> I would defer to my co-author Bob Briscoe but it looks to me like you >>>> have a good point. >>>> >>>> >>>> Thanks; I'll wait to hear from Bob. >>>> >>>> > In addition, the behavior this table defines for Native==ECT(0) && >>>> TRILL==ECT(1) >>>> > is somewhat perplexing: for this case, the value in the TRILL header >>>> takes >>>> > precedence; however, when Native==ECT(1) && TRILL==ECT(0) the Native >>>> header >>>> > takes precedence. Or, put another way, this table defines ECT(1) to >>>> always >>>> > override ECT(0). I don't find any prose in here to indicate why this >>>> needs to be >>>> > treated differentially, so I'm left to conclude that this is a >>>> typographical >>>> > error. If that's not the case, please add motivating text to Table 3 >>>> explaining >>>> > why ECT(1) is treated differently than ECT(0) for baseline ECN >>>> behavior. >>>> >>>> As noted in Section 4.1, there is an ECN variation where ECT(0) just >>>> indicates ECT while ECT(1) indicates congestion of a lesser severity level >>>> has been encountered than that indicated by CE. I believe the dominance of >>>> ECT(1) over ECT(0) is designed to not interfere with this variation. >>>> >>>> >>>> Yes, and section 4 opens with the explanation that "Section 3 specifies >>>> interworking between TRILL and the original standardized form of ECN in IP >>>> [RFC3168]." Beyond that, I wouldn't expect any of the text in non-normative >>>> section 4 or its subsections to have bearing on the normative table in >>>> Section 3. >>>> >>> [BB] > * PCN is standards track, hence PCN-specific combinations are not tagged > 'currently unused' in (normative) Section 3. > * L4S is experimental track, but it doesn't use any different combinations > of ECN than standard ECN, so it doesn't alter the CU asterisks in section 3. > > Section 4 is informative, only because it doesn't define the protocol > spec; it merely explains how the normative spec in Section 3 allows for ECN > variants (whether stds track or experimental). > > > Thanks. The answer to this that I find compelling is your explanation > below about RFC 6040's relative ordering of ECN markings, which I think > should be at least mentioned in passing here. > > > > >>>> My reading of RFC 8311 is that it contemplates a series of experiments >>>> beyond those currently under development. It may well be that the current >>>> experiments consider ECT(1) to have a higher severity than ECT(0), but that >>>> this may not make sense for future experiments. Even if it does, I don't >>>> see guidance in RFC 8311 (or any other update to RFC 3168) that suggests >>>> such a relationship between ECT(0) and ECT(1) exists. >>>> >>> As above, the possibility that ECT(1) is a higher severity than ECT(0) > is already on the standards track (PCN [RFC6660]). > > As far as possible, we want trill subnet endpoints to follow the same ECN > behaviour as IP-in-IP tunnel endpoints [RFC6040]. The explicitly stated > philosophy of RFC6040 and [ECNencapGuide] (which is referred to from the > Intro to this trill spec), is for respectively all tunnel endpoints and > subnet endpoints to have the same mechanical, dumb ECN behaviour, whatever > the variant of ECN in use. Because in the incrementally deployed public > Internet, one cannot know what tunnels and subnets might be encountered > across different paths. > > > >>>> On top of this (as implied by the existence of section 4), the TRILL >>>> handling for ECN will need to vary from experiment to experiment. It seems >>>> reasonable that part of this variability would include different mapping of >>>> ECN bits by the egress gateway. >>>> >>> Nope. By design, all variants of ECN use the same encap and decap > behaviours, otherwise they would be undeployable to all intents and > purposes. Perhaps we should make that clearer in this sentence introducing > Section 4: > > CURRENT: > > The ECN wire protocol for TRILL (Section 2 <https://tools.ietf.org/html/draft-ietf-trill-ecn-support-05#section-2>) has been designed to > support the other known variants of ECN, > > SUGGESTED: > > The ECN wire protocol for TRILL (Section 2 <https://tools.ietf.org/html/draft-ietf-trill-ecn-support-05#section-2>) and the ingress (Section 3.1) > and egress (Section 3.3) ECN behaviours have been designed to > support the other known variants of ECN, > > > This sounds good. It might be worth mentioning that this behavior is > intended to also be forward-compatible with future ECN variants, as long as > they conform to RFC 6040's notion of relative codepoint priorities. > > > >>>> Basically, I see two ways this can be resolved, although I'm happy to >>>> hear alternatives so long as they end up with the ECN and TRILL documents >>>> being in a consistent and future-proof state: >>>> >>>> Approach 1: Revise Table 3 so that ECT(0) and ECT(1) are treated the >>>> same (i.e., pick one of "TRILL header wins" or "Native header wins" -- I >>>> would suggest "Native header wins," for maximal compatibility with older >>>> ECN clients but I'm not dogmatic on this point), and then include a >>>> normative statement that allows RFC 8311 experiments to override this >>>> mapping as makes sense for their design. >>>> >>>> Approach 2: Leave the table as is, but add an explanation of why ECT(1) >>>> is given preferential treatment over ECT(0). >>>> >>> [BB] I hope you're happy with the additional text I've suggested for why > Table 3 was like it was. In summary, consistency with IP-in-IP is paramount > wherever possible. > > > That's exactly what the additional text should say. :) I don't see that > in your current proposal. > > > Add a normative dependency from this document to a new document that >>>> updates RFC 8311 to add a requirement that any experiments that treat >>>> ECT(0) differently than ECT(1) MUST be designed such ECT(0) always >>>> indicates a lower severity of congestion than ECT(1). I presume that this >>>> new document would need to be done in coordination with TSVWG. >>>> >>> [BB] That's already catered for in [RFC6040] (stds track) for IP-in-IP, > quoting: > > o In all other cases where the inner supports ECN, the decapsulator > MUST set the outgoing ECN field to the more severe marking of the > outer and inner ECN fields, where the ranking of severity from > highest to lowest is CE, ECT(1), ECT(0), Not-ECT. This in no way > precludes cases where ECT(1) and ECT(0) have the same severity; > > > and in [ECNencapGuide] (intended BCP) for IP-in-any-L2, quoting: > > 4. Congestion indications may be encoded by a severity level. For > instance increasing levels of congestion might be encoded by > numerically increasing indications, e.g. pre-congestion > notification (PCN) can be encoded in each PDU at three severity > levels in IP or MPLS [RFC6660 <https://tools.ietf.org/html/rfc6660>]. > > If the arriving inner header is an ECN-PDU, where the inner and > outer headers carry indications of congestion of different > severity, the more severe indication SHOULD be forwarded in > preference to the less severe. > > > > >>>> I think Approach 1 is more straightforward, but if there's a feeling in >>>> the working group that we need default egress behavior that is >>>> forwards-compatible with yet-undesigned experiments, then I think Approach >>>> 2 is what you need. >>>> >>>> /a >>>> >>> The way ECN encap & decap has been designed already follows your > 'approach 2'; where the same consistent behaviour at all encaps and decaps > can be exploited in both backward and forward compatible ways. > > > Given your explanation above, I agree that such is the case. I think > including enough of that explanation that implementors don't find > themselves double-guessing the specification in Table 3 would ultimately > aid in interoperability. > > > Indeed, here's proof that this forward compatibility is not just > theoretical... > > L4S came along after all this, and required drop probability to be the > square of the marking probability, but only for one of the ECN codepoints. > We managed to contrive the marking behaviour of an intermediate trill > RBridge that supports L4S so that any trill egress will achieve this > precise squaring, even an egress without any ECN or L4S logic, and no > squaring logic either (see Appendix A). > > Cheers, and thx again for noticing all this. > > > > Bob > > > > _______________________________________________ > trill mailing listtrill@ietf.orghttps://www.ietf.org/mailman/listinfo/trill > > > -- > ________________________________________________________________ > Bob Briscoe http://bobbriscoe.net/ > >
- [trill] Adam Roach's Discuss on draft-ietf-trill-… Adam Roach
- Re: [trill] Adam Roach's Discuss on draft-ietf-tr… Donald Eastlake
- Re: [trill] Adam Roach's Discuss on draft-ietf-tr… Adam Roach
- Re: [trill] Adam Roach's Discuss on draft-ietf-tr… Adam Roach
- Re: [trill] Adam Roach's Discuss on draft-ietf-tr… Bob Briscoe
- Re: [trill] Adam Roach's Discuss on draft-ietf-tr… Donald Eastlake
- Re: [trill] Adam Roach's Discuss on draft-ietf-tr… Adam Roach