RFC 7150
Conveying Vendor-Specific Constraints in the Path Computation Element Communication Protocol
Conveying Vendor-Specific Constraints in the Path Computation Element Communication Protocol ๐
Okay bestie, this is RFC 7150 ๐, and it's an IETF Standards Track document from March 2014 โจ. F. Zhang from Huawei and A. Farrel from Juniper Networks wrote it, and it's listed under ISSN 2070-1721 ๐. The header doesn't list anything it obsoletes or updates, so there's no drama there ๐ .
Part 1 of 2 ๐ฆ
Abstract ๐
The Path Computation Element communication Protocol (PCEP) is how path computation requests and responses get passed around ๐ง. It moves them between Path Computation Clients (PCCs) and Path Computation Elements (PCEs), and between cooperating PCEs too. The requests carry all the constraints and objective functions the PCC wants the PCE to use.
This doc adds a facility for carrying vendor-specific info in PCEP ๐ . It uses a dedicated object and a brand-new Type-Length-Variable (TLV) that can ride along in any existing PCEP object. Main character energy โจ.
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). More info on Internet Standards is in Section 2 of RFC 5741.
Want the current status, any errata, or a way to send feedback? Check http://www.rfc-editor.org/info/rfc7150 ๐ซถ.
Copyright Notice ๐ฅ
Copyright (c) 2014 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 (http://trustee.ietf.org/license-info) as in effect on the date of publication of this document. Please read these carefully, because they spell out your rights and restrictions for this document ๐. Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License ๐.
1. Introduction โจ
A Path Computation Element (PCE) is an entity (a component, an application, or a network node) that can compute a network path or route from a network graph and apply computational constraints ๐ง . The architecture for using PCEs is defined in [RFC4655].
PCEP is defined in [RFC5440] for swapping path computation requests and responses between PCCs and PCEs. Cooperating PCEs use it too ๐ฅ.
So PCE computations depend on a set of constraints from the PCC ๐ . Those include the endpoints of the path (source and destination). They can also include simpler stuff like bandwidth requirements and metric maxima, for example a maximum threshold for the hop count or the Traffic Engineering (TE) metric of the computed path ๐.
The PCE also needs an objective function to decide that the path it picks actually meets the PCC's requirements ๐ฏ. The PCE might have a default one, but the PCC can ask for a specific one by putting an Objective Function object in the path computation request message [RFC5541]. The base PCEP requirements [RFC4657] define a core set of objective functions to be supported in PCEP messages, and [RFC5541] defines each of those functions as an abstract formula ๐งฎ.
IANA manages the registry of codepoints used to indicate objective functions. New assignments can be made under the "IETF Review" and "First Come First Served" policies [RFC5226] ๐. PCE implementations can also offer proprietary, vendor-specific objective functions. There's room for that in the codepoint registry created by [RFC5541], using the codepoints flagged as "Reserved for Private Use" ๐ฆ.
Proprietary objective functions might work on non-standard constraints or metrics ๐ธ. PCEP's METRIC Object from [RFC5440] can define new, standardized metrics, but it has no way to define vendor-specific ones. And there's no mechanism in PCEP for carrying other, more complex, vendor-specific info either ๐ญ.
This document defines a new PCEP object, the Vendor Information object ๐. It carries arbitrary, proprietary info such as vendor-specific constraints.
This document also defines a new PCEP TLV, the VENDOR-INFORMATION-TLV ๐. It carries arbitrary info within any PCEP object that supports TLVs.
Heads up, bestie: by the very definition of "vendor-specific", using either a Vendor Information object or the VENDOR-INFORMATION-TLV means you can't interoperate at a functional level with other vendors' implementations, unless there's a cooperation agreement between the vendors ๐. Sections 2.1 and 3.1 cover backward compatibility, which explains how these constructs get handled by implementations that don't support them at all. The text in Sections 2 and 3 explains how implementations handle the constructs if they understand them but don't support the embedded Enterprise Number that says which vendor the constructs apply to.
If an implementation uses vendor-specific info, the vendor is encouraged to document what it means so more people can use and implement it ๐. And when there's broader interest in a vendor-specific extension, the vendor is encouraged to bring it to the IETF for standardization as a regular protocol construct, moving it out of the vendor-specific space ๐.
1.1. Conventions Used in This Document ๐
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 [RFC2119] ๐.
2. Procedures for the Vendor Information Object ๐ฆ
A PCC that wants to send proprietary or vendor-specific constraints or metrics to a PCE does it by including a Vendor Information object in the PCReq message ๐. Section 4 describes the object's contents and format. The important bit is that the object has an Enterprise Number, which is a unique identifier for the organization responsible for defining the content and meaning of the object ๐ข.
A PCE that receives a PCReq message containing a Vendor Information object MUST act according to the P flag in the object header ๐ฆ. That means if the P flag is set, the object gets treated as mandatory, and the request will either be processed using the object's contents or be rejected as defined in [RFC5440] (see also Section 2.1). If the P flag is clear, then, as defined in [RFC5440], the PCE may use the object or may ignore it. The PCC sets the P flag based on how it wants the request handled ๐.
The PCE works out how to interpret the info in the Vendor Information object by checking the Enterprise Number inside it ๐. An implementation that supports the Vendor Information object, but gets one with an Enterprise Number it doesn't support, MUST act according to the P flag in the object. So if the P flag is set, the PCE MUST reject the PCReq, as defined in [RFC5440], by sending an Error message with Error-Type="Not supported Object" along with the corresponding Vendor Information object ๐ค.
The Vendor Information object is OPTIONAL in a PCReq message ๐ธ. Multiple instances of the object MAY be used in a single PCReq message, and each one MUST be treated according to its P-bit setting. Different instances can have different Enterprise Numbers ๐.
The object can show up in a PCReq message to apply to a single path computation request or to a set of synchronized requests ๐งฉ. This usage mirrors how the Objective Function object is used [RFC5541]. So the PCReq message based on [RFC6006] gets encoded as follows, using the syntax described in [RFC5511] ๐งพ.
<PCReq Message> ::= <Common Header>
[<svec_list>]
<request-list>
where
<svec-list> ::= <SVEC>
[<OF>]
[<GC>]
[<XRO>]
[<metric-list>]
[<vendor-info-list>]
[<svec-list>]
<metric-list> ::= <METRIC>
[<metric-list>]
<vendor-info-list> ::= <VENDOR-INFORMATION>
[<vendor-info-list>]
<request-list> ::= <request>
[<request-list>]
<request> ::= <RP>
[<vendor-info-list>]
<end-point-rro-pair-list>
[<LSPA>]
[<BANDWIDTH>]
[<metric-list>]
[<OF>]
[<RRO>]
[<IRO>]
[<LOAD-BALANCING>]
where
<end-point-rro-pair-list> ::= <END-POINTS>
[<RRO-List>]
[<BANDWIDTH>]
[<vendor-info-list>]
[<end-point-rro-pair-list>]
<RRO-List> ::= <RRO> [<BANDWIDTH>] [<RRO-List>]
<metric-list> ::= <METRIC> [<metric-list>]
The Vendor Information object can go in a PCRep message in exactly the same way as any other object defined in [RFC5440] ๐ฌ. So the PCRep gets encoded like this:
<PCRep Message> ::= <Common Header>
<response>
<response> ::= <RP>
[<vendor-info-list>]
[<end-point-path-pair-list>]
[<NO-PATH>]
[<attribute-list>]
where:
<end-point-path-pair-list> ::=
[<END-POINTS>]
<path>
[<vendor-info-list>]
[<end-point-path-pair-list>]
<path> ::= (<ERO>|<SERO>) [<path>]
<attribute-list> ::= [<OF>]
[<LSPA>]
[<BANDWIDTH>]
[<metric-list>]
[<IRO>]
2.1. Backward Compatibility for the Vendor Information Object ๐ธ
A legacy implementation that doesn't recognize the Vendor Information object will act according to the procedures in [RFC5440] ๐ฐ๏ธ. If the P flag is set in the object, the message gets rejected using a PCErr message with an Error Type of 3 ("Unknown Object") ๐ซ. If the P flag isn't set, the recipient can safely ignore the object ๐ซถ.
3. Procedures for the Vendor Information TLV ๐
The Vendor Information TLV carries vendor-specific info that applies to a specific PCEP object. You include the TLV in that object to do it ๐ง.
The PCE works out how to interpret the Vendor Information TLV by checking the Enterprise Number inside it ๐. If the PCE doesn't know that Enterprise Number, it MUST treat the Vendor Information TLV as an unknown TLV and handle it as described in [RFC5440] (see also Section 3.1) ๐ โโ๏ธ.
Further specifications are needed to define the position and meaning of the Vendor Information TLV for specific PCEP objects ๐โจ.
3.1. Backward Compatibility ๐ฆ
okay so, old-school implementations that don't recognize the Vendor Information TLV in an object just follow the procedures in [RFC5440] ๐ and as described in Section 7.1 of [RFC5440], unrecognized TLVs MUST be ignored. so they just skip it, no drama ๐ซถ
4. Protocol Elements ๐ง
bestie, the Vendor Information object and TLV follow the same format rules for PCEP objects and TLVs that are defined in [RFC5440] โจ here's the lineup:
VENDOR-INFORMATION Object-Class 32
VENDOR-INFORMATION Object-Type 1
VENDOR-INFORMATION-TLV Type 7
the object and the TLV have the exact same format ๐ it looks like this:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Enterprise Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Enterprise-Specific Information ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1 : Format of the Vendor Information Object and TLV ๐ธ
Enterprise Number ๐ธ this is a unique identifier of an organization, encoded as a 32-bit integer. Enterprise Numbers are assigned by IANA and managed through an IANA registry [RFC2578]. literally the org's ID card ๐ชช
Enterprise-Specific Information ๐ this is the detailed, enterprise-specific constraint info the object carries. the format and how to interpret it is up to the enterprise named by the Enterprise Number. those enterprises can publish these details (maybe in an Informational RFC or in commercial docs) so that PCCs or PCEs outside the organization can use the info too ๐
5. IANA Considerations ๐
IANA keeps a registry of PCEP parameters called the "Path Computation Element Protocol (PCEP) Numbers" ๐๏ธ
5.1. New PCEP Object โญ
IANA made an allocation from the "PCEP Objects" subregistry, and it looks like this:
Object-Class Value Name Reference
32 VENDOR-INFORMATION [RFC7150]
Object-Type
0: Unassigned
1: Vendor-Specific Constraints [RFC7150]
2-255: Unassigned
5.2. New PCEP TLV ๐
IANA also made an allocation from the "PCEP TLV Type Indicators" subregistry:
Value Description Reference
7 VENDOR-INFORMATION-TLV [RFC7150]
6. Management Considerations ๐ท
this section follows the guidance of [RFC5706] and [RFC6123] ๐ง
6.1. Control of Function and Policy ๐๏ธ
a PCEP implementation SHOULD allow configuring of various parameters, as described in [RFC5440]. a PCC implementation that uses vendor-specific information MAY make that info configurable across the whole PCC, per PCE the PCC uses, or per path computation request. a PCE that supports vendor-specific information MAY make its support for that info configurable, and MAY allow configuration of policies for how the info gets used ๐ซง
6.2. Information and Data Models ๐
a PCEP MIB module is defined in [PCE-MIB] and describes managed objects for modeling PCEP communications ๐
it is NOT RECOMMENDED that standard MIB modules get extended to include detailed info about what's inside the Vendor Information object or TLV ๐ โโ๏ธ however, the standard MIB module MAY be extended to report the use of the Vendor Information object or TLV, and the Enterprise Numbers that those objects and TLVs contain โจ
6.3. Liveness Detection and Monitoring ๐
this document makes no change to the basic operation of PCEP, so there are no changes to the liveness detection and monitoring requirements set out in [RFC4657] and [RFC5440] ๐ซถ
6.4. Verifying Correct Operation ๐
again, this document makes no change to the basic operation of PCEP, so there are no changes to the requirements or techniques for monitoring correct operation of the protocol set out in [RFC4657] and [RFC5440] ๐
note that "correct operation" here means the operation of the protocol itself, not the operation of the computation algorithms, which are out of scope for all PCEP work ๐
mechanisms for checking that computation algorithms are working might involve comparing the results returned by more than one PCE. the scope for that might be limited by the use of vendor information, unless multiple PCEs support the same set of vendor information ๐งฉ
6.5. Requirements on Other Protocols and Functional Components ๐ช
this document doesn't put any new requirements on other network components or protocols ๐ however, it may be beneficial to consider whether a PCE should advertise the Enterprise Numbers and vendor information it supports. that advertisement could happen within PCE Discovery [RFC5088] [RFC5089] or through extensions to PCEP [RFC5440] ๐ฆ
extensions for discovery and advertisement are outside the scope of this document ๐ซ
6.6. Impact on Network Operation ๐
the availability of vendor information in PCEP messages may facilitate more complex and detailed path computations, which may enhance the way the network is operated ๐
on the other hand, the presence of extra vendor-specific information in PCEP messages may congest the operation of the protocol, especially if the PCE doesn't support the info the PCC supplied ๐ฌ so a PCC SHOULD monitor the capabilities of a PCE, either through discovery mechanisms as described in Section 6.5 or by receiving negative responses. and a PCC SHOULD NOT include vendor information in a PCReq message to a PCE that it believes doesn't support the info, and that won't forward the request to some other PCE that does support it ๐ โโ๏ธ๐
7. Security Considerations ๐จ
okay bestie, this part is serious ๐ญ the protocol extensions defined in this document do not substantially change the nature of PCEP, so the security considerations set out in [RFC5440] apply unchanged. also, further security considerations for using PCEP over TCP are presented in [RFC6952] ๐
operators should be aware that an attack on PCEP may involve making PCEP messages as large as possible, in order to eat up bandwidth and processing power. the Vendor Information object and TLV may provide a vector for this type of attack ๐ it may be protected against by using the authentication and integrity procedures described in [RFC5440] ๐ก๏ธ
8. References ๐
8.1. Normative References ๐
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5440] Vasseur, JP., Ed., and JL. Le Roux, Ed., "Path Computation Element (PCE) Communication Protocol (PCEP)", RFC 5440, March 2009.
[RFC5511] Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax Used to Form Encoding Rules in Various Routing Protocol Specifications", RFC 5511, April 2009.
[RFC6006] Zhao, Q., Ed., King, D., Ed., Verhaeghe, F., Takeda, T., Ali, Z., and J. Meuric, "Extensions to the Path Computation Element Communication Protocol (PCEP) for Point-to-Multipoint Traffic Engineering Label Switched Paths", RFC 6006, September 2010.
8.2. Informative References ๐
[RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
[RFC4655] Farrel, A., Vasseur, J.-P., and J. Ash, "A Path Computation Element (PCE)-Based Architecture", RFC 4655, August 2006.
[RFC4657] Ash, J., Ed., and J. Le Roux, Ed., "Path Computation Element (PCE) Communication Protocol Generic Requirements", RFC 4657, September 2006.
[RFC5088] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. Zhang, "OSPF Protocol Extensions for Path Computation Element (PCE) Discovery", RFC 5088, January 2008.
[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, January 2008.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
[RFC5541] Le Roux, JL., Vasseur, JP., and Y. Lee, "Encoding of Objective Functions in the Path Computation Element Communication Protocol (PCEP)", RFC 5541, June 2009.
[RFC5706] Harrington, D., "Guidelines for Considering Operations and Management of New Protocols and Protocol Extensions", RFC 5706, November 2009.
[RFC6123] Farrel, A., "Inclusion of Manageability Sections in Path Computation Element (PCE) Working Group Drafts", RFC 6123, February 2011.
[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, May 2013.
[PCE-MIB] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. Hardwick, "Path Computation Element Protocol (PCEP) Management Information Base", Work in Progress, February 2014.
9. Acknowledgements ๐ซถ
thanks to Meral Shirazipour, Ramon Casellas, Cyril Margaria, Dhruv Dhody, Julien Meuric, and Robert Sparks for reviewing and commenting ๐
10. Contributors ๐
Greg Bernstein Grotto Networking EMail: gregb@grotto-networking.com
Ina Minei Juniper Networks EMail: ina@juniper.net
Authors' Addresses ๐
Adrian Farrel Juniper Networks EMail: adrian@olddog.co.uk
Fatai Zhang Huawei Technologies EMail: zhangfatai@huawei.com
that's the whole spec, bestie ๐โจ the vibes were immaculate and the facts are all here ๐ ๐
๐ฆ where this page comes from
- ietf: rfc7150 2014-03
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms