RFC 9041

Updating the MPLS Label Switched Paths (LSPs) Ping Parameters IANA Registry

πŸ“… published July 2021, from ietf

Part 1 of 13 πŸŽ€

Updating the MPLS Label Switched Paths (LSPs) Ping Parameters IANA Registry πŸ’–

Okay bestie, let's get the title block sorted first πŸ’… This is RFC 9041, published in July 2021 by the IETF (Internet Engineering Task Force). It's a Standards Track document, so it's proper Internet Standard stuff ✨ Its ISSN is 2070-1721. It updates RFC 8029 and RFC 8611 and doesn't update anything else. The authors are L. Andersson (Bronze Dragon Consulting), M. Chen (Huawei Technologies), C. Pignataro (Cisco Systems), and T. Saad (Juniper Networks). Squad goals 🫢

Abstract 🌸

Okay so this doc updates RFC 8029 and RFC 8611, and both of those set up IANA registries for MPLS Label Switched Path (LSP) Ping πŸ¦‹ The big glow-up here is that the registration procedure "Private Use" (formerly known as "Vendor Private Use") is now "First Come First Served" for the TLV and sub-TLV registries πŸ‘‘

It also updates how the responses are described when an unknown or erroneous code point shows up πŸ™ˆ The whole point is to clarify things and line this namespace up with newer developments. For example, the terminology now matches RFC 8126 instead of the now obsoleted RFC 5226. Both of them are titled "Guidelines for Writing an IANA Considerations Section in RFCs" πŸ“œ

Status of This Memo πŸ“œ

This is an Internet Standards Track document.

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community 🫢 It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). If you want more info on Internet Standards, check out Section 2 of RFC 7841 🌈

Info about the current status of this document, any errata, and how to send feedback on it lives at https://www.rfc-editor.org/info/rfc9041 πŸ”—

Copyright (c) 2021 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 (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, because they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they are provided without warranty as described in the Simplified BSD License βš–οΈ

Table of Contents 🧚

1.  Introduction
  1.1.  Requirements Language
  1.2.  Terminology
    1.2.1.  Terminology Used in This Document
    1.2.2.  Abbreviations
2.  Updating the Message Types, Reply Modes, and Return Codes
        Registries
3.  Updating the TLV and Sub-TLV Registries
  3.1.  General Principles for the LSP Ping TLV and Sub-TLV
        Registries
    3.1.1.  Unrecognized Experimental Use TLVs and Sub-TLVs
  3.2.  Common Registration Procedures for TLVs and Sub-TLVs
  3.3.  Changes to the LSP Ping Registries
    3.3.1.  Changes Common to the TLV and Sub-TLV Registries
4.  Updates to Related RFCs
  4.1.  Updates to RFC 8029
  4.2.  Updates to RFC 8611
5.  Security Considerations
6.  IANA Considerations
  6.1.  Updates by IANA to the Message Types, Reply Modes, and
        Return Codes Registries
    6.1.1.  Updates to the Message Types Registry
    6.1.2.  Updates to the Reply Modes Registry
    6.1.3.  Updates to the Return Codes Registry
  6.2.  Updates to the TLV and Sub-TLV Registries
    6.2.1.  Updates to the TLVs Registry
    6.2.2.  Updates to the Registry for Sub-TLVs for TLV Types 1,
            16, and 21
    6.2.3.  Updates to the Registry for Sub-TLVs for TLV Type 6
    6.2.4.  Updates to the Registry for Sub-TLVs for TLV Type 11
    6.2.5.  Updates to the Registry for Sub-TLVs for TLV Type 20
    6.2.6.  Updates to the Registry for Sub-TLVs for TLV Type 23
    6.2.7.  Updates to the Registry for Sub-TLVs for TLV Type 27
7.  References
  7.1.  Normative References
  7.2.  Informative References
Acknowledgements
Authors' Addresses

1. Introduction ✨

There were a bunch of reasons to start the work that led to this document, for example:

  • When the LSP Ping registry was created, people incorrectly assumed that code points allocated by Experimental RFCs would be "experimental" code points. Nope πŸ™ƒ A code point in a public IANA registry isn't limited by the type of RFC that made the allocation. It's available for use in any type of document.
  • The number of "experimental" code points was also way too large compared to what's normally allocated for "Experimental Use" 😬
  • The words "mandatory" and "optional" are used differently in [RFC8029] than in other RFCs. For example, [RFC8029] talks about mandatory TLVs to mean it's mandatory to take a certain action if the TLV is found in a message but isn't recognized. Other RFCs use "mandatory TLV" to mean a TLV that must be present in a message. Confusing, I know πŸ’€

Over time there have been attempts to administratively update some of the registries, but it was soon decided that an RFC was needed πŸ“ Other, often minor, potential updates popped up too, like reserving the value 0 (zero) in registries where that's possible 🌸

[RFC8029] holds updates to the "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" IANA namespace [IANA-LSP-PING] πŸ’œ

[RFC8611] created LSP Ping IANA registries that match [RFC8126]. This document further clarifies the entries in those registries and makes the definitions more precise πŸŽ€

This document updates [RFC8029] and [RFC8611] by updating two groups of registries, like this:

First, the "Message Types" [IANA-MT], "Reply Modes" [IANA-RM], and "Return Codes" [IANA-RC] registries are updated. The changes to these registries are minor πŸ“

Second, this document updates the TLV and sub-TLV registries listed below:

  • "TLVs", [IANA-TLV-reg]
  • "Sub-TLVs for TLV Types 1, 16, and 21", [IANA-Sub-1-16-21]
  • "Sub-TLVs for TLV Type 6", [IANA-Sub-6]
  • "Sub-TLVs for TLV Type 11", [IANA-Sub-11]
  • "Sub-TLVs for TLV Type 20", [IANA-Sub-20]
  • "Sub-TLVs for TLV Type 23", [IANA-Sub-23]
  • "Sub-TLVs for TLV Type 27", [IANA-Sub-27]

It should be noted that [RFC8029] was published before [RFC8126] and uses outdated terminology for some registration procedures, like "Vendor Private Use". [RFC8611] was published after [RFC8126] and uses its recommended terminology, like "Private Use". However, now both "Vendor Private Use" and "Private Use" have been removed and replaced with "First Come First Served" (FCFS) code points πŸ”„

One reason to change away from code points allocated by Vendor Private Use or Private Use is that such code points are allowed in production networks. In theory, two vendors could use the same code point value with different meanings. If a code like that ever got deployed in the same network, it could cause protocol issues that would be super hard to debug 😭

With FCFS code points, this won't happen πŸ™Œ Vendors that have existing code using Vendor Private Use or Private Use code points should register those code points as FCFS code points as soon as this document is published as an RFC πŸ¦‹

The "Sub-TLVs for TLV Type 9" subregistry is not updated πŸ™…β€β™€οΈ

Third, according to [RFC8029], some code points (TLVs and sub-TLVs) are called "mandatory" or "optional". Unlike how other RFCs use these words to say whether it's mandatory or optional to include the code points in a message, [RFC8029] uses them to say that an action might or might not be mandatory. This document updates [RFC8029] to drop the words "mandatory" and "optional", and the text is changed to focus on what should be done 🧚

1.1. Requirements Language

Okay, here's the important bit that tells you how to read the capital letters πŸ€“ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

1.2. Terminology

This section lists terms that get used when talking about the hierarchy of IANA registries (Section 1.2.1), and abbreviations used in IANA registries are updated in this document (Section 1.2.2) πŸ“š

1.2.1. Terminology Used in This Document

Terms related to IANA registries are used like this in this document:

  • Namespace: A namespace is a top-level registry. An example could be "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" [IANA-LSP-PING]. A namespace is most often a container for registries that hold code points that share some affinity 🌈
  • Registry: An IANA registry holds code points and lists the registration procedures and allocation for these code points. One example would be the "TLVs" registry [IANA-TLV-reg] πŸ’–
  • Subregistry: A subregistry is used when a code point, or a set of code points allocated in a single registry, needs "sub-code-points" scoped by the code point or the set of code points. An example of a subregistry that holds code points for more than one TLV is "Sub-TLVs for TLV Types 1, 16, and 21" [IANA-Sub-1-16-21] 🧩

1.2.2. Abbreviations

This section lists abbreviations used in the unchanged part of the registries updated by this document. These abbreviations were originally expanded in the document defining the registries. They're listed here because of the requirement to expand any abbreviation that isn't well known. All of these abbreviations come from the "Return Codes" registry [IANA-RC] ✨

BFD:      Bidirectional Forwarding Detection

DDMAP:    Downstream Detailed Mapping

FEC:      Forwarding Equivalence Class

OAM:      Operation, Administration, and Maintenance

PM:       Performance Monitoring

RSC:      Return Subcode

2. Updating the Message Types, Reply Modes, and Return Codes Registries ✨

okay so bestie, this section is about three IANA registries that are basically the big lists of who-gets-what for LSP Ping πŸ¦‹. The "Message Types" [IANA-MT], "Reply Modes" [IANA-RM], and "Return Codes" [IANA-RC] registries all got a glow-up πŸ’…

  • In the listing of assigned code points, the term "Vendor Private Use" is changed to "Private Use" for the 252-255 range. The registration procedures have been updated to match πŸŽ€
  • The registration procedure "Specification Required" is changed to "RFC Required", and the note "Experimental RFC needed" is removed for the 192-247 range. Bye bye, extra paperwork πŸ‘‘
  • A small set of four code points (248-251) for Experimental Use is added by shrinking the "RFC Required" range. The registration procedures are updated for this too 🧚
  • A note "Reserved, not to be assigned" has been added to the registration procedures for the "Private Use" and "Experimental Use" ranges πŸ”’
  • In the lists that capture assignment status, the reserved fields (that's 0 (zero), Private Use, and Experimental Use) are now clearly marked as such πŸ™ˆ
    • Quick side note: in the "Return Codes" registry [IANA-RC], code point "0" was already assigned. That doesn't change, and in this registry it stays assigned as "No Return Code" πŸ’œ

The new registration procedures, the registry layouts, and the new assignments for these registries are found in Section 6.1. Go check it out, it's giving full reference 🌸

3. Updating the TLV and Sub-TLV Registries πŸ¦‹

3.1. General Principles for the LSP Ping TLV and Sub-TLV Registries πŸ’–

these are the ground rules for processing any TLV from any of the LSP Ping TLV and sub-TLV IANA registries, no exceptions πŸ‘‘

  • All TLVs and sub-TLVs with a type in the range 0-32767 require a response if they are not recognized. Not optional, babe 😭
  • All TLVs and sub-TLVs in the range 32768-65535 can be silently dropped if they are not recognized. Alternatively, the receiver may step over the unrecognized TLV or send an error message. Options, options ✨

Each of the blocks has code point spaces with these registration procedures:

  • Standards Action
  • RFC Required
  • Experimental Use
  • First Come First Served (FCFS)

The exact definitions of these procedures are found in [RFC8126]. Read that one if you want the full tea πŸ“

3.1.1. Unrecognized Experimental Use TLVs and Sub-TLVs 🧚

unrecognized TLVs and sub-TLVs in the Experimental Use and FCFS ranges get handled just like any other unrecognized TLV or sub-TLV, so no special treatment there πŸ’…

  • If the unrecognized TLV or sub-TLV is from the Experimental Use range (31740-31743) or from the FCFS range (31744-32767), a Return Code of 2 ("One or more of the TLVs was not understood") must be sent in the echo response. Not a suggestion, a must πŸ™ˆ
  • If a TLV or sub-TLV from the Experimental Use range (64508-64511) or from the FCFS range (64512-65535) is unrecognized, then the receiver can silently drop the TLV. Alternatively, the receiver may step over the unrecognized TLV or send an error message 🫢

The IETF does not prescribe how recognized or unrecognized Experimental Use and Private Use TLVs and sub-TLVs are handled in experimental or private networks. That's up to the agency running the experimental or the private network 🌈 The statement above describes how standards-compliant implementations must treat the unrecognized TLVs and sub-TLVs from these ranges, so that part is the real rule ✨

3.2. Common Registration Procedures for TLVs and Sub-TLVs πŸŽ€

this section is the new registration procedures for the TLV and sub-TLV registries, all laid out in one table πŸ“

+=============+==============+=====================================+
| Range       | Registration | Note                                |
|             | Procedures   |                                     |
+=============+==============+=====================================+
| 0-16383     | Standards    | This range is for TLVs and sub-TLVs |
|             | Action       | that require an error message if    |
|             |              | not recognized.  This document,     |
|             |              | Section 3.1                         |
+-------------+--------------+-------------------------------------+
| 16384-31739 | RFC Required | This range is for TLVs and sub-TLVs |
|             |              | that require an error message if    |
|             |              | not recognized.  This document,     |
|             |              | Section 3.1                         |
+-------------+--------------+-------------------------------------+
| 31740-31743 | Reserved for | Not to be assigned.  This range is  |
|             | Experimental | for TLVs and sub-TLVs that require  |
|             | Use          | an error message if not recognized. |
|             |              | This document, Section 3.1          |
+-------------+--------------+-------------------------------------+
| 31744-32767 | FCFS         | This range is for TLVs and sub-TLVs |
|             |              | that require an error message if    |
|             |              | not recognized.  This document,     |
|             |              | Section 3.1                         |
+-------------+--------------+-------------------------------------+
| 32768-49161 | Standards    | This range is for TLVs and sub-TLVs |
|             | Action       | that can be silently dropped if not |
|             |              | recognized.                         |
+-------------+--------------+-------------------------------------+
| 49162-64507 | RFC Required | This range is for TLVs and sub-TLVs |
|             |              | that can be silently dropped if not |
|             |              | recognized.                         |
+-------------+--------------+-------------------------------------+
| 64508-64511 | Reserved for | Not to be assigned.  This range is  |
|             | Experimental | for TLVs and sub-TLVs that can be   |
|             | Use          | silently dropped if not recognized. |
+-------------+--------------+-------------------------------------+
| 64512-65535 | FCFS         | This range is for TLVs and sub-TLVs |
|             |              | that can be silently dropped if not |
|             |              | recognized.                         |
+-------------+--------------+-------------------------------------+

Table 1: TLV and Sub-TLV Registration Procedures

3.3. Changes to the LSP Ping Registries 🌸

this section lists the changes to each MPLS LSP Ping TLV and sub-TLV registry. Sections 6.2.1 to 6.2.7 show what the new versions of the IANA registries should look like, along with the registration procedures for each one πŸ¦‹

the new registration procedure descriptions and the new assignments for these registries are used to model the changed MPLS LSP Ping registries, so check Section 6 for that πŸ’œ

3.3.1. Changes Common to the TLV and Sub-TLV Registries πŸ’…

the following changes are made to the TLV and sub-TLV registries πŸ‘‘

  • The registration procedures "First Come First Served" (FCFS) and "Experimental Use" have been added to the table of registration procedures. ✨
  • Two small sets of code points (four code points each) for Experimental Use have been created. The first set is for the range that requires a response if the TLV or sub-TLV is not recognized. The second set is for the range where the TLV or sub-TLV may be silently dropped if not recognized. The code points for Experimental Use have been taken from the ranges previously called "Specification Required" and "RFC Required" [RFC8029] 🧚
  • The registration procedure "Specification Required" has been changed to "RFC Required", and the note "Experimental RFC needed" has been removed. πŸŽ€
  • In the listing of assignments, the term "Vendor Private Use" has been changed to "First Come First Served" (FCFS). 🌈
  • In the listing of assignments, the range for "Experimental Use" has been added. 🫢
  • A note saying "Not to be assigned" has been added for the registration procedure "Experimental Use". πŸ”’
  • In the list that captures assignment status, the fields that are reserved, i.e., 0 (zero) and Experimental Use, have been clearly marked. πŸ™ˆ

okay so some referenced RFCs use the concept "mandatory TLVs" and "mandatory sub-TLVs" to mean that if a TLV or sub-TLV in the 0-32767 range shows up in a message and isn't understood, an error message has to go back in response 😭

the same RFCs use "optional TLVs" and "optional sub-TLVs" to mean TLVs or sub-TLVs that can be silently ignored if not recognized 🫢

here's the tea: other RFCs use "mandatory TLVs" and "mandatory sub-TLVs" to mean TLVs and sub-TLVs that MUST be present in a message. So we want to stop using "mandatory" for the ones that need an error message in response if not understood. The changes to the RFCs below line up with this practice πŸ’–

4.1. Updates to RFC 8029 πŸŽ€

"Mandatory" and "optional" are used to say whether a response is needed when a TLV or sub-TLV isn't understood, in Section 3 of "Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures" [RFC8611] πŸ¦‹

the text in those two paragraphs is now updated to the following:

TLV and sub-TLV types less than 32768 (i.e., with the high-order bit equal to 0) are TLVs and sub-TLVs that MUST either be supported by an implementation or result in a Return Code of 2 ("One or more of the TLVs was not understood") being sent in the echo response. An implementation that does not understand or support a received TLV or sub-TLV with a type greater than or equal to 32768 (i.e., with the high-order bit equal to 1) SHOULD ignore and step over the TLV or sub-TLV; however, an implementation MAY send an echo response with a Return Code of 2 ("One or more of the TLVs was not understood") as it would have done if the high-order bit had been clear.

In Section 3.8 of [RFC8029], "mandatory" is used in the same way. The first two paragraphs of this section are now updated to read as follows:

The following TLV is a TLV that MAY be included in an echo reply to inform the sender of an echo request that includes TLV or sub-TLV Types less than 32768 (i.e., with the high-order bit equal to 0) that are either not supported by the implementation or parsed and found to be in error. The Value field uses sub-TLVs to encode the received TLVs and sub-TLVs that were not understood.

4.2. Updates to RFC 8611 πŸ¦‹

Okay bestie, so Section 13.4.1 of "Label Switched Path (LSP) Ping and Traceroute Multipath Support for Link Aggregation Group (LAG) Interfaces" [RFC8611] is where "Sub-TLVs for TLV Type 6" [IANA-Sub-6] gets defined πŸŽ€

The "Sub-TLVs for TLV Type 6" registry has been updated so it lines up with the changes in this document ✨

Section 13.4.1 of [RFC8611] is now updated like this:

|  Section 13.4.1 Sub-TLVs for TLV Type 6

IANA has created a new subregistry, "Sub-TLVs for TLV Type 6" [IANA-Sub-6], under the "TLVs" registry [IANA-TLV-reg] of the "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" namespace [lsp-ping-Namespace] πŸ’…

The "Sub-TLVs for TLV Type 6" subregistry is now updated to match the changes in this document 🌸

Here's the new breakdown of ranges, registration procedures, and notes:

+=============+==============+==================================+
| Range       | Registration | Note                             |
|             | Procedures   |                                  |
+=============+==============+==================================+
| 0-16383     | Standards    | This range is for sub-TLVs that  |
|             | Action       | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 16384-31739 | RFC Required | This range is for sub-TLVs that  |
|             |              | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 31740-31743 | Reserved for | Not to be assigned.  This range  |
|             | Experimental | is for sub-TLVs that require an  |
|             | Use          | error message if not recognized. |
|             |              | This document, Section 3.1       |
+-------------+--------------+----------------------------------+
| 31744-32767 | FCFS         | This range is for sub-TLVs that  |
|             |              | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 32768-49161 | Standards    | This range is for sub-TLVs that  |
|             | Action       | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 49162-64507 | RFC Required | This range is for sub-TLVs that  |
|             |              | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 64508-64511 | Reserved for | Not to be assigned.  This range  |
|             | Experimental | is for sub-TLVs that can be      |
|             | Use          | silently dropped if not          |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 64512-65535 | FCFS         | This range is for sub-TLVs that  |
|             |              | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+

Table 2: Sub-TLVs for TLV Type 6 Registration Procedures

5. Security Considerations πŸ”

This document updates IANA registries πŸ“‹ It also updates the terminology used to define the code points in the registries, and clarifies the terminology related to them. The document does not change how the code points in the registries are used. This should not create any new threats.

However, the updated terminology and the clarifications actually make things safer πŸ’– They make it more likely that implementations will be consistent, and that makes them harder to attack. Main character energy for security, honestly πŸ‘‘

6. IANA Considerations πŸ“š

IANA has updated the "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" namespace [IANA-LSP-PING] as described in this document ✨

See Section 1.2.1 of "Terminology Used in This Document" to see how "namespace", "registry", and "subregistry" are used in this document 🧚

In other parts of this document, the focus has been on what the LSP Ping registries have in common. For the IANA Considerations, though, each changed registry gets described in its own right 🌈

The following registries and subregistries have been changed:

  • "Message Types", [IANA-MT]
  • "Reply Modes", [IANA-RM]
  • "Return Codes", [IANA-RC]
  • "TLVs", [IANA-TLV-reg]
  • "Sub-TLVs for TLV Types 1, 16, and 21", [IANA-Sub-1-16-21]
  • "Sub-TLVs for TLV Type 6", [IANA-Sub-6]
  • "Sub-TLVs for TLV Type 11", [IANA-Sub-11]
  • "Sub-TLVs for TLV Type 20", [IANA-Sub-20]
  • "Sub-TLVs for TLV Type 23", [IANA-Sub-23]
  • "Sub-TLVs for TLV Type 27", [IANA-Sub-27]

This document has been listed as an additional reference for each of the registries described in Sections 6.1 and 6.2 🫢

6.1. Updates by IANA to the Message Types, Reply Modes, and Return Codes Registries πŸ“

This section walks through the updated registration procedures and allocations for the "Message Types", "Reply Modes", and "Return Codes" registries. Let's get into it πŸ’œ

6.1.1. Updates to the Message Types Registry πŸ’Œ

These are the changes to the "Message Types" registry specified in this document:

  • Code Point 0 (zero) has been marked Reserved.
  • The "Specification Required" registration procedure has been changed to "RFC Required", and the comment "Experimental RFC needed" has been removed.
  • Four code points have been taken from what used to be "Specification Required" to form a set of code points for "Experimental Use".

The registration procedures for the "Message Types" registry after the changes above are shown in the table below ✨

+=========+=========================+==============================+
| Range   | Registration Procedures | Note                         |
+=========+=========================+==============================+
| 0-191   | Standards Action        |                              |
+---------+-------------------------+------------------------------+
| 192-247 | RFC Required            |                              |
+---------+-------------------------+------------------------------+
| 248-251 | Experimental Use        | Reserved, not to be assigned |
+---------+-------------------------+------------------------------+
| 252-255 | Private Use             | Reserved, not to be assigned |
+---------+-------------------------+------------------------------+

Table 3: Message Types Registration Procedures

And here are the updated assignments for the "Message Types" registry πŸ¦‹

+=========+===============================+===============+
| Value   | Meaning                       | Reference     |
+=========+===============================+===============+
| 0       | Reserved                      | This document |
+---------+-------------------------------+---------------+
| 1       | MPLS Echo Request             | [RFC8029]     |
+---------+-------------------------------+---------------+
| 2       | MPLS Echo Reply               | [RFC8029]     |
+---------+-------------------------------+---------------+
| 3       | MPLS Proxy Ping Request       | [RFC7555]     |
+---------+-------------------------------+---------------+
| 4       | MPLS Proxy Ping Reply         | [RFC7555]     |
+---------+-------------------------------+---------------+
| 5       | MPLS Relayed Echo Reply       | [RFC7743]     |
+---------+-------------------------------+---------------+
| 6-247   | Unassigned                    |               |
+---------+-------------------------------+---------------+
| 248-251 | Reserved for Experimental Use | This document |
+---------+-------------------------------+---------------+
| 252-255 | Reserved for Private Use      | [RFC8029]     |
+---------+-------------------------------+---------------+

Table 4: Assignments for the Message Types Registry

6.1.2. Updates to the Reply Modes Registry πŸ¦‹

okay so the Reply Modes registry is getting a little glow-up πŸ’… here's exactly what's changing:

  • Code Point 0 (zero) has been marked Reserved. 🫢
  • The registration procedure "Specification Required" has been changed to "RFC Required", and the comment "Experimental RFC needed" has been removed. πŸ“œ
  • Four code points have been taken from what was previously "Specification Required" to form a set of code points for "Experimental Use". ✨

the new registration procedures are shown in Table 5 🌸

   +=========+=========================+==============================+
   | Range   | Registration Procedures | Note                         |
   +=========+=========================+==============================+
   | 0-191   | Standards Action        |                              |
   +---------+-------------------------+------------------------------+
   | 192-247 | RFC Required            |                              |
   +---------+-------------------------+------------------------------+
   | 248-251 | Experimental Use        | Reserved, not to be assigned |
   +---------+-------------------------+------------------------------+
   | 252-255 | Private Use             | Reserved, not to be assigned |
   +---------+-------------------------+------------------------------+

               Table 5: Reply Modes Registration Procedures

and then the updated assignments for the Reply Modes registry are in Table 6, so you can see every single value and who's responsible for it 🧚

      +=========+===================================+===============+
      | Value   | Meaning                           | Reference     |
      +=========+===================================+===============+
      | 0       | Reserved                          | This document |
      +---------+-----------------------------------+---------------+
      | 1       | Do not reply                      | [RFC8029]     |
      +---------+-----------------------------------+---------------+
      | 2       | Reply via an IPv4/IPv6 UDP packet | [RFC8029]     |
      +---------+-----------------------------------+---------------+
      | 3       | Reply via an IPv4/IPv6 UDP packet | [RFC8029]     |
      |         | with Router Alert                 |               |
      +---------+-----------------------------------+---------------+
      | 4       | Reply via application-level       | [RFC8029]     |
      |         | control channel                   |               |
      +---------+-----------------------------------+---------------+
      | 5       | Reply via Specified Path          | [RFC7110]     |
      +---------+-----------------------------------+---------------+
      | 6-247   | Unassigned                        |               |
      +---------+-----------------------------------+---------------+
      | 248-251 | Reserved for Experimental Use     | This document |
      +---------+-----------------------------------+---------------+
      | 252-255 | Reserved for Private Use          | [RFC8029]     |
      +---------+-----------------------------------+---------------+

             Table 6: Assignments for the Reply Modes Registry

6.1.3. Updates to the Return Codes Registry ✨

okay so this one is the Return Codes registry glow-up πŸ’… here's what's changing:

  • the "Specification Required" procedure is now "RFC Required" πŸŽ€, and the comment "Experimental RFC needed" is gone πŸ™ˆ
  • four code points that used to be "Specification Required" got pulled out to become a set for "Experimental Use" πŸ§ͺ

the new registration procedures for the "Return Codes" registry look like this πŸ‘‘

   +=========+=========================+==============================+
   | Range   | Registration Procedures | Note                         |
   +=========+=========================+==============================+
   | 0-191   | Standards Action        |                              |
   +---------+-------------------------+------------------------------+
   | 192-247 | RFC Required            |                              |
   +---------+-------------------------+------------------------------+
   | 248-251 | Experimental Use        | Reserved, not to be assigned |
   +---------+-------------------------+------------------------------+
   | 252-255 | Private Use             | Reserved, not to be assigned |
   +---------+-------------------------+------------------------------+

              Table 7: Return Codes Registration Procedures

and the updated assignments for the "Return Codes" registry are below, so you can see every single value and who it belongs to πŸ¦‹

    +=========+=========================================+=============+
    | Value   | Meaning                                 | Reference   |
    +=========+=========================================+=============+
    | 0       | No Return Code                          | [RFC8029]   |
    +---------+-----------------------------------------+-------------+
    | 1       | Malformed echo request received         | [RFC8029]   |
    +---------+-----------------------------------------+-------------+
    | 2       | One or more of the TLVs was not         | [RFC8029]   |
    |         | understood                              |             |
    +---------+-----------------------------------------+-------------+
    | 3       | Replying router is an egress for the    | [RFC8029]   |
    |         | FEC at stack-depth <RSC>                |             |
    +---------+-----------------------------------------+-------------+
    | 4       | Replying router has no mapping for the  | [RFC8029]   |
    |         | FEC at stack-depth <RSC>                |             |
    +---------+-----------------------------------------+-------------+
    | 5       | Downstream Mapping Mismatch (See [1])   | [RFC8029]   |
    +---------+-----------------------------------------+-------------+
    | 6       | Upstream Interface Index Unknown (See   | [RFC8029]   |
    |         | [1])                                    |             |
    +---------+-----------------------------------------+-------------+
    | 7       | Reserved                                | [RFC8029]   |
    +---------+-----------------------------------------+-------------+
    | 8       | Label switched at stack-depth <RSC>     | [RFC8029]   |
    +---------+-----------------------------------------+-------------+
    | 9       | Label switched but no MPLS forwarding   | [RFC8029]   |
    |         | at stack-depth <RSC>                    |             |
    +---------+-----------------------------------------+-------------+
    | 10      | Mapping for this FEC is not the given   | [RFC8029]   |
    |         | label at stack-depth <RSC>              |             |
    +---------+-----------------------------------------+-------------+
    | 11      | No label entry at stack-depth <RSC>     | [RFC8029]   |
    +---------+-----------------------------------------+-------------+
    | 12      | Protocol not associated with interface  | [RFC8029]   |
    |         | at FEC stack-depth <RSC>                |             |
    +---------+-----------------------------------------+-------------+
    | 13      | Premature termination of ping due to    | [RFC8029]   |
    |         | label stack shrinking to a single label |             |
    +---------+-----------------------------------------+-------------+
    | 14      | See DDMAP TLV for meaning of Return     | [RFC8029]   |
    |         | Code and Return Subcode (See [2])       |             |
    +---------+-----------------------------------------+-------------+
    | 15      | Label switched with FEC change          | [RFC8029]   |
    +---------+-----------------------------------------+-------------+
    | 16      | Proxy Ping not authorized               | [RFC7555]   |
    +---------+-----------------------------------------+-------------+
    | 17      | Proxy Ping parameters need to be        | [RFC7555]   |
    |         | modified                                |             |
    +---------+-----------------------------------------+-------------+
    | 18      | MPLS Echo Request could not be sent     | [RFC7555]   |
    +---------+-----------------------------------------+-------------+
    | 19      | Replying router has FEC mapping for     | [RFC7555]   |
    |         | topmost FEC                             |             |
    +---------+-----------------------------------------+-------------+
    | 20      | One or more TLVs not returned due to    | [RFC7743]   |
    |         | MTU size                                |             |
    +---------+-----------------------------------------+-------------+
    | 21      | OAM Problem/Unsupported BFD Version     | [RFC7759]   |
    +---------+-----------------------------------------+-------------+
    | 22      | OAM Problem/Unsupported BFD             | [RFC7759]   |
    |         | Encapsulation format                    |             |
    +---------+-----------------------------------------+-------------+
    | 23      | OAM Problem/Unsupported BFD             | [RFC7759]   |
    |         | Authentication Type                     |             |
    +---------+-----------------------------------------+-------------+
    | 24      | OAM Problem/Mismatch of BFD             | [RFC7759]   |
    |         | Authentication Key ID                   |             |
    +---------+-----------------------------------------+-------------+
    | 25      | OAM Problem/Unsupported Timestamp       | [RFC7759]   |
    |         | Format                                  |             |
    +---------+-----------------------------------------+-------------+
    | 26      | OAM Problem/Unsupported Delay Mode      | [RFC7759]   |
    +---------+-----------------------------------------+-------------+
    | 27      | OAM Problem/Unsupported Loss Mode       | [RFC7759]   |
    +---------+-----------------------------------------+-------------+
    | 28      | OAM Problem/Delay variation unsupported | [RFC7759]   |
    +---------+-----------------------------------------+-------------+
    | 29      | OAM Problem/Dyadic mode unsupported     | [RFC7759]   |
    +---------+-----------------------------------------+-------------+
    | 30      | OAM Problem/Loopback mode unsupported   | [RFC7759]   |
    +---------+-----------------------------------------+-------------+
    | 31      | OAM Problem/Combined mode unsupported   | [RFC7759]   |
    +---------+-----------------------------------------+-------------+
    | 32      | OAM Problem/Fault management signaling  | [RFC7759]   |
    |         | unsupported                             |             |
    +---------+-----------------------------------------+-------------+
    | 33      | OAM Problem/Unable to create fault      | [RFC7759]   |
    |         | management association                  |             |
    +---------+-----------------------------------------+-------------+
    | 34      | OAM Problem/PM Configuration Error      | [RFC7759]   |
    +---------+-----------------------------------------+-------------+
    | 35      | Mapping for this FEC is not associated  | [RFC8287],  |
    |         | with the incoming interface             | Section 7.4 |
    +---------+-----------------------------------------+-------------+
    | 36-247  | Unassigned                              |             |
    +---------+-----------------------------------------+-------------+
    | 248-251 | Reserved for Experimental Use           | This        |
    |         |                                         | document    |
    +---------+-----------------------------------------+-------------+
    | 252-255 | Reserved for Private Use                | [RFC8029]   |
    +---------+-----------------------------------------+-------------+

             Table 8: Assignments for the Return Codes Registry

two notes go with those tables, and they're important πŸ₯Ή

Note 1: notes [1] and [2] for code points 5, 6, and 14 point to footnotes in the "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" namespace. this document does not change those footnotes.
Note 2: <RSC> stands for "Return Subcode" and is explained in Section 3.1 of [RFC8029] 🌸

6.2. Updates to the TLV and Sub-TLV Registries 🧚

the updates to the TLV and sub-TLV registries are mostly the same πŸ’– the one exception is the "Sub-TLVs for TLV Type 9" [IANA-Sub-9] registry, which has not been updated πŸ™ˆ

also, when a field in an assignment table says "EQ", it just means there's no change from the existing field in the "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" namespace [IANA-LSP-PING] ✨

6.2.1. Updates to the TLVs Registry πŸŽ€

okay bestie, this section is all about the "TLVs" registry [IANA-TLV-reg] and the new registration rules that are about to change everything ✨ it's giving total glow-up πŸ’…

This section describes the new registration procedures and the assignments for the "TLVs" registry [IANA-TLV-reg] that are based on them.

The registration procedures for the "TLVs" registry have been changed, and here is what's different πŸ’–

  • The Specification Required registration procedure has been changed to RFC Required. The comment Experimental RFC Required has been removed. Also, when a field in an assignment table says EQ, it means there is no change from the existing field in the "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" namespace [IANA-LSP-PING] 🧚
  • [RFC8611] came out after [RFC8126] and uses the newer terminology, like "Private Use". So the Private Use code point registration procedure has been replaced by the First Come First Served code point registration procedure πŸ¦‹
  • Two small sets, four code points each, have been created for Experimental Use 🌈
  • Code points that are reserved are clearly marked as reserved πŸ”₯
  • The assignments have been updated so they match the new registration procedures πŸ’…
  • The notes about the registration procedures have been changed to show whether or not a response is needed when a TLV isn't recognized πŸ™ˆ

Here's the table of registration procedures for the "TLVs" registry [IANA-TLV-reg] after all of those changes πŸ‘‘

+=============+==============+=====================================+
| Range       | Registration | Note                                |
|             | Procedures   |                                     |
+=============+==============+=====================================+
| 0-16383     | Standards    | This range is for TLVs that require |
|             | Action       | an error message if not recognized. |
|             |              | This document, Section 3.1          |
+-------------+--------------+-------------------------------------+
| 16384-31739 | RFC Required | This range is for TLVs that require |
|             |              | an error message if not recognized. |
|             |              | This document, Section 3.1          |
+-------------+--------------+-------------------------------------+
| 31740-31743 | Reserved for | Not to be assigned.  This range is  |
|             | Experimental | for TLVs that require an error      |
|             | Use          | message if not recognized.  This    |
|             |              | document, Section 3.1               |
+-------------+--------------+-------------------------------------+
| 31744-32767 | FCFS         | This range is for TLVs that require |
|             |              | an error message if not recognized. |
|             |              | This document, Section 3.1          |
+-------------+--------------+-------------------------------------+
| 32768-49161 | Standards    | This range is for TLVs that can be  |
|             | Action       | silently dropped if not recognized. |
+-------------+--------------+-------------------------------------+
| 49162-64507 | RFC Required | This range is for TLVs that can be  |
|             |              | silently dropped if not recognized. |
+-------------+--------------+-------------------------------------+
| 64508-64511 | Reserved for | Not to be assigned.  This range is  |
|             | Experimental | for TLVs that can be silently       |
|             | Use          | dropped if not recognized.          |
+-------------+--------------+-------------------------------------+
| 64512-65535 | FCFS         | This range is for TLVs that can be  |
|             |              | silently dropped if not recognized. |
+-------------+--------------+-------------------------------------+

Table 9: TLVs Registration Procedures

Next up, the updated assignments for this registry πŸ¦„

Note that when a field in an assignment table says EQ, it means there was no change from the existing field in the "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" namespace [IANA-LSP-PING].

+=============+==============+===========+=======================+
| Type        | TLV Name     | Reference | Sub-TLV Registry      |
+=============+==============+===========+=======================+
| 0           | Reserved     | This      |                       |
|             |              | document  |                       |
+-------------+--------------+-----------+-----------------------+
| 1-7         | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 8           | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 9-16        | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 17-19       | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 20-27       | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 28-31739    | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 31740-31743 | Reserved for | This      | Not to be assigned.   |
|             | Experimental | document  | This range is for     |
|             | Use          |           | TLVs that require an  |
|             |              |           | error message if not  |
|             |              |           | recognized.  This     |
|             |              |           | document, Section 3.1 |
+-------------+--------------+-----------+-----------------------+
| 31744-32767 | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 32768-32770 | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 32771-64507 | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 64508-64511 | Reserved for | This      | Not to be assigned.   |
|             | Experimental | document  | This range is for     |
|             | Use          |           | TLVs that can be      |
|             |              |           | silently dropped if   |
|             |              |           | not recognized.       |
+-------------+--------------+-----------+-----------------------+
| 64512-65535 | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+

Table 10: TLV Assignments

6.2.2. Updates to the Registry for Sub-TLVs for TLV Types 1, 16, and 21 πŸ’…βœ¨

okay so this section is where we talk about the "Sub-TLVs for TLV Types 1, 16, and 21" [IANA-Sub-1-16-21] subregistry πŸŽ€ and honestly it's giving main character energy. here's what's changing, no cap:

  • The "Specification Required" registration procedure is now "RFC Required" πŸ“œ, and the comment "Experimental RFC Required" is gone πŸ‘‹ (bye bye!)
  • The "Vendor Private Use" code point registration procedure got yeeted πŸ—‘οΈ and replaced with "First Come First Served" (FCFS) πŸ™Œ
  • Two small sets of four code points each are now made for Experimental Use πŸ§ͺ🌈
  • Reserved code points are clearly marked as reserved πŸ”’ so nobody gets confused, periodt
  • The assignments are updated so they match the new registration procedures πŸ’–
  • The notes about the registration procedures now say whether or not a response is required when a sub-TLV isn't recognized πŸ™ˆ

so lowkey the big picture is that everything is cleaner now ✨ okay so here's the new table of registration procedures for the subregistry after all those changes, and I'm obsessed with how organized it looks 😭🫢

+=============+==============+==================================+
| Range       | Registration | Note                             |
|             | Procedures   |                                  |
+=============+==============+==================================+
| 0-16383     | Standards    | This range is for sub-TLVs that  |
|             | Action       | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 16384-31739 | RFC Required | This range is for sub-TLVs that  |
|             |              | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 31740-31743 | Reserved for | Not to be assigned.  This range  |
|             | Experimental | is for sub-TLVs that require an  |
|             | Use          | error message if not recognized. |
|             |              | This document, Section 3.1       |
+-------------+--------------+----------------------------------+
| 31744-32767 | FCFS         | This range is for sub-TLVs that  |
|             |              | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 32768-49161 | Standards    | This range is for sub-TLVs that  |
|             | Action       | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 49162-64507 | RFC Required | This range is for sub-TLVs that  |
|             |              | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 64508-64511 | Reserved for | Not to be assigned.  This range  |
|             | Experimental | is for sub-TLVs that can be      |
|             | Use          | silently dropped if not          |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 64512-65535 | FCFS         | This range is for sub-TLVs that  |
|             |              | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+

Table 11: Registration Procedures for Sub-TLVs for TLV Types 1, 16, and 21 πŸ¦‹

now the assignments, which are the actual sub-TLV numbers and names πŸ“ this is the part where you can see exactly who's using what πŸ‘€

+=============+==============+===========+=======================+
| Sub-Type    | Sub-TLV Name | Reference | Comment               |
+=============+==============+===========+=======================+
| 0           | Reserved     | This      |                       |
|             |              | document  |                       |
+-------------+--------------+-----------+-----------------------+
| 1-4         | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 5           | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 6-8         | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 9           | EQ           | EQ        | DEPRECATED            |
+-------------+--------------+-----------+-----------------------+
| 10-20       | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 21          | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 22-37       | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 38          | PeerAdj SID  | [draft-   | TEMPORARY -           |
|             | Sub-TLV      | ietf-     | registered            |
|             |              | mpls-sr-  | 2021-05-11, expires   |
|             |              | epe-oam-  | 2022-05-11            |
|             |              | 03]       |                       |
+-------------+--------------+-----------+-----------------------+
| 39          | PeerNode SID | [draft-   | TEMPORARY -           |
|             | Sub-TLV      | ietf-     | registered            |
|             |              | mpls-sr-  | 2021-05-11, expires   |
|             |              | epe-oam-  | 2022-05-11            |
|             |              | 03]       |                       |
+-------------+--------------+-----------+-----------------------+
| 40          | PeerSet SID  | [draft-   | TEMPORARY -           |
|             | Sub-TLV      | ietf-     | registered            |
|             |              | mpls-sr-  | 2021-05-11, expires   |
|             |              | epe-oam-  | 2022-05-11            |
|             |              | 03]       |                       |
+-------------+--------------+-----------+-----------------------+
| 41-31739    | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 31740-31743 | Reserved for | This      | Not to be assigned.   |
|             | Experimental | document  | This range is for     |
|             | Use          |           | sub-TLVs that require |
|             |              |           | an error message if   |
|             |              |           | not recognized.  This |
|             |              |           | document, Section 3.1 |
+-------------+--------------+-----------+-----------------------+
| 31744-64507 | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 64508-64511 | Reserved for | This      | Not to be assigned.   |
|             | Experimental | document  |                       |
|             | Use          |           | sub-TLVs that can be  |
|             |              |           | silently dropped if   |
|             |              |           | not recognized.       |
+-------------+--------------+-----------+-----------------------+
| 64512-65535 | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+

Table 12: Sub-TLV for TLVs 1, 16, and 21 Assignments 🧚

and that's the whole vibe for this bit πŸ’œ the tables are the receipts, bestie, so you can check every single number yourself πŸ”βœ¨

6.2.3. Updates to the Registry for Sub-TLVs for TLV Type 6 πŸŽ€

okay bestie, this part is about the "Sub-TLVs for TLV Type 6" [IANA-Sub-6] subregistry πŸ’… and how its rules got a glow-up ✨. Here's the tea:

  • [RFC8611] came out after [RFC8126] and it speaks the newer lingo, like "Private Use". So the old "Private Use" code point procedure got swapped out for "First Come First Served" πŸ’β€β™€οΈ
  • Two little sets of four code points each got carved out for Experimental Use πŸ§ͺ
  • Reserved code points are now clearly marked as reserved πŸ”’
  • The assignments got updated so they match the new procedures πŸ”„
  • The notes about registration procedures now say whether or not a response is needed when a sub-TLV isn't recognized πŸ“

Here are the registration procedures for the "Sub-TLVs for TLV Type 6" [IANA-Sub-6] subregistry after all those changes πŸ“:

  +=============+==============+==================================+
  | Range       | Registration | Note                             |
  |             | Procedures   |                                  |
  +=============+==============+==================================+
  | 0-16383     | Standards    | This range is for sub-TLVs that  |
  |             | Action       | require an error message if not  |
  |             |              | recognized.  This document,      |
  |             |              | Section 3.1                      |
  +-------------+--------------+----------------------------------+
  | 16384-31739 | RFC Required | This range is for sub-TLVs that  |
  |             |              | require an error message if not  |
  |             |              | recognized.  This document,      |
  |             |              | Section 3.1                      |
  +-------------+--------------+----------------------------------+
  | 31740-31743 | Reserved for | Not to be assigned.  This range  |
  |             | Experimental | is for sub-TLVs that require an  |
  |             | Use          | error message if not recognized. |
  |             |              | This document, Section 3.1       |
  +-------------+--------------+----------------------------------+
  | 31744-32767 | FCFS         | This range is for sub-TLVs that  |
  |             |              | require an error message if not  |
  |             |              | recognized.  This document,      |
  |             |              | Section 3.1                      |
  +-------------+--------------+----------------------------------+
  | 32768-49161 | Standards    | This range is for sub-TLVs that  |
  |             | Action       | can be silently dropped if not   |
  |             |              | recognized.                      |
  +-------------+--------------+----------------------------------+
  | 49162-64507 | RFC Required | This range is for sub-TLVs that  |
  |             |              | can be silently dropped if not   |
  |             |              | recognized.                      |
  +-------------+--------------+----------------------------------+
  | 64508-64511 | Reserved for | Not to be assigned.  This range  |
  |             | Experimental | is for sub-TLVs that can be      |
  |             | Use          | silently dropped if not          |
  |             |              | recognized.                      |
  +-------------+--------------+----------------------------------+
  | 64512-65535 | FCFS         | This range is for sub-TLVs that  |
  |             |              | can be silently dropped if not   |
  |             |              | recognized.                      |
  +-------------+--------------+----------------------------------+

Table 13: Registration Procedures for Sub-TLVs for TLV Type 6

And here's who's who in the actual assignments πŸ’œ:

  +=============+==============+===========+=======================+
  | Sub-Type    | Sub-TLV Name | Reference | Comment               |
  +=============+==============+===========+=======================+
  | 0           | Reserved     | This      |                       |
  |             |              | document, |                       |
  |             |              | [RFC8611] |                       |
  +-------------+--------------+-----------+-----------------------+
  | 1-2         | EQ           | EQ        | EQ                    |
  +-------------+--------------+-----------+-----------------------+
  | 3-31739     | Unassigned   |           |                       |
  +-------------+--------------+-----------+-----------------------+
  | 31740-31743 | Reserved for | This      | Not to be assigned.   |
  |             | Experimental | document  | This range is for     |
  |             | Use          |           | sub-TLVs that require |
  |             |              |           | an error message if   |
  |             |              |           | not recognized.  This |
  |             |              |           | document, Section 3.1 |
  +-------------+--------------+-----------+-----------------------+
  | 31744-64507 | Unassigned   |           |                       |
  +-------------+--------------+-----------+-----------------------+
  | 64508-64511 | Reserved for | This      | Not to be assigned.   |
  |             | Experimental | document  | This range is for     |
  |             | Use          |           | sub-TLVs that can be  |
  |             |              |           | silently dropped if   |
  |             |              |           | not recognized.       |
  +-------------+--------------+-----------+-----------------------+
  | 64512-65535 | Unassigned   |           |                       |
  +-------------+--------------+-----------+-----------------------+

Table 14: Sub-TLVs for TLV Type 6 Assignments

6.2.4. Updates to the Registry for Sub-TLVs for TLV Type 11 πŸ’–

okay so this bit is about the "Sub-TLVs for TLV Type 11" [IANA-Sub-11] subregistry πŸŽ€ and it's giving new rules, bestie ✨ here's the glow-up:

  • The "Specification Required" registration procedure has been changed to "RFC Required", and the comment "Experimental RFC Required" has been removed πŸ¦‹
  • The code points registration procedure "Vendor Private Use" has been removed and replaced with "First Come First Served" code points πŸ’…
  • Two small sets, four code points each, have been created for Experimental Use 🧚
  • Code points that are reserved are clearly marked as such 🌸
  • The assignments have been updated to match the new registration procedures πŸ‘‘
  • The notes related to the registration procedures have been changed to reflect whether or not a response is required if a sub-TLV is not recognized 🫢

ngl the new registration procedures for the subregistry after all those changes are shown in the table below, and it's so organized 😭🌈

+=============+==============+==================================+
| Range       | Registration | Note                             |
|             | Procedures   |                                  |
+=============+==============+==================================+
| 0-16383     | Standards    | This range is for sub-TLVs that  |
|             | Action       | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 16384-31739 | RFC Required | This range is for sub-TLVs that  |
|             |              | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 31740-31743 | Reserved for | Not to be assigned.  This range  |
|             | Experimental | is for sub-TLVs that require an  |
|             | Use          | error message if not recognized. |
|             |              | This document, Section 3.1       |
+-------------+--------------+----------------------------------+
| 31744-32767 | FCFS         | This range is for sub-TLVs that  |
|             |              | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1                      |
+-------------+--------------+----------------------------------+
| 32768-49161 | Standards    | This range is for sub-TLVs that  |
|             | Action       | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 49162-64507 | RFC Required | This range is for sub-TLVs that  |
|             |              | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 64508-64511 | Reserved for | Not to be assigned.  This range  |
|             | Experimental | is for sub-TLVs that can be      |
|             | Use          | silently dropped if not          |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 64512-65535 | FCFS         | This range is for sub-TLVs that  |
|             |              | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+

Table 15: Registration Procedures for Sub-TLVs for TLV Type 11 πŸ“

+=============+==============+===========+=======================+
| Sub-Type    | Sub-TLV Name | Reference | Comment               |
+=============+==============+===========+=======================+
| 0           | Reserved     | This      |                       |
|             |              | document  |                       |
+-------------+--------------+-----------+-----------------------+
| 1-4         | EQ           | EQ        | EQ                    |
+-------------+--------------+-----------+-----------------------+
| 5-31739     | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 31740-31743 | Reserved for | This      | Not to be assigned.   |
|             | Experimental | document  | This range is for     |
|             | Use          |           | sub-TLVs that require |
|             |              |           | an error message if   |
|             |              |           | not recognized.  This |
|             |              |           | document, Section 3.1 |
+-------------+--------------+-----------+-----------------------+
| 31744-64507 | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+
| 64508-64511 | Reserved for | This      | Not to be assigned.   |
|             | Experimental | document  | This range is for     |
|             | Use          |           | sub-TLVs that can be  |
|             |              |           | silently dropped if   |
|             |              |           | not recognized.       |
+-------------+--------------+-----------+-----------------------+
| 64512-65535 | Unassigned   |           |                       |
+-------------+--------------+-----------+-----------------------+

Table 16: Sub-TLVs for TLV Type 11 Assignments ✨

6.2.5. Updates to the Registry for Sub-TLVs for TLV Type 20 πŸ’…βœ¨

Okay bestie, this part is all about the "Sub-TLVs for TLV Type 20" [IANA-Sub-20] subregistry πŸŽ€ It gets a whole glow-up, and here's what changes:

  • The "Specification Required" registration procedure is now "RFC Required", and the comment "Experimental RFC Required" is gone πŸ‘‹
  • The "Vendor Private Use" code point procedure is out, and "First Come First Served" code points are in πŸ¦‹
  • There are now two small sets of Experimental Use code points, four code points each πŸ§ͺ
  • Reserved code points are clearly marked as reserved πŸ”’
  • The assignments are updated so they match the new registration procedures πŸ’–
  • The notes about registration procedures now say whether or not a response is needed when a sub-TLV isn't recognized 🌸

Here's the registration procedures table for the "Sub-TLVs for TLV Type 20" [IANA-Sub-20] subregistry after all that glow-up 🧚

     +=============+==============+==================================+
     | Range       | Registration | Note                             |
     |             | Procedures   |                                  |
     +=============+==============+==================================+
     | 0-16383     | Standards    | This range is for sub-TLVs that  |
     |             | Action       | require an error message if not  |
     |             |              | recognized.  This document,      |
     |             |              | Section 3.1]                     |
     +-------------+--------------+----------------------------------+
     | 16384-31739 | RFC Required | This range is for sub-TLVs that  |
     |             |              | require an error message if not  |
     |             |              | recognized.  This document,      |
     |             |              | Section 3.1]                     |
     +-------------+--------------+----------------------------------+
     | 31740-31743 | Reserved for | Not to be assigned.  This range  |
     |             | Experimental | is for sub-TLVs that require an  |
     |             | Use          | error message if not recognized. |
     |             |              | This document, Section 3.1]      |
     +-------------+--------------+----------------------------------+
     | 31744-32767 | FCFS         | This range is for sub-TLVs that  |
     |             |              | require an error message if not  |
     |             |              | recognized.  This document,      |
     |             |              | Section 3.1]                     |
     +-------------+--------------+----------------------------------+
     | 32768-49161 | Standards    | This range is for sub-TLVs that  |
     |             | Action       | can be silently dropped if not   |
     |             |              | recognized.                      |
     +-------------+--------------+----------------------------------+
     | 49162-64507 | RFC Required | This range is for sub-TLVs that  |
     |             |              | can be silently dropped if not   |
     |             |              | recognized.                      |
     +-------------+--------------+----------------------------------+
     | 64508-64511 | Reserved for | Not to be assigned.  This range  |
     |             | Experimental | is for sub-TLVs that can be      |
     |             | Use          | silently dropped if not          |
     |             |              | recognized.                      |
     +-------------+--------------+----------------------------------+
     | 64512-65535 | FCFS         | This range is for sub-TLVs that  |
     |             |              | can be silently dropped if not   |
     |             |              | recognized.                      |
     +-------------+--------------+----------------------------------+

Table 17: Registration Procedures for Sub-TLVs for TLV Type 20

And last but not least, the assignments table πŸ₯Ή this is the lineup for the "Sub-TLVs for TLV Type 20" [IANA-Sub-20] subregistry πŸ‘‘

    +=============+==============+===========+========================+
    | Sub-Type    | Sub-TLV Name | Reference | Comment                |
    +=============+==============+===========+========================+
    | 0           | Reserved     | This      |                        |
    |             |              | document  |                        |
    +-------------+--------------+-----------+------------------------+
    | 1-5         | EQ           | EQ        | EQ                     |
    +-------------+--------------+-----------+------------------------+
    | 6-31739     | Unassigned   |           |                        |
    +-------------+--------------+-----------+------------------------+
    | 31740-31743 | Reserved for | This      | Not to be assigned.    |
    |             | Experimental | document  | This range is for sub- |
    |             | Use          |           | TLVs that require an   |
    |             |              |           | error message if not   |
    |             |              |           | recognized.  This      |
    |             |              |           | document, Section 3.1] |
    +-------------+--------------+-----------+------------------------+
    | 31744-64507 | Unassigned   |           |                        |
    +-------------+--------------+-----------+------------------------+
    | 64508-64511 | Reserved for | This      | Not to be assigned.    |
    |             | Experimental | document  | This range is for sub- |
    |             | Use          |           | TLVs that can be       |
    |             |              |           | silently dropped if    |
    |             |              |           | not recognized.        |
    +-------------+--------------+-----------+------------------------+
    | 64512-65535 | Unassigned   |           |                        |
    +-------------+--------------+-----------+------------------------+

Table 18: Sub-TLVs for TLV Type 20 Assignments

6.2.6. Updates to the Registry for Sub-TLVs for TLV Type 23 ✨

okay so this bit is about the "Sub-TLVs for TLV Type 23" [IANA-Sub-23] subregistry πŸŽ€ it's getting a glow-up, and the new registration procedures and assignments are what's changing πŸ’…

  • the "Specification Required" procedure is now "RFC Required" πŸ“œ, and the "Experimental RFC Required" comment is gone πŸ‘‹
  • "Vendor Private Use" has been removed πŸ™…β€β™€οΈ, and those code points are now "First Come First Served" (FCFS) πŸ“
  • two small sets, four code points each, are now set aside for Experimental Use πŸ§ͺ
  • reserved code points are clearly marked as reserved so nobody gets confused 🫢
  • the assignments got updated to match the new procedures 🌸
  • the notes about registration procedures now say whether or not a response is needed when a sub-TLV isn't recognized πŸ”₯

the registration procedures for the "Sub-TLVs for TLV Type 23" [IANA-Sub-23] subregistry after all those changes look like this πŸ‘‘

+=============+==============+==================================+
| Range       | Registration | Note                             |
|             | Procedures   |                                  |
+=============+==============+==================================+
| 0-16383     | Standards    | This range is for sub-TLVs that  |
|             | Action       | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1]                     |
+-------------+--------------+----------------------------------+
| 16384-31739 | RFC Required | This range is for sub-TLVs that  |
|             |              | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1]                     |
+-------------+--------------+----------------------------------+
| 31740-31743 | Reserved for | Not to be assigned.  This range  |
|             | Experimental | is for sub-TLVs that require an  |
|             | Use          | error message if not recognized. |
|             |              | This document, Section 3.1]      |
+-------------+--------------+----------------------------------+
| 31744-32767 | FCFS         | This range is for sub-TLVs that  |
|             |              | require an error message if not  |
|             |              | recognized.  This document,      |
|             |              | Section 3.1]                     |
+-------------+--------------+----------------------------------+
| 32768-49161 | Standards    | This range is for sub-TLVs that  |
|             | Action       | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 49162-64507 | RFC Required | This range is for sub-TLVs that  |
|             |              | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 64508-64511 | Reserved for | Not to be assigned.  This range  |
|             | Experimental | is for sub-TLVs that can be      |
|             | Use          | silently dropped if not          |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+
| 64512-65535 | FCFS         | This range is for sub-TLVs that  |
|             |              | can be silently dropped if not   |
|             |              | recognized.                      |
+-------------+--------------+----------------------------------+

Table 19: Registration Procedures for Sub-TLVs for TLV Type 23

and here are the actual assignments πŸ¦‹

+=============+==============+===========+========================+
| Sub-Type    | Sub-TLV Name | Reference | Comment                |
+=============+==============+===========+========================+
| 0           | Reserved     | [RFC7555] |                        |
+-------------+--------------+-----------+------------------------+
| 1           | EQ           | EQ        | EQ                     |
+-------------+--------------+-----------+------------------------+
| 2-31739     | Unassigned   |           |                        |
+-------------+--------------+-----------+------------------------+
| 31740-31743 | Reserved for | This      | Not to be assigned.    |
|             | Experimental | document  | This range is for sub- |
|             | Use          |           | TLVs that require an   |
|             |              |           | error message if not   |
|             |              |           | recognized.  This      |
|             |              |           | document, Section 3.1] |
+-------------+--------------+-----------+------------------------+
| 31744-64507 | Unassigned   |           |                        |
+-------------+--------------+-----------+------------------------+
| 64508-64511 | Reserved for | This      | Not to be assigned.    |
|             | Experimental | document  | This range is for sub- |
|             | Use          |           | TLVs that can be       |
|             |              |           | silently dropped if    |
|             |              |           | not recognized.        |
+-------------+--------------+-----------+------------------------+
| 64512-65535 | Unassigned   |           |                        |
+-------------+--------------+-----------+------------------------+

Table 20: Sub-TLVs for TLV Type 23 Assignments

6.2.7. Updates to the Registry for Sub-TLVs for TLV Type 27 πŸŽ€

Okay bestie, this one's about the "Sub-TLVs for TLV Type 27" [IANA-Sub-27] subregistry 🧚. The new registration procedures and the assignments that follow from them are all here.

  • The "Specification Required" registration procedure is now "RFC Required", and the comment "Experimental RFC Required" is gone πŸ’…
  • The "Vendor Private Use" code point procedure is out, and "First Come First Served" code points are in 🌸
  • There are two small sets, four code points each, set aside for Experimental Use πŸ§ͺ
  • Reserved code points are clearly marked as reserved πŸ”’
  • The assignments are updated to match the new registration procedures ✨
  • The notes about the registration procedures now say whether or not a response is required when a sub-TLV isn't recognized πŸ¦‹

Here's the registration procedures table for the "Sub-TLVs for TLV Type 27" [IANA-Sub-27] subregistry after those changes πŸ‘‘

  +=============+==============+==================================+
  | Range       | Registration | Note                             |
  |             | Procedures   |                                  |
  +=============+==============+==================================+
  | 0-16383     | Standards    | This range is for sub-TLVs that  |
  |             | Action       | require an error message if not  |
  |             |              | recognized.  This document,      |
  |             |              | Section 3.1]                     |
  +-------------+--------------+----------------------------------+
  | 16384-31739 | RFC Required | This range is for sub-TLVs that  |
  |             |              | require an error message if not  |
  |             |              | recognized.  This document,      |
  |             |              | Section 3.1]                     |
  +-------------+--------------+----------------------------------+
  | 31740-31743 | Reserved for | Not to be assigned.  This range  |
  |             | Experimental | is for sub-TLVs that require an  |
  |             | Use          | error message if not recognized. |
  |             |              | This document, Section 3.1]      |
  +-------------+--------------+----------------------------------+
  | 31744-32767 | FCFS         | This range is for sub-TLVs that  |
  |             |              | require an error message if not  |
  |             |              | recognized.  This document,      |
  |             |              | Section 3.1]                     |
  +-------------+--------------+----------------------------------+
  | 32768-49161 | Standards    | This range is for sub-TLVs that  |
  |             | Action       | can be silently dropped if not   |
  |             |              | recognized.                      |
  +-------------+--------------+----------------------------------+
  | 49162-64507 | RFC Required | This range is for sub-TLVs that  |
  |             |              | can be silently dropped if not   |
  |             |              | recognized.                      |
  +-------------+--------------+----------------------------------+
  | 64508-64511 | Experimental | Reserved, not to be assigned.    |
  |             | Use          | This range is for sub-TLVs that  |
  |             |              | can be silently dropped if not   |
  |             |              | recognized.                      |
  +-------------+--------------+----------------------------------+
  | 64512-65535 | FCFS         | This range is for sub-TLVs that  |
  |             |              | can be silently dropped if not   |
  |             |              | recognized.                      |
  +-------------+--------------+----------------------------------+

Table 21: Registration Procedures for Sub-TLVs for TLV Type 27

 +=============+==============+===========+========================+
 | Sub-Type    | Sub-TLV Name | Reference | Comment                |
 +=============+==============+===========+========================+
 | 0           | Reserved     | [RFC7759] |                        |
 +-------------+--------------+-----------+------------------------+
 | 1-99        | Unassigned   |           |                        |
 +-------------+--------------+-----------+------------------------+
 | 100-104     | EQ           | EQ        | EQ                     |
 +-------------+--------------+-----------+------------------------+
 | 105-199     | Unassigned   |           |                        |
 +-------------+--------------+-----------+------------------------+
 | 200-202     | EQ           | EQ        | EQ                     |
 +-------------+--------------+-----------+------------------------+
 | 203-299     | Unassigned   |           |                        |
 +-------------+--------------+-----------+------------------------+
 | 300         | EQ           | EQ        | EQ                     |
 +-------------+--------------+-----------+------------------------+
 | 301-399     | Unassigned   |           |                        |
 +-------------+--------------+-----------+------------------------+
 | 400         | EQ           | EQ        | EQ                     |
 +-------------+--------------+-----------+------------------------+
 | 401-31739   | Unassigned   |           |                        |
 +-------------+--------------+-----------+------------------------+
 | 31740-31743 | Reserved for | This      | Not to be assigned.    |
 |             | Experimental | document  | This range is for sub- |
 |             | Use          |           | TLVs that require an   |
 |             |              |           | error message if not   |
 |             |              |           | recognized.  This      |
 |             |              |           | document, Section 3.1] |
 +-------------+--------------+-----------+------------------------+
 | 31744-64507 | Unassigned   |           |                        |
 +-------------+--------------+-----------+------------------------+
 | 64508-64511 | Reserved for | This      | Not to be assigned.    |
 |             | Experimental | document  | This range is for sub- |
 |             | Use          |           | TLVs that can be       |
 |             |              |           | silently dropped if    |
 |             |              |           | not recognized.        |
 +-------------+--------------+-----------+------------------------+
 | 64512-65535 | Unassigned   |           |                        |
 +-------------+--------------+-----------+------------------------+

Table 22: Sub-TLVs for TLV Type 27 Assignments


7. References πŸ“š

7.1. Normative References πŸ’œ

7.2. Informative References πŸ“šβœ¨

Okay bestie, these are the extra-credit reads πŸ€“ You don't need them to build the thing, but they give you the full backstory.


Acknowledgements πŸ’–

The authors wanted to give a huge shoutout to Adrian Farrel, who left super useful comments and agreed to be the Document Shepherd 🫢

The authors also owe a big thank you to Michelle Cotton and Amanda Baber, who were so patient while we figured out how our registries could and should be updated πŸ’…

The authors thank Donald Eastlake 3rd and Tom Petch for their careful and detailed review πŸ”βœ¨

Authors' Addresses πŸŽ€

Loa Andersson Bronze Dragon Consulting

Email: loa@pi.nu

Mach(Guoyi) Chen Huawei Technologies

Email: mach.chen@huawei.com

Carlos Pignataro Cisco Systems

Email: cpignata@cisco.com

Tarek Saad Juniper Networks

Email: tsaad@juniper.net

πŸ“¦ where this page comes from