RFC 9436

PIM Message Type Space Extension and Reserved Bits

πŸ“… published August 2023, from ietf

PIM Message Type Space Extension and Reserved Bits πŸŽ€

Okay bestie, this is RFC 9436 πŸ“œ, a Standards Track document from the Internet Engineering Task Force (IETF) πŸ’–. It was published in August 2023 and has an ISSN of 2070-1721. The authors are S. Venaas from Cisco Systems, Inc. and A. Retana from Futurewei Technologies, Inc. ✨

It obsoletes RFC 8736 πŸ™ˆ, so anything that said 8736 is now old news. It also updates RFCs 3973, 5015, 5059, 6754, 7761, and 8364 πŸ”₯. Those are the ones getting a little glow-up, and yes, it's a whole list.

Abstract

okay so PIM version 2 messages all wear the same common header, and that header has eight reserved bits just sitting there doing nothing πŸ₯Ί. This document explains how each message type can use those bits and extends the PIM type space too, which is so iconic πŸ‘‘.

It updates RFCs 7761 and 3973 by defining what the Reserved field is used for in the PIM common header. It then updates RFCs 7761 and 3973, along with RFCs 5015, 5059, 6754, and 8364, by specifying how the bits get used for each PIM message πŸ’…. And of course it obsoletes RFC 8736 πŸ¦‹.

Status of This Memo

This is an Internet Standards Track document 🌈. It comes from the IETF and represents the consensus of the IETF community. It went through public review and got 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 is at https://www.rfc-editor.org/info/rfc9436 πŸ“.

Copyright (c) 2023 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) as they stand on the publication date. Please read these carefully, because they spell out your rights and restrictions for this document πŸ“–. Code Components pulled out of this document must include the Revised BSD License text described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as the Revised BSD License describes 🌸.

Table of Contents

1.  Introduction
2.  Conventions Used in This Document
3.  PIM Header Common Format
4.  Flag Bit Definitions
  4.1.  Flag Bits for Type 4 (Bootstrap)
  4.2.  Flag Bits for Type 10 (DF Election)
  4.3.  Flag Bits for Type 12 (PIM Flooding Mechanism)
  4.4.  Flag Bits for Types 13, 14, and 15 (Type Space Extension)
5.  PIM Type Space Extension
6.  Security Considerations
7.  IANA Considerations
8.  References
  8.1.  Normative References
  8.2.  Informative References
Authors' Addresses

1. Introduction 🧚

So PIM version 2 messages all share a common message header format, and that format is defined in the PIM Sparse Mode specification [RFC7761] πŸ’–. The common header has eight reserved bits. Every message type uses this header, but no document formally says those bits are supposed to be used on a per-message-type basis. Lowkey wild, right? πŸ™ˆ

This document updates the definition of the Reserved field and calls it the "Flag Bits field" ✨. It says the flag bits get used separately for each message type, and it updates the "PIM Message Types" registry so it shows that per-message-type usage πŸ¦‹.

This document updates [RFC7761] and [RFC3973] by defining how the Reserved field in the PIM common header gets used. It further updates [RFC7761] and [RFC3973], along with [RFC5015], [RFC5059], [RFC6754], and [RFC8364], by specifying how the bits get used for each PIM message πŸ’….

The original PIM message types ran from 0 to 15 🌈. Message type 15 was reserved by [RFC6166] for type space extension. In Section 5, this document specifies the Flag Bits field usage for message types 13, 14, and 15 so the PIM type space can grow πŸ”₯. The type space extension in [RFC6166] was made obsolete by [RFC8736], and this document obsoletes [RFC8736] too πŸ‘‘.

2. Conventions Used in This Document πŸŽ€

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 πŸ“š.

3. PIM Header Common Format πŸ¦‹

The common PIM header is defined in Section 4.9 of [RFC7761] πŸ’œ. This document updates the definition of the Reserved field and refers to it as the "Flag Bits field" ✨. Here's the updated common header format:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |PIM Ver| Type  |   Flag Bits   |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 1: Updated Common Header 🌸

The Flag Bits field gets defined in Section 4. Everything else stays exactly the same 🫢.

4. Flag Bit Definitions πŸ’…

Unless otherwise specified, all the flag bits for each PIM type are Unassigned [RFC8126] 🌼. They MUST be set to zero on transmission, and they MUST be ignored upon receipt πŸ”₯. The specification of a new PIM type MUST indicate whether the bits should be treated differently πŸ“.

