RFC 4971

Intermediate System to Intermediate System (IS-IS) Extensions for Advertising Router Information

πŸ“… published July 2007, from ietf

RFC 4971 πŸ’– IS-IS Extensions for Advertising Router Information

okay bestie, so this is RFC 4971 πŸŽ€, and the official title is "Intermediate System to Intermediate System (IS-IS) Extensions for Advertising Router Information." It's a Standards Track doc from July 2007, so it's an actual Internet standard and not just a suggestion πŸ’…. It was written by JP. Vasseur (Ed.), N. Shen (Ed.), and R. Aggarwal (Ed.). Vasseur and Shen are at Cisco Systems, Inc., and Aggarwal is at Juniper Networks. The title block doesn't list anything it obsoletes or updates, so it's not replacing or changing any other RFC. It's just new 🧚


Status of This Memo 🌸

okay so this bit says the doc is an Internet standards track protocol for the Internet community, and it wants people to talk about it and suggest improvements 🫢. If you want to know where the protocol actually stands, check the current edition of the "Internet Official Protocol Standards" (STD 1). And yes, distribution of this memo is unlimited, so share away πŸ¦‹

it's Copyright (C) The IETF Trust (2007) πŸ’œ keeping it legal, babe

Abstract πŸ“

so the big idea is this 😭: the doc defines a new optional IS-IS TLV called CAPABILITY. It's made of multiple sub-TLVs, and it lets a router announce its capabilities to everyone in an IS-IS level or the whole routing domain πŸ”₯ literally main character energy for routers


Table of Contents πŸ—‚οΈ

   1. Introduction ....................................................2
      1.1. Conventions Used in This Document ..........................2
   2. IS-IS Router CAPABILITY TLV .....................................3
   3. Elements of Procedure ...........................................4
   4. Interoperability with Routers Not Supporting the
      Capability TLV ..................................................5
   5. Security Considerations .........................................6
   6. IANA Considerations .............................................6
   7. Acknowledgment ..................................................6
   8. References ......................................................6
      8.1. Normative References .......................................6
      8.2. Informative References .....................................8

1. Introduction πŸ¦‹

okay so there are a bunch of situations where it's super useful for IS-IS [IS-IS] [IS-IS-IP] routers to know what the other routers in their IS-IS level, area, or routing domain can do 🧚 To show what I mean, here are three MPLS Traffic Engineering (TE) examples:

  1. Mesh-group: setting up a mesh of TE Label Switched Paths (LSPs) [IS-IS-TE] takes a lot of config work 😩 [AUTOMESH] proposes an auto-discovery mechanism where every Label Switching Router (LSR) in a mesh advertises its mesh-group membership using IS-IS extensions. so much easier πŸ’…
  2. Point to Multipoint TE LSP (P2MP LSP). a specific sub-TLV ([TE-NODE-CAP]) lets an LSR advertise its Point To Multipoint capabilities ([P2MP] and [P2MP-REQS]) 🌈
  3. Inter-area traffic engineering: advertising the IPv4 and/or the IPv6 Traffic Engineering Router IDs πŸ”₯

the use of IS-IS for Path Computation Element (PCE) discovery might also be considered, and the PCE WG will be talking about it πŸ‘‘

the capabilities above need new sub-TLVs carried inside the CAPABILITY TLV that this doc defines ✨

but just so you know, those examples are only for illustration πŸ™ˆ this doc proposes a generic capability advertising mechanism that isn't limited to MPLS Traffic Engineering. it's giving flexibility πŸ’–

so once again: this doc defines a new optional IS-IS TLV named CAPABILITY, made of multiple sub-TLVs, which lets a router announce its capabilities within an IS-IS level or the entire routing domain. the applications above need new sub-TLVs carried inside the CAPABILITY TLV defined here 🫢

and the definition of those sub-TLVs is outside the scope of this document 🌸 not my problem, bestie (it's someone else's doc!)

1.1. Conventions Used in This Document πŸ’œ

okay this part is the key-word rulebook πŸ“– 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 [RFC-2119]. so they're not just vibes, they're official πŸ’…

2. IS-IS Router CAPABILITY TLV πŸŽ€

the IS-IS Router CAPABILITY TLV is made of 1 octet for the type, 1 octet that says how many bytes are in the value field, and then a variable-length value field 🧚 that value field starts with a 4-octet Router ID (which tells you where the TLV came from), and then comes 1 octet of flags.

a set of optional sub-TLVs can follow the flags. those sub-TLVs are formatted as described in RFC 3784 [IS-IS-TE] πŸ’–

   TYPE: 242
   LENGTH: from 5 to 255
   VALUE:
     Router ID (4 octets)
     Flags (1 octet)
     Set of optional sub-TLVs (0-250 octets)
   Flags

             0 1 2 3 4 5 6 7
             +-+-+-+-+-+-+-+-+
             | Reserved  |D|S|
             +-+-+-+-+-+-+-+-+

only two bit flags are defined right now πŸ¦‹

S bit (0x01): if the S bit is set (1), the IS-IS Router CAPABILITY TLV MUST be flooded across the entire routing domain πŸ”₯ if the S bit is not set (0), the TLV MUST NOT be leaked between levels. this bit MUST NOT be altered during TLV leaking. no touching it, bestie πŸ™…β€β™€οΈ

D bit (0x02): when the IS-IS Router CAPABILITY TLV is leaked from level-2 to level-1, the D bit MUST be set. otherwise, this bit MUST be clear. IS-IS Router capability TLVs with the D bit set MUST NOT be leaked from level-1 to level-2. this is to stop TLV looping πŸŒ€ which is so iconic of it honestly

the Router CAPABILITY TLV is OPTIONAL 🌸 as Section 3 explains, more than one Router CAPABILITY TLV from the same source MAY be present ✨

how an application uses the Router Capability TLV isn't specified in this doc. that's outside the scope of this document πŸ’œ

3. Elements of Procedure 🧚

so this is the rulebook for how routers actually behave πŸ“‹

a router that generates a CAPABILITY TLV MUST have a Router ID that is a 32-bit number. the ID MUST be unique within the IS-IS area. if the router generates any capability TLVs with domain flooding scope, then the ID MUST also be unique within the IS-IS routing domain πŸ”₯ unique IDs or nothing, babe

when a router advertises capabilities with different flooding scopes, it MUST originate a minimum of two Router CAPABILITY TLVs, each one carrying the set of sub-TLVs with the same flooding scope πŸ’… for example, say a router advertises two sets of capabilities, C1 and C2, with area/level scope and routing domain scope respectively. C1 and C2 are specified by their own sub-TLV(s), so the router ends up originating two Router CAPABILITY TLVs:

  • one Router CAPABILITY TLV with the S flag cleared, carrying the sub-TLV(s) for C1. this one will not be leaked into another level 🌸
  • one Router CAPABILITY TLV with the S flag set, carrying the sub-TLV(s) for C2. this one will be leaked into other IS-IS levels. when the TLV gets leaked from level-2 to level-1, the D bit will be set in the level-1 LSP advertisement ✨

so here's the stale-info problem 😭 to avoid using old capabilities, a system MUST NOT use a Capability TLV present in an LSP from a system that is not currently reachable via Level-x paths. "x" is the level (1 or 2) where the sending system advertised the TLV. this applies whether or not the sending system is the one that originated the Capabilities TLV. and yes, leaking a Capabilities TLV is one of the things banned under these conditions πŸ™…β€β™€οΈ

Example: say Level-1 router A generates a Capability TLV and floods it to two L1/L2 routers, S and T. they'll flood it into the Level-2 domain. now the Level-1 area partitions, so A and S are in one partition and T is in another. IP routing still works, but if A issues a revised version of the CAP TLV, or stops advertising it, S follows suit. T keeps advertising the old version until the LSP times out 😱

so other areas have to pick whether to trust T's copy of A's capabilities or S's copy of A's info, and they have no reliable way to choose πŸ’€ the fix is making sure T stops leaking A's information. that way, other routers can't end up using stale info from A 🫢

okay now the update stuff πŸ”„ in IS-IS, the atomic unit of an update is a TLV. more precisely, for TLVs that allow multiple entries in the value field (like IS-neighbors), the atomic unit is an entry in the value field of a TLV. if an update to an entry in a TLV is advertised in an LSP fragment that's different from the fragment with the old advertisement, other systems can briefly have either 0 copies or 2 copies of a particular advertisement. it depends on the order the new and old LSP fragments show up at other systems πŸ˜΅β€πŸ’«

wherever possible, an implementation SHOULD advertise the update to a capabilities TLV in the same LSP fragment as the advertisement it replaces. where that isn't possible, the two affected LSP fragments should be flooded as an atomic action 🌈

systems that get an update to an existing capability TLV can cut down on disruption by using a holddown time before processing the update. this lets them receive multiple LSP fragments for the same update before they start processing 🧚

if a receiving system has two copies of a capabilities TLV from the same system and they have different settings for a given attribute, the procedure for choosing which copy shall be used is undefined πŸ€·β€β™€οΈ the spec just doesn't say.

4. Interoperability with Routers Not Supporting the Capability TLV 🌸

routers that don't support the Router CAPABILITY TLV MUST silently ignore the TLV(s) and keep processing other TLVs in the same LSP. routers that don't support specific sub-TLVs inside a Router CAPABILITY TLV MUST silently ignore those unsupported sub-TLVs and keep processing the sub-TLVs they do support πŸ’– how partial support affects the capabilities advertised in the Router CAPABILITY TLV is outside this doc's scope 🫢

for Router CAPABILITY TLVs with domain-wide scope originated by L1 Routers to be flooded across the entire domain, at least one L1/L2 Router in every area of the domain MUST support the Router CAPABILITY TLV πŸ‘‘

if leaking the CAPABILITY TLV is required, the entire CAPABILITY TLV MUST be leaked into another level, even if it contains some unsupported sub-TLVs πŸ”₯

5. Security Considerations 😭

okay this section is serious, so listen up πŸ™

any new security issues from the procedures here depend on whether LSPs can be snooped and modified. the ease or difficulty of that hasn't changed πŸ™ˆ but since LSPs may now carry extra info about router capabilities, that new info would also be available to an attacker. specs built on this mechanism need to describe the security considerations around disclosing and modifying their information πŸ’€

note that an integrity mechanism, such as the one defined in [RFC-3567] or [IS-IS-HMAC], should be applied if there's a high risk from modification of capability information πŸ›‘οΈ this is a big deal, bestie, don't skip it.

6. IANA Considerations πŸŽ€

IANA assigned a new IS-IS TLV code-point for the new IS-IS TLV type, the IS-IS Router CAPABILITY TLV, which is defined in this document. the assigned value is 242 ✨ and that's the number you'll see in the TYPE field up in Section 2 πŸ’–

7. Acknowledgment 🌸

okay so the authors wanted to give a huge shoutout to Jean-Louis Le Roux, Paul Mabey, Andrew Partan, and Adrian Farrel for their useful comments 🫢 the way they helped make this doc better is literally iconic, bestie πŸ’–

8. References πŸ“š

8.1. Normative References

