RFC 5307

IS-IS Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)

πŸ“… published October 2008, from ietf

IS-IS Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS) πŸ¦‹

okay bestie, this RFC is RFC 5307 πŸŽ€ It came out in October 2008 and it's a Standards Track doc, so it's the real deal. The authors are K. Kompella (Ed.) and Y. Rekhter (Ed.), both from Juniper Networks πŸ’… It obsoletes RFC 4205 and updates RFC 5305, so it replaces one older doc and tweaks another. It's giving continuity 🌸

Status of This Memo ✨

this is an Internet standards track protocol for the Internet community πŸ’– It's open for discussion and suggestions for improvements, so send your ideas! For the official standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) πŸ“š And the distribution of this memo is unlimited, so share it with everyone 🌈

Abstract 🧚

this doc specifies the encoding of extensions to the IS-IS routing protocol to support Generalized Multi-Protocol Label Switching (GMPLS) ✨ That's the whole vibe in one line, iykyk πŸ’…

1. Introduction ✨

okay so this doc specifies extensions to the IS-IS routing protocol so it can carry link state information for GMPLS πŸ¦‹ The required enhancements to IS-IS are outlined in [GMPLS-ROUTING]. If you want unnumbered interfaces, you need support for the "Point-to-Point Three-Way Adjacency" IS-IS Option type [ISIS-3way] 🫢

we're focusing on the Traffic Engineering (TE) properties of GMPLS TE links that can be announced in IS-IS Link State Protocol Data Units πŸ’œ We're enhancing the sub-TLVs for the extended IS reachability TLV (see [ISIS-TE]) so they support GMPLS. Specifically, we're adding these three sub-TLVs:

      Sub-TLV Type        Length    Name
                 4             8    Link Local/Remote Identifiers
                20             2    Link Protection Type
                21      variable    Interface Switching Capability
                                    Descriptor

we also add one brand new TLV to the TE TLVs πŸ“

          TLV Type        Length    Name
               138      variable    GMPLS-SRLG

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] πŸ”₯ these are the official BCP 14 words, so read them the exact way RFC 2119 says πŸ™ˆ

okay so a Link Local Interface Identifier is a sub-TLV living inside the extended IS reachability TLV πŸ’– Its type is 4 and its length is 8 octets πŸ¦‹ The value field holds 4 octets of Link Local Identifier, then 4 octets of Link Remote Identifier (see Section 2.1, "Support for Unnumbered Links", of [GMPLS-ROUTING]) 🌸 If the Link Remote Identifier is unknown, you set it to 0 🧚

here's how the Value field of the Link Local/Remote Identifiers sub-TLV is encoded:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Link Local Identifier                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Link Remote Identifier                       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the big rule here: the Link Local/Remote Identifiers sub-TLV MUST NOT occur more than once within the extended IS reachability TLV πŸ™…β€β™€οΈ If it does show up more than once, the receiver SHOULD ignore all of those sub-TLVs πŸ’€

the Link Protection Type is a sub-TLV (of type 20) inside the extended IS reachability TLV, and its length is 2 octets πŸ’…

here's the encoding for the Value field of the Link Protection Type sub-TLV:

       0                   1
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Protection Cap |    Reserved   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the first octet is a bit vector that describes the protection capabilities of the link (see Section 2.2, "Link Protection Type", of [GMPLS-ROUTING]) ✨ Here are the bits:

      0x01  Extra Traffic

      0x02  Unprotected

      0x04  Shared

      0x08  Dedicated 1:1

      0x10  Dedicated 1+1

      0x20  Enhanced

      0x40  Reserved

      0x80  Reserved

for the second octet, the sender SHOULD set it to zero, and the receiver SHOULD ignore it 🌈

the Link Protection Type sub-TLV MUST NOT occur more than once within the extended IS reachability TLV πŸ™…β€β™€οΈ If it does occur more than once, the receiver SHOULD ignore all of those sub-TLVs 😭

1.3. Interface Switching Capability Descriptor πŸ‘‘

the Interface Switching Capability Descriptor is a sub-TLV (of type 21) inside the extended IS reachability TLV 🧚 Its length is the length of the value field in octets πŸ“ Here's how its Value field is encoded:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | Switching Cap |   Encoding    |           Reserved            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Max LSP Bandwidth at priority 0              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Max LSP Bandwidth at priority 1              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Max LSP Bandwidth at priority 2              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Max LSP Bandwidth at priority 3              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Max LSP Bandwidth at priority 4              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Max LSP Bandwidth at priority 5              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Max LSP Bandwidth at priority 6              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Max LSP Bandwidth at priority 7              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Switching Capability-specific information              |
      |                  (variable)                                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the Switching Capability (Switching Cap) field holds one of these values:

            1     Packet-Switch Capable-1 (PSC-1)
            2     Packet-Switch Capable-2 (PSC-2)
            3     Packet-Switch Capable-3 (PSC-3)
            4     Packet-Switch Capable-4 (PSC-4)
            51    Layer-2 Switch Capable  (L2SC)
            100   Time-Division-Multiplex Capable (TDM)
            150   Lambda-Switch Capable   (LSC)
            200   Fiber-Switch Capable    (FSC)

