RFC 4970

Extensions to OSPF for Advertising Optional Router Capabilities

πŸ“… published July 2007, from ietf

RFC 4970: Extensions to OSPF for Advertising Optional Router Capabilities πŸ’–

Bestie, here's the deets πŸŽ€

  • Number: RFC 4970
  • Network Working Group, published July 2007 πŸ“…
  • Category: Standards Track πŸ”₯
  • Authors: A. Lindem, Ed. (Redback Networks), N. Shen, JP. Vasseur (Cisco Systems), R. Aggarwal (Juniper Networks), and S. Shaffer (BridgePort Networks) πŸ‘‘
  • Obsoletes / Updates: the title block doesn't list anything this RFC obsoletes or updates πŸ™ˆ

Status of This Memo ✨

okay so this document is an Internet standards track protocol for the Internet community, and it's asking everyone for discussion and suggestions for improvements 🫢 If you want to know where this protocol stands, check the current edition of the "Internet Official Protocol Standards" (STD 1). The memo can be distributed with no limits, which is so generous 🌸

Copyright (C) The IETF Trust (2007).

Abstract πŸ¦‹

It's really useful for routers in an OSPFv2 or OSPFv3 routing domain to know what their neighbors and the other routers in the domain can do πŸ‘€ This document proposes extensions to OSPFv2 and OSPFv3 so routers can advertise optional capabilities, using a brand-new Router Information (RI) LSA πŸ’… In OSPFv2, the RI LSA gets a new opaque LSA type ID. In OSPFv3, it gets a new LSA type function code. In both protocols, the RI LSA can be advertised at any of the flooding scopes: link, area, or autonomous system (AS) 🧚

Table of Contents 🌈

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
  1.1.  Requirements Notation  . . . . . . . . . . . . . . . . . .  3
2.  OSPF Router Information (RI) LSA . . . . . . . . . . . . . . .  3
  2.1.  OSPFv2 Router Information (RI) Opaque LSA  . . . . . . . .  3
  2.2.  OSPFv3 Router Information (RI) Opaque LSA  . . . . . . . .  5
  2.3.  OSPF Router Informational Capabilities TLV . . . . . . . .  5
  2.4.  Assigned OSPF Router Informational Capability Bits . . . .  6
  2.5.  Flooding Scope of the Router Information LSA . . . . . . .  7
3.  Router Information LSA Opaque Usage and Applicability  . . . .  7
4.  Security Considerations  . . . . . . . . . . . . . . . . . . .  7
5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  8
6.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
  6.1.  Normative References . . . . . . . . . . . . . . . . . . . 10
  6.2.  Informative References . . . . . . . . . . . . . . . . . . 10
Appendix A.  Acknowledgments . . . . . . . . . . . . . . . . . . . 11

1. Introduction πŸ§šβ€β™€οΈ

Okay, so routers in an OSPFv2 [OSPF] or OSPFv3 [OSPFV3] routing domain need to know what their neighbors and other routers can do, and this doc is all about making that work πŸ’– It helps with both advertising and discovering OSPFv2 and OSPFv3 capabilities. Throughout the doc, we just say "OSPF" when something applies to both versions, and "OSPFv2" or "OSPFv3" when the text is version-specific πŸ“

Here's the tea β˜• OSPF already uses the options field in LSAs and hello packets to advertise optional router capabilities. But in OSPFv2, every single bit in that field is already taken, so there's literally no room for new optional capabilities πŸ’€ So this document extends OSPF to advertise those capabilities through opaque LSAs in OSPFv2 and new LSAs in OSPFv3. For the capabilities OSPF already has, backward-compatibility issues mean this advertisement is mostly for information 🫢 For future OSPF features, this advertisement MAY be used as the sole mechanism for advertisement and discovery ✨

1.1. Requirements Notation πŸ“

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

2. OSPF Router Information (RI) LSA 🌸

OSPF routers MAY optionally advertise their optional capabilities in a link-scoped, area-scoped, or AS-scoped LSA πŸ¦‹ For the capabilities OSPF already has, this advertisement is mainly informational. Future OSPF features could use the RI LSA as the sole mechanism for advertisement and discovery πŸ‘‘ The RI LSA will be originated initially when an OSPF router instance is created, and again whenever one of the advertised capabilities is configured or changed πŸ’…

2.1. OSPFv2 Router Information (RI) Opaque LSA πŸ”₯

