RFC 7470

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

πŸ“… published March 2015, from ietf

Conveying Vendor-Specific Constraints in the Path Computation Element Communication Protocol πŸŽ€

okay bestie, this is RFC 7470 πŸ’– It's a Standards Track doc from the IETF, dated March 2015 (ISSN 2070-1721). The authors are F. Zhang from Huawei and A. Farrel from Juniper Networks. It obsoletes RFC 7150, and it's the official word on how to pass vendor-specific constraints through PCEP πŸ¦‹

Abstract πŸ’…

okay so PCEP is the protocol that lets path computation requests and responses fly back and forth between Path Computation Clients (PCCs) and Path Computation Elements (PCEs), and also between cooperating PCEs 🧚 In PCEP, a request spells out the constraints and objective functions the PCC wants the PCE to use when it does the math ✨

this doc adds a way to carry vendor-specific info in PCEP using a dedicated object and a brand new Type-Length-Value (TLV) that can ride along inside any PCEP object that supports TLVs 🌈

it also obsoletes RFC 7150. the only changes from that doc are a clearer explanation of how the new TLV gets used, and a different code point for the VENDOR-INFORMATION object 🫢

Status of This Memo πŸ“œ

this is an Internet Standards Track document πŸ”₯

it's a product of the Internet Engineering Task Force (IETF), so it represents the consensus of the IETF community. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). more info on Internet Standards is in Section 2 of RFC 5741 πŸ’œ

for the current status, any errata, and how to send feedback, check http://www.rfc-editor.org/info/rfc7470 πŸ“

Copyright (c) 2015 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 they stood on the publication date. please actually read these, bestie, because they spell out your rights and restrictions for this doc πŸ™ˆ 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 with no warranty, as the Simplified BSD License describes πŸŽ€

Table of Contents πŸ—ΊοΈ

   1. Introduction ....................................................3
      1.1. Conventions Used in This Document ..........................4
   2. Procedures for the Vendor Information Object ....................5
      2.1. Backward Compatibility for the Vendor Information Object ...7
   3. Procedures for the Vendor Information TLV .......................7
      3.1. Backward Compatibility .....................................8
   4. Protocol Elements ...............................................8
   5. IANA Considerations .............................................9
      5.1. New PCEP Object ............................................9
      5.2. New PCEP TLV ...............................................9
   6. Management Considerations ......................................10
      6.1. Control of Function and Policy ............................10
      6.2. Information and Data Models ...............................10
      6.3. Liveness Detection and Monitoring .........................10
      6.4. Verifying Correct Operation ...............................10
      6.5. Requirements on Other Protocols and Functional Components .11
      6.6. Impact on Network Operation ...............................11
   7. Security Considerations ........................................11
   8. References .....................................................12
      8.1. Normative References ......................................12
      8.2. Informative References ....................................12
   Acknowledgements ..................................................14
   Contributors ......................................................14
   Authors' Addresses ................................................14

1. Introduction ✨

okay so a Path Computation Element (PCE) is an entity (a component, an application, or a network node) that can work out a network path or route from a network graph while applying computational constraints 🧠 The architecture for using PCEs is defined in [RFC4655] πŸ’–

PCEP is defined in [RFC5440]. It's how PCCs and PCEs swap path computation requests and responses, and cooperating PCEs use it too πŸ¦‹

path computations depend on a set of constraints that the PCC hands over. These include the endpoints of the path (source and destination), and they may include simpler stuff like bandwidth requirements and metric maxima. For example, a max threshold for the hop count or the Traffic Engineering (TE) metric of the computed path 🌸

the PCE also needs an objective function to decide whether the path it picked actually meets the PCC's requirements πŸ‘‘ The PCE may have a default objective function, but the PCC can also say which one it wants by putting an Objective Function object in the path computation request message [RFC5541]. The base PCEP requirements in [RFC4657] define a core set of objective functions for PCEP messages, and [RFC5541] defines each of those functions as an abstract formula 🧚

the registry of codepoints for objective functions is managed by IANA. New assignments can be made under "IETF Review" and "First Come First Served" policies [RFC5226]. PCE implementations can also offer proprietary, vendor-specific objective functions, and 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. The PCEP METRIC Object defined in [RFC5440] can hold new, standardized metrics, but it has no way to define vendor-specific metrics. And PCEP has no mechanism for carrying other, more complex, vendor-specific info at all 😭

so this document defines a new PCEP object, the Vendor Information object, which can carry arbitrary proprietary info like vendor-specific constraints πŸ’…

it also defines a new PCEP TLV, the VENDOR-INFORMATION-TLV, which can carry arbitrary info inside any existing or future PCEP object that supports TLVs 🫢

bestie, real talk: by the very definition of "vendor-specific," using either a Vendor Information object or the VENDOR-INFORMATION-TLV means you won't be able to interoperate at a functional level with other vendors' implementations, unless the vendors have some kind of cooperation agreement πŸ™ˆ Sections 2.1 and 3.1 cover backward compatibility, which is how these constructs get handled by implementations that don't support them at all. Sections 2 and 3 explain how implementations handle them if they understand them but don't support the embedded Enterprise Number that says which vendor the constructs belong to.

