RFC 4940

IANA Considerations for OSPF

πŸ“… published July 2007, from ietf

RFC 4940: IANA Considerations for OSPF πŸŽ€

okay bestie, RFC 4940 is giving "OSPF paperwork, but make it iconic" πŸ’…. It's titled IANA Considerations for OSPF and it was published as a Network Working Group document in June 2007. The category is Best Current Practice (that's BCP 130 🌸). The authors are K. Kompella from Juniper Networks and B. Fenner from AT&T Labs--Research. The title block doesn't list anything it obsoletes or updates πŸ‘€.

Status of This Memo ✨

This doc is an Internet Best Current Practice for the Internet Community, and it's asking for discussion and suggestions to make it better 🫢. Distribution of this memo is unlimited, so share it with everyone πŸ’œ.

Copyright (C) The IETF Trust (2007).

Abstract πŸ¦‹

So the main idea is that this memo creates a bunch of OSPF registries and gives IANA guidance on how to assign code points inside them. Think of it as the rules for who gets which number in the OSPF lineup πŸ’–.

Table of Contents πŸ“š

1. Introduction ....................................................3
   1.1. Conventions Used in This Document ..........................4
2. OSPF Registries .................................................4
   2.1. OSPFv2 Options .............................................4
   2.2. OSPFv3 Options .............................................4
   2.3. OSPF Packet Type (Both v2 and v3) ..........................4
        2.3.1. OSPF Authentication Type ............................5
   2.4. OSPFv2 Link State (LS) Type ................................5
        2.4.1. OSPFv2 Router LSA Link Type .........................5
        2.4.2. OSPFv2 Router Properties ............................6
   2.5. OSPFv3 LSA Function Code ...................................6
        2.5.1. OSPFv3 Prefix Options ...............................6
        2.5.2. OSPFv3 Router LSA Link Type .........................6
   2.6. OSPFv2 Opaque LSA Type .....................................7
        2.6.1. OSPFv2 Grace LSA Top Level TLVs .....................7
3. Acknowledgments .................................................8
4. Security Considerations .........................................8
5. IANA Considerations .............................................8
   5.1. OSPFv2 Options Registry ....................................8
   5.2. OSPFv3 Options Registry ....................................8
   5.3. OSPF Packet Type Registry ..................................9
   5.4. OSPF Authentication Type Registry ..........................9
   5.5. OSPFv2 Link State Type Registry ............................9
   5.6. OSPFv2 Router LSA Link Type Registry ......................10
   5.7. OSPFv2 Router Properties Registry .........................10
   5.8. OSPFv3 LSA Function Code Registry .........................11
   5.9. OSPFv3 Prefix Options Registry ............................12
   5.10. OSPFv3 Router LSA Link Type Registry .....................12
   5.11. OSPFv2 Opaque LSA Type Registry ..........................13
   5.12. OSPFv2 Grace LSA Top Level TLV Registry ..................13
6. References .....................................................13
   6.1. Normative References ......................................13
   6.2. Informative References ....................................14

1. Introduction 🧚

okay so this memo defines a bunch of OSPF registries for IANA to set up and look after, for OSPF code points πŸ’…. In some cases it defines ranges of code point values inside those registries, and each range gets its own assignment policy, so no two ranges are treated the same way πŸ“.

The assignment policy words are:

  • Standards Action
  • Experimentation
  • Vendor Private Use
  • Reserved

Standards Action means assignments in that range MUST only be made for Standards Track RFCs (as defined in [RFC2434]) πŸ”₯.

Some registries here reserve a range for Experimentation. For the guidelines on using those values, check [RFC3692] πŸ“–. Values from this range MUST NOT be assigned by IANA πŸ™ˆ. More guidance on the Experimentation range is in paragraphs 4, 5, and 6 of [RFC3692]. An implementation MAY choose to not support values from the Experimentation range πŸ’œ. If it doesn't, the protocol data structure with a code point from that range is ignored, unless other protocol machinery says how to deal with it. "Ignored" here means the associated data structure is removed from the received packet before any further processing, including flooding 😭.

Values set aside for Vendor Private Use MUST NOT be assigned by IANA ✨. A protocol data structure whose code point falls in this range MUST have a disambiguating field that identifies the Vendor. That identifier is four octets of the Vendor's SMI (Structure of Management Information) enterprise code (see [ENTERPRISE-NUMBERS]), in network byte order. Where that code sits has to be well-defined for each data structure πŸ¦‹. An implementation that runs into a Vendor Private code point SHOULD check whether it recognizes the enterprise code. If it does, the implementation MAY choose to interpret the code point and data structure. Otherwise it SHOULD ignore the code point, unless the protocol machinery says how to handle the data structure (as covered in the previous paragraph). This is what lets multiple vendor private extensions coexist in one network 🌈.

Values in the Reserved range MUST NOT be assigned until a Standards Track or Best Common Practices RFC is published that defines the assignment policy for that range 🫢. This RFC MUST be the product of the OSPF Working Group. If the OSPF WG is terminated, then it MUST be reviewed by an Expert Reviewer designated by the IESG πŸ‘‘.

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 RFC 2119 [RFC2119] πŸ“Ž.

2. OSPF Registries 🌸

This section lists the different registries for OSPF protocol code points πŸ—‚οΈ. Heads up, some of these are for OSPF in general and some are specific to one version of OSPF. Some of them also predate this memo πŸ™ˆ.

Registries that are specific to one version of OSPF show the version number in their name (for example, OSPFv2 Options). A registry whose name doesn't mention a version number applies to both OSPFv2 and OSPFv3 (for example, OSPF Packet Type) ✨.

2.1. OSPFv2 Options πŸŽ€

(Defined in Section A.2 of [RFC2328], updated in Section A.1 of [RFC2370]. See also [RFC3101].)

Assignment policy: Standards Action.

2.2. OSPFv3 Options πŸ’–

(Defined in Section A.2 of [RFC2740])

Assignment policy: Standards Action.

2.3. OSPF Packet Type (Both v2 and v3) πŸ“¦

(Defined in Section A.3.1 of [RFC2328])

                 +---------+--------------------+
                 | Range   | Assignment Policy  |
                 +---------+--------------------+
                 | 0       | Not to be assigned |
                 | 1-5     | Already assigned   |
                 | 6-127   | Standards Action   |
                 | 128-255 | Reserved           |
                 +---------+--------------------+

2.3.1. OSPF Authentication Type πŸ”

(Defined in Section A.3.1 of [RFC2328])

(Note: this registry is called "OSPF AUTHENTICATION CODES" by IANA.)

                +-------------+-------------------+
                | Range       | Assignment Policy |
                +-------------+-------------------+
                | 0-2         | Already assigned  |
                | 3-247       | Standards Action  |
                | 248-65519   | Reserved          |
                | 65520-65535 | Experimentation   |
                +-------------+-------------------+

(Defined in Section A.4.1 of [RFC2328])

                 +---------+--------------------+
                 | Range   | Assignment Policy  |
                 +---------+--------------------+
                 | 0       | Not to be assigned |
                 | 1-11    | Already assigned   |
                 | 12-127  | Standards Action   |
                 | 128-255 | Reserved           |
                 +---------+--------------------+

If a new LS Type gets documented, the documentation MUST say how the Link State ID is filled in, what the flooding scope of the LSA (Link State Advertisement) is, and how backward compatibility is maintained 🧠.

(Defined in Section A.4.2 of [RFC2328])

                 +---------+--------------------+
                 | Range   | Assignment Policy  |
                 +---------+--------------------+
                 | 0       | Not to be assigned |
                 | 1-4     | Already assigned   |
                 | 5-127   | Standards Action   |
                 | 128-255 | Reserved           |
                 +---------+--------------------+

There's no range for Vendor Private Use, since there's no space for an enterprise code to identify the Vendor πŸ™….

No Experimental range is defined, due to possible backwards compatibility issues 😬.

If a new Router LSA Link Type gets documented, the documentation SHOULD say how the Link State ID, Link ID, and Link Data fields are filled in, and how backward compatibility is maintained πŸ’….

2.4.2. OSPFv2 Router Properties πŸ“

(Defined in Section A.4.2 of [RFC2328], updated in [RFC3101])

This 8-bit field in the Router LSA is unnamed. It's the field right after the Router LSA length πŸ€·β€β™€οΈ.

Assignment policy: Standards Action.

2.5. OSPFv3 LSA Function Code 🧚

This registry is created by [OSPF-CAP]. This document provides the values to be populated for the values defined in Section A.4.2.1 of [RFC2740] 🌈.

2.5.1. OSPFv3 Prefix Options πŸ’œ

(Defined in Section A.4.1.1 of [RFC2740])

Assignment policy: Standards Action.

(Defined in Section A.4.3 of [RFC2740])

                 +---------+--------------------+
                 | Range   | Assignment Policy  |
                 +---------+--------------------+
                 | 0       | Not to be assigned |
                 | 1-4     | Already assigned   |
                 | 5-127   | Standards Action   |
                 | 128-255 | Reserved           |
                 +---------+--------------------+

There's no range for Vendor Private Use, since there's no space for an enterprise code to identify the Vendor πŸ™….

No Experimental range is defined, due to possible backwards compatibility issues 😬.

2.6. OSPFv2 Opaque LSA Type 🫧

(Defined in Section A.2 of [RFC2370])

(Note: this registry is called "OSPF Opaque LSA Option" by IANA. See also [RFC3630].)

                 +---------+--------------------+
                 | Range   | Assignment Policy  |
                 +---------+--------------------+
                 | 0       | Not to be assigned |
                 | 1-3     | Already assigned   |
                 | 4-127   | Standards Action   |
                 | 128-247 | Reserved           |
                 | 248-251 | Experimentation    |
                 | 252-255 | Vendor Private Use |
                 +---------+--------------------+

In an OSPFv2 Opaque LSA whose Opaque LSA Type is in the Vendor Private Use range, the first four octets of Opaque Information MUST be the Vendor enterprise code 🏷️.

A document defining a new Standards Track Opaque LSA with TLVs and sub-TLVs MUST describe ranges and assignment policies for those TLVs 🧁.


2.6.1. OSPFv2 Grace LSA Top Level TLVs ✨

okay so this one's defined in Appendix A of [RFC3623] πŸ’– here's the assignment policy table:

                   +-------------+--------------------+
                   | Range       | Assignment Policy  |
                   +-------------+--------------------+
                   | 0           | Not to be assigned |
                   | 1-3         | Already assigned   |
                   | 4-255       | Standards Action   |
                   | 256-65519   | Reserved           |
                   | 65520-65527 | Experimentation    |
                   | 65528-65535 | Vendor Private Use |
                   +-------------+--------------------+

bestie, the important bit: in a Grace LSA, if a top-level TLV has a Type from the Vendor Private Use range, the Length MUST be at least four, and the first four octets of the Value field MUST be the Vendor enterprise code. πŸ”₯ no skipping this one, it's giving strict. πŸ’…

3. Acknowledgments 🫢

Many thanks to Adrian Farrel and Acee Lindem for their review and comments. iconic of them to help out πŸ₯Ή

4. Security Considerations πŸ’€

okay this section is lowkey the whole point 😭 The lack of adequate IANA guidelines may be viewed as an avenue for Denial of Service attacks on IETF protocols (in this case, OSPFv2 and OSPFv3), and on the IETF Standards Process in general. This memo attempts to close this loophole for OSPFv2 and OSPFv3.

Authors contemplating extensions to OSPF SHOULD examine such extensions carefully, and consider whether new registries are needed, and if so, allocation policies within each registry. no cap, treat extensions like a red-carpet event and check everything 🚨

5. IANA Considerations πŸ“

this section is the registry rulebook πŸ“– This document specifies assignment policy for several existing IANA registries and creates several more.

5.1. OSPFv2 Options Registry πŸŽ€

Section 2.1 defines the policy for allocation of bits from this registry as "Standards Action". There are only 8 bits in this field, and 6 are already assigned. The initial registry contents are given below.

OSPFv2 Options Registry (Section 2.1)

Value Description Reference
----- ----------- ---------
0x02  E-bit       [RFC2328]
0x04  MC-bit      [RFC1584]
0x08  N/P-bit     [RFC3101]
0x10  Reserved
0x20  DC-bit      [RFC1793]
0x40  O-bit       [RFC2370]

5.2. OSPFv3 Options Registry πŸ¦‹

Section 2.2 defines the policy for allocation of bits from this registry as "Standards Action". There are 24 bits in this field, and 6 are assigned. The initial registry contents are given below.

OSPFv3 Options Registry (Section 2.2)

Value    Description Reference
-------- ----------- ---------
0x000001 V6-bit      [RFC2740]
0x000002 E-bit       [RFC2328]
0x000004 MC-bit      [RFC1584]
0x000008 N-bit       [RFC3101]
0x000010 R-Bit       [RFC2740]
0x000020 DC-bit      [RFC1793]

5.3. OSPF Packet Type Registry πŸ“¦

Section 2.3 defines the policy for allocation of values from this registry for different ranges. The initial registry contents are given below.

OSPF Packet Type (Section 2.3)

Value Description          Reference
----- -------------------- ---------
1     Hello                [RFC2328]
2     Database Description [RFC2328]
3     Link State Request   [RFC2328]
4     Link State Update    [RFC2328]
5     Link State Ack       [RFC2328]

5.4. OSPF Authentication Type Registry πŸ”

this one already lives at IANA, called ospf-authentication-codes. Section 2.3.1 defines the policy for allocation from this registry for different ranges.

Section 2.4 defines the policy for allocations from this registry for different ranges. The initial registry contents are given below.

OSPFv2 Link State (LS) Type (Section 2.4)

Value Description              Reference
----- ------------------------ ---------
1     Router-LSA               [RFC2328]
2     Network-LSA              [RFC2328]
3     Summary-LSA (IP network) [RFC2328]
4     Summary-LSA (ASBR)       [RFC2328]
5     AS-external-LSA          [RFC2328]
6     Group-membership-LSA     [RFC1584]
7     NSSA AS-external LSA     [RFC3101]
8     Reserved
9     Link-local Opaque LSA    [RFC2370]
10    Area-local Opaque LSA    [RFC2370]
11    Opaque LSA               [RFC2370]

Section 2.4.1 defines the policy for allocations from this registry for different ranges. The initial registry contents are given below.

OSPFv2 Router LSA Link Type (Section 2.4.1)

Value Description                                 Reference
----- ------------------------------------------- ---------
1     Point-to-Point connection to another router [RFC2328]
2     Transit Network                             [RFC2328]
3     Stub Network                                [RFC2328]
4     Virtual Link                                [RFC2328]

5.7. OSPFv2 Router Properties Registry πŸ“

Section 2.4.2 defines the policy for allocation of bits from this registry as "Standards Action". There are only 8 bits in this field, and 5 are already assigned. The initial registry contents are given below.

OSPFv2 Options Registry (Section 2.1)

Value Description Reference
----- ----------- ---------
0x01  B-bit       [RFC2328]
0x02  W-bit       [RFC2328]
0x04  V-bit       [RFC2328]
0x08  W-bit       [RFC1584]
0x10  Nt-bit      [RFC3101]

5.8. OSPFv3 LSA Function Code Registry 🧚

This registry is created by [OSPF-CAP], which also defines the registration policy. This section contains values that belong in this registry that were defined by [RFC2740].

As defined in [RFC2740], the first 3 bits of the LSA Function Code are the U, S1, and S2 bits. A given function code implies a specific setting for the U, S1, and S2 bits as shown in the "LS Type" column. okay the diagram is the vibe check:

                                            1  1  1  1  1  1
              0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
            |U |S2|S1|           LSA Function Code          |
            +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

The U bit indicates how the LSA should be handled by a router which does not recognize the LSA's function code. Its values are:

U-bit LSA Handling
----- ----------------------------------------------------
0     Treat the LSA as if it had link-local flooding scope
1     Store and flood the LSA, as if type understood

The S1 and S2 bits indicate the flooding scope of the LSA. The values are:

S1 S2 Flooding Scope
-- -- --------------------------------------------------------------
0  0  Link-Local Scoping.  Flooded only on link it is originated on
0  1  Area Scoping.  Flooded to all routers in the originating area
1  0  AS Scoping.  Flooded to all routers in the AS
1  1  Reserved

The initial registry contents are given below.

OSPFv3 LSA Function Code (Section 2.5)

LSA Function Code LS Type Description           Reference
----------------- ------- --------------------- ---------
1                 0x2001  Router-LSA            [RFC2740]
2                 0x2002  Network-LSA           [RFC2740]
3                 0x2003  Inter-Area-Prefix-LSA [RFC2740]
4                 0x2004  Inter-Area-Router-LSA [RFC2740]
5                 0x4005  AS-External-LSA       [RFC2740]
6                 0x2006  Group-membership-LSA  [RFC2740]
7                 0x2007  Type-7-LSA            [RFC2740]
8                 0x0008  Link-LSA              [RFC2740]
9                 0x2009  Intra-Area-Prefix-LSA [RFC2740]

5.9. OSPFv3 Prefix Options Registry 🌸

Section 2.5.1 defines the policy for allocation of bits from this registry as "Standards Action". There are only 8 bits in this field, and 4 are already assigned. The initial registry contents are given below.

OSPFv3 Prefix Options Registry (Section 2.5.1)

Value Description Reference
----- ----------- ---------
0x01  NU-bit      [RFC2740]
0x02  LA-bit      [RFC2740]
0x04  MC-bit      [RFC2740]
0x08  P-bit       [RFC2740]

Section 2.5.2 defines the policy for allocations from this registry for different ranges. The initial registry contents are given below.

OSPFv3 Router LSA Link Type (Section 2.5.2)

Value Description                                 Reference
----- ------------------------------------------- ---------
1     Point-to-Point connection to another router [RFC2740]
2     Transit Network                             [RFC2740]
3     Reserved                                    [RFC2740]
4     Virtual Link                                [RFC2740]

5.11. OSPFv2 Opaque LSA Type Registry 🫧

this registry already exists at IANA, called ospf-opaque-types. Section 2.6 defines the policy for allocation from this registry for different ranges.

5.12. OSPFv2 Grace LSA Top Level TLV Registry πŸ‘‘

Section 2.6.1 defines the policy for allocations from this registry for different ranges. The initial registry contents are given below.

OSPFv2 Grace LSA Top Level TLV (Section 2.6.1)

Value Description             Reference
----- ----------------------- ---------
1     Grace Period            [RFC3623]
2     Graceful Restart reason [RFC3623]
3     IP Interface Address    [RFC3623]

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.
  • [RFC1584] Moy, J., "Multicast Extensions to OSPF", RFC 1584, March 1994.
  • [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", RFC 1793, April 1995.
  • [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.
  • [RFC2370] Coltun, R., "The OSPF Opaque LSA Option", RFC 2370, July 1998.
  • [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
  • [RFC2740] Coltun, R., Ferguson, D., and J. Moy, "OSPF for IPv6", RFC 2740, December 1999.
  • [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", RFC 3101, January 2003.
  • [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF Restart", RFC 3623, November 2003.
  • [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering (TE) Extensions to OSPF Version 2", RFC 3630, September 2003.
  • [RFC3692] Narten, T., "Assigning Experimental and Testing Numbers Considered Useful", BCP 82, RFC 3692, January 2004.

6.2. Informative References

Authors' Addresses πŸ’Œ

Kireeti Kompella
Juniper Networks
1194 N. Mathilda Ave.
Sunnyvale, CA  94089
US

EMail: kireeti@juniper.net


Bill Fenner
AT&T Labs--Research
1 River Oaks Place
San Jose, CA  95134
US

Phone: +1 (408) 493-8505
EMail: fenner@research.att.com

okay so bestie, the copyright bit is literally the IETF Trust's now πŸŽ€ Copyright (C) The IETF Trust (2007). 🧚 This document is subject to the rights, licenses and restrictions 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 on whether any Intellectual Property Rights (or other rights) might cover the tech in this document, or whether anyone could get a license for it. It also doesn't claim it went looking for those rights itself, so ngl that's a whole vibe πŸ™ˆ More on how RFC rights work is in BCP 78 and BCP 79. 🌸

Copies of IPR disclosures sent to the IETF Secretariat, any assurances of licenses that'll be available, and the results of any attempt to get a general license or permission for implementers or users are all findable on the IETF online IPR repository at http://www.ietf.org/ipr. πŸ¦‹

The IETF also invites anyone to flag any copyrights, patents, patent applications or other proprietary rights that might cover tech needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org. 🫢

Acknowledgement 🌈

Funding for the RFC Editor function is currently provided by the Internet Society. πŸ‘‘

πŸ“¦ where this page comes from