RFC 6002

Generalized MPLS (GMPLS) Data Channel Switching Capable (DCSC) and Channel Set Label Extensions

πŸ“… published October 2010, from ietf

RFC 6002: Generalized MPLS (GMPLS) Data Channel Switching Capable (DCSC) and Channel Set Label Extensions πŸ’–

The squad: L. Berger (LabN) and D. Fedyk (Alcatel-Lucent) 🫢 Stream: IETF Category: Standards Track πŸ“œ ISSN: 2070-1721 Date: October 2010 πŸ“… Updates: 3471, 3473, 3945, 4202, 4203, and 5307 πŸ” Obsoletes: nothing, the title block doesn't list any πŸ™…β€β™€οΈ


Abstract ✨

okay so this doc adds two tech-agnostic upgrades to Generalized MPLS (GMPLS) 🫧 first one is a brand new switching type called Data Channel Switching Capable. DCSC interfaces can switch the whole digital channel that shows up on a single channel interface, which is so clean πŸ’… second one is a new kind of generalized label called the Generalized Channel_Set Label, and it lets more than one data plane label get controlled as part of one Label Switched Path (LSP). it also updates some related objects. slay πŸ”₯

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). if you want more on Internet Standards, check Section 2 of RFC 5741 πŸ€“

for the current status, any errata, and how to send feedback, go to http://www.rfc-editor.org/info/rfc6002 🌈