the Encoding field holds one of the values specified in Section 3.1.1 of [GMPLS-SIG] πŸ¦‹

the Maximum Link State Protocol Data Unit (LSP) Bandwidth is a list of eight 4-octet fields in the IEEE floating point format [IEEE] πŸ’– Priority 0 comes first and priority 7 comes last. The units are bytes (not bits!) per second πŸ’€

what goes in the Switching Capability specific information field depends on the value of the Switching Capability field 🌸 Here's how each case plays out:

When the Switching Capability field is PSC-1, PSC-2, PSC-3, or PSC-4, the Switching Capability specific information field includes Minimum LSP Bandwidth and Interface MTU 🫢

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Minimum LSP Bandwidth                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           Interface MTU       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the Minimum LSP Bandwidth is a 4-octet field in the IEEE floating point format, with units in bytes (not bits!) per second πŸ“ The Interface MTU is a 2-octet integer that carries the MTU value in bytes 🧚

When the Switching Capability field is L2SC, there is no Switching Capability specific information field present πŸ™ˆ

When the Switching Capability field is TDM, the Switching Capability specific information field includes Minimum LSP Bandwidth and an indication of whether the interface supports Standard or Arbitrary SONET/SDH (Synchronous Optical Network / Synchronous Digital Hierarchy) ✨

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                  Minimum LSP Bandwidth                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   Indication  |
      +-+-+-+-+-+-+-+-+

the Minimum LSP Bandwidth is a 4-octet field in the IEEE floating point format, with units in bytes (not bits!) per second πŸ’œ The indication is encoded as 1 octet. Its value is 0 if the interface supports Standard SONET/SDH, and 1 if it supports Arbitrary SONET/SDH 🌈

When the Switching Capability field is LSC, there is no Switching Capability specific information field present πŸ¦‹

last bit of this section: to support interfaces that have more than one Interface Switching Capability Descriptor (see Section 2.4, "Interface Switching Capability Descriptor", of [GMPLS-ROUTING]), the Interface Switching Capability Descriptor sub-TLV MAY occur more than once within the extended IS reachability TLV πŸ‘‘βœ¨


part 1 is done, bestie 🧚 part 2 is coming next with the rest of the doc πŸ’–

okay bestie, let's talk about the Shared Risk Link Group (SRLG) TLV πŸ¦‹ it's type 138 and it's basically a little data package with a bunch of fields lined up in a specific order. here's the layout:

    6 octets of System ID
    1 octet of Pseudonode Number
    1 octet Flag
    4 octets of IPv4 interface address or 4 octets of a Link Local
      Identifier
    4 octets of IPv4 neighbor address or 4 octets of a Link Remote
      Identifier
    (variable) list of SRLG values, where each element in the list
      has 4 octets.

here's how the Value field gets encoded, and yes it's giving diagram energy πŸ’…

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          System ID                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            System ID (cont.)  | Pseudonode num|    Flags      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        IPv4 interface address/Link Local Identifier           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        IPv4 neighbor address/Link Remote Identifier           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  Shared Risk Link Group Value                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        ............                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  Shared Risk Link Group Value                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the neighbor is identified by its System ID (6 octets), plus one octet to indicate the pseudonode number if the neighbor is on a LAN interface 🌈

the least significant bit of the Flag octet tells you whether the interface is numbered (set to 1) or unnumbered (set to 0). all the other bits are reserved and should be set to 0 🧚

the length of this TLV is 16 + 4 * (number of SRLG values) ✨

this TLV carries the Shared Risk Link Group information (see Section 2.3, "Shared Risk Link Group Information", of [GMPLS-ROUTING]) πŸ’œ

the SRLG TLV MAY occur more than once within the IS-IS Link State Protocol Data Units πŸŽ€

link Identifiers get exchanged in the Extended Local Circuit ID field of the "Point-to-Point Three-Way Adjacency" IS-IS Option type [ISIS-3way]. it's giving handshake energy 🀝

2. Implications on Graceful Restart πŸ”„

the restarting node SHOULD follow the IS-IS restart procedures [ISIS-RESTART] and the RSVP-TE restart procedures [GMPLS-RSVP]. the main character of this section is the restarting node, and it has a whole routine πŸ‘‘

when the restarting node is going to originate its IS-IS Link State Protocol Data Units for TE links, these Link State Protocol Data Units SHOULD be originated with 0 unreserved bandwidth, Traffic Engineering Default metric set to 0xffffff. also, if the link has LSC or FSC as its Switching Capability, then they SHOULD be originated with 0 as Max LSP Bandwidth, until the node is able to determine the amount of unreserved resources taking into account the resources reserved by the already established LSPs that have been preserved across the restart. once the restarting node determines the amount of unreserved resources, taking into account the resources reserved by the already established LSPs that have been preserved across the restart, the node SHOULD advertise these resources in its Link State Protocol data units πŸ¦‹