when an implementation uses vendor-specific info, the vendor is encouraged to document what it means so more people can use and implement it πŸ“š And if there's wider interest in a vendor-specific extension, the vendor is encouraged to bring it to the IETF for standardization as a regular protocol construct, which moves it out of the vendor-specific space 🌈

this document obsoletes RFC 7150 [RFC7150] and makes two changes to it:

  • Clarification that the TLV is available for use in any PCEP object (existing or future) that supports TLVs.
  • The allocation of a different code point for the VENDOR-INFORMATION object. This change became necessary because of an inadvertent clash with codepoints used in an Internet-Draft that had been deployed without IANA allocation. The PCE working group has conducted a survey of implementations and deployments of RFC 7150 and considers that this change is safe and does not harm early implementers of RFC 7150 ✨

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 ✨

okay so a PCC that wants to send proprietary or vendor-specific constraints or metrics to a PCE does it by adding a Vendor Information object to the PCReq message πŸ’… the contents and format are in Section 4, but the big thing to know is that the object includes an Enterprise Number 🫢 that's a unique ID for the organization responsible for defining what the object's content and meaning actually are πŸ”₯

A PCE that receives a PCReq message containing a Vendor Information object MUST act according to the P flag in the object header. so if the P flag is set, the object is treated as mandatory, and the request either gets processed using the object's contents or gets rejected as defined in [RFC5440] (see also Section 2.1) πŸ¦‹ if the P flag is clear, then, as defined in [RFC5440], the object may be used by the PCE or may be ignored 🌸 the PCC sets the P flag based on how it wants the request to be processed ✨

the PCE figures out how to read the information 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 πŸ’€ rip to that request

The Vendor Information object is OPTIONAL in a PCReq message 🌈 multiple instances of the object MAY be used on 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 be in the PCReq message so it applies to a single path computation request or to a set of synchronized requests πŸ’– this usage mirrors the usage of the Objective Function object [RFC5541]. so the PCReq message based on [RFC6006] is encoded like this, 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 into a PCRep message in exactly the same way as any other object defined in [RFC5440] 🌷 so the PCRep is 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 is not set, the recipient can safely ignore the object 🫧

3. Procedures for the Vendor Information TLV 🌸

the Vendor Information TLV can carry vendor-specific information that applies to a specific PCEP object, by including the TLV in that object πŸŽ€

the PCE figures out how to interpret the Vendor Information TLV by checking the Enterprise Number inside it. if the Enterprise Number is unknown to the PCE, 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

a legacy implementation that doesn't recognize the Vendor Information TLV in an object will act according to the procedures in [RFC5440]. as described in Section 7.1 of [RFC5440], unrecognized TLVs MUST be ignored 🧹

4. Protocol Elements πŸ§šβ€β™€οΈ

the Vendor Information object and TLV follow the format for PCEP objects and TLVs defined in [RFC5440] πŸ’œ

VENDOR-INFORMATION Object-Class 34

VENDOR-INFORMATION Object-Type 1

VENDOR-INFORMATION-TLV Type 7

the VENDOR-INFORMATION object and the VENDOR-INFORMATION-TLV have the same format, 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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                       Enterprise Number                       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ~                 Enterprise-Specific Information               ~
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 1 : Format of the Vendor Information Object and TLV

Enterprise Number

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] 🏒

Enterprise-Specific Information

The detailed enterprise-specific constraint information carried by the object. The format and interpretation of this information is a matter for the enterprise identified by the Enterprise Number. Such formats and interpretation may be published by the enterprise (possibly through an Informational RFC or through commercial documentation) so that PCCs or PCEs that are not part of the organization can use the information πŸ“š

5. IANA Considerations 🌈

IANA maintains a registry of PCEP parameters called the "Path Computation Element Protocol (PCEP) Numbers" πŸ—‚οΈ

5.1. New PCEP Object

IANA had previously allocated the value 32 from the "PCEP Objects" subregistry for use as the VENDOR-INFORMATION object. IANA has released that value and marked it as "Unassigned" 🫠

IANA has assigned a new value as follows:

Object-Class Value     Name                               Reference
    34                 VENDOR-INFORMATION                 RFC 7470
           Object-Type
             0: Unassigned
             1: Vendor-Specific Constraints               RFC 7470
             2-15: Unassigned

5.2. New PCEP TLV

IANA had made an allocation from the "PCEP TLV Type Indicators" subregistry, where RFC 7150 was the reference. IANA has updated the reference to point to this document πŸ”

Value       Description                                   Reference
  7         VENDOR-INFORMATION-TLV                        RFC 7470

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 the use of this information configurable, either across the whole PCC, per PCE that the PCC uses, or per path computation request. A PCE that supports vendor-specific information MAY make the support of this information configurable, and MAY allow configuration of policies for the use of the information πŸŽ›οΈ

6.2. Information and Data Models

A PCEP MIB module is defined in [RFC7420] that describes managed objects for modeling PCEP communications πŸ“Š

