RFC 6823

Advertising Generic Information in IS-IS

πŸ“… published December 2012, from ietf

RFC 6823: Advertising Generic Information in IS-IS πŸŽ€

Okay bestie, so this is RFC 6823 ✨, and it's called Advertising Generic Information in IS-IS. It's from the IETF's Request for Comments series, and the authors are L. Ginsberg, S. Previdi, and M. Shand, all at Cisco Systems. It's dated December 2010, and its ISSN is 2070-1721. The category is Standards Track, so this is an actual Internet standard, no cap πŸ’…. The header doesn't list anything it obsoletes or updates, so that's a clean slate 🌸.

Abstract ✨

This doc explains how generic application info gets advertised in IS-IS Link State Protocol Data Units (LSPs). "Generic" here means info that isn't directly about how IS-IS itself runs 🧚. It also gives you guidelines to follow when flooding that info around the network.

Status of This Memo πŸ’œ

This is an Internet Standards Track document.

It's a product of the Internet Engineering Task Force (IETF), so it reflects what the IETF community agreed on. 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/rfc6823.

Copyright (c) 2010 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, which are at http://trustee.ietf.org/license-info and were in effect on the date of publication. Please actually read these, because they spell out your rights and restrictions for this document. Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as described in the Simplified BSD License.

Table of Contents πŸ“

   1.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.  Conventions Used in This Document  . . . . . . . . . . . . . .  3
   3.  Encoding Format for GENINFO  . . . . . . . . . . . . . . . . .  3
     3.1.  GENINFO TLV  . . . . . . . . . . . . . . . . . . . . . . .  3
     3.2.  Use of Sub-TLVs in GENINFO TLV . . . . . . . . . . . . . .  5
   4.  GENINFO Flooding Procedures  . . . . . . . . . . . . . . . . .  5
     4.1.  Leaking Procedures . . . . . . . . . . . . . . . . . . . .  6
     4.2.  Minimizing Update Confusion  . . . . . . . . . . . . . . .  7
     4.3.  Interpreting Attribute Information . . . . . . . . . . . .  7
   5.  Use of a Separate Protocol Instance  . . . . . . . . . . . . .  7
   6.  Applicability of GENINFO TLV . . . . . . . . . . . . . . . . .  8
   7.  Standardization Requirements . . . . . . . . . . . . . . . . .  8
   8.  Security Considerations  . . . . . . . . . . . . . . . . . . .  9
   9.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  9
   10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  9
   11. Normative References . . . . . . . . . . . . . . . . . . . . . 10

1. Overview πŸ¦‹

[ISO10589] defines the format of Type-Length-Values (TLVs) that can be sent in IS-IS Protocol Data Units (PDUs). The first octet of a TLV is the "type" or "codepoint", and it sets the scope for the info and the format that follows. That means the protocol only has room for 256 different codepoints. Honestly, 256 has been generous for what IS-IS needs to run properly πŸ‘‘. But more and more people are using IS-IS Link State Protocol Data Units (LSPs) to advertise generic information (GENINFO) that has nothing to do with running IS-IS itself, and that eats into the TLV codepoint space fast 😭. So this document defines an encoding format for GENINFO that uses up as few TLV codepoints as possible while still giving you lots of flexibility in how GENINFO is represented.

This doc also covers the best way to advertise and flood LSPs that carry GENINFO. The goal is to stop stale info from hanging around, and to keep duplicate or conflicting info to a minimum when advertisements get updated πŸ’….

How the information inside GENINFO TLVs gets passed between an IS-IS protocol instance and the application that produces or consumes it is outside the scope of this specification πŸ™ˆ.

To keep advertising GENINFO from messing with routing, these advertisements MUST occur in the context of a non-zero instance of the IS-IS protocol as defined in [RFC6822], except where the rules for using the zero instance that are set out later in this document are followed ✨.

2. 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].

3. Encoding Format for GENINFO 🧚

The encoding format below has two goals for advertising GENINFO in IS-IS LSPs:

  • Minimize the number of IS-IS top level and sub-TLV codepoints required
  • Minimize the depth of sub-TLV levels required

To hit these goals, there's a new IANA registry for IS-IS GENINFO Application Identifiers. These numbers are unsigned 16-bit numbers, from 1 to 65535. Application-specific sub-TLV codepoints are unsigned 8-bit numbers, from 0 to 255. The sub-TLV codepoints are scoped by the Application Identifier. How the application specific sub-TLV codepoints are managed is outside the scope of this document 🌸.

3.1. GENINFO TLV πŸŽ€

The GENINFO TLV is how you advertise application-specific information that isn't directly related to how IS-IS operates πŸ“.

     Type:   251
     Length: Number of octets in the value field (3 to 255)
     Value:

                                          No. of octets
                +-----------------------+
                | Flags                 |     1
                +-----------------------+
                | Application ID        |     2
                +-----------------------+
                | Application           |
                | IP Address Info       |     0 to 20
                +-----------------------+
                |Additional Application-|     0 to (252 -
                |  Specific Information |     len of IP Address info)
                +-----------------------+


              Flags

                    0 1 2 3 4 5 6 7
                   +-+-+-+-+-+-+-+-+
                   |  Rsvd |V|I|D|S|
                   +-+-+-+-+-+-+-+-+

Here are the bit flags that are defined 🚩:

  • S bit (0x01): If the S bit is set (1), the GENINFO 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 the TLV leaking. πŸ’œ
  • D bit (0x02): When the GENINFO TLV is leaked from Level-2 to Level-1, the D bit MUST be set. Otherwise, this bit MUST be clear. GENINFO TLVs with the D bit set MUST NOT be leaked from Level-1 to Level-2. This is to prevent TLV looping πŸ”.
  • I bit (0x04): When the I bit is set, the 4-octet IPv4 address associated with the application immediately follows the Application ID 🌐.
  • V bit (0x08): When the V bit is set, the 16-octet IPv6 address associated with the application immediately follows either the Application ID (if I bit is clear) or the IPv4 address (if I bit is set) 🌈.

Some of the fields, explained:

Application ID : An identifier assigned to this application through the IANA registry defined later in this document πŸͺͺ.

Application IPv4 Address Info : The IPv4 address associated with the application. It's not necessarily the address of a router running the IS-IS protocol πŸ™ƒ.

Application IPv6 Address Info : The IPv6 address associated with the application. It's not necessarily the address of a router running the IS-IS protocol either πŸ™ƒ.

Additional Application-Specific Information : Each application can define extra info to encode in a GENINFO TLV after the fixed info. Defining that stuff is beyond the scope of this document πŸ§ƒ.

3.2. Use of Sub-TLVs in GENINFO TLV πŸ¦„

[RFC5305] is where sub-TLVs were introduced and defined. One big reason to use sub-TLVs, instead of fixed encoding inside a TLV, is that you can add new info in a backwards compatible way. Just like with TLVs, implementations are required to ignore sub-TLVs they don't understand 🫢.

GENINFO TLVs MAY include sub-TLVs in the application specific information, as deemed necessary and appropriate for each application. The scope of the codepoints in those sub-TLVs is set by the combination of the GENINFO TLV codepoint and the Application ID. In other words, the sub-TLV codepoints are private to the application. These sub-TLVs are called APPsub-TLVs πŸ’….

Sometimes you need more levels of APPsub-TLVs, when there's variable info scoped by a specific APPsub-TLV. These "nested" sub-TLVs MUST be encoded the same way as sub-TLVs, meaning with a one-octet Type field, a one-octet Length field, and zero or more octets of Value 🧩.

4. GENINFO Flooding Procedures 🌊

This section describes the procedures that apply to propagating LSPs that contain GENINFO TLVs. These procedures were previously discussed in [RFC4971]. This section is meant to serve as a reference specification for future documents that define how a GENINFO TLV gets used for a specific application. That way, nobody has to repeat these procedures in every application-specific document πŸ™Œ.

Each GENINFO TLV contains information about exactly one application instance, identified by the Application ID in the GENINFO TLV. When you need to advertise sets of information that share the same Application ID but have different flooding scopes, a router MUST originate a minimum of one GENINFO TLV for each required flooding scope. GENINFO TLVs with information that has area/level scope will have the S bit clear. These TLVs MUST NOT be leaked into another level. GENINFO TLVs with information that has domain scope will have the S bit set. These TLVs MUST be leaked into other IS-IS levels. When a TLV is leaked from Level-2 to Level-1, the D bit MUST be set in the Level-1 LSP advertisement πŸ”₯.

