RFC 5455

Diffserv-Aware Class-Type Object for the Path Computation Element Communication Protocol

πŸ“… published March 2009, from ietf

RFC 5455: Diffserv-Aware Class-Type Object for the Path Computation Element Communication Protocol πŸ’–

Okay bestie, let's talk about RFC 5455 πŸŽ€ It's a Standards Track spec from March 2009. The authors are S. Sivabalan (editor), J. Parker, and S. Boutros from Cisco Systems, Inc., plus K. Kumaki from KDDI R&D Laboratories, Inc. Its title block doesn't list any RFCs it obsoletes or updates, so it stands on its own ✨

Status of This Memo ✨

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright (c) 2009 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 in effect on the date of publication of this document (http://trustee.ietf.org/license-info). Please review these documents carefully, as they describe your rights and restrictions with respect to this document.

This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English.

Abstract πŸ¦‹

This document specifies a CLASSTYPE object to support Diffserv-Aware Traffic Engineering (DS-TE) where path computation is performed with the aid of a Path Computation Element (PCE).

Table of Contents 🧚

   1. Introduction ....................................................2
      1.1. Conventions Used in This Document ..........................3
   2. Terminology .....................................................3
   3. CLASSTYPE Object ................................................3
      3.1. Object Definition ..........................................4
      3.2. Path Computation Request Message with CLASSTYPE Object .....4
      3.3. Processing CLASSTYPE Object ................................5
      3.4. Determination of Traffic Engineering Class (TE-Class) ......6
      3.5. Significance of Class-Type and TE-Class ....................6
      3.6. Error Codes for CLASSTYPE Object ...........................6
   4. Security Considerations .........................................7
   5. IANA Considerations .............................................7
   6. Acknowledgments .................................................7
   7. References ......................................................8
      7.1. Normative References .......................................8
      7.2. Informative References .....................................8

1. Introduction ✨

Okay so, [RFC5440] is the one that specifies the Path Computation Element Communication Protocol (PCEP). It's for talking between a Path Computation Client (PCC) and a Path Computation Element (PCE), or between two PCEs, and it follows [RFC4657] πŸ’…

Diffserv-aware MPLS Traffic Engineering (DS-TE) is all about enforcing different bandwidth constraints for different classes of traffic πŸ”₯ Instead of treating everything as one big aggregate, it gives you per-class traffic engineering by enforcing Bandwidth Constraints (BCs) on each class. The requirements for DS-TE are in [RFC3564], and the protocol extensions for it are in [RFC4124] 🌈

Here's the tea β˜• PCEP has to support the traffic Class-Type as an MPLS-TE-specific constraint, per [RFC4657]. But right now, PCEP [RFC5440] can't actually specify the Class-Type in a path computation request. Not me being like "wait, that's a gap" πŸ’€

So this document defines a brand new PCEP object called CLASSTYPE πŸŽ€ It carries the Class-Type of the TE LSP inside the path computation request. Then, during path computation, a PCE uses that Class-Type to figure out the bandwidth constraint of the TE LSP. Main character energy for this object, honestly ✨

1.1. Conventions Used in This Document πŸ’œ

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].

2. Terminology πŸ“

Here's the vocab you need, bestie πŸ“š

CT (Class-Type): A set of Traffic Trunks governed by a set of bandwidth constraints. It's used for link bandwidth allocation, constraint-based routing, and admission control. A given Traffic Trunk belongs to the same CT on all links.

DS-TE: Diffserv-Aware Traffic Engineering.

LSR: Label Switching Router.

LSP: Label Switched Path.

PCC (Path Computation Client): Any client application that asks for a path computation to be performed by a Path Computation Element.

PCE (Path Computation Element): An entity (a component, an application, or a network node) that can compute a network path or route based on a network graph and apply computational constraints. Iconic ✨

PCEP Peer: An element involved in a PCEP session, meaning a PCC or the PCE.

TE-Class: A pair made of a Class-Type and a preemption priority that's allowed for that Class-Type. An LSP carrying a Traffic Trunk from that Class-Type can use that preemption priority as its setup priority, its holding priority, or both πŸ¦‹

TE LSP: Traffic Engineering Label Switched Path.