OSPFv2 routers will advertise a link-scoped, area-scoped, or AS-scoped Opaque-LSA [OPAQUE]. The OSPFv2 Router Information LSA has an Opaque type of 4 and an Opaque ID of 0 🧚

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            LS age             |     Options   |  9, 10, or 11 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       4       |                    0                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Advertising Router                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     LS sequence number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         LS checksum           |             length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +-                            TLVs                             -+
   |                             ...                               |


                OSPFv2 Router Information Opaque LSA

The format of the TLVs in the body of an RI LSA is the same as the one used by the Traffic Engineering Extensions to OSPF [TE] πŸ’– The LSA payload is made of one or more nested Type/Length/Value (TLV) triplets. Each TLV looks 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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |              Type             |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            Value...                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


                               TLV Format

The Length field is the length of the value portion in octets, so a TLV with no value portion has a length of 0 πŸ™ˆ Each TLV is padded to 4-octet alignment, but the padding isn't counted in the Length field. So a 3-octet value has a length of 3, but the whole TLV takes up 8 octets. Nested TLVs are 32-bit aligned too. For example, a 1-byte value has its length field set to 1, and 3 octets of padding get added to the end of the value portion. Unrecognized types are ignored 🫢

2.2. OSPFv3 Router Information (RI) Opaque LSA πŸ¦‹

The OSPFv3 Router Information LSA has a function code of 12, and its S1/S2 bits depend on the flooding scope you want for the LSA 🌈 The U bit is set, which tells everyone that the OSPFv3 RI LSA should be flooded even if it isn't understood. The Link State ID (LSID) for this LSA is 0. That's unambiguous, because an OSPFv3 router only advertises a single RI LSA per flooding scope ✨

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            LS age             |1|S12|          12             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       0  (Link State ID)                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Advertising Router                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       LS sequence number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        LS checksum           |             Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +-                            TLVs                             -+
   |                             ...                               |


                       OSPFv3 Router Information LSA

The TLVs in the body of an RI LSA are formatted exactly as described in Section 2.1 🧚

When a new Router Information LSA TLV gets defined, its specification MUST explicitly state whether the TLV applies to OSPFv2 only, OSPFv3 only, or both OSPFv2 and OSPFv3 πŸ”₯

2.3. OSPF Router Informational Capabilities TLV πŸ’…

The first defined TLV in the body of an RI LSA is the Router Informational Capabilities TLV πŸ‘‘ A router advertising an RI LSA MAY include the Router Informational Capabilities TLV. If it's included, it MUST be the first TLV in the LSA. The TLV also MUST accurately reflect the OSPF router's capabilities in the scope being advertised 🫢 Here's the main thing though: the informational capabilities have no impact on how the OSPF protocol operates. They're advertised purely for information πŸ’–

The format of the Router Informational Capabilities TLV is as follows:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |              Type             |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Informational Capabilities                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


                OSPF Router Informational Capabilities TLV

Here's how each field works πŸ“

  • Type: a 16-bit field set to 1.
  • Length: a 16-bit field giving the length of the value portion in octets. It's always a multiple of 4 octets, depending on how many capabilities get advertised. Initially, the length is 4, which means 4 octets of informational capability bits.
  • Value: a variable-length sequence of capability bits, rounded up to a multiple of 4 octets and padded with undefined bits. Initially there are 4 octets of capability bits. The bits are numbered left to right, with the most significant bit being bit 0 🌈

The Router Informational Capabilities TLV MAY be followed by optional TLVs that further specify a capability ✨

2.4. Assigned OSPF Router Informational Capability Bits 🌸

okay so here's the bit list, bestie! πŸ’… Each bit in the capabilities TLV means something specific, and these are the ones that are assigned right now:

   Bit       Capabilities

   0         OSPF graceful restart capable [GRACE]
   1         OSPF graceful restart helper  [GRACE]
   2         OSPF Stub Router support [STUB]
   3         OSPF Traffic Engineering support [TE]
   4         OSPF point-to-point over LAN [P2PLAN]
   5         OSPF Experimental TE [EXP-TE]
   6-31      Unassigned (Standards Action)

             OSPF Router Informational Capabilities Bits

Bits 6 through 31 are still unassigned, and getting one takes a Standards Action. Not a vibe check, a whole process πŸ™ˆ

2.5. Flooding Scope of the Router Information LSA πŸ¦‹

the flooding scope for a Router Information LSA depends on its LSA type ✨ For OSPFv2, a type 9 (link-scoped), type 10 (area-scoped), or type 11 (AS-scoped) opaque LSA may be flooded. For OSPFv3, the S1 and S2 bits in the LSA type decide the scope. If you pick AS-wide flooding, the originating router should also advertise area-scoped LSA(s) into any attached Not-So-Stubby Area (NSSA) area(s). That's the bit where it gets iconic πŸ‘‘

An OSPF router MAY advertise different capabilities when both NSSA area scoped LSA(s) and an AS-scoped LSA are advertised. This lets functional capabilities stay in their lane πŸ’œ Like, a router can be an area border router but only do traffic engineering (TE) in some of its areas. Main character energy, but make it scoped πŸŽ€

The advertising router picks the flooding scope, and that's a local policy call 🌈 The originating router MAY advertise multiple RI LSAs as long as the flooding scopes are different. And every TLV needs its own flooding scope rules, which MUST be specified in the accompanying specs for any new Router Information LSA TLVs. No skipping that part, periodt πŸ’…

3. Router Information LSA Opaque Usage and Applicability 🧚

okay the Router Information (RI) LSA exists to advertise info about the aggregate OSPF router as a whole πŸ“ Normally it should only hold TLVs with a single value or just a few values. It is NOT a generic junk drawer for everything under the sun πŸ’€

Why? The goal is to keep the RI LSA small enough that a router can always fit all its TLVs into one LSA, and to keep figuring out what changed between LSA instances pretty simple ✨ So when someone proposes new TLV(s) for a new application, you have to use discretion and good engineering judgment. Should it go in the RI LSA, or does it deserve its own application-specific LSA? That's the question, bestie 🫢

4. Security Considerations πŸ”₯😭

okay this part is SERIOUS, so pay attention πŸ’€ This document describes two things: a generic mechanism for advertising router capabilities, and a TLV for advertising informational capability bits. The TLV is less critical than the topology info the base OSPF protocol already advertises ✨ The security considerations for the generic mechanism depend on the future application, so they should be described as more capabilities get proposed for advertisement. Security considerations for the base OSPF protocol are covered in [OSPF] and [OSPFV3]. Go read those, no skipping πŸ“š

5. IANA Considerations 🌈

Here's what IANA was up to. One IANA assignment came from an existing registry:

   The OSPFv2 opaque LSA type 4 has been reserved for the OSPFv2 RI
   opaque LSA.

Then three registries got set up for these purposes:

  1. Registry for OSPFv3 LSA Function Codes πŸ’– This new top-level registry has the fields Value, LSA function code name, and Document Reference. The OSPFv3 LSA function code is defined in section A.4.2.1 of [OSPFV3]. Function code 12 was reserved for the OSPFv3 Router Information (RI) LSA.
                 +-----------+-------------------------------------+
                 | Range     | Assignment Policy                   |
                 +-----------+-------------------------------------+
                 | 0         | Reserved (not to be assigned)       |
                 |           |                                     |
                 | 1-9       | Already assigned                    |
                 |           |                                     |
                 | 10-11     | Unassigned (Standards Action)       |
                 |           |                                     |
                 | 12        | OSPFv3 RI LSA (Assigned herein)     |
                 |           |                                     |
                 | 13-255    | Unassigned (Standards Action)       |
                 |           |                                     |
                 | 256-8175  | Reserved (No assignments)           |
                 |           |                                     |
                 | 8176-8183 | Experimentation (No assignments)    |
                 |           |                                     |
                 | 8184-8191 | Vendor Private Use (No assignments) |
                 +-----------+-------------------------------------+

                       OSPFv3 LSA Function Codes

Some rules for those function codes, bestie πŸ¦‹

  • OSPFv3 LSA function codes in the range 256-8175 are not to be assigned at this time. Before any assignments can be made in this range, there MUST be a Standards Track RFC that specifies IANA Considerations that cover the range being assigned.
  • OSPFv3 LSA function codes in the range 8176-8181 are for experimental use; these will not be registered with IANA and MUST NOT be mentioned by RFCs.
  • OSPFv3 LSAs with an LSA Function Code in the Vendor Private Use range 8184-8191 MUST include the Vendor Enterprise Code as the first 4 octets following the 20 octets of LSA header.
  • If a new LSA Function Code is documented, the documentation MUST include the valid combinations of the U, S2, and S1 bits for the LSA. It SHOULD also describe how the Link State ID is to be assigned.
  1. Registry for OSPF RI TLVs πŸŽ€ This top-level registry has the fields Value, TLV Name, and Document Reference. The value 1 for the capabilities TLV is defined here.
                 +-------------+-----------------------------------+
                 | Range       | Assignment Policy                 |
                 +-------------+-----------------------------------+
                 | 0           | Reserved (not to be assigned)     |
                 |             |                                   |
                 | 1           | Already assigned                  |
                 |             |                                   |
                 | 2-32767     | Unassigned (Standards Action)     |
                 |             |                                   |
                 | 32768-32777 | Experimentation (No assignements) |
                 |             |                                   |
                 | 32778-65535 | Reserved (Not to be assigned)     |
                 +-----------+-------------------------------------+

                             OSPF RI TLVs
  • Types in the range 32768-32777 are for experimental use; these will not be registered with IANA and MUST NOT be mentioned by RFCs.
  • Types in the range 32778-65535 are reserved and are not to be assigned at this time. Before any assignments can be made in this range, there MUST be a Standards Track RFC that specifies IANA Considerations that covers the range being assigned.
  1. Registry for OSPF Router Informational Capability Bits πŸ’œ This sub-registry of the OSPF RI TLV registry has the fields Bit Number, Capability Name, and Document Reference. The values are defined in Section 2.4. Every Router Informational Capability TLV addition is assigned through standards action.

6. References πŸ“š

6.1. Normative References 🫢

[OPAQUE]        Coltun, R., "The OSPF Opaque LSA Option", RFC 2370,
                July 1998.

[OSPF]          Moy, J., "OSPF Version 2", STD 54, RFC 2328,
                April 1998.

[OSPFV3]        Coltun, R., Ferguson, D., and J. Moy, "OSPF for
                IPv6", RFC 2740, December 1999.

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

[TE]            Katz, D., Kompella, K., and D. Yeung, "Traffic
                Engineering Extensions to OSPF", RFC 3630,
                September 2003.

6.2. Informative References 🌸

[EXP-TE]        Srisuresh, P. and P. Joseph, "OSPF-xTE: Experimental
                Extension to OSPF for Traffic Engineering", RFC 4973,
                July 2007.

[GRACE]         Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful
                OSPF Restart", RFC 3623, November 2003.

[P2PLAN]        Shen, N. and A. Zinin, "Point-to-point operation over
                LAN in link-state routing protocols", Work
                in Progress, April 2006.

[STUB]          Retana, A., Nguyen, L., White, R., Zinin, A., and D.
                McPherson, "OSPF Stub Router Advertisement",
                RFC 3137, June 2001.

Appendix A. Acknowledgments πŸ§šβ€β™€οΈ

The idea for this work came out of a conversation with Andrew Partan, and the authors want to thank him for his contribution 🫢 They would also like to thank Peter Psenak for his review and helpful comments on early versions of the document.

Comments from Abhay Roy, Vishwas Manral, Vivek Dubey, and Adrian Farrel were incorporated into later versions ✨

The RFC text was produced using Marshall Rose's xml2rfc tool πŸ’–

Authors' Addresses πŸ’…

Acee Lindem (editor)
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


Jean-Philippe Vasseur
Cisco Systems
1414 Massachusetts Avenue
Boxborough, MA  01719
USA

EMail: jpv@cisco.com


Rahul Aggarwal
Juniper Networks
1194 N. Mathilda Ave.
Sunnyvale, CA  94089
USA

EMail: rahul@juniper.net


Scott Shaffer
BridgePort Networks
One Main Street, 7th Floor
Cambridge, MA  02142
USA

EMail: sshaffer@bridgeport-networks.com

Copyright (C) The IETF Trust (2007).

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 πŸ’–

okay bestie, let's talk about who owns what 🫢 the IETF takes no position on whether any Intellectual Property Rights or other rights might be claimed to cover the tech in this doc, or whether any license for it is actually available. it also doesn't claim it did any independent digging to find those rights πŸ’… if you want the details on how rights work for RFC docs, check out BCP 78 and BCP 79 πŸ“š

copies of IPR disclosures sent to the IETF Secretariat, any assurances of licenses that will be made available, and the results of any attempt to get a general license or permission for implementers or users to use those proprietary rights can all be found in the IETF online IPR repository at http://www.ietf.org/ipr πŸ”

the IETF also invites any interested party to bring its attention to any copyrights, patents or patent applications, or other proprietary rights that may cover technology needed to implement this standard. send that info to ietf-ipr@ietf.org πŸ“¬ it's giving transparency, periodt πŸ¦‹

Acknowledgement

funding for the RFC Editor function is currently provided by the Internet Society 🌸 thank you, Internet Society, you're literally keeping the lights on for all of us 🫢✨

πŸ“¦ where this page comes from