in addition, in the case of a planned restart prior to restarting, the restarting node SHOULD originate the IS-IS Link State Protocol data units for TE links with 0 as unreserved bandwidth. also, if the link has LSC or FSC as its Switching Capability, then they SHOULD be originated with 0 as Max LSP Bandwidth. this would discourage new LSP establishment through the restarting router πŸ™ˆ

neighbors of the restarting node SHOULD continue to advertise the actual unreserved bandwidth on the TE links from the neighbors to that node 🫢

3. Security Considerations πŸ”

okay this section is serious, so pay attention 😭 this document specifies the contents of GMPLS TE TLVs in IS-IS. these TLVs are not used for SPF computation or normal routing, so the extensions specified here have no direct effect on IP routing. but tampering with GMPLS TE TLVs may have an effect on the underlying transport (optical and/or SONET/SDH) network. that's a big deal πŸ’€ mechanisms to secure IS-IS Link State PDUs and/or the TE TLVs [ISIS-HMAC] can be used to secure the GMPLS TE TLVs as well πŸ”₯

for a discussion of general security considerations for IS-IS, see [ISIS-HMAC] πŸ“–

4. IANA Considerations πŸ“‹

this document defines the following new IS-IS TLV type that has been reflected in the IS-IS TLV codepoint registry:

      Type        Description              IIH   LSP   SNP
      ----        ----------------------   ---   ---   ---
       138        Shared Risk Link Group    n     y     n

this document also defines the following new sub-TLV types of top-level TLV 22 that have been reflected in the IS-IS sub-TLV registry for TLV 22:

      Type        Description                        Length
      ----        ------------------------------   --------
         4        Link Local/Remote Identifiers           8
        20        Link Protection Type                    2
        21        Interface Switching Capability   variable
                  Descriptor

5. References πŸ“š

5.1. Normative References

[GMPLS-ROUTING] Kompella, K., Ed., and Y. Rekhter, Ed., "Routing
                Extensions in Support of Generalized Multi-Protocol
                Label Switching (GMPLS)", RFC 4202, October 2005.

[GMPLS-RSVP]    Berger, L., Ed., "Generalized Multi-Protocol Label
                Switching (GMPLS) Signaling Resource ReserVation
                Protocol-Traffic Engineering (RSVP-TE) Extensions",
                RFC 3473, January 2003.

[GMPLS-SIG]     Berger, L., Ed., "Generalized Multi-Protocol Label
                Switching (GMPLS) Signaling Functional Description",
                RFC 3471, January 2003

[IEEE]          IEEE, "IEEE Standard for Binary Floating-Point
                Arithmetic", Standard 754-1985, 1985 (ISBN
                1-5593-7653-8).

[ISIS-3way]     Katz, D. and R. Saluja, "Three-Way Handshake for IS-
                IS Point-to-Point Adjacencies", RFC 5303, October
                2008.

[ISIS-HMAC]     Li, T. and R. Atkinson, "IS-IS Cryptographic
                Authentication", RFC 5304, October 2008.

[ISIS-RESTART]  Shand, M. and L. Ginsberg, "Restart Signaling for
                IS-IS", RFC 5306, October 2008.

[ISIS-TE]       Smit, H. and T. Li, "IS-IS Extensions for Traffic
                Engineering", RFC 5305, October 2008.

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

6. Acknowledgements 🫢

the authors would like to thank Jim Gibson, Suresh Katukam, Jonathan Lang, and Quaizar Vohra for their comments on the document. huge thank-you energy πŸ’–

7. Contributors πŸ’œ

Ayan Banerjee
Calient Networks
5853 Rue Ferrari
San Jose, CA 95138

Phone: +1 408 972 3645
EMail: abanerjee@calient.net


John Drake
Calient Networks
5853 Rue Ferrari
San Jose, CA 95138

Phone: +1 408 972 3720
EMail: jdrake@calient.net


Greg Bernstein
Grotto Networking

EMail: gregb@grotto-networking.com


Don Fedyk
Nortel Networks Corp.
600 Technology Park Drive
Billerica, MA 01821

Phone: +1 978 288 4506
EMail: dwfedyk@nortelnetworks.com


Eric Mannie
Independent Consultant

EMail: eric_mannie@hotmail.com
Debanjan Saha
Tellium Optical Systems
2 Crescent Place
P.O. Box 901
Ocean Port, NJ 07757

Phone: +1 732 923 4264
EMail: dsaha@tellium.com


Vishal Sharma

EMail: v.sharma@ieee.org

Authors' Addresses πŸ–ŠοΈ

Kireeti Kompella (editor)
Juniper Networks, Inc.
1194 N. Mathilda Ave
Sunnyvale, CA 94089

EMail: kireeti@juniper.net


Yakov Rekhter (editor)
Juniper Networks, Inc.
1194 N. Mathilda Ave
Sunnyvale, CA 94089

EMail: yakov@juniper.net

Copyright (C) The IETF Trust (2008).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property πŸ”

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

πŸ“¦ where this page comes from