RFC 5462

Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field

πŸ“… published February 2009, from ietf

Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field πŸŽ€

  • Network Working Group πŸ’–
  • Request for Comments: 5462 ✨
  • Authors: L. Andersson (Acreo AB) and R. Asati (Cisco Systems) 🫢
  • Date: February 2009 πŸ“…
  • Category: Standards Track πŸ”₯
  • Obsoletes: none listed
  • Updates: 3032, 3270, 3272, 3443, 3469, 3564, 3985, 4182, 4364, 4379, 4448, 4761, 5129 🌈

Status of This Memo 🧚

okay so this one is an Internet standards track protocol doc for the Internet community, and it's literally asking for discussion and suggestions πŸ’… For the current standardization state and status, check the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited, so share away bestie πŸ¦‹

Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved. πŸ”’

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents in effect on the date of publication. The license info lives at http://trustee.ietf.org/license-info. Please read these carefully, bestie, because they explain your rights and restrictions for this doc πŸ“œ

Abstract 🌸

The early MPLS docs defined the form of the MPLS label stack entry, and that includes a three-bit field called the "EXP field" πŸ“ They didn't really pin down how it's used, except to say it was "reserved for experimental use" πŸ™ˆ

It was supposed to be a "Class of Service" (CoS) field, but the early docs didn't call it that because CoS usage wasn't considered well enough defined yet. Today, a bunch of standards docs define it as a CoS field, so it's giving main character energy πŸ‘‘

To stop people from misunderstanding how this field can be used, it's become really necessary to rename it. This doc renames it to the "Traffic Class field" ("TC field") ✨ It also updates the docs that define how the EXP field is currently used, so everyone's on the same page πŸ’–

Table of Contents πŸ¦‹

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
2.  Details of Change  . . . . . . . . . . . . . . . . . . . . . .  3
  2.1.  RFC 3032 . . . . . . . . . . . . . . . . . . . . . . . . .  3
  2.2.  RFC 3270 . . . . . . . . . . . . . . . . . . . . . . . . .  5
  2.3.  RFC 5129 . . . . . . . . . . . . . . . . . . . . . . . . .  6
  2.4.  The Scope of This Change . . . . . . . . . . . . . . . . .  7
3.  Use of the TC field  . . . . . . . . . . . . . . . . . . . . .  7
4.  Security Considerations  . . . . . . . . . . . . . . . . . . .  8
5.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . .  8
6.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  8
  6.1.  Normative References . . . . . . . . . . . . . . . . . . .  8
  6.2.  Informative References . . . . . . . . . . . . . . . . . .  9

1. Introduction πŸŽ€

okay so RFC 3032 [RFC3032] defines the format of an MPLS label stack entry, and it includes a three-bit field called the "EXP field" πŸ’… The exact use of this field isn't defined by RFC 3032, except that it's "reserved for experimental use" πŸ™ˆ

The EXP field was meant to carry "Class of Service" (CoS) info from the very start 🧚 Early versions of the working group doc that became RFC 3032 literally called it the "Class of Service field." But at the time, nobody had agreed on how that CoS field should be used, so it got labelled "experimental use" instead. That's why it's been stuck with the name "EXP field" ever since 😭

That "for experimental use" label made other Standards Development Organizations (SDOs) and implementors think they could use the field for other stuff πŸ’€ This doc changes the name so it clearly says it's for traffic classification πŸ”₯

At first, the authors talked about just keeping the original "CoS field" name. But people pointed out that this name doesn't cover the changes to how the field has been used since RFC 3032 came out 🌈 Here's what changed:

  1. The use of the EXP field was first defined in RFC 3270 [RFC3270], where a way to build a variant of Diffserv Label Switched Paths (LSP) was specified. It's called EXP-Inferred-PSC LSP (E-LSPs). PSC is a two-stage acronym that gets expanded as PHB (Per Hop Behavior) Scheduling Class (PSC) 🧠
  2. The EXP field's use as defined in RFC 3270 got extended even further in RFC 5129 [RFC5129], which defines methods for explicit congestion marking in MPLS 🫢