It is NOT RECOMMENDED that standard MIB modules be extended to include detailed information about the content of 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 the 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 requirements for liveness detection and monitoring set out in [RFC4657] and [RFC5440] πŸ’–

6.4. Verifying Correct Operation

This document makes no change to the basic operation of PCEP, so there are no changes to the requirements or techniques for monitoring the correct operation of the protocol set out in [RFC4657] and [RFC5440] πŸ”

Note that "correct operation" in this context refers to the operation of the protocol itself, and not to the operation of the computation algorithms, which are out of scope for all PCEP work 🚫

Mechanisms for verifying the correct operation of computation algorithms might involve comparing the results returned by more than one PCE. Scope for this 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 does not place 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. This advertisement could be 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 additional vendor-specific information in PCEP messages may congest the operation of the protocol, especially if the PCE does not support the information supplied by the PCC. Thus, a PCC SHOULD monitor the capabilities of a PCE either by discovery mechanisms as described in Section 6.5 or through the receipt of negative responses. A PCC SHOULD NOT include vendor information in a PCReq message to a PCE that it believes does not support the information and that will not forward the request to some other PCE that does support the information 🫣

7. Security Considerations ✨

okay bestie, security time πŸ”’πŸ˜­ the big news is that these extensions don't really change what PCEP is, so the security considerations in [RFC5440] apply unchanged πŸ’… no need to reinvent the wheel. if you want the extra juicy details about PCEP over TCP, go check [RFC6952] 🧚

now the lowkey scary part πŸ’€ operators should note that an attack on PCEP may involve making PCEP messages as large as possible so the attacker can eat up bandwidth and processing power. the Vendor Information object and TLV may provide a vector for this type of attack πŸ™ˆ the good news is it may be protected against by using the authentication and integrity procedures described in [RFC5440] πŸ” so turn those on, periodt πŸ’–


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,
           <http://www.rfc-editor.org/info/rfc2119>.

[RFC5440]  Vasseur, JP., Ed., and JL. Le Roux, Ed., "Path Computation
           Element (PCE) Communication Protocol (PCEP)", RFC 5440,
           March 2009, <http://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, April 2009,
           <http://www.rfc-editor.org/info/rfc5511>.

[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,
           <http://www.rfc-editor.org/info/rfc6006>.

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,
           <http://www.rfc-editor.org/info/rfc2578>.

[RFC4655]  Farrel, A., Vasseur, J.-P., and J. Ash, "A Path
           Computation Element (PCE)-Based Architecture", RFC 4655,
           August 2006, <http://www.rfc-editor.org/info/rfc4655>.

[RFC4657]  Ash, J., Ed., and J. Le Roux, Ed., "Path Computation
           Element (PCE) Communication Protocol Generic
           Requirements", RFC 4657, September 2006,
           <http://www.rfc-editor.org/info/rfc4657>.

[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,
           <http://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, January 2008,
           <http://www.rfc-editor.org/info/rfc5089>.

[RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
           IANA Considerations Section in RFCs", BCP 26, RFC 5226,
           May 2008, <http://www.rfc-editor.org/info/rfc5226>.

[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,
           <http://www.rfc-editor.org/info/rfc5541>.

[RFC5706]  Harrington, D., "Guidelines for Considering Operations and
           Management of New Protocols and Protocol Extensions", RFC
           5706, November 2009,
           <http://www.rfc-editor.org/info/rfc5706>.

[RFC6123]  Farrel, A., "Inclusion of Manageability Sections in Path
           Computation Element (PCE) Working Group Drafts", RFC 6123,
           February 2011, <http://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, May 2013,
           <http://www.rfc-editor.org/info/rfc6952>.

[RFC7150]  Zhang, F. and A. Farrel, "Conveying Vendor-Specific
           Constraints in the Path Computation Element Communication
           Protocol", RFC 7150, March 2014,
           <http://www.rfc-editor.org/info/rfc7150>.

[RFC7420]  Koushik, A., Stephan, E., Zhao, Q., King, D., and J.
           Hardwick, "Path Computation Element Communication Protocol
           (PCEP) Management Information Base (MIB) Module", RFC
           7420, December 2014,
           <http://www.rfc-editor.org/info/rfc7420>.

Acknowledgements πŸ’œ

huge thank-yous 🫢 to Meral Shirazipour, Ramon Casellas, Cyril Margaria, Dhruv Dhody, Julien Meuric, and Robert Sparks for reviewing and commenting on the work that became RFC 7150. the squad showed up πŸ‘‘

also big love to Robert Varga for flagging the clashing code point issue, and to Dhruv Dhody for helping clarify how the TLV is used ✨

Contributors πŸŽ€

these lovely people contributed to the document 🌸

Greg Bernstein
Grotto Networking
EMail: gregb@grotto-networking.com

Ina Minei
Juniper Networks
EMail: ina@juniper.net

Authors' Addresses πŸ¦‹

and here's where you can find the authors πŸ’…

Adrian Farrel
Juniper Networks
EMail: adrian@olddog.co.uk

Fatai Zhang
Huawei Technologies
EMail: zhangfatai@huawei.com
πŸ“¦ where this page comes from