RFC 5455 PROPOSED STANDARD ROUTING · TRAFFIC ENGINEERING · MPLS

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

A small PCEP object that tells a path computation element which traffic class a requested tunnel belongs to.

On rfc-editor.org ↗
PUBLISHED
March 2009
AUTHORS
S. Sivabalan, J. Parker, S. Boutros, K. Kumaki
STREAM
IETF
OBJECT CLASS
22 (CLASSTYPE)
OBJECT TYPE
1 (Class-Type)
CT FIELD
3 bits, values 1 to 7
RESERVED FIELD
29 bits
ERROR-TYPE
12, Diffserv-aware TE error
DOI
10.17487/RFC5455
ERRATA
Reported errata

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                  S. Sivabalan, Ed.
Request for Comments: 5455                                     J. Parker
Category: Standards Track                                     S. Boutros
                                                     Cisco Systems, Inc.
                                                               K. Kumaki
                                             KDDI R&D Laboratories, Inc.
                                                              March 2009


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

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 Notice

   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

   [RFC5440] specifies the Path Computation Element Communication
   Protocol (PCEP) for communications between a Path Computation Client
   (PCC) and a Path Computation Element (PCE), or between two PCEs, in
   compliance with [RFC4657].

   Diffserv-aware MPLS Traffic Engineering (DS-TE) addresses the
   fundamental requirement to be able to enforce different bandwidth
   constraints for different classes of traffic.  It describes
   mechanisms to achieve per-class traffic engineering, rather than on
   an aggregate basis across all classes by enforcing Bandwidth
   Constraints (BCs) on different classes.  Requirements for DS-TE and
   the associated protocol extensions are specified in [RFC3564] and
   [RFC4124], respectively.

   As per [RFC4657], PCEP must support traffic Class-Type as an MPLS-
   TE-specific constraint.  However, in the present form, PCEP [RFC5440]
   does not have the capability to specify the Class-Type in the path
   computation request.

   In this document, we define a new PCEP object called CLASSTYPE, which
   carries the Class-Type of the TE LSP in the path computation request.
   During path computation, a PCE uses the Class-Type to identify the
   bandwidth constraint of the TE LSP.

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

   CT (Class-Type): A set of Traffic Trunks governed by a set of
   bandwidth constraints.  Used for the purpose of 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 requesting a
   path computation to be performed by a Path Computation Element.

   PCE (Path Computation Element): an entity (component, application, or
   network node) that is capable of computing a network path or route
   based on a network graph and applying computational constraints.

   PCEP Peer: an element involved in a PCEP session (i.e., a PCC or the
   PCE).

   TE-Class: A pair consisting of a Class-Type and a preemption priority
   allowed for that Class-Type.  An LSP transporting a Traffic Trunk
   from that Class-Type can use that preemption priority as the setup
   priority, the holding priority, or both.

   TE LSP: Traffic Engineering Label Switched Path.

   Traffic Trunk: An aggregation of traffic flows of the same class
   (i.e., treated equivalently from the DS-TE perspective), which is
   placed inside a TE LSP.

3.  CLASSTYPE Object

   The CLASSTYPE object is optional and is used to specify the Class-
   Type of a TE LSP.  This object is meaningful only within the path
   computation request, and is ignored in the path reply message.  If
   the TE LSP for which the path is to be computed belongs to Class 0,
   the
   path computation request MUST NOT contain the CLASSTYPE object.  This
   allows backward compatibility with a PCE that does not support the
   CLASSTYPE object.

3.1.  Object Definition

   The CLASSTYPE object contains 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 included, the CLASSTYPE object must be taken into
   account by the PCE.  As such, the P flag MUST be set.  The I flag is
   ignored.

   The CLASSTYPE object body contains the following fields:

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

   Reserved: 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 must be inserted in
   the PCEP messages.  This document specifies that the CLASSTYPE object
   be 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
   originating 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 is not present in the path computation
   request message, the LSR MUST associate the Class-Type 0 to 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 in order to 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 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
   is not set in the CLASSTYPE object, MUST send PCE error message
   towards the sender with the error type and error value specified in
   [RFC5440].

   A PCE that recognizes the CLASSTYPE object, but does not support the
   particular Class-Type, MUST send a PCE error message towards the
   sender with the error type "Diffserv-aware TE error" and the error
   value of "Unsupported Class-Type" (Error-value 1).

   A PCE that recognizes the CLASSTYPE object, but determines that the
   Class-Type value is not valid (i.e., Class-Type value 0), MUST send a
   PCE error towards the sender with the error type "Diffserv-aware TE
   error" and an error value of "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.  In the case of 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 corresponding to 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

   To ensure coherent DS-TE operation, a PCE and a PCC should have a
   common understanding of a particular DS-TE Class-Type and TE-class.
   If a path computation request crosses an Autonomous System (AS)
   boundary, these should have global significance in all domains.
   Enforcement of this global significance is outside the scope of this
   document.

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

   This document does not introduce new security issues.  The security
   considerations pertaining to PCEP [RFC5440] remain relevant.

5.  IANA Considerations

   IANA maintains a registry of parameters for PCEP.  This contains a
   sub-registry for PCEP objects.  IANA has made allocations from this
   registry as follows:

      Object-Class     Name                  Reference

          22           CLASSTYPE             RFC 5455

                         Object-Type

                         1: Class-Type       RFC 5455

   IANA has allocated error types and values as follows:

      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.

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

AI ELI5