These are the ones you NEED to read to get the spec right πŸ‘‘ (I'm keeping the exact entries here so nothing gets lost in translation πŸ’…)

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

[IS-IS]       "Intermediate System to Intermediate System Intra-
              Domain Routeing Exchange Protocol for use in
              Conjunction with the Protocol for Providing the
              Connectionless-mode Network Service (ISO 8473)", ISO
              10589.

[RFC-3567]    Li, T. and R. Atkinson, "Intermediate System to
              Intermediate System (IS-IS) Cryptographic
              Authentication", RFC 3567, July 2003.

[IS-IS-IP]    Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
              dual environments", RFC 1195, December 1990.

[IS-IS-TE]    Smit, H. and T. Li, "Intermediate System to
              Intermediate System (IS-IS) Extensions for Traffic
              Engineering (TE)", RFC 3784, June 2004.

8.2. Informative References

these ones are more like bonus reading πŸ¦‹ super helpful for the bigger picture, but not strictly required

[AUTOMESH]    Vasseur, JP., Ed., Le Roux, JL., Ed., Yasukawa, S.,
              Previdi, S., Psenak, P., and P. Mabbey, "Routing
              extensions for Discovery of Multiprotocol (MPLS) Label
              Switch Router (LSR) Traffic Engineering (TE) Mesh
              Membership", RFC 4972, July 2007.

[TE-NODE-CAP] Vasseur, JP., Ed., and J.L. Le Roux, "Routing
              Extensions for Discovery of Traffic Engineering Node
              Capabilities", Work in Progress, April 2007.

[P2MP]        Aggarwal, R., Ed., Papadimitriou, D., Ed., and S.
              Yasukawa, Ed., "Extensions to Resource Reservation
              Protocol - Traffic Engineering (RSVP-TE) for Point-to-
              Multipoint TE Label Switched Paths (LSPs)", RFC 4875,
              May 2007.

[P2MP-REQS]   Yasukawa, S., Ed., "Signaling Requirements for Point-
              to-Multipoint Traffic-Engineered MPLS Label Switched
              Paths (LSPs)", RFC 4461, April 2006.

[IS-IS-HMAC]  Bhatia, M., Ed. and V. Manral, Ed., "IS-IS Generic
              Cryptographic Authentication", Work in Progress, May
              2007.

Authors' Addresses πŸ’Œ

here's where to find the people who made this happen ✨ (addresses kept exactly as they appear in the original πŸŽ€)

Jean-Philippe Vasseur
CISCO Systems, Inc.
1414 Massachusetts Avenue
Boxborough, MA 01719
USA
EMail: jpv@cisco.com

Stefano Previdi
CISCO Systems, Inc.
Via Del Serafico 200
00142 - Roma
ITALY
EMail: sprevidi@cisco.com
Mike Shand
Cisco Systems
250 Longwater Avenue,
Reading,
Berkshire,
RG2 6GB
UK
EMail: mshand@cisco.com

Les Ginsberg
Cisco Systems
510 McCarthy Blvd.
Milpitas, Ca. 95035 USA
EMail: ginsberg@cisco.com

Acee Lindem
Redback Networks
102 Carric Bend Court
Cary, NC 27519
USA
EMail: acee@redback.com

Naiming Shen
Cisco Systems
225 West Tasman Drive
San Jose, CA 95134
USA
EMail: naiming@cisco.com

Rahul Aggarwal
Juniper Networks
1194 N. Mathilda Avenue
San Jose, CA 94089
USA
EMail: rahul@juniper.net

Scott Shaffer
EMail: sshaffer@bridgeport-networks.com

Copyright (C) The IETF Trust (2007).

this doc is covered by the rights, licenses and restrictions in BCP 78, and apart from what's set out there, the authors keep all their rights πŸ’œ

the document and everything in it 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 doesn't take a side on whether any intellectual property rights that someone might claim over the tech in this doc are valid or how far they reach, or whether a license for them would be available πŸ€·β€β™€οΈ it also doesn't claim it went looking for any of those rights itself. info about how RFC documents handle rights lives in BCP 78 and BCP 79 πŸ“š

copies of IPR disclosures sent to the IETF Secretariat, any assurances of licenses that might be offered, and the results of any attempt to get a general license or permission for implementers or users to use these proprietary rights can all be found through the IETF online IPR repository at http://www.ietf.org/ipr 🌈

the IETF also invites anyone who knows about copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard to let them know. send that info to ietf-ipr@ietf.org πŸ’Œ

Acknowledgement πŸ’–

funding for the RFC Editor function is currently provided by the Internet Society 🫢 and that's a wrap, bestie πŸ¦‹βœ¨

πŸ“¦ where this page comes from