Subject: [Idr] draft-ietf-idr-rfc5575bis-19, reverting to consensus text on opaque typed NLRI

From: John Scudder <[email-masked]>
Date: Mon, 9 Mar 2020 20:30:09 +0000

Hi All,

A while ago we had some debate on the list regarding opaque typed flowspec NLRI, which was introduced post-WGLC. It seems to me the consensus is that what we WGLC’d is what’s right and that we should essentially return to it. After a side conversation with the authors and AD, I agree. I’d like to ask the authors to make the necessary change (see the draft changes Christoph was so kind as to provide, below) and we’ll consider it closed.

This doesn’t mean we should consider extensibility a dead letter, but that we should address it in Flowspec v2 (or whatever name we end up choosing for that work).

Thanks,

—John

Section 4.1., paragraph 0:
REMOVE:

    The Flow Specification NLRI is considered a Typed NLRI in the sense
    of Section 5.4 of [RFC7606].  See also Section 4.2 on unknown
    component type handling.

Section 4.2., paragraph 6:
OLD:

    An advertisement containing an unknown Flow Specification component
    type should be discarded as specified in Section 5.4 of [RFC7606].
    It needs to be pointed out that the encoding of the NLRI as a 2-tuple
    <length, NLRI value> allows to skip over a NLRI value (the NLRI that
    value should be discarded).
 
    Except for an unknown component type (see above), a NLRI value not
    encoded as specified in Section 4.2 is considered malformed and error
    handling according to Section 10 is performed.

NEW:

    A NLRI value not encoded as specified in Section 4.2 is considered
    malformed and error handling according to Section 10 is performed.

Section 10., paragraph 3:
REMOVE:

 11.  Future NLRI Extensions
 
    Future Flow Specification extensions may introduce new Flow
    Specification components.  If a receiving BGP speaker decodes an
    unknown Flow Specification component type it is unable to continue
    decoding the following Flow Specification components in the same NLRI
    value and MUST discard this NLRI value and all its components as
    described in Section 4.2 for further processing.  Since the NLRI
    field encoding (Section 4) is defined in the form of a 2-tuple
    <length, NLRI value> message decoding can skip over the NLRI value
    and continue with subsequent NLRI and message decoding.
 
    The specification of a new Flow Specification Component Type MUST
    clearly identify what the criteria used to match packets forwarded by
    the router is.  This criteria should be meaningful across router hops
    and not depend on values that change hop-by-hop such as TTL or Layer
    2 encapsulation.
 
    Such extensions SHOULD also specify a way to encode an "always-match"
    match condition within the newly introduced components (this is a
    match condition, encoded with the newly introduced components: If
    present on its own, matches all flows).  This match condition can be
    used to propagate (and apply) certain Flow Specifications only if a
    specific extension is known to the implementation.

12.  Security Considerations
Section 1000., paragraph 2:
REMOVE:

    When BGP decodes an unknown Flow Specification component type, as of
    Section 4.2 it needs to discard the NLRI and skip over the remaining
    undecoded octets to the following NLRI or to the end of the list.
    Skipping over unknown octets of the to be discarded NLRI is the
    specified behaviour for a Type NLRI in Section 5.4 [RFC7606].  While
    this is not intrinsic to the Flow Specification NLRI in particular,
    it needs to be pointed out that, carefully crafted wrong NLRI length
    fields may lead to synchronisation issues between BGP senders and
    receivers.

Appendix B., paragraph 2:
OLD:

       Section 1 introduces the Flow Specification NLRI.  In [RFC5575]
       this NLRI was defined as an opaque-key in BGPs database.  This
       specification has removed all references to a opaque-key property.
       BGP is able to understand the NLRI encoding.  This change also
       resulted in a new section regarding error handling and
       extensibility (Section 10 and Section 11).

NEW:

       Section 1 introduces the Flow Specification NLRI.  In [RFC5575]
       this NLRI was defined as an opaque-key in BGPs database.  This
       specification has removed all references to a opaque-key property.
       BGP is able to understand the NLRI encoding.

Appendix B., paragraph 10:
REMOVE:

       Section 11 describes graceful handling of unknown Flow
       Specification components to allow future extensions.

---

From: Christoph Loibl <[email-masked]>
Date: Tue, 10 Mar 2020 10:14:38 +0100

Hi John and all,

Thanks for sorting that out. Draft submission is closed now, however I attached the to-be-20 version of draft-ietf-idr-rfc5575bis for the record and will submit the draft when the tool opens again. 

I will also update the draft-ietf-idr-flow-spec-v6 as soon as possible (which may have some wrong references to rfc5575bis now). 

Btw, there is a WG LC open for draft-ietf-idr-flow-spec-v6 - a draft that is hanging around there for quite some time and has been recently been updated to nicely go along with rfc5575bis:

https://mailarchive.ietf.org/arch/msg/idr/SllhsoD1m1P982LS3var0bXe6sM/

Cheers Christoph

> On 09.03.2020, at 21:30, John Scudder <jgs=[email-masked]> wrote:
> 

-- 
Christoph Loibl
[email-masked] | CL8-RIPE | PGP-Key-ID: 0x4B2C0055 | http://www.nextlayer.at

---

From: Jeffrey Haas <[email-masked]>
Date: Tue, 10 Mar 2020 14:37:19 -0400

> On Mar 10, 2020, at 5:14 AM, Christoph Loibl <[email-masked]> wrote:
> 

While I'm behind on a number of bits of IETF work, once my queue unblocks I'm willing to review.  Juniper has an implementation.

-- Jeff

---

From: Christoph Loibl <[email-masked]>
Date: Tue, 10 Mar 2020 21:56:07 +0100

Hi,

> On 10.03.2020, at 10:14, Christoph Loibl <[email-masked]> wrote:
> 

Since the submission tool just reopened I uploaded the -20 (thanks Alvaro for the pointer):

https://datatracker.ietf.org/doc/draft-ietf-idr-rfc5575bis/

Cheers Christoph