PIM Type Extension: PIM Message Type Space Extension and Reserved Bits
Names the spare bits in the PIM message header and turns three message types into 48.
Venaas, S. and A. Retana, "PIM Message Type Space Extension and Reserved Bits", RFC 9436, DOI 10.17487/RFC9436, August 2023, <https://www.rfc-editor.org/info/rfc9436>.
@misc{rfc9436,
series = {Request for Comments},
number = 9436,
howpublished = {RFC 9436},
publisher = {RFC Editor},
doi = {10.17487/RFC9436},
url = {https://www.rfc-editor.org/info/rfc9436},
author = {S. Venaas and A. Retana},
title = {{PIM Message Type Space Extension and Reserved Bits}},
pagetotal = 7,
year = 2023,
month = aug,
} RFC text
Contents
Internet Engineering Task Force (IETF) S. Venaas
Request for Comments: 9436 Cisco Systems, Inc.
Obsoletes: 8736 A. Retana
Updates: 3973, 5015, 5059, 6754, 7761, Futurewei Technologies, Inc.
8364 August 2023
Category: Standards Track
ISSN: 2070-1721
PIM Message Type Space Extension and Reserved Bits
Abstract
The PIM version 2 messages share a common message header format. The
common header definition contains eight reserved bits. This document
specifies how these bits may be used by individual message types and
extends the PIM type space.
This document updates RFCs 7761 and 3973 by defining the use of the
Reserved field in the PIM common header. This document further
updates RFCs 7761 and 3973, along with RFCs 5015, 5059, 6754, and
8364, by specifying the use of the bits for each PIM message.
This document obsoletes RFC 8736.
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 has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9436.
Copyright Notice
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) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Revised BSD License text as described in Section 4.e of the
Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
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
The PIM version 2 messages share a common message header format
defined in the PIM Sparse Mode specification [RFC7761]. The common
header definition contains eight reserved bits. While all message
types use this common header, there is no document formally
specifying that these bits are to be used per message type.
This document updates the definition of the Reserved field and refers
to it as the "Flag Bits field". It specifies that the flag bits are
to be separately used on a per-message-type basis. It updates the
"PIM Message Types" registry to indicate the per-message-type usage.
This document updates [RFC7761] and [RFC3973] by defining the use of
the Reserved field in the PIM common header. This document further
updates [RFC7761] and [RFC3973], along with [RFC5015], [RFC5059],
[RFC6754], and [RFC8364], by specifying the use of the bits for each
PIM message.
The originally defined PIM message types were in the range from 0 to
15. Message type 15 had been reserved by [RFC6166] for type space
extension. In Section 5, this document specifies the use of the Flag
Bits field for message types 13, 14, and 15 in order to extend the
PIM type space. The type space extension in [RFC6166] was made
obsolete by [RFC8736]. This document obsoletes [RFC8736].
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". The updated common header format is as
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 | Flag Bits | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Updated Common Header
The Flag Bits field is defined in Section 4. All other fields remain
unchanged.
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 defining flag bits, it is helpful to have a well-defined way of
referring to a particular bit. The most significant of the flag
bits, the bit immediately following the Type field, is referred to as
bit 7. The least significant, the bit right in front of the Checksum
field, is referred to as bit 0. This is shown in 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 the 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] specifies that the four
most significant flag bits (bits 4-7) are to be 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 the 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 the corresponding flag bits are defined in Section 5.
5. PIM Type Space Extension
This document extends types 13, 14, and 15 such that each becomes 16
new types, resulting in 48 types available for future PIM extensions.
This extension is achieved by defining a Subtype field (see Figure 3)
using the four most significant flag bits (bits 4-7). The notation
type.subtype is used to reference the new extended types. The
remaining four flag bits (bits 0-3, abbreviated as FB below) are to
be defined by each extended type.
Each of the extended types is represented by the eight bits resulting
from the concatenation of the Type and Subtype fields. No
relationship is expected or implied between extended type messages
with a common Type field.
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 |Subtype| FB | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: Subtypes
6. Security Considerations
This document clarifies the use of the flag bits in the common PIM
header, and it extends the PIM type space. As such, there is no
impact on security or changes to the considerations in [RFC7761] and
[RFC3973].
7. IANA Considerations
This document updates the "PIM Message Types" registry to indicate
which flag bits are defined for use by each of the PIM message types
and changes their registration status to Unassigned except where the
bits have already been specified, as shown in Table 1. The
registration policy remains 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.
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 to 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.
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
ISO Plain Language
On this page
§1Introduction
The PIM version 2 messages share a common message header format defined in the PIM Sparse Mode specification, RFC 7761. The common header definition contains eight reserved bits. While all message types use this common header, no document formally specifies that these bits are to be used per message type.
This document updates the definition of the Reserved field and refers to it as the Flag Bits field. It specifies that the flag bits are to be separately used on a per-message-type basis, and it updates the "PIM Message Types" registry to indicate the per-message-type usage.
The originally defined PIM message types were in the range from 0 to 15. Message type 15 had been reserved by RFC 6166 for type space extension. The type space extension in RFC 6166 was made obsolete by RFC 8736, and this document obsoletes RFC 8736 in turn.
PIM (Protocol Independent Multicast) is a family of protocols for sending one message to many receivers. Every PIM version 2 message starts with the same header, and that header holds eight bits that no earlier document explained. RFC 9436 gives those bits a name and rules, and it makes room for 48 new kinds of PIM message.
§3The PIM Common Header
The common PIM header is defined in Section 4.9 of RFC 7761. This document updates the definition of the Reserved field and refers to it as the Flag Bits field. All other fields remain unchanged.
The header carries four fields. PIM Ver is 4 bits wide and holds the protocol version. Type is 4 bits wide and says which kind of PIM message this is. Flag Bits is 8 bits wide and is the field this document defines. Checksum is 16 bits wide.
The Flag Bits field is defined in Section 4 of this document. The document also gives the bits names so that one bit can be pointed at precisely: the bit immediately following the Type field is bit 7, and the bit immediately in front of the Checksum field is bit 0.
Every PIM message begins with the same header. It holds the protocol version, the message type, eight flag bits and a checksum. This document gives the eight flag bits a name, the Flag Bits field, and leaves the rest of the header alone.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
PIM-VER | PIM Ver | 4 bits | The PIM version. | |
TYPE | Type | 4 bits | The kind of PIM message. The originally defined types run from 0 to 15. | |
FLAG-BITS | Flag Bits | 1 byte | Formerly the Reserved field. Defined per message type by this document. | |
CHECKSUM | Checksum | 2 bytes | Unchanged from the common header defined in RFC 7761. |
§4Flag Bits for Each Message Type
Unless otherwise specified, all the flag bits for each PIM type are Unassigned. 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.
Three message types already say something about their bits. Type 4 (Bootstrap) defines flag bit 7 as No-Forward, and the remaining flag bits are unassigned. Type 10 (DF Election) specifies that the four most significant flag bits, bits 4 to 7, are to be used as a subtype, and the remaining flag bits are unassigned. Type 12 (PIM Flooding Mechanism) defines flag bit 7 as No-Forward, and the remaining flag bits are unassigned.
Types 13, 14 and 15 are handled by the type space extension described in Section 5.
Every flag bit starts out with no meaning. Senders must set them to zero and receivers must ignore them, unless the message type gives them a job. Three types already do: Bootstrap and PIM Flooding Mechanism use one bit each, and DF Election uses four bits as a subtype.
§5Extending the PIM Type Space
This document extends types 13, 14 and 15 such that each becomes 16 new types, resulting in 48 types available for future PIM extensions.
The extension is achieved by defining a Subtype field using the four most significant flag bits, bits 4 to 7. The notation type.subtype is used to reference the new extended types, so 13.0 and 13.1 are two different types that share the same Type value of 13. The remaining four flag bits, bits 0 to 3, are abbreviated FB and are to be defined by each extended type.
Each of the extended types is represented by the eight bits resulting from the concatenation of the Type and Subtype fields. No relationship is expected or implied between extended type messages with a common Type field.
Three PIM message types are each split into 16, giving 48 types for future extensions. A four-bit Subtype field takes the place of part of the flag bits, and a new type is named by writing both numbers, such as 13.1.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
PIM-VER | PIM Ver | 4 bits | The PIM version. | |
TYPE | Type | 4 bits | The type part of the extended type. Together with Subtype it names the message. | |
SUBTYPE | Subtype | 4 bits | Bits 4 to 7. The type part and this field together give the eight bits of an extended type. | |
FB | FB | 4 bits | Bits 0 to 3. Left for each extended type to define. | |
CHECKSUM | Checksum | 2 bytes | Unchanged from the common header defined in RFC 7761. |
§6Security Considerations
The document says that clarifying the use of the flag bits in the common PIM header and extending the PIM type space has no impact on security. There are no changes to the considerations in RFC 7761 and RFC 3973.
This document says the flag bits and the new message types do not change how PIM is secured. The security rules stay exactly as they are in the PIM specifications.
§7IANA Considerations
This document updates the "PIM Message Types" registry to indicate which flag bits are defined for use by each of the PIM message types, and changes their registration status to Unassigned except where the bits have already been specified. The registration policy remains IETF Review. Assignments to this registry MUST define any non-default usage of the flag bits in addition to the type.
Extended type 15.15 is Reserved for future extensions. Because this document obsoletes RFC 8736, IANA has changed the references to RFC 8736 in the registry to point to this document instead.
The unassigned types above use the extended type notation of type.subtype. Each extended type only has four flag bits available, and new extended message types should be assigned consecutively, starting with 13.0, then 13.1, and so on.
IANA's list of PIM message types now records which flag bits each type uses, and it says which bits are still free. Type 15.15 is held back for future use. New extended types are handed out in order, starting at 13.0.
- 0Hello — Flag bits 0-7: Unassigned.
- 1Register — Flag bits 0-7: Unassigned.
- 2Register Stop — Flag bits 0-7: Unassigned.
- 3Join/Prune — Flag bits 0-7: Unassigned.
- 4Bootstrap — Flag bits 0-6: Unassigned; bit 7: No-Forward.
- 5Assert — Flag bits 0-7: Unassigned.
- 6Graft — Flag bits 0-7: Unassigned.
- 7Graft-Ack — Flag bits 0-7: Unassigned.
- 8Candidate RP Advertisement — Flag bits 0-7: Unassigned.
- 9State Refresh — Flag bits 0-7: Unassigned.
- 10DF Election — Flag bits 0-3: Unassigned; bits 4-7: Subtype.
- 11ECMP Redirect — Flag bits 0-7: Unassigned.
- 12PIM Flooding Mechanism — Flag bits 0-6: Unassigned; bit 7: No-Forward.
- 13.0-15.14Unassigned — Flag bits 0-3: Unassigned. Extended types use the type.subtype notation.
- 15.15Reserved — Flag bits 0-3: Reserved, for future extensions.