Copyright (c) 2010 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 (http://trustee.ietf.org/license-info), as they were in effect on the date it was published. please actually read those, bestie, because they spell out your rights and restrictions for this document πŸ₯Ή

also, any Code Components pulled out of this document have to include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions. they come without warranty, as the Simplified BSD License describes 🧾

Table of Contents πŸ“š

   1. Introduction ....................................................2
      1.1. Conventions Used in This Document ..........................3
   2. Data Channel Switching ..........................................3
      2.1. Compatibility ..............................................4
   3. Generalized Channel_Set Label Related Formats ...................4
      3.1. Generalized Channel_Set LABEL_REQUEST Object ...............4
      3.2. Generalized Channel_Set LABEL Object .......................4
      3.3. Other Label-Related Objects ................................7
      3.4. Compatibility ..............................................7
   4. IANA Considerations .............................................8
      4.1. Data Channel Switching Type ................................8
      4.2. Generalized Channel_Set LABEL_REQUEST Object ...............8
      4.3. Generalized Channel_Set LABEL Object .......................8
   5. Security Considerations .........................................9
   6. References ......................................................9
      6.1. Normative References .......................................9
      6.2. Informative References ....................................10
   Acknowledgments ...................................................10

1. Introduction ✨

this doc describes the same two tech-agnostic extensions to Generalized Multi-Protocol Label Switching (GMPLS) 🫢 both started out in the context of Ethernet services (see [RFC6004] and [RFC6005]), but they're generic at heart, so they may be useful to any switching technology that GMPLS controls 🌸

the first extension is the new switching type Data Channel Switching Capable (DCSC). DCSC interfaces can switch the whole digital channel that appears on single channel interfaces πŸ¦‹ the second extension is a new kind of generalized label plus updates to related objects. that label is the Generalized Channel_Set Label, and it allows more than one data plane label to be controlled as part of a GMPLS Label Switched Path (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 [RFC2119]. ⭐

2. Data Channel Switching πŸ¦‹

current GMPLS switching types live in [RFC3945] and [RFC3471], and they switch at the packet (PSC), frame (L2SC), time-slot (TDM), frequency (LSC), and fiber (FSC) granularities 🧚 parallel definitions for these switching types also show up in [RFC4202], [RFC4203], and [RFC5307] πŸ”

the gap is switching where all the data that comes in on an ingress port gets switched through the network to an egress port πŸšͺ this is kinda like the "opaque single wavelength" case described in Section 3.5 of [RFC4202], but port-to-port switching isn't limited to the optical technology that the LSC type implies. FSC is similar too, but it's restricted to fiber ports and also supports multiple data channels within a fiber port 🌈

so this document defines a new switching type called Data Channel Switching Capable (DCSC) πŸ‘‘ "Port switching" sounds like the more intuitive name, but it collides with PSC, so it's not used πŸ™ˆ DCSC interfaces can switch the whole digital channel that shows up on single channel interfaces. interfaces that inherently support multiple channels, like Wavelength Division Multiplexing (WDM) and channelized TDM interfaces, are specifically excluded from this type ❌ anything that can be represented as a single digital channel is included, like concatenated TDM and line-encoded interfaces πŸ“ framed interfaces can be included too, when they support switching at an interface granularity. an example is Ethernet terminated at the physical (port) level, where all the traffic received on a port gets switched to a physical port at the LSP egress 🫧

DCSC is represented in GMPLS (see [RFC3471] and [RFC4202]) with the value 125 πŸ”’ the DCSC value gets carried in routing protocols inside the Interface Switching Capability Descriptor defined in [RFC4202], and it's used in OSPF [RFC4203] and IS-IS [RFC5307]. those documents aren't otherwise modified by this one πŸ’…

the DCSC Switching Type may be used with the Generalized Label Request object from [RFC3473], or with the Generalized Channel_Set LABEL_REQUEST object defined below ✨ and port labels, as defined in [RFC3471], SHOULD be used for LSPs signaled using the DCSC Switching Type 🫢

2.1. Compatibility πŸ’…

if a transit or egress node doesn't support the DCSC Switching Type, and it gets a Path message with a Label Request containing the DCSC Switching Type, it's gonna act the way nodes generally handle an unsupported Switching Type 😭 specifically, per [RFC3473], those nodes are required to generate a PathErr message with a "Routing problem/Unsupported Encoding" indication 🚨

then, when an ingress node that started a Path message containing a Label Request with the DCSC Switching Type gets that PathErr message, it notifies the requesting application user as appropriate πŸ””

this section defines the new generalized label type and updates related objects 🌟 it updates the label-related definitions of [RFC3473] πŸ” the reason for supporting more than one label in the same LSP was that people needed to communicate one or more VLAN IDs 🏷️ plain label concatenation like [RFC4606] does was considered impractical, since up to 4096 VLAN IDs might need to be communicated πŸ˜΅β€πŸ’« the formats defined here aren't technology specific and could be useful for other switching technologies 🌍 the LABEL_SET object defined in [RFC3473] is the foundation for these formats 🧱

3.1. Generalized Channel_Set LABEL_REQUEST Object 🌸

the Generalized Channel_Set LABEL_REQUEST object signals that the Generalized Channel_Set LABEL object is to be used with the associated LSP πŸ“£ its format is the same as the Generalized LABEL_REQUEST object, and it uses a C-Type of 5. πŸ’–

3.2. Generalized Channel_Set LABEL Object ✨

Okay bestie, this is the LABEL object and it's giving "one object to rule them all" πŸ‘‘. It carries one or more labels, and every one of them can be used equivalently in the data path for a single LSP πŸ¦‹. The format is based on the LABEL_SET object from [RFC3473], but here's the glow-up: the full set can live in ONE object, while [RFC3473]'s LABEL_SET needs multiple objects πŸ’…. The object MUST be used on LSPs that use the Generalized Channel_Set LABEL_REQUEST object. It MUST be processed per [RFC3473]. Make-before-break procedures, see [RFC3209], SHOULD be used when modifying the Channel_Set LABEL object 🫢.

Here's the layout of the Generalized Channel_Set LABEL object:

  • Generalized Channel_Set LABEL object: Class = 16, C-Type = 4
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                   Channel_Set Subobject 1                     |
   |                              ...                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :                               :                               :
   :                               :                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                   Channel_Set Subobject N                     |
   |                              ...                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The Channel_Set Subobject size is measured in bytes and MUST always be a multiple of 4, and at least 4, and it has the following format πŸ“:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Action     |  Num Subchannels  |        Label Type         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Subchannel 1                         |
   |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       ...                     |                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               :
   :                               :                               :
   :                               :                               :
   :                               :                               :
   :                               :                               :
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Subchannel N                         |
   |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           ...                 |         Padding               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Action: 8 bits πŸŽ€

See [RFC3471] for the definition of actions. Range actions SHOULD be used when possible to minimize the size of the Channel_Set LABEL Object. Small size, big vibes ✨.

Number of Subchannels: 10 bits 🌸

This tells you how many subchannels are carried in the subobject. When the number of subchannels you need goes past the field's limit, which is 1024, multiple Channel_Set Subobjects MUST be used. Also, the subobject might get so big that a Path message ends up larger than a single unfragmented IP packet. See Section 4.4 of [RFC6004] for an example of how this case may be handled πŸ’€.

A value of zero (0) has special meaning and MAY be used in either the LABEL or UPSTREAM_LABEL object. Zero in a LABEL or UPSTREAM_LABEL object means the subchannel(s) used in the corresponding (downstream or upstream) direction MUST match the subchannel(s) carried in the reverse direction's label object. When zero is used, no subchannels are included in the Channel_Set Subobject, and only one Channel_Set Subobject may be present. Zero MUST NOT be used in both the LABEL and UPSTREAM_LABEL objects of the same LSP. Also, unacceptable label values still get handled according to [RFC3209] and [RFC3473], which means they result in PathErr or ResvErr messages with a "Routing problem/Unacceptable label value" indication. For example, if a Resv message has a zero (0) in both the LABEL and UPSTREAM_LABEL objects, the node would generate a ResvErr message πŸ™ˆ.

Label Type: 14 bits πŸ¦‹

See [RFC3473] for a description of this field.

Subchannel: Variable 🧚

See [RFC3471] for a description of this field. Note that this field might not be 32-bit aligned.

Padding: Variable 🌈

Padding exists to make sure the length of a Channel_Set Subobject meets that multiple-of-4-bytes rule from above. The field is only required when the Subchannel field isn't 32-bit aligned AND the number of included Subchannel fields leaves the Subobject not 32-bit aligned.

The Padding field MUST be included when the number of bits represented in all the Subchannel fields included in a Generalized Channel_Set Subobject leaves the Subobject not 32-bit aligned. When it's present, the Padding field MUST have a length that results in the Subobject being 32-bit aligned. When present, the Padding field MUST be set to a zero (0) value on transmission and MUST be ignored on receipt. These bits SHOULD be passed through unmodified by transit nodes 🫢.

The overall length of a Channel_Set Subobject is determined by the Num Subchannels field, the size of each Subchannel field, and any required padding. The Label Type field is what uniquely identifies the size of the Subchannel field πŸ‘‘.

The last section introduced a new LABEL object, so the formats of the other label-related objects and subobjects are impacted too. Their processing is NOT modified, though. It stays per their own specifications. These other label-related objects and subobjects are defined in [RFC3473] and include:

  • SUGGESTED_LABEL object
  • LABEL_SET object
  • ACCEPTABLE_LABEL_SET object
  • UPSTREAM_LABEL object
  • RECOVERY_LABEL object
  • Label ERO subobject
  • Label RRO subobject

Each of these label-related objects and subobjects has a Label field, and all of them may carry any label type. Since any label type can be carried, adding a new label type means the new one can show up in the Label field of each of them. No new definition needs to be specified, because their original specification is label-type agnostic 🌸.

3.4. Compatibility πŸ’–

Transit and egress nodes that DON'T support the Generalized Channel_Set Label related formats will first receive a Path message containing a Generalized Channel_Set LABEL_REQUEST object. When such a node gets that Path message, per [RFC3209], it will send a PathErr with the error code "Unknown object C_Type" 😭.

Ingress nodes that initiate a Path message containing a Generalized Channel_Set LABEL_REQUEST object, on receiving such PathErr messages, then notify the requesting application user as appropriate πŸ”₯.

4. IANA Considerations πŸŽ€

IANA has assigned new values for namespaces defined in this document, and they're summarized in this section. The registries are available from http://www.iana.org.

4.1. Data Channel Switching Type πŸ¦‹

IANA has made the following assignment in the "Switching Types" section of the "GMPLS Signaling Parameters" registry:

   Value   Type                                   Reference
   -----   ------------------------------------   ---------
     125   Data Channel Switching Capable (DCSC)  [RFC6002]

The assigned value is reflected in IANAGmplsSwitchingTypeTC of the IANA-GMPLS-TC-MIB, available from http://www.iana.org.

4.2. Generalized Channel_Set LABEL_REQUEST Object 🧚

IANA has made the following assignment in the "Class Names, Class Numbers, and Class Types" section of the "RSVP PARAMETERS" registry.

A new class type for the existing LABEL_REQUEST Object class number (19) with the following definition:

   Class Types or C-Types:

     5 Generalized Channel_Set                  [RFC6002]

4.3. Generalized Channel_Set LABEL Object 🌈

IANA has made the following assignment in the "Class Names, Class Numbers, and Class Types" section of the "RSVP PARAMETERS" registry.

A new class type for the existing RSVP_LABEL Object class number (16) with the following definition:

   Class Types or C-Types:

     4 Generalized Channel_Set                  [RFC6002]

5. Security Considerations πŸ’€

This document introduces new message object formats for use in GMPLS signaling [RFC3473]. It does NOT introduce any new signaling messages, and it doesn't change the relationship between LSRs that are adjacent in the control plane. So, as far as this document goes, it introduces no additional security considerations. See [RFC3473] for relevant security considerations. The existing framework for MPLS and GMPLS security is documented in [RFC5920] πŸ”’.

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.
  • [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP Tunnels", RFC 3209, December 2001.
  • [RFC3471] Berger, L., Ed., "Generalized Multi-Protocol Label Switching (GMPLS) Signaling Functional Description", RFC 3471, January 2003.
  • [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label Switching (GMPLS) Signaling Resource ReserVation Protocol-Traffic Engineering (RSVP-TE) Extensions", RFC 3473, January 2003.
  • [RFC3945] Mannie, E., Ed., "Generalized Multi-Protocol Label Switching (GMPLS) Architecture", RFC 3945, October 2004.
  • [RFC4202] Kompella, K., Ed., and Y. Rekhter, Ed., "Routing Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)", RFC 4202, October 2005.
  • [RFC4203] Kompella, K., Ed., and Y. Rekhter, Ed., "OSPF Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)", RFC 4203, October 2005.
  • [RFC5307] Kompella, K., Ed., and Y. Rekhter, Ed., "IS-IS Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)", RFC 5307, October 2008.

6.2. Informative References

Okay bestie, these are the extra reads. Not required to build the thing, but they're where the good context lives πŸ“šβœ¨

  • [RFC4606] Mannie, E. and D. Papadimitriou, "Generalized Multi-Protocol Label Switching (GMPLS) Extensions for Synchronous Optical Network (SONET) and Synchronous Digital Hierarchy (SDH) Control", RFC 4606, August 2006. 🌸 This one covers GMPLS for SONET and SDH control, so the optical side of things.
  • [RFC5920] Fang, L., Ed., "Security Framework for MPLS and GMPLS Networks", RFC 5920, July 2010. πŸ” The security framework for MPLS and GMPLS, and yes, you'll want this one. It's giving "read me before you ship" energy πŸ’…
  • [RFC6004] Berger, L. and D. Fedyk, "Generalized MPLS (GMPLS) Support for Metro Ethernet Forum and G.8011 Ethernet Service Switching", RFC 6004, October 2010. πŸ¦‹ This covers GMPLS support for Metro Ethernet Forum and G.8011 Ethernet service switching.
  • [RFC6005] Berger, L. and D. Fedyk, "Generalized MPLS (GMPLS) Support for Metro Ethernet Forum and G.8011 User Network Interface (UNI)", RFC 6005, October 2010. 🧚 Same crew, different hallway: this one is about the User Network Interface (UNI) side.

Acknowledgments 🫢

Huge shoutout to Dimitri Papadimitriou, who provided substantial textual contributions to this document and coauthored earlier versions of it. Icon behaviour, honestly πŸ˜­πŸ’œ

The authors also want to thank Evelyne Roch, Stephen Shew, and Adrian Farrel for their valuable comments. Thank you, babes πŸŽ€βœ¨

Authors' Addresses πŸ’Œ

  • Lou Berger
    • LabN Consulting, L.L.C.
    • Phone: +1-301-468-9228
    • EMail: lberger@labn.net
  • Don Fedyk
    • Alcatel-Lucent
    • Groton, MA, 01450
    • Phone: +1-978-467-5645
    • EMail: donald.fedyk@alcatel-lucent.com

That's the whole spec, bestie! πŸŒˆπŸ‘‘ Go read the security section again, it's giving main character energy πŸ’–

πŸ“¦ where this page comes from