RFC 7150

Conveying Vendor-Specific Constraints in the Path Computation Element Communication Protocol

๐Ÿ“… published March 2014, from ietf

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 (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