Traffic Trunk: An aggregation of traffic flows of the same class (meaning they're treated equivalently from the DS-TE perspective), which gets placed inside a TE LSP 🫢

3. CLASSTYPE Object πŸ‘‘

The CLASSTYPE object is optional, and it's used to specify the Class-Type of a TE LSP. It's only meaningful within the path computation request, and it's ignored in the path reply message. If the TE LSP that the path is being computed for belongs to Class 0, the path computation request MUST NOT contain the CLASSTYPE object. This keeps things backward compatible with a PCE that doesn't support the CLASSTYPE object, which is honestly so thoughtful πŸ₯Ή

3.1. Object Definition 🌸

The CLASSTYPE object has a 32-bit word PCEP common object header defined in [RFC5440], followed by another 32-bit word object body, as 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       PCEP common header                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            Reserved                                     | CT  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Figure 1: CLASSTYPE object format

The fields in the common object header are processed as specified in [RFC5440]. The values of object class and object type are 22 and 1, respectively. If it's included, the CLASSTYPE object must be taken into account by the PCE. So the P flag MUST be set. The I flag is ignored πŸ™ˆ

The CLASSTYPE object body has these fields:

CT: A 3-bit field that indicates the Class-Type. Allowed values are 1, 2, ... , 7. The value of 0 is Reserved.

Reserved: A 29-bit reserved field. It MUST be set to zero on transmission and MUST be ignored on receipt πŸ”₯

3.2. Path Computation Request Message with CLASSTYPE Object πŸ’…

[RFC5440] specifies the order in which objects have to be inserted into PCEP messages. This document says the CLASSTYPE object gets inserted after the END-POINT objects, as shown below πŸ¦‹

The format of a Path Computation Request (PCReq) message is as follows:

   <PCReq Message>::= <Common Header>
                      [<SVEC-list>]
                      <request-list>
   where:
      <svec-list>::=<SVEC>[<svec-list>]
      <request-list>::=<request>[<request-list>]
      <request>::= <RP>
                   <END-POINTS>
                   [<CLASSTYPE>]
                   [<LSPA>]
                   [<BANDWIDTH>]
                   [<metric-list>]
                   [<RRO>]
                   [<IRO>]
                   [<LOAD-BALANCING>]
   where:
   <metric-list>::=<METRIC>[<metric-list>]

Note that an implementation MUST form the PCEP messages using the object ordering rules specified using Backus-Naur Form. Please refer to [OBJ-ORD] for more details πŸ“š

3.3. Processing CLASSTYPE Object πŸ’–

If the LSP is associated with Class-Type N (1 <= N <= 7), the PCC that originates the PCReq MUST include the CLASSTYPE object in the PCReq message, with the Class-Type (CT) field set to N ✨

If a path computation request contains multiple CLASSTYPE objects, only the first one is meaningful. Subsequent CLASSTYPE object(s) MUST be ignored and MUST NOT be forwarded πŸ™…β€β™€οΈ

If the CLASSTYPE object isn't present in the path computation request message, the LSR MUST associate the Class-Type 0 with the LSP 🌈

A path computation reply message MUST NOT include a CLASSTYPE object. If a PCE needs to forward a path computation request containing the CLASSTYPE object to another PCE, it MUST store the Class-Type of the TE LSP so it can complete the path computation when the path computation reply arrives 🧚

A PCE that does not recognize the CLASSTYPE object MUST reject the entire PCEP message, and it MUST send a PCE error message with Error-Type="Unknown Object" or "Not supported object", defined in [RFC5440] 😭

A PCE that recognizes the CLASSTYPE object, but finds that the P flag isn't set in the CLASSTYPE object, MUST send a PCE error message towards the sender, with the error type and error value specified in [RFC5440] 🫢

A PCE that recognizes the CLASSTYPE object, but doesn't support the particular Class-Type, MUST send a PCE error message towards the sender. The error type is "Diffserv-aware TE error" and the error value is "Unsupported Class-Type" (Error-value 1) πŸ”₯

A PCE that recognizes the CLASSTYPE object, but determines that the Class-Type value isn't valid (i.e., Class-Type value 0), MUST send a PCE error towards the sender. The error type is "Diffserv-aware TE error" and the error value is "Invalid Class-Type" (Error-value 2) πŸ’€

3.4. Determination of Traffic Engineering Class (TE-Class) πŸ‘‘

As specified in RFC 4124, a CT and a preemption priority map to a Traffic Engineering Class (TE-class), and there can be up to 8 TE-classes. The TE-class value is used to determine the unreserved bandwidth on the links during path computation. For a PCE, the CT value carried in the CLASSTYPE object and the setup priority in the LSP Attribute (LSPA) object are used to determine the TE-class for the path computation request. If the LSPA object is absent, the setup priority is assumed to be 0 🌸

3.5. Significance of Class-Type and TE-Class

okay so bestie, this part is all about making sure everyone is on the same page 🫢 For DS-TE to work coherently, a PCE and a PCC SHOULD have a common understanding of a particular DS-TE Class-Type and TE-class. Lowkey this is the whole vibe: if a path computation request crosses an Autonomous System (AS) boundary, these MUST have global significance in all domains πŸ’… Hmm, wait, let me recheck that: the original says these SHOULD have global significance, so I'm fixing that right now πŸ™ˆ

Okay, corrected: if a path computation request crosses an Autonomous System (AS) boundary, these SHOULD have global significance in all domains. Enforcing that global significance is totally outside the scope of this document 🌸 Not our problem here, iykyk πŸ¦‹

3.6. Error Codes for CLASSTYPE Object

This document defines the following error type and values πŸŽ€

   Error-Type    Meaning

      12         Diffserv-aware TE error
                 Error-value=1: Unsupported Class-Type
                 Error-value=2: Invalid Class-Type
                 Error-value=3: Class-Type and setup priority do
                                not form a configured TE-class

4. Security Considerations πŸ”

Okay, security time, and I'm not gonna sugarcoat it πŸ’€ This document does not introduce new security issues. The security considerations pertaining to PCEP [RFC5440] remain relevant. So if you're worried about PCEP security, keep those in mind 🫢

5. IANA Considerations 🌈

IANA maintains a registry of parameters for PCEP, and that registry has a sub-registry for PCEP objects. IANA has made these allocations, periodt:

   Object-Class     Name                  Reference

       22           CLASSTYPE             RFC 5455

                      Object-Type

                      1: Class-Type       RFC 5455

IANA has also allocated error types and values like this πŸ‘‘

   Error-Type  Meaning                    Reference

       12      Diffserv-aware TE error    RFC 5455

               Error-value = 1:           RFC 5455

                 Unsupported Class-Type

               Error-value = 2:           RFC 5455

                 Invalid Class-Type

               Error-value = 3:           RFC 5455

                 Class-Type and setup priority
                 do not form a configured TE-class

6. Acknowledgments ✨

The authors would like to thank Jean Philippe Vasseur, Adrian Farrel, and Zafar Ali for their valuable comments πŸ’– They were clearly the hype squad 🧚

7. References πŸ“š

7.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC4124] Le Faucheur, F., Ed., "Protocol Extensions for Support of Diffserv-aware MPLS Traffic Engineering", RFC 4124, June 2005.