So this doc uses the name "Traffic Class field (TC field)", since that name covers the potential uses way better πŸ¦‹ The MPLS TC field relates to an MPLS encapsulated packet the same way the IPv6 TC field relates to an IPv6 encapsulated packet, or the way the IPv4 Precedence field relates to an IPv4 encapsulated packet ✨

RFC 3270 and RFC 5129 are already super clear about how the EXP field is used πŸ‘‘ But those RFCs don't explicitly say they update RFC 3032, and that fact wasn't captured in the RFC repository until after work on this doc had started πŸ™ˆ

This doc updates RFC 3032, RFC 3270, and RFC 5129 to clarify the intended usage of the TC field. Those changes mean some of the actual text in those docs needs to change too, and Section 2 explains exactly what changes πŸ’–

This doc also updates several other RFCs, which you'll find in Section 2.4. For those docs, the only change is renaming the Label Stack entry field πŸ“

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. Details of Change 🌸

so the three RFCs 3032, 3270, and 5129 are now updated according to the following πŸ’…

2.1. RFC 3032 🧚

RFC 3032 says on page 4:

3.  Experimental Use

This three-bit field is reserved for experimental use.

This paragraph is now changed to:

3.  Traffic Class (TC) field

This three-bit field is used to carry traffic class information,
and the change of the name is applicable to all places it occurs
in IETF RFCs and other IETF documents.

RFC 3270 and RFC 5129 update the definition of the TC field and
describe how to use the field.

In Figure 1 on page 3 in RFC 3032, the format of a label stack entry is specified 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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Label
 |                Label                  | Exp |S|       TTL     | Stack
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Entry

                     Label:  Label Value, 20 bits
                     Exp:    Experimental Use, 3 bits
                     S:      Bottom of Stack, 1 bit
                     TTL:    Time to Live, 8 bits

                              Figure 1

Figure 1 in RFC 3032 is now changed to match the rename to the TC field πŸŽ€

  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Label
 |                Label                  | TC  |S|       TTL     | Stack
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Entry

                     Label:  Label Value, 20 bits
                     TC:     Traffic Class field, 3 bits
                     S:      Bottom of Stack, 1 bit
                     TTL:    Time to Live, 8 bits

                               Figure 1 (new)
Note: The designation of the picture above as "Figure 1 (new)" is introduced as a way to distinguish the figures in this document. It will still be "Figure 1" in RFC 3032.

2.2. RFC 3270 🌈

RFC 3270 says on page 6:

1.2 EXP-Inferred-PSC LSPs (E-LSP)

   A single LSP can be used to support one or more OAs.  Such LSPs
   can support up to eight BAs of a given FEC, regardless of how many
   OAs these BAs span.  With such LSPs, the EXP field of the MPLS
   Shim Header is used by the LSR to determine the PHB to be applied
   to the packet.  This includes both the PSC and the drop
   preference.

   We refer to such LSPs as "EXP-inferred-PSC LSPs" (E-LSP), since
   the PSC of a packet transported on this LSP depends on the EXP
   field value for that packet.

   The mapping from the EXP field to the PHB (i.e., to PSC and drop
   precedence) for a given such LSP, is either explicitly signaled at
   label set-up or relies on a pre-configured mapping.

   Detailed operations of E-LSPs are specified in section 3 below.

RFC 3270 is now updated like this:

a. A new paragraph is added at the end of Section 1 "Introduction":

The EXP field has been renamed the TC field, and thus all
references in RFC 3270 to the EXP field now refer to the TC
field.

b. A new term is added to Section 1.1 "Terminology":

TC        Traffic Class (replaces the term EXP)

c. In Section 1.1 "Terminology", the acronym E-LSP is now understood to mean:

E-LSP     Explicitly TC-encoded-PSC LSP

Section 1.2 on page 6 in RFC 3270 is now changed to:

