RFC 9168
Path Computation Element Communication Protocol (PCEP) Extension for Flow Specification
๐ RFC 9168: PCEP Extension for Flow Specification ๐
okay bestie, grab your iced matcha because this one is SO good โจ it's about how a PCE (Path Computation Element) can tell a head end exactly which traffic should go down which tunnel. no cap, it's giving main character energy ๐
Title block, the vibe check ๐ธ
- The RFC number is 9168 and the title is Path Computation Element Communication Protocol (PCEP) Extension for Flow Specification ๐
- The authors are D. Dhody (Huawei Technologies), A. Farrel (Old Dog Consulting), and Z. Li (Huawei Technologies) ๐ซถ
- It's a Standards Track document, ISSN 2070-1721, dated January 2022 ๐ฆ
- It doesn't obsolete or update anything, so it's a fresh start, no drama ๐ง
Abstract
The Path Computation Element (PCE) is a functional component capable of selecting paths through a traffic engineering (TE) network. These paths may be supplied in response to requests for computation, or they may be unsolicited requests issued by the PCE to network elements. Both approaches use the PCE Communication Protocol (PCEP) to convey the details of the computed path. ๐
Traffic flows can be categorized and described using "Flow Specifications". RFC 8955 defines the Flow Specification and describes how Flow Specification components are used to describe traffic flows. RFC 8955 also defines how Flow Specifications may be distributed in BGP to allow specific traffic flows to be associated with routes. ๐
This document specifies a set of extensions to PCEP to support dissemination of Flow Specifications. This allows a PCE to indicate what traffic should be placed on each path that it is aware of. โจ
The extensions defined in this document include the creation, update, and withdrawal of Flow Specifications via PCEP, and they can be applied to tunnels initiated by the PCE or to tunnels where control is delegated to the PCE by the Path Computation Client (PCC). Furthermore, a PCC requesting a new path can include Flow Specifications in the request to indicate the purpose of the tunnel, allowing the PCE to factor this into the path computation. ๐
Status of This Memo
This is an Internet Standards Track document. ๐
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841. ๐ธ
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9168. ๐ฅ
Copyright Notice
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved. ๐
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. ๐
Table of Contents
1. Introduction
2. Terminology
3. Procedures for PCE Use of Flow Specifications
3.1. Context for PCE Use of Flow Specifications
3.2. Elements of the Procedure
3.2.1. Capability Advertisement
3.2.1.1. PCEP Open Message
3.2.1.2. IGP PCE Capabilities Advertisement
3.2.2. Dissemination Procedures
3.2.3. Flow Specification Synchronization
4. PCE FlowSpec Capability TLV
5. PCEP FLOWSPEC Object
6. Flow Filter TLV
7. Flow Specification TLVs
8. Detailed Procedures
8.1. Default Behavior and Backward Compatibility
8.2. Composite Flow Specifications
8.3. Modifying Flow Specifications
8.4. Multiple Flow Specifications
8.5. Adding and Removing Flow Specifications
8.6. VPN Identifiers
8.7. Priorities and Overlapping Flow Specifications
9. PCEP Messages
10. IANA Considerations
10.1. PCEP Objects
10.1.1. PCEP FLOWSPEC Object Flag Field
10.2. PCEP TLV Type Indicators
10.3. Flow Specification TLV Type Indicators
10.4. PCEP Error Codes
10.5. PCE Capability Flag
11. Security Considerations
12. Manageability Considerations
12.1. Management of Multiple Flow Specifications
12.2. Control of Function through Configuration and Policy
12.3. Information and Data Models
12.4. Liveness Detection and Monitoring
12.5. Verifying Correct Operation
12.6. Requirements for Other Protocols and Functional Components
12.7. Impact on Network Operation
13. References
13.1. Normative References
13.2. Informative References
Acknowledgements
Contributors
Authors' Addresses
1. Introduction โจ
[RFC4655] defines the Path Computation Element (PCE), a functional component capable of computing paths for use in traffic engineering networks. PCE was originally conceived for use in Multiprotocol Label Switching (MPLS) for traffic engineering (TE) networks to derive the routes of Label Switched Paths (LSPs). However, the scope of PCE was quickly extended to make it applicable to networks controlled by Generalized MPLS (GMPLS), and more recent work has brought other traffic engineering technologies and planning applications into scope (for example, Segment Routing (SR) [RFC8664]). ๐ฆ
[RFC5440] describes the PCE Communication Protocol (PCEP). PCEP defines the communication between a Path Computation Client (PCC) and a PCE, or between PCE and PCE, enabling computation of the path for MPLS-TE LSPs. ๐
Stateful PCE [RFC8231] specifies a set of extensions to PCEP to enable control of TE-LSPs by a PCE that retains state about the LSPs provisioned in the network (a stateful PCE). [RFC8281] describes the setup, maintenance, and teardown of LSPs initiated by a stateful PCE without the need for local configuration on the PCC, thus allowing for a dynamic network that is centrally controlled. [RFC8283] introduces the architecture for PCE as a central controller and describes how PCE can be viewed as a component that performs computation to place "flows" within the network and decide how these flows are routed. ๐ธ
The description of traffic flows by the combination of multiple Flow Specification components, and their dissemination as traffic flow specifications (Flow Specifications), is described for BGP in [RFC8955]. In BGP, a Flow Specification is comprised of traffic filtering rules and is associated with actions to perform on the packets that match the Flow Specification. The BGP routers that receive a Flow Specification can classify received packets according to the traffic filtering rules and can direct packets based on the associated actions. ๐ง
When a PCE is used to initiate tunnels (such as TE-LSPs or SR paths) using PCEP, it is important that the head end of the tunnels understands what traffic to place on each tunnel. The data flows intended for a tunnel can be described using Flow Specification components. When PCEP is in use for tunnel initiation, it makes sense for that same protocol to be used to distribute the Flow Specification components that describe what data is to flow on those tunnels. ๐
This document specifies a set of extensions to PCEP to support dissemination of Flow Specification components. We term the description of a traffic flow using Flow Specification components as a "Flow Specification". This term is conceptually the same as the term used in [RFC8955]; however, no mechanism is provided to distribute an action associated with the Flow Specification, because there is only one action that is applicable in the PCEP context (that is, directing the matching traffic to the identified LSP). ๐
The extensions defined in this document include the creation, update, and withdrawal of Flow Specifications via PCEP, and they can be applied to tunnels initiated by the PCE or to tunnels where control is delegated to the PCE by the PCC. Furthermore, a PCC requesting a new path can include Flow Specifications in the request to indicate the purpose of the tunnel, allowing the PCE to factor this into the path computation. ๐
Flow Specifications are carried in TLVs within a new object called the FLOWSPEC object defined in this document. The flow filtering rules indicated by the Flow Specifications are mainly defined by BGP Flow Specifications. ๐
Note that PCEP-installed Flow Specifications are intended to be installed only at the head end of the LSP to which they direct traffic. It is acceptable (and potentially desirable) that other routers in the network have Flow Specifications installed that match the same traffic but direct it onto different routes or to different LSPs. Those other Flow Specifications may be installed using the PCEP extensions defined in this document, distributed using BGP per [RFC8955], or configured using manual operations. Since this document is about PCEP-installed Flow Specifications, those other Flow Specifications at other routers are out of scope. In this context, however, it is worth noting that changes to the wider routing system (such as the distribution and installation of BGP Flow Specifications, or fluctuations in the IGP link state database) might mean that traffic matching the PCEP Flow Specification never reaches the head end of the LSP at which the PCEP Flow Specification has been installed. This may or may not be desirable according to the operator's traffic engineering and routing policies, and is particularly applicable at LSPs that do not have their head ends at the ingress edge of the network, but it is not an effect that this document seeks to address. ๐
2. Terminology โจ
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. ๐
This document uses the following terms defined in [RFC5440]: PCC, PCE, and PCEP Peer. ๐
The following term from [RFC8955] is used frequently throughout this document:
A Flow Specification is an n-tuple consisting of several matching
criteria that can be applied to IP traffic. A given IP packet is
said to match the defined Flow Specification if it matches all the
specified criteria.
[RFC8955] also states that "[a] given Flow Specification may be associated with a set of attributes" and that "...attributes can be used to encode a set of predetermined actions." However, in the context of this document, no action is explicitly specified as associated with the Flow Specification, since the action of forwarding all matching traffic onto the associated path is implicit. ๐
How an implementation decides to filter traffic that matches a Flow Specification does not form part of this specification, but a flag is provided to indicate whether the sender of a PCEP message that includes a Flow Specification intends it to be installed as a Longest Prefix Match (LPM) route or as a Flow Specification policy. ๐ฆ
This document uses the terms "stateful PCE" and "active PCE" as advocated in [RFC7399]. ๐ธ
3. Procedures for PCE Use of Flow Specifications ๐
(Part 1 of 7 ends here. Part 2 picks up with Section 3.1, so stay tuned, bestie! ๐ซถ)
3.1. Context for PCE Use of Flow Specifications ๐ธ
okay so in the PCE architecture, setting up and using LSPs is a five-step process ๐
- Decide which LSPs to set up. The decision may be made by a user, by a PCC, or by the PCE. There can be a number of triggers for this, including user intervention and dynamic response to changes in traffic demands ๐
- Decide what properties to assign to an LSP. This can include bandwidth reservations, priorities, and the Differentiated Services Code Point (DSCP) (i.e., MPLS Traffic Class field) ๐ This is also determined by user configuration or in response to predicted or observed traffic demands.
- Decide what traffic to put on the LSP. This is basically deciding which traffic flows go on which LSPs, and it's honestly super linked to the first two decisions above ๐ง
- Cause the LSP to be set up and modified so it has the right characteristics. This usually means the PCE advises or instructs the PCC at the head end of the LSP, and then the PCC signals the LSP across the network ๐ฆ
- Tell the head end of the LSP what traffic to put on the LSP. This can happen after the LSP is set up or at the same time โจ This step is the subject of this document, bestie ๐
3.2. Elements of the Procedure ๐ซถ
there are three elements in the procedure, and they're all giving main character energy:
- A PCE and a PCC must be able to indicate whether or not they support the use of Flow Specifications.
- A PCE or PCC must be able to include Flow Specifications in PCEP messages with a clear understanding of how those Flow Specifications apply in each case. This includes whether the use of such information is mandatory, constrained, or optional, and how overlapping Flow Specifications will be resolved ๐ฅ
- Flow Specification information and state must be synchronized between PCEP peers so that, on recovery, the peers have the same understanding of which Flow Specifications apply. This is just like what's required for stateful PCE and LSP delegation (see Section 5.6 of [RFC8231]) ๐
the next subsections break these points down ๐
3.2.1. Capability Advertisement ๐
as with most PCEP capability advertisements, the ability to support Flow Specifications can be indicated in the PCEP Open message or in IGP PCE capability advertisements โจ
3.2.1.1. PCEP Open Message ๐
during PCEP session establishment, a PCC or PCE that supports the procedures described in this document announces it by including the PCE FlowSpec Capability TLV (described in Section 4) in the OPEN object carried in the PCEP Open message ๐ฃ
if a PCE's Open message has the PCE FlowSpec Capability TLV in its OPEN object, that means the PCE can distribute FlowSpecs to PCCs and can receive FlowSpecs in messages from PCCs ๐ง
if a PCC's Open message has the PCE FlowSpec Capability TLV in its OPEN object, that means the PCC supports the FlowSpec functionality described in this document ๐ฆ
if either one of a pair of PCEP peers does not include the PCE FlowSpec Capability TLV in the OPEN object in its Open message, then the other peer MUST NOT include a FLOWSPEC object in any PCEP message sent to that peer. ๐ซ If a FLOWSPEC object is received when support has not been indicated, the receiver will respond with a PCErr message reporting the objects containing the FlowSpec, as described in [RFC5440]. That means it will use "Unknown Object" if it doesn't support this specification, and "Not supported object" if it does support this specification but hasn't chosen to support FLOWSPEC objects on this PCEP session ๐
3.2.1.2. IGP PCE Capabilities Advertisement ๐ธ
the ability to advertise support for PCEP and PCE features in IGP advertisements is provided for OSPF in [RFC5088] and for IS-IS in [RFC5089]. The mechanism uses the PCE Discovery TLV, which has a PCE-CAP-FLAGS sub-TLV containing bit flags, and each flag indicates support for a different feature ๐
this document defines a new PCE-CAP-FLAGS sub-TLV bit, the FlowSpec Capable flag (bit number 16). Setting the bit means the advertising PCE supports the procedures defined in this document ๐
note that while PCE FlowSpec capability may be advertised during discovery, PCEP speakers that wish to use Flow Specification in PCEP MUST negotiate PCE FlowSpec capability during PCEP session setup, as specified in Section 3.2.1.1. A PCC MAY initiate PCE FlowSpec capability negotiation at PCEP session setup even if it didn't receive any IGP PCE capability advertisement. Also, a PCEP peer that advertised support for FlowSpec in the IGP is not obliged to support these procedures on any given PCEP session ๐ซถ
3.2.2. Dissemination Procedures ๐
this section describes the procedures for supporting Flow Specifications in PCEP messages ๐
the primary purpose of distributing Flow Specification information is to let a PCE tell a PCC what traffic it should place on a path (such as an LSP or an SR path). So the Flow Specification may be included in:
- PCInitiate messages, so an active PCE can indicate the traffic to place on a path at the time it instantiates the path ๐
- PCUpd messages, so an active PCE can indicate or change the traffic to place on a path that's already been set up ๐
- PCRpt messages, so a PCC can report the traffic that it will place on the path ๐
- PCReq messages, so a PCC can indicate what traffic it plans to place on a path when it asks the PCE to perform a computation, in case that info helps the PCE in its work ๐ง
- PCRep messages, so a PCE that's been asked to compute a path can suggest which traffic could be placed on a path that a PCC may be about to set up ๐ก
- PCErr messages, so issues related to paths and the traffic they carry can be reported to the PCE by the PCC, and problems with other PCEP messages that carry Flow Specifications can be reported too ๐จ
to carry Flow Specifications in PCEP messages, this document defines a new PCEP object called the "PCEP FLOWSPEC object". The object is OPTIONAL in the messages described above and MAY appear more than once in each message ๐
to describe a traffic flow, the PCEP FLOWSPEC object carries a Flow Filter TLV ๐
including multiple PCEP FLOWSPEC objects lets multiple traffic flows be placed on a single path ๐ฃ๏ธ
once a PCE and PCC have established that they can both support the use of Flow Specifications in PCEP messages, that information may be exchanged at any time for new or existing paths โฐ
the application and prioritization of Flow Specifications are described in Section 8.7 ๐
as per [RFC8231], any attributes of the path received from a PCE are subject to the PCC's local policy. This holds true for Flow Specifications as well ๐ก๏ธ
3.2.3. Flow Specification Synchronization ๐
the Flow Specifications are carried along with the LSP state information as per [RFC8231], which makes them part of the LSP database (LSP-DB). So synchronizing Flow Specification information is done as part of LSP-DB synchronization. This may be achieved using normal state synchronization procedures as described in [RFC8231], or enhanced state synchronization procedures as defined in [RFC8232] ๐
the approach selected will be implementation and deployment specific, and it depends on things like how the databases are built and what level of synchronization support is needed ๐ง
4. PCE FlowSpec Capability TLV โจ
the PCE-FLOWSPEC-CAPABILITY TLV is an optional TLV that can be carried in the OPEN object [RFC5440] to exchange the PCE FlowSpec capabilities of the PCEP speakers ๐
the format of the PCE-FLOWSPEC-CAPABILITY TLV follows the format of all PCEP TLVs as defined in [RFC5440], and it's shown in Figure 1 ๐
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=51 | Length=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Value=0 | Padding |
+---------------------------------------------------------------+
Figure 1: PCE-FLOWSPEC-CAPABILITY TLV Format
the type of the PCE-FLOWSPEC-CAPABILITY TLV is 51, and it has a fixed length of 2 octets. The Value field MUST be set to 0 and MUST be ignored on receipt. The two bytes of padding MUST be set to zero and MUST be ignored on receipt ๐ซง
the inclusion of this TLV in an OPEN object indicates that the sender can perform FlowSpec handling as defined in this document ๐
5. PCEP FLOWSPEC Object โจ
okay so the PCEP FLOWSPEC object in this doc follows the PCEP object format from [RFC5440] ๐. It is OPTIONAL in the PCReq, PCRep, PCErr, PCInitiate, PCRpt, and PCUpd messages, and it MAY be present zero, one, or more times. Each instance of the object describes a separate traffic flow ๐ฆ.
The PCEP FLOWSPEC object MAY carry a FlowSpec filter rule encoded in a Flow Filter TLV, which is defined in Section 6 ๐.
The FLOWSPEC Object-Class is 43 (to be assigned by IANA) ๐ธ.
The FLOWSPEC Object-Type is 1 โจ.
The body of the PCEP FLOWSPEC object is laid out like this, as shown in Figure 2 ๐:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FS-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AFI | Reserved | Flags |L|R|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// TLVs //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: PCEP FLOWSPEC Object Body Format
Here's the breakdown, bestie ๐ง:
- FS-ID (32 bits): A PCEP-specific identifier for the FlowSpec information. A PCE or PCC creates an FS-ID for each FlowSpec that it originates. The value is unique within the scope of that PCE or PCC and is constant for the lifetime of a PCEP session. All subsequent PCEP messages can identify the FlowSpec using the FS-ID. The values
0and0xFFFFFFFFare reserved and MUST NOT be used ๐. Note that [NUMERIC-IDS-SEC] gives advice on assigning transient numeric identifiers such as the FS-ID so as to minimize security risks ๐. - AFI (16 bits): Address Family Identifier as used in BGP [RFC4760] (AFI=1 for IPv4 or VPNv4, AFI=2 for IPv6 and VPNv6 as per [RFC8956]) ๐.
- Reserved (8 bits): MUST be set to zero on transmission and ignored on receipt ๐.
- Flags (8 bits): Two flags are currently assigned ๐ฆ:
- R bit: The Remove bit is set when a PCEP FLOWSPEC object is included in a PCEP message to indicate removal of the Flow Specification from the associated tunnel. If the bit is clear, the Flow Specification is being added or modified ๐ .
- L bit: The Longest Prefix Match (LPM) bit is set to indicate that the Flow Specification is to be installed as a route subject to LPM forwarding. If the bit is clear, the Flow Specification described by the Flow Filter TLV (see Section 6) is to be installed as a Flow Specification. If the bit is set, only Flow Specifications that describe IPv4 or IPv6 destinations are meaningful in the Flow Filter TLV, and others are ignored. If the L is set and the receiver does not support the use of Flow Specifications that are present in the Flow Filter TLV for the installation of a route subject to LPM forwarding, then the PCEP peer MUST respond with a PCErr message with Error-Type 30 (FlowSpec Error) and Error-value 5 (Unsupported LPM Route) ๐จ.
Unassigned bits MUST be set to zero on transmission and ignored on receipt ๐ซถ.
If the PCEP speaker receives a message with the R bit set in the FLOWSPEC object and the Flow Specification identified with an FS-ID does not exist, it MUST generate a PCErr with Error-Type 30 (FlowSpec Error) and Error-value 4 (Unknown FlowSpec) ๐ญ.
If the PCEP speaker does not understand or support the AFI in the FLOWSPEC message, the PCEP peer MUST respond with a PCErr message with Error-Type 30 (FlowSpec Error) and Error-value 2 (Malformed FlowSpec) ๐.
The following TLVs can be used in the FLOWSPEC object ๐:
- Speaker Entity Identifier TLV: As specified in [RFC8232], the SPEAKER-ENTITY-ID TLV encodes a unique identifier for the node that does not change during the lifetime of the PCEP speaker. This is used to uniquely identify the FlowSpec originator, so it is used together with the FS-ID to uniquely identify the FlowSpec information. This TLV MUST be included. If the TLV is missing, the PCEP peer MUST respond with a PCErr message with Error-Type 30 (FlowSpec Error) and Error-value 2 (Malformed FlowSpec). If more than one instance of this TLV is present, the first MUST be processed, and subsequent instances MUST be ignored ๐.
- Flow Filter TLV (variable): One TLV MAY be included. The Flow Filter TLV is OPTIONAL when the R bit is set โจ.
The Flow Filter TLV MUST be present when the R bit is clear. If the TLV is missing when the R bit is clear, the PCEP peer MUST respond with a PCErr message with Error-Type 30 (FlowSpec Error) and Error-value 2 (Malformed FlowSpec) ๐ฅบ.
Filtering based on the L2 fields is out of scope of this document ๐ธ.
6. Flow Filter TLV โจ
One new PCEP TLV is defined to convey Flow Specification filtering rules that specify what traffic is carried on a path ๐ฆ. The TLV follows the format of all PCEP TLVs as defined in [RFC5440]. The Type field values come from the code point space for PCEP TLVs and has the value 52 for Flow Filter TLV ๐.
The Value field of the TLV contains one or more sub-TLVs (the Flow Specification TLVs) as defined in Section 7. Together they represent the complete definition of a Flow Specification for traffic to be placed on the tunnel ๐. This tunnel is indicated by the PCEP message in which the PCEP FLOWSPEC object is carried. The set of Flow Specification TLVs in a single instance of a Flow Filter TLV is combined to indicate the specific Flow Specification. Note that the PCEP FLOWSPEC object can include just one Flow Filter TLV ๐ .
Further Flow Specifications can be included in a PCEP message by including additional FLOWSPEC objects ๐.
In the future, there may be a desire to add support for L2 Flow Specifications (such as described in [BGP-L2VPN]) ๐.
7. Flow Specification TLVs ๐
okay so the Flow Filter TLV carries one or more Flow Specification TLVs ๐ Each one follows the same format as all PCEP TLVs from [RFC5440] โจ BUT the Type values come from a separate IANA registry (see Section 10.3) instead of the common PCEP TLV registry ๐
The Type values are picked so there can be commonality with the Flow Specifications defined for BGP in [RFC8955] and [RFC8956] ๐ฆ It works because the BGP Flow Spec encoding uses a single octet for the type, while PCEP uses 2 octets ๐ธ So the space of Type values gets split up like this, as shown in Table 1:
+===========+=======================================+
| Range | Description |
+===========+=======================================+
| 0-255 | Per BGP Flow Spec registry defined by |
| | [RFC8955] and [RFC8956]. |
| | |
| | Not to be allocated in this registry. |
+-----------+---------------------------------------+
| 256-65535 | New PCEP Flow Specifications |
| | allocated according to the registry |
| | defined in this document. |
+-----------+---------------------------------------+
Table 1: Flow Specification TLV Type Ranges
[RFC8955] is the reference for the "Flow Spec Component Types" registry and defines the allocations in it ๐ง [RFC8956] asked for the creation of the "Flow Spec IPv6 Component Types" registry, plus its initial allocations ๐ If the AFI (in the FLOWSPEC object) is set to IPv4, the range 0..255 follows "Flow Spec Component Types" from [RFC8955]. If the AFI is set to IPv6, the range 0..255 follows "Flow Spec IPv6 Component Types" from [RFC8956] โจ
The content of the Value field in each TLV depends on the type and AFI, and it describes the parameters of the Flow Specification ๐ A lot of these Value field formats are inherited from BGP specifications ๐ซถ Specifically, they're inherited from [RFC8955] and [RFC8956], but they may also be inherited from future BGP specifications too ๐ฎ
When multiple Flow Specification TLVs show up in a single Flow Filter TLV, they get combined to make a more detailed specification of a flow ๐ฅ For examples and rules about how that works, check [RFC8955]. As [RFC8955] puts it, "A given component type MAY (exactly once) be present in the Flow Specification". So a Flow Filter TLV MUST NOT contain more than one Flow Specification TLV of the same type ๐ If an implementation gets a PCEP message with a Flow Filter TLV containing more than one Flow Specification TLV of the same type, it MUST respond with a PCErr message with Error-Type 30 (FlowSpec Error) and Error-value 2 (Malformed FlowSpec), and it MUST NOT install the Flow Specification ๐
An implementation that gets a PCEP message carrying a Flow Specification TLV with a type value it doesn't recognize or support MUST respond with a PCErr message with Error-Type 30 (FlowSpec Error) and Error-value 1 (Unsupported FlowSpec), and it MUST NOT install the Flow Specification ๐ซ
When other protocols (like BGP) use these Flow Specifications, they're also associated with actions that say how matching traffic should be treated ๐ฆ In PCEP, though, the only action is to associate the traffic with a tunnel and forward the matching traffic onto that path, so no encoding of an action is needed ๐ธ
Section 8.7 describes how overlapping Flow Specifications get prioritized and handled ๐
All Flow Specification TLVs with Types in the range 0 to 255 already have values defined for BGP use (for example, in [RFC8955] and [RFC8956]) ๐ They're set using the BGP encoding but without the type octet, since the relevant information is already in the Type field of the TLV ๐ The Value field gets padded with trailing zeros to hit 4-byte alignment โจ
This document defines the following new types:
+======+=====================+==================+
| Type | Description | Value Defined In |
+======+=====================+==================+
| 256 | Route Distinguisher | RFC 9168 |
+------+---------------------+------------------+
| 257 | IPv4 Multicast Flow | RFC 9168 |
+------+---------------------+------------------+
| 258 | IPv6 Multicast Flow | RFC 9168 |
+------+---------------------+------------------+
Table 2: Flow Specification TLV Types Defined
in this Document
To let you identify a VPN in PCEP through a Route Distinguisher (RD) [RFC4364], this document defines a new TLV, the ROUTE-DISTINGUISHER TLV ๐ A Flow Specification TLV with Type 256 (ROUTE-DISTINGUISHER TLV) carries an RD value, which tells you that other flow filter info (like an IPv4 destination prefix) is tied to a specific VPN identified by that RD ๐ See Section 8.6 for more on VPN identification ๐ง
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=256 | Length=8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Route Distinguisher |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: The Format of the ROUTE-DISTINGUISHER TLV
The format of the RD is as per [RFC4364] ๐ซถ
Okay, here's the vibe check: it's possible to describe a multicast Flow Specification by combining other Flow Specification TLVs with specific values ๐ค BUT it's way more convenient to use a dedicated Flow Specification TLV ๐ Flow Specification TLVs with Type values 257 and 258 identify a multicast flow for IPv4 and IPv6, respectively ๐ฆ The Value field is encoded as shown in Figure 4:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved |S|G| Src Mask Len | Grp Mask Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Source Address ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Group multicast Address ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: Multicast Flow Specification TLV Encoding
The two address fields and address mask lengths in the Multicast Flow Specification TLVs hold source and group prefixes for matching against packet flows ๐ Note that the two address fields are 32 bits for an IPv4 Multicast Flow and 128 bits for an IPv6 Multicast Flow โจ
The Reserved field MUST be set to zero and MUST be ignored on receipt ๐ค
There are two bit flags (S and G) that describe the multicast wildcarding in use ๐ If the S bit is set, source wildcarding is in use, and the values in the Source Mask Length and Source Address fields MUST be ignored ๐ If the G bit is set, group wildcarding is in use, and the values in the Group Mask Length and Group multicast Address fields MUST be ignored ๐ The G bit MUST NOT be set unless the S bit is also set. If a Multicast Flow Specification TLV is received with S bit = 0 and G bit = 1, the receiver MUST respond with a PCErr with Error-Type 30 (FlowSpec Error) and Error-value 2 (Malformed FlowSpec) ๐
The three multicast mappings can be achieved like this:
(S, G) - S bit = 0, G bit = 0, the Source Address and Group
multicast Address prefixes are both used to define the multicast
flow.
(*, G) - S bit = 1, G bit = 0, the Group multicast Address prefix
is used to define the multicast flow, but the Source Address
prefix is ignored.
(*, *) - S bit = 1, G bit = 1, the Source Address and Group
multicast Address prefixes are both ignored.
8. Detailed Procedures ๐ธ
okay this section is where we get into the specific detailed procedures for using the protocol extensions defined in this document ๐ง
8.1. Default Behavior and Backward Compatibility
The default behavior is that no Flow Specification is applied to a tunnel ๐ โโ๏ธ So by default, the FLOWSPEC object isn't used, just like in every system before this specification got implemented ๐
In this case, it's a local matter (like through configuration) how tunnel head ends get told what traffic to put on a tunnel ๐
[RFC5440] describes how receivers respond when they see unknown PCEP objects โจ
8.2. Composite Flow Specifications
Flow Specifications can be represented by a single Flow Specification TLV, or they may need a more complex description using multiple Flow Specification TLVs ๐งฉ For example, a flow indicated by a source-destination pair of IPv6 addresses would be described by the combination of Destination IPv6 Prefix and Source IPv6 Prefix Flow Specification TLVs ๐
8.3. Modifying Flow Specifications
A PCE may want to modify a Flow Specification associated with a tunnel, or a PCC may want to report a change to the Flow Specification it's using with a tunnel ๐
It's important to identify the specific Flow Specification so it's clear this is a modification of an existing flow and not the addition of a new flow (as described in Section 8.4) ๐ซถ The FS-ID field of the PCEP FLOWSPEC object identifies a specific Flow Specification in the context of the content of the Speaker Entity Identifier TLV ๐ฆ
When modifying a Flow Specification, all Flow Specification TLVs for the intended specification of the flow MUST be included in the PCEP FLOWSPEC object ๐ The FS-ID MUST be retained from the previous description of the flow, and the same Speaker Entity Identifier TLV MUST be used ๐
8.4. Multiple Flow Specifications
It's possible that traffic from multiple flows gets placed on a single tunnel ๐ In some cases, you can define these within a single PCEP FLOWSPEC object by widening the scope of a Flow Specification TLV ๐ For example, traffic to two destination IPv4 prefixes might be captured by a single Flow Specification TLV with type "Destination" and a suitably adjusted prefix ๐ง BUT this is unlikely to be possible in most scenarios, and it must be recalled that it is not permitted to include two Flow Specification TLVs of the same type within one Flow Filter TLV ๐ญ
So the normal procedure is to carry each Flow Specification in its own PCEP FLOWSPEC object ๐ Multiple objects may be present on a single PCEP message, or multiple PCEP messages may be used ๐
8.5. Adding and Removing Flow Specifications โจ
okay so adding and modifying a Flow Specification is the easy part ๐
the Remove bit in the PCEP FLOWSPEC object just stays clear (so it's 0) when you're adding or modifying one ๐ซถ
now if you want to yeet a Flow Specification, you include a PCEP FLOWSPEC object with the FS-ID that matches the one you're removing, and you set the R bit to say "bye, remove this one" ๐ bestie, you do not need to include any Flow Specification TLVs in that case ๐
and here's the tea ๐ต: if the R bit is set AND there are Flow Specification TLVs hanging around, an implementation MAY ignore them ๐ธ but if it does go checking those TLVs against what it recorded for the FS-ID and Speaker Entity Identifier of the Flow Specification being removed and they don't match, the Flow Specification matching the FS-ID MUST still get removed anyway ๐ the implementation SHOULD record a local exception or log so someone can see what happened โจ
8.6. VPN Identifiers ๐ฆ
okay so VPN instances get identified in BGP using RDs [RFC4364] ๐ these values aren't normally considered to mean anything outside the network, and they're not encoded in data packets belonging to the VPNs ๐ โโ๏ธ BUT RDs are actually super useful for identifying VPN instances, and they're often assigned to VPNs manually or automatically as they get provisioned ๐
so like, the RD gives you a lowkey iconic way to say "traffic for this particular VPN should go on a given tunnel" ๐ the tunnel head end has to read this Flow Specification NOT as a filter on the fields of data packets, but using the other mechanisms it already uses to identify VPN traffic ๐ง those could be based on the incoming port (for port-based VPNs) or could use knowledge of the VPN Routing and Forwarding (VRF) that's in use for the traffic ๐
8.7. Priorities and Overlapping Flow Specifications ๐
okay this one is highkey important bestie ๐ญ Flow Specifications can overlap ๐ for example, two different Flow Specifications might be identical except for the length of the prefix in the destination address โจ so in those cases, the PCC MUST figure out how to prioritize them so it knows which path to assign packets that match both ๐ค๏ธ basically the PCC MUST give each Flow Specification a precedence so it checks each incoming packet for a match in a predictable order ๐ฅ
the processing of BGP Flow Specifications is described in [RFC8955] ๐ Section 5.1 of that document explains the order of traffic filtering rules that an implementation of that spec has to run ๐
PCCs MUST apply the same ordering rules as defined in [RFC8955] ๐ซถ
and here's the spicy part ๐ถ๏ธ: it's possible that Flow Specifications get distributed by BGP AND by PCEP (like this document describes) ๐ณ in that case, implementations that support both approaches MUST apply the prioritization and ordering rules from [RFC8955] regardless of which protocol distributed the Flow Specifications ๐ BUT implementations MAY provide a configuration control so one protocol can take precedence over the other ๐ that might be especially useful if the Flow Specifications make identical matches on traffic but have different actions ๐ it is RECOMMENDED that a message be logged for the operator so they can understand the behavior when two Flow Specifications from different protocols overlap, especially when one replaces another ๐โจ
Section 12.1 of this document covers manageability considerations for the prioritized ordering of Flow Specifications ๐ธ
last but not least ๐ฅน: if an implementation gets a PCEP message carrying a Flow Specification that it cannot resolve against the Flow Specifications already installed (for example, because the new one has irresolvable conflicts with ones that are already there) ๐ it MUST respond with a PCErr message with Error-Type 30 (FlowSpec Error) and Error-value 3 (Unresolvable Conflict) ๐จ and it MUST NOT install that Flow Specification ๐ โโ๏ธ
9. PCEP Messages ๐
this section describes the format of messages that contain FLOWSPEC objects ๐ง the only difference from the previous message formats is that the object gets included ๐ซถ
the figures in this section use the notation defined in [RFC5511] โจ
the FLOWSPEC object is OPTIONAL and MAY be carried in the PCEP messages ๐
9.1. PCInitiate Message ๐
the PCInitiate message is defined in [RFC8281] and updated as below ๐
<PCInitiate Message> ::= <Common Header>
<PCE-initiated-lsp-list>
Where:
<PCE-initiated-lsp-list> ::= <PCE-initiated-lsp-request>
[<PCE-initiated-lsp-list>]
<PCE-initiated-lsp-request> ::=
( <PCE-initiated-lsp-instantiation>|
<PCE-initiated-lsp-deletion> )
<PCE-initiated-lsp-instantiation> ::= <SRP>
<LSP>
[<END-POINTS>]
<ERO>
[<attribute-list>]
[<flowspec-list>]
Where:
<flowspec-list> ::= <FLOWSPEC> [<flowspec-list>]
9.2. PCUpd Message ๐
the PCUpd message is defined in [RFC8231] and updated as below ๐
<PCUpd Message> ::= <Common Header>
<update-request-list>
Where:
<update-request-list> ::= <update-request>
[<update-request-list>]
<update-request> ::= <SRP>
<LSP>
<path>
[<flowspec-list>]
Where:
<path>::= <intended-path><intended-attribute-list>
<flowspec-list> ::= <FLOWSPEC> [<flowspec-list>]
9.3. PCRpt Message ๐
the PCRpt message is defined in [RFC8231] and updated as below ๐ฆ
<PCRpt Message> ::= <Common Header>
<state-report-list>
Where:
<state-report-list> ::= <state-report>[<state-report-list>]
<state-report> ::= [<SRP>]
<LSP>
<path>
[<flowspec-list>]
Where:
<path>::= <intended-path>
[<actual-attribute-list><actual-path>]
<intended-attribute-list>
<flowspec-list> ::= <FLOWSPEC> [<flowspec-list>]
9.4. PCReq Message ๐โโ๏ธ
the PCReq message is defined in [RFC5440] and updated in [RFC8231]; it gets further updated below for a Flow Specification ๐
<PCReq Message>::= <Common Header>
[<svec-list>]
<request-list>
Where:
<svec-list>::= <SVEC>[<svec-list>]
<request-list>::= <request>[<request-list>]
<request>::= <RP>
<END-POINTS>
[<LSP>]
[<LSPA>]
[<BANDWIDTH>]
[<metric-list>]
[<RRO>[<BANDWIDTH>]]
[<IRO>]
[<LOAD-BALANCING>]
[<flowspec-list>]
Where:
<flowspec-list> ::= <FLOWSPEC> [<flowspec-list>]
9.5. PCRep Message ๐ฌ
the PCRep message is defined in [RFC5440] and updated in [RFC8231]; it gets further updated below for a Flow Specification ๐ธ
<PCRep Message> ::= <Common Header>
<response-list>
Where:
<response-list>::=<response>[<response-list>]
<response>::=<RP>
[<LSP>]
[<NO-PATH>]
[<attribute-list>]
[<path-list>]
[<flowspec-list>]
Where:
<flowspec-list> ::= <FLOWSPEC> [<flowspec-list>]
10. IANA Considerations ๐ณ๏ธโ๐
this document requests that IANA allocate code points for the protocol elements defined in it ๐ซถ
10.1. PCEP Objects ๐งพ
IANA maintains a subregistry called "PCEP Objects" within the "Path Computation Element Protocol (PCEP) Numbers" registry ๐ each PCEP object has an Object-Class and an Object-Type, and IANA has allocated new code points in this subregistry like so ๐
+====================+==========+=======================+===========+
| Object-Class Value | Name | Object-Type | Reference |
+====================+==========+=======================+===========+
| 43 | FLOWSPEC | 0: Reserved | RFC 9168 |
| | +-----------------------+-----------+
| | | 1: Flow | RFC 9168 |
| | | Specification | |
+--------------------+----------+-----------------------+-----------+
Table 3: PCEP Objects Subregistry Additions
10.1.1. PCEP FLOWSPEC Object Flag Field ๐ฉ
this document requests that a new subregistry, "FLOWSPEC Object Flag Field", gets created within the "Path Computation Element Protocol (PCEP) Numbers" registry to manage the Flag field of the FLOWSPEC object ๐ new values are to be assigned by Standards Action [RFC8126] โจ each bit should be tracked with the following qualities:
- Bit number (counting from bit 0 as the most significant bit)
- Capability description
- Defining RFC
the initial population of this registry looks like this ๐
+=====+================+===========+
| Bit | Description | Reference |
+=====+================+===========+
| 0-5 | Unassigned | |
+-----+----------------+-----------+
| 6 | LPM (L bit) | RFC 9168 |
+-----+----------------+-----------+
| 7 | Remove (R bit) | RFC 9168 |
+-----+----------------+-----------+
Table 4: Initial Contents of the
FLOWSPEC Object Flag Field
Registry
10.2. PCEP TLV Type Indicators ๐งฉ
IANA maintains a subregistry called "PCEP TLV Type Indicators" within the "Path Computation Element Protocol (PCEP) Numbers" registry ๐ IANA has made the following allocations in this subregistry ๐
+=======+=============================+===========+
| Value | Description | Reference |
+=======+=============================+===========+
| 51 | PCE-FLOWSPEC-CAPABILITY TLV | RFC 9168 |
+-------+-----------------------------+-----------+
| 52 | FLOW FILTER TLV | RFC 9168 |
+-------+-----------------------------+-----------+
Table 5: PCEP TLV Type Indicators Subregistry
Additions
10.3. Flow Specification TLV Type Indicators โจ
okay so IANA made a brand new subregistry called "PCEP Flow Specification TLV Type Indicators" ๐ and it lives inside the "Path Computation Element Protocol (PCEP) Numbers" registry. bestie, the way they sorted the number ranges is so organized ๐ญ Allocations follow these assignment policies [RFC8126]:
+=============+===================================+
| Range | Registration Procedures |
+=============+===================================+
| 0-255 | Reserved - must not be allocated. |
| | |
| | Usage mirrors the BGP Flow Spec |
| | registry [RFC8955] [RFC8956]. |
+-------------+-----------------------------------+
| 256-64506 | Specification Required |
+-------------+-----------------------------------+
| 64507-65531 | First Come First Served |
+-------------+-----------------------------------+
| 65532-65535 | Experimental Use |
+-------------+-----------------------------------+
Table 6: Registration Procedures for the PCEP
Flow Specification TLV Type Indicators
Subregistry
Lowkey the 0-255 range is reserved and mirrors the BGP Flow Spec registry, so it's not for new stuff ๐
IANA already filled this registry with the values defined in this document. They took the new values from the 256 to 64506 range, and the initial contents are:
+=======+=====================+
| Value | Meaning |
+=======+=====================+
| 256 | Route Distinguisher |
+-------+---------------------+
| 257 | IPv4 Multicast |
+-------+---------------------+
| 258 | IPv6 Multicast |
+-------+---------------------+
Table 7: Initial Contents
of the PCEP Flow
Specification TLV Type
Indicators Subregistry
10.4. PCEP Error Codes ๐
okay this one's giving error table era ๐ง IANA maintains a subregistry called "PCEP-ERROR Object Error Types and Values" inside the "Path Computation Element Protocol (PCEP) Numbers" registry. Each entry is described by Error-Type and Error-value. IANA added this assignment to the subregistry:
+============+================+=========================+===========+
| Error-Type | Meaning | Error-value | Reference |
+============+================+=========================+===========+
| 30 | FlowSpec error | 0: Unassigned | RFC 9168 |
| | +-------------------------+-----------+
| | | 1: Unsupported | RFC 9168 |
| | | FlowSpec | |
| | +-------------------------+-----------+
| | | 2: Malformed | RFC 9168 |
| | | FlowSpec | |
| | +-------------------------+-----------+
| | | 3: Unresolvable | RFC 9168 |
| | | Conflict | |
| | +-------------------------+-----------+
| | | 4: Unknown | RFC 9168 |
| | | FlowSpec | |
| | +-------------------------+-----------+
| | | 5: Unsupported | RFC 9168 |
| | | LPM Route | |
| | +-------------------------+-----------+
| | | 6-255: | RFC 9168 |
| | | Unassigned | |
+------------+----------------+-------------------------+-----------+
Table 8: PCEP-ERROR Object Error Types and Values Subregistry
Additions
so error-type 30 is the FlowSpec error family, and it has codes 0 through 5 plus a catch-all for 6-255 ๐ซถ
10.5. PCE Capability Flag ๐ฆ
IANA registered a brand new capability bit in the OSPF Parameters "Path Computation Element (PCE) Capability Flags" registry, like this:
+=====+========================+===========+
| Bit | Capability Description | Reference |
+=====+========================+===========+
| 16 | FlowSpec | RFC 9168 |
+-----+------------------------+-----------+
Table 9: Path Computation Element (PCE)
Capability Flags Registry Additions
11. Security Considerations ๐
okay bestie, this part is serious, so let's be serious ๐ญ We may assume that a system using a remote PCE is exposed to a bunch of vulnerabilities. Someone could sneak in spurious LSPs or SR paths, or mess with paths that already exist and tear them down. So those systems apply the security considerations in [RFC5440], Section 2.5 of [RFC6952], [RFC8253], and [RFC8955] ๐ก๏ธ
Flow Specifications attached to paths that a PCE sets up or controls add one more detail that could be attacked. The attacker doesn't even have to tear down any LSPs or SR paths. They just misroute traffic inside the network ๐ So using the PCEP security mechanisms referenced above really matters.
Seeing the information carried in PCEP doesn't directly raise privacy concerns for end users' data ๐ but knowing how data gets routed can make that data more vulnerable. And being able to interfere with routing makes the data more vulnerable too. Also, knowing the connected endpoints (like multicast receivers or VPN sites) is usually treated as private customer info. So implementations or deployments that care about privacy MUST apply the mechanisms in the documents referenced above. In particular they MUST secure the PCEP session with IPsec per Sections 10.4 to 10.6 of [RFC5440] or with TLS per [RFC8253]. Heads up: TCP-MD5 security, as first suggested in [RFC5440], doesn't give enough security or privacy guarantees, so it SHOULD NOT be relied upon ๐ซ
Experience with Flow Specifications in BGP systems shows they can get complicated, and overlapping Flow Specifications installed in different orders can lead to unexpected results ๐ตโ๐ซ This isn't a security issue on its own, but the confusion and weird forwarding behavior could be engineered or exploited by an attacker. The complexity might also open gaps in monitoring and inspection of particular traffic, or create a path that avoids expected mitigations. So implementers and operators SHOULD pay careful attention to the manageability considerations in Section 12 and get familiar with the careful explanations in [RFC8955] ๐
12. Manageability Considerations ๐ง
The feature from this document makes networks run with a PCE and PCEP way more manageable ๐ With a stateful active PCE or PCE-initiated services, and without this feature, you'd need extra manual configuration to tell head ends what traffic to put on the network services (LSPs, SR paths, etc.).
This section follows the advice and guidance of [RFC6123] ๐
12.1. Management of Multiple Flow Specifications ๐
Experience with Flow Specification in BGP suggests there can be a lot of complexity when two or more Flow Specifications overlap ๐ฉ This can happen with addresses given as prefixes, for example, and it could cause confusion about which traffic should go on which path. Unlike a distributed routing system, it isn't important for routing stability and consistency that every head-end implementation applies the same rules to sort out overlapping Flow Specifications. What does matter is:
- a network operator can easily find out what traffic is being placed on which path and why. This will make analyzing the network and diagnosing faults way easier.
- a PCE be able to correctly predict the effect of instructions it gives to a PCC. This will make sure traffic lands correctly on the network without causing congestion or other network inefficiencies, and that traffic is delivered correctly.
So, a PCC MUST let an operator view the Flow Specifications it has installed. These MUST be presented in order of precedence, so when two Flow Specifications overlap, the one that gets serviced with higher precedence shows up first for the operator ๐
A discussion of precedence ordering for Flow Specifications is in Section 8.7 ๐ฆ
12.2. Control of Function through Configuration and Policy โญ
Supporting the function in this document means a functional element that can ask a PCE to compute and control a path can also configure the specification of what traffic goes on that path โจ If a human is involved, the Flow Specification configuration must be available through an interface, like a graphical user interface or a Command Line Interface. If a separate software component (one not co-implemented with the PCE) is used, there will need to be a protocol mechanism, which could be PCEP itself or a data model like extensions to the YANG model for requesting path computation [TEAS-YANG-PATH] ๐ธ
Implementations MAY be built with a configurable switch that says whether they support the functions defined in this document. Otherwise, such implementations MUST indicate that they support the function as described in Section 4. If an implementation lets you configure support for this function, that support MAY be configurable per peer or once for the whole implementation ๐
as mentioned in Section 12.1, a PCE implementation SHOULD provide a mechanism to configure variations in the precedence ordering of Flow Specifications per PCC ๐
12.3. Information and Data Models ๐
The YANG model in [PCE-PCEP-YANG] can be used to model and monitor PCEP states and messages. To make that YANG model useful for the extensions in this document, it would need to be augmented to cover the new protocol elements ๐
Similarly, as noted in Section 12.2, the YANG model defined in [TEAS-YANG-PATH] could be extended to allow specifying Flow Specifications ๐ง
Finally, as mentioned in Section 12.1, a PCC implementation SHOULD provide a mechanism that lets an operator read the Flow Specifications from a PCC and understand the order they'll be executed in. This could be done with a new YANG model ๐ซถ
12.4. Liveness Detection and Monitoring ๐
The extensions in this document don't need any extra liveness detection and monitoring support. For more info, check out [RFC5440] and [RFC5886] ๐
12.5. Verifying Correct Operation ๐
The big thing to verify (on top of the protocol elements described in [RFC5440]) is the installation, precedence, and correct operation of the Flow Specifications at a PCC ๐ฏ
Besides the YANG model for reading Flow Specifications from Section 12.3, you might need tools that inject Operations and Management (OAM) traffic at the PCC matching specific criteria, so it can be monitored while traveling along the desired path. Those tools are outside the scope of this document ๐งโโ๏ธ
12.6. Requirements for Other Protocols and Functional Components ๐ท
This document places no requirements on other protocols or components. Totally chill, no homework for anyone else ๐ ๐
12.7. Impact on Network Operation ๐ฆ
okay so this one is lowkey the most reassuring bit ๐ฅน using these features does have a big effect on network traffic, because it makes traffic take specific paths through the network. BUT in practice nothing changes about how the network actually runs, since the traffic is already being placed on those paths by some configuration mechanism that already exists ๐ค๏ธ so the real win is that fewer mechanisms have to be applied, not that traffic gets passed through the network any differently. main character energy for simplicity ๐ โจ
13. References ๐
13.1. Normative References
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
- [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February 2006, <https://www.rfc-editor.org/info/rfc4364>.
- [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, "Multiprotocol Extensions for BGP-4", RFC 4760, DOI 10.17487/RFC4760, January 2007, <https://www.rfc-editor.org/info/rfc4760>.
- [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation Element (PCE) Communication Protocol (PCEP)", RFC 5440, DOI 10.17487/RFC5440, March 2009, <https://www.rfc-editor.org/info/rfc5440>.
- [RFC5511] Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax Used to Form Encoding Rules in Various Routing Protocol Specifications", RFC 5511, DOI 10.17487/RFC5511, April 2009, <https://www.rfc-editor.org/info/rfc5511>.
- [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
- [RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE", RFC 8231, DOI 10.17487/RFC8231, September 2017, <https://www.rfc-editor.org/info/rfc8231>.
- [RFC8232] Crabbe, E., Minei, I., Medved, J., Varga, R., Zhang, X., and D. Dhody, "Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE", RFC 8232, DOI 10.17487/RFC8232, September 2017, <https://www.rfc-editor.org/info/rfc8232>.
- [RFC8253] Lopez, D., Gonzalez de Dios, O., Wu, Q., and D. Dhody, "PCEPS: Usage of TLS to Provide a Secure Transport for the Path Computation Element Communication Protocol (PCEP)", RFC 8253, DOI 10.17487/RFC8253, October 2017, <https://www.rfc-editor.org/info/rfc8253>.
- [RFC8281] Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model", RFC 8281, DOI 10.17487/RFC8281, December 2017, <https://www.rfc-editor.org/info/rfc8281>.
- [RFC8955] Loibl, C., Hares, S., Raszuk, R., McPherson, D., and M. Bacher, "Dissemination of Flow Specification Rules", RFC 8955, DOI 10.17487/RFC8955, December 2020, <https://www.rfc-editor.org/info/rfc8955>.
- [RFC8956] Loibl, C., Ed., Raszuk, R., Ed., and S. Hares, Ed., "Dissemination of Flow Specification Rules for IPv6", RFC 8956, DOI 10.17487/RFC8956, December 2020, <https://www.rfc-editor.org/info/rfc8956>.
13.2. Informative References
- [BGP-L2VPN] Hao, W., Eastlake, D. E., Litkowski, S., and S. Zhuang, "BGP Dissemination of L2 Flow Specification Rules", Work in Progress, Internet-Draft, draft-ietf-idr-flowspec-l2vpn-18, 24 October 2021, <https://datatracker.ietf.org/doc/html/draft-ietf-idr-flowspec-l2vpn-18>.
- [NUMERIC-IDS-SEC] Gont, F. and I. Arce, "Security Considerations for Transient Numeric Identifiers Employed in Network Protocols", Work in Progress, Internet-Draft, draft-gont-numeric-ids-sec-considerations-06, 5 December 2020, <https://datatracker.ietf.org/doc/html/draft-gont-numeric-ids-sec-considerations-06>.
- [PCE-PCEP-YANG] Dhody, D., Hardwick, J., Beeram, V. P., and J. Tantsura, "A YANG Data Model for Path Computation Element Communications Protocol (PCEP)", Work in Progress, Internet-Draft, draft-ietf-pce-pcep-yang-17, 23 October 2021, <https://datatracker.ietf.org/doc/html/draft-ietf-pce-pcep-yang-17>.
- [RFC4655] Farrel, A., Vasseur, J.-P., and J. Ash, "A Path Computation Element (PCE)-Based Architecture", RFC 4655, DOI 10.17487/RFC4655, August 2006, <https://www.rfc-editor.org/info/rfc4655>.
- [RFC5088] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. Zhang, "OSPF Protocol Extensions for Path Computation Element (PCE) Discovery", RFC 5088, DOI 10.17487/RFC5088, January 2008, <https://www.rfc-editor.org/info/rfc5088>.
- [RFC5089] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. Zhang, "IS-IS Protocol Extensions for Path Computation Element (PCE) Discovery", RFC 5089, DOI 10.17487/RFC5089, January 2008, <https://www.rfc-editor.org/info/rfc5089>.
- [RFC5886] Vasseur, JP., Ed., Le Roux, JL., and Y. Ikejiri, "A Set of Monitoring Tools for Path Computation Element (PCE)-Based Architecture", RFC 5886, DOI 10.17487/RFC5886, June 2010, <https://www.rfc-editor.org/info/rfc5886>.
- [RFC6123] Farrel, A., "Inclusion of Manageability Sections in Path Computation Element (PCE) Working Group Drafts", RFC 6123, DOI 10.17487/RFC6123, February 2011, <https://www.rfc-editor.org/info/rfc6123>.
- [RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, <https://www.rfc-editor.org/info/rfc6952>.
- [RFC7399] Farrel, A. and D. King, "Unanswered Questions in the Path Computation Element Architecture", RFC 7399, DOI 10.17487/RFC7399, October 2014, <https://www.rfc-editor.org/info/rfc7399>.
- [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>.
- [RFC8283] Farrel, A., Ed., Zhao, Q., Ed., Li, Z., and C. Zhou, "An Architecture for Use of PCE and the PCE Communication Protocol (PCEP) in a Network with Central Control", RFC 8283, DOI 10.17487/RFC8283, December 2017, <https://www.rfc-editor.org/info/rfc8283>.
- [RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., and J. Hardwick, "Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing", RFC 8664, DOI 10.17487/RFC8664, December 2019, <https://www.rfc-editor.org/info/rfc8664>.
- [TEAS-YANG-PATH] Busi, I., Belotti, S., Lopez, V., Sharma, A., and Y. Shi, "YANG Data Model for requesting Path Computation", Work in Progress, Internet-Draft, draft-ietf-teas-yang-path-computation-16, 6 September 2021, <https://datatracker.ietf.org/doc/html/draft-ietf-teas-yang-path-computation-16>.
Acknowledgements ๐ซถ
big thank you to Julian Lucek, Sudhir Cheruathur, Olivier Dugeon, Jayant Agarwal, Jeffrey Zhang, Acee Lindem, Vishnu Pavan Beeram, Julien Meuric, Deborah Brungard, รric Vyncke, Erik Kline, Benjamin Kaduk, Martin Duke, Roman Danyliw, and Alvaro Retana for the useful discussions and comments ๐ you all made this so much better ๐ธ
Contributors ๐
these lovelies helped write it, bestie ๐
Shankara
Huawei Technologies
Divyashree Techno Park, Whitefield
Bangalore 560066
Karnataka
India
Email: shankara@huawei.com
Qiandeng Liang
Huawei Technologies
Yuhuatai District
101 Software Avenue,
Nanjing, 210012
China
Email: liangqiandeng@huawei.com
Cyril Margaria
Juniper Networks
200 Somerset Corporate Boulevard, Suite 4001
Bridgewater, NJ 08807
United States of America
Email: cmargaria@juniper.net
Colby Barth
Juniper Networks
200 Somerset Corporate Boulevard, Suite 4001
Bridgewater, NJ 08807
United States of America
Email: cbarth@juniper.net
Xia Chen
Huawei Technologies
Huawei Bld., No. 156 Beiqing Rd.
Beijing, 100095
China
Email: jescia.chenxia@huawei.com
Shunwan Zhuang
Huawei Technologies
Huawei Bld., No. 156 Beiqing Rd.
Beijing, 100095
China
Email: zhuangshunwan@huawei.com
Cheng Li
Huawei Technologies
Huawei Campus, No. 156 Beiqing Rd.
Beijing, 100095
China
Email: c.l@huawei.com
Authors' Addresses ๐ง
where to find the people who wrote this ๐
Dhruv Dhody
Huawei Technologies
Divyashree Techno Park, Whitefield
Bangalore 560066
Karnataka
India
Email: dhruv.ietf@gmail.com
Adrian Farrel
Old Dog Consulting
Email: adrian@olddog.co.uk
Zhenbin Li
Huawei Technologies
Huawei Bldg., No. 156 Beiqing Rd.
Beijing
100095
China
Email: lizhenbin@huawei.com
๐ฆ where this page comes from
- ietf: rfc9168 2022-01
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms