Subject: Re: [Pce] A discussion point for draft-ietf-pce-pcep-flowspec

From: "Adrian Farrel" <[email-masked]>
Date: Wed, 4 Mar 2020 22:10:04 -0000

Hi all,

AFAICS, no one else has pitched in on this debate (so we can't really call it a debate).

The easiest approach to keeping everyone (i.e., Pavan) happy is to take the following approach.

>    2. Introduce a new flag in the FLOWSPEC object to explicitly indicate
>    that routes subject to LPM based forwarding MUST be installed. When this
>    flag is set, the FLOWSPEC object MUST carry only destination IPv4/IPv6 TLVs.

The way I propose to handle it is to add a flag to the FLOWSPEC object with meaning:
- clear: Use the Flow Filter TLV as a "flow specification" 
- set: Use the Flow Filter TLV to install a Longest Prefix Match route
Define a new error "FlowSpec Error" : "Unsupported LPM Route" for use when the receiver does not support installing an LPM route for the Flow Filter TLV.

An introductory sentence is also added saying:
   
    How an 
    implementation decides how to filter traffic that matches a Flow Specification does not form
    part of this specification, but a flag is provided to indicate that the sender of a PCEP
    message that includes a Flow Specification is intended to be installed as a Longest Prefix
    Match route, or as a Flow Specification policy.

I'll make the changes to the document, but note that we are well past WG last call. I hope that with the change we will be able to move ahead.

Look out for the new revision.

Best,
Adrian

-----Original Message-----
From: Vishnu Pavan Beeram <[email-masked]> 
Sent: 13 January 2020 12:23
To: Adrian Farrel <[email-masked]>
Cc: [email-masked]; [email-masked]
Subject: Re: [Pce] A discussion point for draft-ietf-pce-pcep-flowspec

Adrian, Hi!

Please see inline..

Regards,
-Pavan

On Fri, Jan 10, 2020 at 10:32 AM Adrian Farrel <[email-masked]> wrote:

> Thanks Pavan,
>
> It’s good to have this documented clearly.
>
> Personally, I am amused/confused that **how** packets are intercepted for
> classification (via a routing entry or via a data plane filter) is
> important to the specification of this protocol. That is, the protocol says
> “packets that match this flowspec MUST be placed on this LSP/path”. How an
> implementation chooses to achieve that is, IMHO, not material to the
> on-the-wire behaviour. That is, the packets will come in and will be placed
> on the path, and the protocol instructions to achieve it do not need to
> tell anyone how to achieve it.
>
> This is probably closest to your option 1. That is, an implementation may
> choose to implement this however it wants.
>
> It would be wrong, also IMHO, to imply that an implementation must install
> a data plane filter to handle PCEP flowspecs. That depends (of course) on
> how you define a data plane filter.

Existing (network element) implementations have config knobs that
distinguish between adding a filter rule to steer traffic onto the path of
a tunnel and installing a resolver route (LPM based forwarding). And like
with most TE-Tunnel/TE-Policy specific config knobs, there seems to be a
strong desire to let the Controller push/control these knobs. That is where
my options 2 and 3 come in.

> As to draft-ietf-pce-binding-label-sid, I fear I detect mission creep.
> What was originally a simple association of a binding SID to a PCEP message
> now also has an element of flowspec built in. I wonder whether that
> document shouldn’t refer to draft-ietf-pce-flowspec if it wants to describe
> what traffic to associate with a path.

I'm not sure about mission creep, but the association of a binding type to
a path does (already) describe the type of traffic steered onto the path.
It results in the installation of a keyed entry in the forwarding plane
with the action of steering the packets matching this entry to the selected
path of the policy. Given the precedent, adding a couple of new binding
types for destination prefixes seems appropriate.

> Like you, I would like to hear more from the working group.

Yeah, looking forward to see some opinions come in on this.

> *From:* Vishnu Pavan Beeram <[email-masked]>
> *Sent:* 10 January 2020 05:45
> *To:* Adrian Farrel <[email-masked]>
> *Cc:* [email-masked]; [email-masked]
> *Subject:* Re: [Pce] A discussion point for draft-ietf-pce-pcep-flowspec
>
> Adrian, Hi!
>
> Much Thanks for starting this thread! There are multiple implementations
> that support user-triggered installation/uninstallation of
> destination-IPv4/IPv6 prefixes bound to a TE Path (installation of routes
> subject to longest prefix match based forwarding) and it is important to
> have this behavior covered in PCEP.
>
> I’m listing 3 options that were considered for addressing this item:
>
>    1. Add a new sub-section to Section 8 of
>    <draft-ietf-pce-pcep-flowspec> stating that an implementation receiving a
>    FLOWSPEC object that carries only destination IPv4/IPv6 TLVs may choose to
>    not install any data-plane filters and instead install routes that are
>    subject to longest prefix match (LPM) based forwarding. With this option,
>    the controller has no say in how the network element processes these
>    destination IPV4/IPv6 TLVs.
>    2. Introduce a new flag in the FLOWSPEC object to explicitly indicate
>    that routes subject to LPM based forwarding MUST be installed. When this
>    flag is set, the FLOWSPEC object MUST carry only destination IPv4/IPv6 TLVs.
>    3. Do not use the FLOWSPEC object at all for this; Use the
>    TE-PATH-BINDING TLV (introduced by draft-ietf-pce-binding-label-sid)
>    instead. This requires the addition of a couple of new Binding Types (BT)
>    to indicate destination-IPV4 and destination-IPv6 bindings. This also
>    requires us to add the ability to encode multiple Path Bindings (list)
>    in the same message and the ability to remove specific Path Bindings in a
>    given message.
>
> Based on some offline conversations with interested parties, there is a
> strong need to have an explicit indication for this type of behavior (avoid
> ambiguity with respect to filtering) -- so that makes Option 1 undesirable.
> There is also a requirement to carry a mix of install and uninstall
> destination prefixes associated with a path in the same message. The way
> the FLOWSPEC object is currently defined (the R flag is specified per
> FLOWSPEC object and not per TLV; parity with BGP), you would need one
> object to carry the install prefixes and one more to carry the uninstall
> prefixes. Given all this, there is some consensus among interested parties
> to implement this behavior using the TE-PATH-BINDING TLV. Note that this
> also means that draft-ietf-pce-pcep-flowspec can proceed as is.
>
> @WG -- Any thoughts?
>
> Regards,
>
> -Pavan
>
> On Sun, Jan 5, 2020 at 4:14 PM Adrian Farrel <[email-masked]> wrote:
>
> Hi WG,
>
> I received a couple of private emails about draft-ietf-pce-pcep-flowspec.
>
> Since they were private, I will try to be circumspect about who they were
> from.
>
> The sender asked to have a flag attached to a flow specification that
> indicates that it can be installed as a static route and thus not subject
> to a firewall rule so the longest prefix matching can be performed to
> manipulate route resolution for an LSP.
>
> The request also said that traditionally flow-specifications result in
> firewall rules and those rules operate on packets before longest prefix
> match. We want to install static routes, the equivalent of installing a
> prefix for an LSP and if we treat a flowspec as a static route we can mess
> things up like rule ordering and so on.
>
> The sender suggested that there are currently some draft(s) regarding this
> behavior for BGP flowspec as well, but was not able to point me at them.
>
> I asked for some clarifications and got back:
>
> "What BGP-FS does is install data-plane filters.  We handle that by
> installing RIB entries (that's what BGP carries) into a RIB. Those entries
> are transformed into firewall filters.  What I am asking for is not
> currently supported by BGP-flowspec.
>
> "What I am asking for is an indication that a flow-specification NOT be
> transformed into a data-plane filter.  In other words, installed as a
> normal route where the route is subject to longest prefix match based
> forwarding