When you define flag bits, you want a clear way to point at a particular bit, so this doc names them. The most significant flag bit, the one right after the Type field, is bit 7 πŸ’–. The least significant, the one right before the Checksum field, is bit 0 ✨. Check the diagram below:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |PIM Ver| Type  |7 6 5 4 3 2 1 0|           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 2: Flag Bits 🧁

4.1. Flag Bits for Type 4 (Bootstrap) 🌷

PIM message type 4 (Bootstrap) [RFC5059] defines flag bit 7 as No-Forward πŸ”’. The usage of that bit is defined in that document. The remaining flag bits are unassigned 🫧.

4.2. Flag Bits for Type 10 (DF Election) 🌺

PIM message type 10 (DF Election) [RFC5015] says the four most significant flag bits (bits 4-7) get used as a subtype πŸŽ€. The usage of those bits is defined in that document. The remaining flag bits are unassigned πŸ’œ.

4.3. Flag Bits for Type 12 (PIM Flooding Mechanism) 🌊

PIM message type 12 (PIM Flooding Mechanism) [RFC8364] defines flag bit 7 as No-Forward ✨. The usage of that bit is defined in that document. The remaining flag bits are unassigned πŸ¦„.

4.4. Flag Bits for Types 13, 14, and 15 (Type Space Extension) 🌈

These types and their corresponding flag bits are defined in Section 5 πŸ‘‘.

Okay so bestie, we're picking up right where we left off, and this part is all about the IANA Considerations and the References πŸ’…πŸŽ€

7. IANA Considerations ✨

This document updates the "PIM Message Types" registry to show which flag bits are defined for each PIM message type πŸ¦‹ It also changes their registration status to Unassigned, except where the bits have already been specified, as shown in Table 1. The registration policy stays as IETF Review [RFC8126]. Assignments to this registry MUST define any non-default usage (see Section 4) of the flag bits, in addition to the type. No cap, that MUST is doing a lot of work here πŸ”₯

Extended type 15.15 is Reserved [RFC8126] for future extensions 🌈

Because this document obsoletes [RFC8736], IANA has changed the references to [RFC8736] in the registry so they point to this document instead 🫢

The updated "PIM Message Types" registry is shown below πŸ‘‘

    +============+===============+=================+===========+
    | Type       | Name          | Flag Bits       | Reference |
    +============+===============+=================+===========+
    | 0          | Hello         | 0-7: Unassigned | [RFC3973] |
    |            |               |                 | [RFC7761] |
    +------------+---------------+-----------------+-----------+
    | 1          | Register      | 0-7: Unassigned | [RFC7761] |
    +------------+---------------+-----------------+-----------+
    | 2          | Register Stop | 0-7: Unassigned | [RFC7761] |
    +------------+---------------+-----------------+-----------+
    | 3          | Join/Prune    | 0-7: Unassigned | [RFC3973] |
    |            |               |                 | [RFC7761] |
    +------------+---------------+-----------------+-----------+
    | 4          | Bootstrap     | 0-6: Unassigned | [RFC5059] |
    |            |               |                 | [RFC7761] |
    |            |               +-----------------+-----------+
    |            |               | 7: No-Forward   | [RFC5059] |
    +------------+---------------+-----------------+-----------+
    | 5          | Assert        | 0-7: Unassigned | [RFC3973] |
    |            |               |                 | [RFC7761] |
    +------------+---------------+-----------------+-----------+
    | 6          | Graft         | 0-7: Unassigned | [RFC3973] |
    +------------+---------------+-----------------+-----------+
    | 7          | Graft-Ack     | 0-7: Unassigned | [RFC3973] |
    +------------+---------------+-----------------+-----------+
    | 8          | Candidate RP  | 0-7: Unassigned | [RFC7761] |
    |            | Advertisement |                 |           |
    +------------+---------------+-----------------+-----------+
    | 9          | State Refresh | 0-7: Unassigned | [RFC3973] |
    +------------+---------------+-----------------+-----------+
    | 10         | DF Election   | 0-3: Unassigned | [RFC5015] |
    |            |               +-----------------+-----------+
    |            |               | 4-7: Subtype    | [RFC5015] |
    +------------+---------------+-----------------+-----------+
    | 11         | ECMP Redirect | 0-7: Unassigned | [RFC6754] |
    +------------+---------------+-----------------+-----------+
    | 12         | PIM Flooding  | 0-6: Unassigned | [RFC8364] |
    |            | Mechanism     +-----------------+-----------+
    |            |               | 7: No-Forward   | [RFC8364] |
    +------------+---------------+-----------------+-----------+
    | 13.0-15.14 | Unassigned    | 0-3: Unassigned |           |
    +------------+---------------+-----------------+-----------+
    | 15.15      | Reserved      | 0-3: Reserved   | RFC 9436  |
    +------------+---------------+-----------------+-----------+

            Table 1: Updated PIM Message Types Registry

The unassigned types above, as explained in Section 5, use the extended type notation of type.subtype. Each extended type only has 4 flag bits available 🧚 New extended message types should be assigned consecutively, starting with 13.0, then 13.1, etc. Stay organized, bestie πŸ“š

8. References ✨

8.1. Normative References πŸ’œ

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119,
           DOI 10.17487/RFC2119, March 1997,
           <https://www.rfc-editor.org/info/rfc2119>.

[RFC7761]  Fenner, B., Handley, M., Holbrook, H., Kouvelas, I.,
           Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent
           Multicast - Sparse Mode (PIM-SM): Protocol Specification
           (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March
           2016, <https://www.rfc-editor.org/info/rfc7761>.

[RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
           Writing an IANA Considerations Section in RFCs", BCP 26,
           RFC 8126, DOI 10.17487/RFC8126, June 2017,
           <https://www.rfc-editor.org/info/rfc8126>.

[RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
           2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
           May 2017, <https://www.rfc-editor.org/info/rfc8174>.

8.2. Informative References 🌸

[RFC3973]  Adams, A., Nicholas, J., and W. Siadak, "Protocol
           Independent Multicast - Dense Mode (PIM-DM): Protocol
           Specification (Revised)", RFC 3973, DOI 10.17487/RFC3973,
           January 2005, <https://www.rfc-editor.org/info/rfc3973>.

[RFC5015]  Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano,
           "Bidirectional Protocol Independent Multicast (BIDIR-
           PIM)", RFC 5015, DOI 10.17487/RFC5015, October 2007,
           <https://www.rfc-editor.org/info/rfc5015>.

[RFC5059]  Bhaskar, N., Gall, A., Lingard, J., and S. Venaas,
           "Bootstrap Router (BSR) Mechanism for Protocol Independent
           Multicast (PIM)", RFC 5059, DOI 10.17487/RFC5059, January
           2008, <https://www.rfc-editor.org/info/rfc5059>.

[RFC6166]  Venaas, S., "A Registry for PIM Message Types", RFC 6166,
           DOI 10.17487/RFC6166, April 2011,
           <https://www.rfc-editor.org/info/rfc6166>.

[RFC6754]  Cai, Y., Wei, L., Ou, H., Arya, V., and S. Jethwani,
           "Protocol Independent Multicast Equal-Cost Multipath
           (ECMP) Redirect", RFC 6754, DOI 10.17487/RFC6754, October
           2012, <https://www.rfc-editor.org/info/rfc6754>.

[RFC8364]  Wijnands, IJ., Venaas, S., Brig, M., and A. Jonasson, "PIM
           Flooding Mechanism (PFM) and Source Discovery (SD)",
           RFC 8364, DOI 10.17487/RFC8364, March 2018,
           <https://www.rfc-editor.org/info/rfc8364>.

[RFC8736]  Venaas, S. and A. Retana, "PIM Message Type Space
           Extension and Reserved Bits", RFC 8736,
           DOI 10.17487/RFC8736, February 2020,
           <https://www.rfc-editor.org/info/rfc8736>.

Authors' Addresses πŸ¦‹

Stig Venaas
Cisco Systems, Inc.
Tasman Drive
San Jose, CA 95134
United States of America
Email: stig@cisco.com


Alvaro Retana
Futurewei Technologies, Inc.
2330 Central Expressway
Santa Clara, CA 95050
United States of America
Email: alvaro.retana@futurewei.com

That's the whole spec, babe! πŸ’– Every MUST is still a MUST, every number is where it should be, and the registry is exactly how the RFC wrote it. Go slay your implementation πŸ‘‘βœ¨

πŸ“¦ where this page comes from