1.2 Explicitly TC-encoded-PSC LSPs (E-LSP)

   The EXP field has been renamed to the TC field, and thus all
   references in RFC 3270 to EXP field now refer to the TC field.
   However, we retain the acronym E-LSP (Explicitly TC-encoded-PSC
   LSP) as the acronym is in widespread use.

   A single LSP can be used to support one or more OAs.  Such LSPs
   can support up to eight BAs of a given FEC, regardless of how many
   OAs these BAs span.  With such LSPs, the TC field of the MPLS Shim
   Header is used by the LSR to determine the PHB to be applied to
   the packet.  This includes both the PSC and the drop preference.

   We refer to such LSPs as "Explicitly TC-encoded-PSC LSPs"
   (E-LSPs), since the PSC of a packet transported on this LSP
   depends on the TC field (previously called the EXP field) value
   for that packet.

   The mapping from the TC field to the PHB (i.e., to PSC and drop
   precedence) for a given such LSP is either explicitly signaled at
   label set-up or relies on a pre-configured mapping.

   This is an update to RFC 3032 [RFC3032], in line with the original
   intent of how this field in the MPLS Shim Header should be used
   (as a TC field).  RFC 3270 has itself been updated by RFC 5129
   [RFC5129].

   Detailed operations of E-LSPs are specified in Section 3 of RFC
   3270.

✨ Next up in part 2: the rest of Section 2 (RFC 5129, the scope of the change), Section 3 on how the TC field is used, Security Considerations, Acknowledgments, and References πŸŽ€

2.3. RFC 5129 ✨

Okay bestie, so RFC 5129 is getting a glow-up too πŸ’… It's updated like this:

A new paragraph is added at the end of Section 1.1 "Background":

   The EXP field has been renamed to the TC field, and thus all
   references in RFC 5129 to the EXP field now refer to the TC field.

Next, Section 2 (bullet 5) on page 7 of RFC 5129 currently says this πŸ‘‡

   o  A third possible approach was suggested by [Shayman].  In this
      scheme, interior LSRs assume that the endpoints are ECN-capable,
      but this assumption is checked when the final label is popped.  If
      an interior LSR has marked ECN in the EXP field of the shim
      header, but the IP header says the endpoints are not ECN-capable,
      the edge router (or penultimate router, if using penultimate hop
      popping) drops the packet.  We recommend this scheme, which we
      call `per-domain ECT checking', and define it more precisely in
      the following section.  Its chief drawback is that it can cause
      packets to be forwarded after encountering congestion only to be
      dropped at the egress of the MPLS domain.  The rationale for this
      decision is given in Section 8.1.

And Section 2 (bullet 5) of RFC 5129 is now updated to read:

   o  A third possible approach was suggested by [Shayman].  In this
      scheme, interior LSRs assume that the endpoints are ECN-capable,
      but this assumption is checked when the final label is popped.  If
      an interior LSR has marked ECN in the TC field of the shim header,
      but the IP header says the endpoints are not TC-capable, the edge
      router (or penultimate router, if using penultimate hop popping)
      drops the packet.  We recommend this scheme, which we call `per-
      domain ECT checking', and define it more precisely in the
      following section.  Its chief drawback is that it can cause
      packets to be forwarded after encountering congestion only to be
      dropped at the egress of the MPLS domain.  The rationale for this
      decision is given in Section 8.1.  This scheme is an update to RFC
      3032 [RFC3032] and RFC 3270 [RFC3270].

Basically the only real change is EXP becoming TC everywhere it shows up, plus a new line tying this scheme to RFC 3032 [RFC3032] and RFC 3270 [RFC3270] πŸŽ€


2.4. The Scope of This Change 🌈

So the big question is how far this rename goes. The answer is pretty far, lol. Several RFCs that this document explicitly updates reference the "Exp field". Sometimes they call it "Exp bits", "EXP bits", or just "EXP". In every one of those spots, the reference now points to the TC field πŸ’œ

There are also other RFCs that reference the "Exp field" too, including RFC 3272 [RFC3272], RFC 3443 [RFC3443], RFC 3469 [RFC3469], RFC 3564 [RFC3564], RFC 3985 [RFC3985], RFC 4182 [RFC4182], RFC 4364 [RFC4364], RFC 4379 [RFC4379], RFC 4448 [RFC4448], and RFC 4761 [RFC4761]. Some of them use the same "Exp bits", "EXP bits", and "EXP" wording. For all RFCs, including the ones not listed here, those references now point to the TC field. No exceptions, periodt πŸ’…