4.1. Leaking Procedures ✨

okay so, when GENINFO TLVs get leaked downward from Level-2 into Level-1 🌸 and the TLV came from a Level-1 router in another area, the same TLV can show up multiple times from different L2 routers in the originating area 😭. bestie, the router doing the downward leaking MUST check for that duplication by comparing the contents of the TLVs. And the set of LSPs a router generates for a given level MUST NOT contain two or more copies of the same GENINFO TLV. no duplicates, periodt πŸ’…

okay now the stale info situation, which is SO important πŸ™ˆ. To stop anyone from using old GENINFO info, a system MUST NOT use a GENINFO TLV sitting in an LSP from a system that isn't currently reachable via Level-x paths. Here "x" is the level (1 or 2) that the LSP containing the GENINFO TLV is associated with. And yes, leaking a GENINFO TLV counts as one of the uses banned under these conditions 🚫. Here's an example of what could go wrong without this rule πŸ‘€.

Let's say Level-1 router A makes a GENINFO TLV and floods it to two L1/L2 routers, S and T. They then flood it into the Level-2 sub-domain πŸ¦‹. Now the Level-1 area splits, so A and S are in one partition and T is in another. IP routing keeps working, fine, but if A publishes a revised version of the GENINFO TLV, or decides to stop advertising it, S follows along πŸ™Œ. T, though? T keeps advertising the old version until the LSP times out πŸ’€.

Routers in other areas now have to pick between T's copy of A's GENINFO TLV and S's copy of A's information, and there's no reliable way for them to decide 😩. That's why it's so important that T stops leaking A's information. Then nobody else can end up using stale info from A ✨.

4.2. Minimizing Update Confusion πŸŽ€

so here's the drama. If an update to a TLV gets advertised in an LSP with a different number than the LSP that held the old advertisement, other systems might temporarily have either 0 copies or 2 copies of that advertisement πŸ˜΅β€πŸ’«. Which one happens depends on the order in which the newer copies of the old LSP and the new LSP reach each system.

Whenever it's possible, an implementation SHOULD advertise the update to a GENINFO TLV in the LSP with the same number as the advertisement it replaces 🫢. If that isn't possible, the two affected LSPs SHOULD be flooded as an atomic action, meaning they go out together as one unit πŸ“¦.

Systems that receive an update to an existing GENINFO TLV can reduce the disruption by using a hold-down time before they process the update. That gives them time to receive multiple LSPs tied to the same update before they start processing anything 🧚.

4.3. Interpreting Attribute Information πŸ”

okay, so if a receiving system has two copies of a GENINFO TLV with the same Application ID, the attribute information in those two TLVs that doesn't conflict MUST be treated as additive βž•. But when the two GENINFO TLVs conflict, meaning there are different settings for the same attribute, the procedure for picking which copy shall be used is undefined πŸ€·β€β™€οΈ. Not specified, bestie, so don't go looking for it πŸ’….

5. Use of a Separate Protocol Instance πŸ¦‹

the IS-IS flooding mechanism is honestly so attractive for reliably and efficiently spreading info around 😍. But it's wise to remember that the main job of that mechanism is flooding info that's needed for IS-IS to work correctly πŸ› οΈ. Flooding stuff that isn't directly related to IS-IS supporting routing actually makes the protocol worse 😀. Why? Because LSP updates happen more often, and routers spend processing power on non-routing info when that power should go to responding quickly to reachability changes πŸƒβ€β™€οΈ.

So, GENINFO advertising MUST happen in the context of a non-zero instance of the IS-IS protocol, as defined in [RFC6822]. The one exception is when the zero instance use is defined in a Standards Track RFC πŸ“œ.

Using a separate instance lets both the flooding and the processing of non-routing info be decoupled from the info needed for correct data routing 🌈. That means the flooding and processing can be prioritized properly ⭐.

Even with a separate instance, you still need to be careful about how often this info gets updated πŸ₯Ί. One of the biggest oversights is not dampening changes to the information being advertised, and that can cause flooding storms πŸŒͺ️. So any documents that specify how these mechanisms get used MUST define the expected rate of change of the information being advertised πŸ“Š.

If you want to independently control the flooding scope for info belonging to two different applications, you can do it by using separate non-zero protocol instances for each application [RFC6822] πŸŽ€.

6. Applicability of GENINFO TLV πŸ’œ

The GENINFO TLV is there to advertise application-specific info inside IS-IS LSPs, info that isn't directly about how IS-IS itself operates πŸ§šβ€β™€οΈ. Info advertised in the GENINFO TLV MUST NOT alter basic IS-IS protocol operation. That includes (but isn't limited to) establishing adjacencies, the update process, and the decision process 🚫. Hands off the core stuff, bestie πŸ™…β€β™€οΈ.

7. Standardization Requirements πŸ“š

GENINFO is meant to advertise info on behalf of applications whose operations have been defined in a public specification, as discussed in [RFC5226] 🌸.

The public specification MUST include:

  • a description of the sub-TLV allocation policy
  • discussion of security issues
  • discussion of the rate of change of the information being advertised
  • justification for the use of GENINFO

8. Security Considerations πŸ”

okay, this section is SERIOUS, so pay attention 🚨. The introduction and use of the new TLV codepoint for GENINFO, on its own, raises no new security issues for IS-IS βœ….

BUT, and this is a big but 😱, information advertised in a GENINFO TLV by a given application MAY introduce new security issues. The public specification that defines how an application uses GENINFO MUST include a discussion of those security issues πŸ”₯. Where it's appropriate, it is recommended that either [RFC5304] or [RFC5310] be used πŸ›‘οΈ. Protect your LSPs, babe πŸ’–.

9. IANA Considerations πŸ“‹

Per this document, IANA has registered a new IS-IS TLV in the "IS-IS TLV Codepoints" registry πŸŽ‰:

Type     Description                           IIH   LSP   SNP  Purge
----     ----------------------------------    ---   ---   ---  -----
251      Generic Information                    n     y     n     n

IANA also made a brand new registry 🌈. This one manages the assignment of Application Identifiers that can be used in the Generic Information TLV. These identifiers are unsigned 16-bit numbers ranging in value from 1 to 65535, and the value 0 is reserved πŸ™…β€β™€οΈ. The registration procedure is "Expert Review," as defined in [RFC5226]. The expert MUST verify that the public specification defining the use of GENINFO for the application adequately discusses all the points mentioned in Section 7 of this document 🧐.

The following information MUST be specified in the registry:

  • ID Value (1-65535)
  • Description
  • Allowed in Instance zero (Y/N)
  • Reference Specification

10. Acknowledgements 🫢

The authors would like to thank JP. Vasseur and David Ward for providing the need to produce this document, and Tony Li for making sure it was done with appropriate wisdom and prudence πŸ‘‘.

11. Normative References πŸ“–

  • [ISO10589] International Organization for Standardization, "Intermediate system to Intermediate system intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode Network Service (ISO 8473)", ISO/IEC 10589:2002, Second Edition, Nov. 2002.
  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC4971] Vasseur, JP., Shen, N., and R. Aggarwal, "Intermediate System to Intermediate System (IS-IS) Extensions for Advertising Router Information", RFC 4971, July 2007.
  • [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
  • [RFC5304] Li, T. and R. Atkinson, "IS-IS Cryptographic Authentication", RFC 5304, October 2008.
  • [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic Engineering", RFC 5305, October 2008.
  • [RFC5310] Bhatia, M., Manral, V., Li, T., Atkinson, R., White, R., and M. Fanto, "IS-IS Generic Cryptographic Authentication", RFC 5310, February 2009.
  • [RFC6822] Previdi, S., Ginsberg, L., Shand, M., Roy, A., and D. Ward, "IS-IS Multi-Instance", RFC 6822, December 2012.

Authors' Addresses πŸŽ€

Les Ginsberg
Cisco Systems
510 McCarthy Blvd.
Milpitas, CA  95035
USA

EMail: ginsberg@cisco.com


Stefano Previdi
Cisco Systems
Via Del Serafico 200
00142 - Roma
Italy

EMail: sprevidi@cisco.com


Mike Shand
Cisco Systems
250, Longwater Avenue.
Reading, Berks  RG2 6GB
UK

EMail: imc.shand@gmail.com
πŸ“¦ where this page comes from