On this page
PROBLEMDiffserv-aware traffic engineering enforces separate bandwidth constraints per class of traffic, but PCEP had no way to say which Class-Type a requested path belongs to.
MECHANISMRFC 5455 defines the CLASSTYPE object, a 3-bit Class-Type carried in a path computation request, so the PCE can pick the right bandwidth constraint when computing the path.
WHY IT MATTERSA PCC includes the object for Class-Types 1 to 7 and omits it for Class 0, which keeps older PCEs working. New error codes cover unsupported or invalid values.

§1Why PCEP Needs a Class-Type

RFC 5440 defines the Path Computation Element Communication Protocol (PCEP), used between a Path Computation Client (PCC) and a Path Computation Element (PCE), or between two PCEs. Diffserv-aware MPLS Traffic Engineering (DS-TE) enforces different bandwidth constraints for different classes of traffic, rather than one aggregate constraint across all classes.

RFC 4657 says PCEP must support the traffic Class-Type as an MPLS-TE-specific constraint. As defined in RFC 5440, though, a path computation request cannot carry one. This document adds a new object, CLASSTYPE, so the PCE can identify the bandwidth constraint of the TE LSP it is computing a path for.

A route-planner used to hear only where you wanted to go. Now you can also tell it what kind of traffic is traveling, so it picks a route with the right rules.

§2Terms: Class-Type, TE-Class and Friends

A Class-Type (CT) is a set of Traffic Trunks governed by a set of bandwidth constraints, used for link bandwidth allocation, constraint-based routing and admission control. A given Traffic Trunk belongs to the same CT on all links. A Traffic Trunk is an aggregation of traffic flows of the same class placed inside a TE LSP.

A TE-Class is a pair of a Class-Type and a preemption priority allowed for that Class-Type. An LSP carrying a trunk of that Class-Type can use the priority as its setup priority, holding priority, or both.

A Class-Type is like a ticket colour that decides which bandwidth budget you draw from. A TE-Class is the ticket colour plus how important your ticket is.

§3.1The CLASSTYPE Object

The CLASSTYPE object is optional. It has the PCEP common object header from RFC 5440 followed by one 32-bit word of body. Its object class is 22 and its object type is 1. Because the PCE must take the object into account if it is included, the P flag MUST be set. The I flag is ignored.

The body has two fields. CT is a 3-bit field holding the Class-Type; allowed values are 1 to 7, and 0 is reserved. The other 29 bits are Reserved: they MUST be zero on transmission and MUST be ignored on receipt.

The object is a tiny label: a short header, then one small number saying which class the traffic is in. The rest of the label is left blank on purpose.

CLASSTYPE OBJECT FORMAT (RFC 5455, FIGURE 1)
CLASSTYPE object
FieldNameSizeValueDescription
COMMON-HEADERPCEP common header4 bytesCommon object header from RFC 5440; object class 22, object type 1, P flag set.
RESERVEDReserved29 bitsSet to zero on transmission and ignored on receipt.
CTCT3 bitsClass-Type; values 1 to 7 are allowed and 0 is reserved.

§3.2Placement in the Request Message

RFC 5440 sets the order of objects in PCEP messages. This document inserts CLASSTYPE in the Path Computation Request (PCReq) right after the END-POINTS object and before the optional LSPA, BANDWIDTH, metric, RRO, IRO and LOAD-BALANCING objects.

Implementations MUST form PCEP messages using the object ordering rules written in Backus-Naur Form.

Like a form with boxes in a fixed order, the class box goes right after the start and end points.

§3.3How Requests Are Processed

If the LSP belongs to Class-Type N, where N is 1 to 7, the PCC building the PCReq MUST include a CLASSTYPE object with CT set to N. If the LSP belongs to Class 0, the request MUST NOT contain the object. That keeps requests compatible with a PCE that does not know the object. When the object is absent, Class-Type 0 is assumed.

If a request holds several CLASSTYPE objects, only the first counts; the rest MUST be ignored and MUST NOT be forwarded. The object is meaningful only in requests, and a reply MUST NOT include it. A PCE that forwards a request to another PCE MUST remember the Class-Type so it can finish the computation when the reply arrives.

TE-Class is found from the CT value together with the setup priority in the LSPA object. If LSPA is absent, the setup priority is assumed to be 0. The RFC adds that a PCE and PCC should share an understanding of Class-Types and TE-Classes, with global significance if a request crosses an Autonomous System boundary; enforcing that is out of scope.

Ordinary traffic needs no special label. Anything special gets one class label, and if someone stuck on several, only the first is read.

§3.6Error Handling

A PCE that does not recognize the object MUST reject the whole PCEP message and send an error with Error-Type "Unknown Object" or "Not supported object" from RFC 5440. A PCE that recognizes it but sees the P flag clear MUST send the error defined in RFC 5440.

This document defines Error-Type 12, Diffserv-aware TE error, with three values:

  • 1: Unsupported Class-Type, for a Class-Type the PCE does not support.
  • 2: Invalid Class-Type, for example a CT value of 0.
  • 3: Class-Type and setup priority do not form a configured TE-class.

If the planner does not know the class, or the class is not allowed, it sends back a note saying exactly which problem it hit.

ERROR-TYPE 12: DIFFSERV-AWARE TE ERROR
  • 12 / 1Unsupported Class-Type — The PCE recognizes the object but does not support this Class-Type.
  • 12 / 2Invalid Class-Type — The Class-Type value is not valid, for example 0.
  • 12 / 3No configured TE-class — Class-Type and setup priority do not form a configured TE-class.

§4Security and IANA

The RFC says it does not introduce new security issues, and the security considerations of PCEP in RFC 5440 remain relevant.

IANA allocated object class 22, named CLASSTYPE, with object type 1 (Class-Type), in the PCEP object registry. It also allocated Error-Type 12 with error values 1, 2 and 3 as listed above.

Adding one small label does not open any new doors for trouble, so the old safety rules still cover it.

§8References