3. Use of the TC field πŸ¦‹

Okay so the TC field only has a few bits to work with, which means it has to be flexible. Its use for QoS and ECN (Explicit Congestion Notification) functions is intended to be flexible for exactly that reason ✨ These functions may rewrite all or some of the bits in the TC field.

Current implementations look at the TC field with and without label context. The TC field may also be copied to the label stack entries that get pushed onto the label stack. The point of that is to stop label stack entries that are pushed onto an existing label stack from having different TC fields than the rest of the label stack entries 🧚


4. Security Considerations πŸ”₯

Serious moment, bestie 😭 This document only changes the name of one field in the MPLS shim header. That's it. Because of that, it does not introduce any new security considerations 🫢


5. Acknowledgments 🌸

The authors want to thank Stewart Bryant, Bruce Davie, George Swallow, and Francois Le Faucheur for their input to and review of this document πŸ’–

The authors also want to thank George Swallow, Khatri Paresh, and Phil Bedard for their help with grammar and spelling. Then there's a special thank-you to Adrian Farrel for his careful review and for helping trawl the RFC-sea for RFCs that reference the EXP field. Iconic behavior honestly πŸ‘‘


6. References πŸ“š

6.1. Normative References

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

[RFC3032]  Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y.,
           Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack
           Encoding", RFC 3032, January 2001.

[RFC3270]  Le Faucheur, F., Wu, L., Davie, B., Davari, S., Vaananen,
           P., Krishnan, R., Cheval, P., and J. Heinanen, "Multi-
           Protocol Label Switching (MPLS) Support of Differentiated
           Services", RFC 3270, May 2002.

[RFC3272]  Awduche, D., Chiu, A., Elwalid, A., Widjaja, I., and X.
           Xiao, "Overview and Principles of Internet Traffic
           Engineering", RFC 3272, May 2002.

[RFC3443]  Agarwal, P. and B. Akyol, "Time To Live (TTL) Processing
           in Multi-Protocol Label Switching (MPLS) Networks",
           RFC 3443, January 2003.

[RFC3469]  Sharma, V. and F. Hellstrand, "Framework for Multi-
           Protocol Label Switching (MPLS)-based Recovery", RFC 3469,
           February 2003.

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

[RFC3985]  Bryant, S. and P. Pate, "Pseudo Wire Emulation Edge-to-
           Edge (PWE3) Architecture", RFC 3985, March 2005.

[RFC4182]  Rosen, E., "Removing a Restriction on the use of MPLS
           Explicit NULL", RFC 4182, September 2005.

[RFC4364]  Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private
           Networks (VPNs)", RFC 4364, February 2006.

[RFC4379]  Kompella, K. and G. Swallow, "Detecting Multi-Protocol
           Label Switched (MPLS) Data Plane Failures", RFC 4379,
           February 2006.

[RFC4448]  Martini, L., Rosen, E., El-Aawar, N., and G. Heron,
           "Encapsulation Methods for Transport of Ethernet over MPLS
           Networks", RFC 4448, April 2006.

[RFC4761]  Kompella, K. and Y. Rekhter, "Virtual Private LAN Service
           (VPLS) Using BGP for Auto-Discovery and Signaling",
           RFC 4761, January 2007.

[RFC5129]  Davie, B., Briscoe, B., and J. Tay, "Explicit Congestion
           Marking in MPLS", RFC 5129, January 2008.

6.2. Informative References

[Shayman]  Shayman, M. and R. Jaeger, "Using ECN to Signal Congestion
           Within an MPLS Domain", Work in Progress, November 2000.

Authors' Addresses πŸ¦‹

Loa Andersson
Acreo AB

EMail: loa@pi.nu


Rajiv Asati
Cisco Systems

EMail: rajiva@cisco.com
πŸ“¦ where this page comes from