<?xmlversion='1.0' encoding='utf-8'?>version="1.0" encoding="UTF-8"?> <?xml-model href="rfc7991bis.rnc"?> <!DOCTYPE rfc [ <!ENTITY nbsp " "> <!ENTITY zwsp "​"> <!ENTITY nbhy "‑"> <!ENTITY wj "⁠"> ]> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category="std" consensus="true" docName="draft-ietf-pim-rfc8736bis-04" number="9436" ipr="trust200902" obsoletes="8736" updates="3973, 5015, 5059, 6754, 7761, 8364"submissionType="IETF"xml:lang="en"version="3" consensus="true">tocInclude="true" symRefs="true" sortRefs="true" version="3"> <front> <title abbrev="PIM Type Extension and Reserved Bits">PIM Message Type Space Extension and Reserved Bits</title> <seriesInfoname="Internet-Draft" value="draft-ietf-pim-rfc8736bis-04"/>name="RFC" value="9436"/> <author fullname="Stig Venaas" initials="S." surname="Venaas"> <organization showOnFrontPage="true">Cisco Systems, Inc.</organization> <address> <postal> <street>Tasman Drive</street> <city>San Jose</city> <region>CA</region> <code>95134</code> <country>United States of America</country> </postal> <email>stig@cisco.com</email> </address> </author> <author fullname="Alvaro Retana" initials="A." surname="Retana"> <organization showOnFrontPage="true">Futurewei Technologies, Inc.</organization> <address> <postal> <street>2330 Central Expressway</street> <city>Santa Clara</city> <region>CA</region> <code>95050</code> <country>United States of America</country> </postal> <phone/> <email>alvaro.retana@futurewei.com</email> <uri/> </address> </author> <dateyear="2023"/> <area>Routing</area> <workgroup>PIM</workgroup>year="2023" month="August" /> <area>rtg</area> <workgroup>pim</workgroup> <keyword>Multicast PIM</keyword> <abstract> <t> 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. </t> <t> This document updatesRFC7761RFCs 7761 andRFC39733973 by defining the use of thecurrentlyReserved field in the PIM common header. This document further updatesRFC7761RFCs 7761 andRFC3973,3973, along withRFC5015, RFC5059, RFC6754,RFCs 5015, 5059, 6754, andRFC8364,8364, by specifying the use of thecurrently reservedbits for each PIM message. </t> <t> This document obsoletesRFC8736.RFC 8736. </t> </abstract> </front> <middle> <section numbered="true" toc="include" removeInRFC="false" anchor="intro"> <name>Introduction</name> <t> The PIM version 2 messages share a common message header format defined in the PIM Sparse Mode specification <xref target="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. </t><t> This<t>This documentrefers toupdates thebits indefinition of the Reserved fieldof the common PIM header <xref target="RFC7761"/> as "PIM message type Flag Bits" or, simply, "Flag Bits",and refers to it as the "Flag Bits field". It specifies thattheythe 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. </t> <t> This document updates <xref target="RFC7761"/> and <xref target="RFC3973"/> by defining the use of thecurrentlyReserved field in the PIM common header. This document further updates <xref target="RFC7761"/> and <xref target="RFC3973"/>, along with <xref target="RFC5015"/>, <xref target="RFC5059"/>, <xref target="RFC6754"/>, and <xref target="RFC8364"/>, by specifying the use of thecurrently reservedbits for each PIMmessage. </t>message.</t> <t> The originally defined PIM message types were in the range from 0 to 15. Message type 15 had been reserved by <xref target="RFC6166"/> for type space extension. In <xref target="ext"/>, 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 <xref target="RFC6166"/> was made obsolete by <xref target="RFC8736"/>. This document obsoletes <xref target="RFC8736"/>. </t> </section> <section numbered="true" toc="include" removeInRFC="false"> <name>Conventions Used in This Document</name><t> The<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here. </t> </section> <section numbered="true" toc="include" removeInRFC="false"> <name>PIM Header Common Format</name> <t> The common PIM header is defined in <xref target="RFC7761" sectionFormat="of"section="4.9" derivedLink="https://rfc-editor.org/rfc/rfc7761#section-4.9"/>.section="4.9"/>. This document updates the definition of the Reserved field and refers tothat fieldit as"PIM message type Flag Bits" or, simply,the "FlagBits".Bits field". The updated common header format is as below. </t> <figure align="left" suppress-title="false"> <name>Updated Common Header</name> <artwork name="" type="" align="left"alt="">alt=""><![CDATA[ 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>]]></artwork> </figure> <t> The Flag Bits field is defined in <xref target="flagbits"/>. All other fields remain unchanged. </t> </section> <section anchor="flagbits" numbered="true" toc="include" removeInRFC="false"> <name>Flag Bit Definitions</name> <t> Unless otherwise specified, all the flag bits for each PIM type are Unassigned <xref target="RFC8126"/>. They <bcp14>MUST</bcp14> be set to zero on transmission, and they <bcp14>MUST</bcp14> be ignored upon receipt. The specification of a new PIM type <bcp14>MUST</bcp14> indicate whether the bits should be treated differently. </t> <t> 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. </t> <figure align="left" suppress-title="false"> <name>Flag Bits</name> <artwork name="" type="" align="left"alt="">alt=""><![CDATA[ 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>]]></artwork> </figure> <section numbered="true" toc="include" removeInRFC="false"> <name>Flag Bits for Type 4 (Bootstrap)</name> <t> PIM message type 4 (Bootstrap) <xref target="RFC5059"/> defines flag bit 7 as No-Forward. The usage of the bit is defined in that document. The remaining flag bits are unassigned. </t> </section> <section numbered="true" toc="include" removeInRFC="false"> <name>Flag Bits for Type 10 (DF Election)</name> <t> PIM message type 10 (DF Election) <xref target="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. </t> </section> <section numbered="true" toc="include" removeInRFC="false"> <name>Flag Bits for Type 12(PFM)</name>(PIM Flooding Mechanism)</name> <t> PIM message type 12 (PIM Flooding Mechanism) <xref target="RFC8364"/> defines flag bit 7 as No-Forward. The usage of the bit is defined in that document. The remaining flag bits areunsassigned.unassigned. </t> </section> <section numbered="true" toc="include" removeInRFC="false"> <name>Flag Bits for Types 13, 14, and 15 (Type Space Extension)</name> <t> These types and the corresponding flag bits are defined in <xref target="ext"/>. </t> </section> </section> <section anchor="ext" numbered="true" toc="include" removeInRFC="false"> <name>PIM Type Space Extension</name> <t> 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 <xref target="subtypes"/>) 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. </t> <t> 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. </t> <figure anchor="subtypes" align="left" suppress-title="false"> <name>Subtypes</name> <artwork name="" type="" align="left"alt="">alt=""><![CDATA[ 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>]]></artwork> </figure> </section> <section numbered="true" toc="include" removeInRFC="false"> <name>Security Considerations</name> <t> 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 <xref target="RFC7761"/> and <xref target="RFC3973"/>. </t> </section> <section anchor="IANA" numbered="true" toc="include" removeInRFC="false"> <name>IANA Considerations</name> <t> This document updates the "PIM Message Types" registry to indicate which flag bits are defined for use by each of the PIM messagetypes,types and changes their registration status toUnassigned,Unassigned except where the bits have already been specified, as shown in<xref target="PIM-registry"/>.Table 1. The registration policy remains IETF Review <xref target="RFC8126"/>. Assignments to this registry <bcp14>MUST</bcp14> define any non-default usage (see <xref target="flagbits"/>) of the flag bits in addition to the type. </t> <t> Extended type 15.15 is Reserved <xref target="RFC8126"/> for future extensions. </t> <t> Because this document obsoletesRFC 8736,<xref target="RFC8736"/>, IANAis asked to change all registration information thathas changed the references to <xref target="RFC8736"/> in the registry toinstead reference [this document].point to this document instead. </t> <t> The updated "PIM Message Types" registry is shown below. </t> <table anchor="PIM-registry" align="center"> <name>Updated PIM Message Types Registry</name> <thead> <tr> <th align="left" colspan="1" rowspan="1">Type</th> <th align="left" colspan="1" rowspan="1">Name</th> <th align="left" colspan="1" rowspan="1">Flag Bits</th> <th align="left" colspan="1" rowspan="1">Reference</th> </tr> </thead> <tbody> <tr> <td align="left" colspan="1" rowspan="1">0</td> <td align="left" colspan="1" rowspan="1">Hello</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xreftarget="RFC3973"/><xreftarget="RFC3973"/> <xref target="RFC7761"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">1</td> <td align="left" colspan="1" rowspan="1">Register</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC7761"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">2</td> <td align="left" colspan="1" rowspan="1">Register Stop</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC7761"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">3</td> <td align="left" colspan="1" rowspan="1">Join/Prune</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xreftarget="RFC3973"/><xreftarget="RFC3973"/> <xref target="RFC7761"/></td> </tr> <tr> <td rowspan="2" align="left" colspan="1">4</td> <td rowspan="2" align="left" colspan="1">Bootstrap</td> <td align="left" colspan="1" rowspan="1">0-6: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xreftarget="RFC5059"/><xreftarget="RFC5059"/> <xref target="RFC7761"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">7: No-Forward</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC5059"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">5</td> <td align="left" colspan="1" rowspan="1">Assert</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xreftarget="RFC3973"/><xreftarget="RFC3973"/> <xref target="RFC7761"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">6</td> <td align="left" colspan="1" rowspan="1">Graft</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC3973"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">7</td> <td align="left" colspan="1" rowspan="1">Graft-Ack</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC3973"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">8</td> <td align="left" colspan="1" rowspan="1">Candidate RP Advertisement</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC7761"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">9</td> <td align="left" colspan="1" rowspan="1">State Refresh</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC3973"/></td> </tr> <tr> <td rowspan="2" align="left" colspan="1">10</td> <td rowspan="2" align="left" colspan="1">DF Election</td> <td align="left" colspan="1" rowspan="1">0-3: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC5015"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">4-7: Subtype</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC5015"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">11</td> <td align="left" colspan="1" rowspan="1">ECMP Redirect</td> <td align="left" colspan="1" rowspan="1">0-7: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC6754"/></td> </tr> <tr> <td rowspan="2" align="left" colspan="1">12</td> <td rowspan="2" align="left" colspan="1">PIM Flooding Mechanism</td> <td align="left" colspan="1" rowspan="1">0-6: Unassigned</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC8364"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">7: No-Forward</td> <td align="left" colspan="1" rowspan="1"> <xref target="RFC8364"/></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">13.0-15.14</td> <td align="left" colspan="1" rowspan="1">Unassigned</td> <td align="left" colspan="1" rowspan="1">0-3: Unassigned</td> <td align="left" colspan="1"rowspan="1">[This document]</td>rowspan="1"></td> </tr> <tr> <td align="left" colspan="1" rowspan="1">15.15</td> <td align="left" colspan="1" rowspan="1">Reserved</td> <td align="left" colspan="1" rowspan="1">0-3: Reserved</td> <td align="left" colspan="1"rowspan="1">[This document]</td>rowspan="1">RFC 9436</td> </tr> </tbody> </table> <t> The unassigned types above, as explained in <xref target="ext"/>, 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. </t> </section> </middle> <back> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7761.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8126.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.3973.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5015.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5059.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6166.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6754.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8364.xml"/> <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8736.xml"/> </references> </references> </back> </rfc>