[RFC5440] Vasseur, JP., Ed., and JL. Le Roux, Ed., "Path Computation Element (PCE) Communication Protocol (PCEP)", RFC 5440, March 2009.

7.2. Informative References

[RFC4657] Ash, J., Ed., and J. Le Roux, Ed., "Path Computation Element (PCE) Communication Protocol Generic Requirements", RFC 4657, September 2006.

[RFC3564] Le Faucheur, F. and W. Lai, "Requirements for Support of Differentiated Services-aware MPLS Traffic Engineering", RFC 3564, July 2003.

[OBJ-ORD] Farrel, A., "Reduced Backus-Naur Form (RBNF) A Syntax Used in Various Protocol Specifications", Work in Progress, November 2008.

Authors' Addresses πŸ¦‹

Siva Sivabalan (editor) Cisco Systems, Inc. 2000 Innovation Drive Kanata, Ontario, K2K 3E8 Canada

EMail: msiva@cisco.com

Jon Parker Cisco Systems, Inc. 2000 Innovation Drive Kanata, Ontario, K2K 3E8 Canada

EMail: jdparker@cisco.com

Sami Boutros Cisco Systems, Inc. 3750 Cisco Way San Jose, California 95134 USA

EMail: sboutros@cisco.com

Kenji Kumaki KDDI R&D Laboratories, Inc. 2-1-15 Ohara Fujimino Saitama 356-8502, JAPAN

EMail: ke-kumaki@kddi.com

πŸ“¦ where this page comes from