<?xmlversion="1.0" encoding="US-ASCII"?>version='1.0' encoding='utf-8'?> <!DOCTYPE rfc SYSTEM"rfc2629.dtd">"rfc2629-xhtml.ent"> <rfc number="8736" consensus="true" xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ietf-pim-reserved-bits-04" ipr="trust200902" obsoletes="6166" updates="3973, 5015, 5059, 6754, 7761,8364"> <?rfc toc="yes"?> <?rfc compact="yes"?> <?rfc subcompact="no"?> <?rfc symrefs="yes"?>8364" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3"> <!-- xml2rfc v2v3 conversion 2.36.0 --> <front> <title abbrev="PIM Type Extension and Reserved Bits">PIM Message Type Space Extension and Reserved Bits</title> <seriesInfo name="RFC" value="8736"/> <author fullname="Stig Venaas" initials="S." surname="Venaas"> <organization>Cisco Systems, Inc.</organization> <address> <postal> <street>Tasman Drive</street> <city>San Jose</city><code>CA 95134</code> <country>USA</country><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>Futurewei Technologies, Inc.</organization> <address> <postal> <street>2330 Central Expressway</street> <city>Santa Clara</city><region/> <code>CA 95050</code> <country>USA</country><region>CA</region> <code>95050</code> <country>United States of America</country> </postal> <phone/><facsimile/><email>alvaro.retana@futurewei.com</email> <uri/> </address> </author> <dateday="19" month="September" year="2019"/>month="February" year="2020"/> <area>Routing</area> <keyword>Multicast</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 messagetypes,types and creates a registry containing the per-message-type usage. This document also extends the PIM type space by defining three new message types. For each of the new types, four of the previously reserved bits are used to form an extended type range.</t> <t>This documentUpdates RFCupdates RFCs 7761 andRFC3973 by defining the use of the currently Reserved field in the PIM common header. This document further updatesRFCRFCs 7761 andRFC3973, along withRFCRFCs 5015,RFC5059,RFC 67546754, andRFC8364, by specifying the use of the currentlyReservedreserved bits for each PIM message.</t> <t>This document obsoletes RFC 6166.</t> </abstract> </front> <middle> <sectiontitle="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t>The PIM version 2 messages share a common message header format defined in the PIM Sparse Mode specification <xreftarget="RFC7761"/> specification.target="RFC7761" format="default"/>. The common header definition contains eightReservedreserved 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 document refers to the bits specified asReserved"reserved" in the common PIM header <xreftarget="RFC7761"/>target="RFC7761" format="default"/> asPIM"PIM message type FlagBits, or simply Flag Bits,Bits" or, simply, "Flag Bits", and it specifies that they are to be separately used on a per-message-type basis. It creates a registry containing the per-message-type usage. </t> <t>This documentUpdatesupdates <xreftarget="RFC7761"/>target="RFC7761" format="default"/> and <xreftarget="RFC3973"/>target="RFC3973" format="default"/> by defining the use of the currently Reserved field in the PIM common header. This document further updates <xreftarget="RFC7761"/>target="RFC7761" format="default"/> and <xreftarget="RFC3973"/>,target="RFC3973" format="default"/>, along with <xreftarget="RFC5015"/>,target="RFC5015" format="default"/>, <xreftarget="RFC5059"/>,target="RFC5059" format="default"/>, <xreftarget="RFC6754"/>target="RFC6754" format="default"/>, and <xreftarget="RFC8364"/>,target="RFC8364" format="default"/>, by specifying the use of the currentlyReservedreserved bits for each PIM message.</t> <t>The currently defined PIM message types are in the range from 0 to 15. That type space is almost exhausted. Message type 15 was reserved by <xreftarget="RFC6166"/>target="RFC6166" format="default"/> for type space extension. In <xreftarget="ext"/>,target="ext" format="default"/>, this document specifies the use of the Flag Bits for message types 13,1414, and 15 in order to extend the PIM type space. This documentObsoletesobsoletes <xreftarget="RFC6166"/>.</t>target="RFC6166" format="default"/>.</t> </section> <sectiontitle="Conventions usednumbered="true" toc="default"> <name>Conventions Used inthis document"> <t>TheThis Document</name> <t> The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<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"OPTIONAL""<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> <sectiontitle="PIM header common format">numbered="true" toc="default"> <name>PIM Header Common Format</name> <t>The common PIM header is defined insection 4.9 of<xreftarget="RFC7761"/>.target="RFC7761" sectionFormat="of" section="4.9"/>. This document updates the definition of the Reserved field and refers to that field asPIM"PIM message type FlagBits, or simply Flag Bits.Bits" or, simply, "Flag Bits". The new common header format is as below.<figure title="Figure 1: New</t> <figure> <name>New CommonHeader"> <artwork><![CDATA[Header</name> <artwork name="" type="" align="left" 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></figure></t></figure> <t>The Flag Bits field is defined in <xreftarget="flagbits"/>.target="flagbits" format="default"/>. All other fields remain unchanged.</t> </section> <section anchor="flagbits"title="Flagnumbered="true" toc="default"> <name>Flag Bitdefinitions">Definitions</name> <t>Unless otherwise specified, all theFlag Bitsflag bits for each PIM type are Reserved <xreftarget="RFC8126"/>.target="RFC8126" format="default"/>. TheyMUST<bcp14>MUST</bcp14> be set to zero on transmission, and theyMUST<bcp14>MUST</bcp14> be ignored upon receipt. The specification of a new PIM typeMUST<bcp14>MUST</bcp14> indicate whether the bits should be treated differently.</t> <t>When definingFlag Bits,flag bits, it is helpful to have a well-defined way of referring to a particular bit. The most significant of theFlag Bits,flag bits, the bit immediately following thetype fieldType field, is referred to as bit 7. The least significant, the bit right in front of thechecksum fieldChecksum field, is referred to as bit 0. This is shown in the diagram below.</t><t><figure title="Figure 2: Flag Bits"> <artwork><![CDATA[<figure> <name>Flag Bits</name> <artwork name="" type="" align="left" 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></figure></t></figure> <sectiontitle="Flagnumbered="true" toc="default"> <name>Flag Bits for Type 4(Bootstrap)">(Bootstrap)</name> <t>PIM message type 4 (Bootstrap) <xreftarget="RFC5059"/>target="RFC5059" format="default"/> definesFlag Bitflag bit 7 as No-Forward. The usage of the bit is defined in that document. The remainingFlag Bitsflag bits areReserved.</t>reserved.</t> </section> <sectiontitle="Flagnumbered="true" toc="default"> <name>Flag Bits for Type 10 (DFElection)">Election)</name> <t>PIM message type 10 (DF Election) <xreftarget="RFC5015"/>target="RFC5015" format="default"/> specifies that the four most significantFlag Bitsflag bits (bits 4-7) are to be used as aSubtype.subtype. The usage of those bits is defined in that document. The remainingFlag Bitsflag bits areReserved.</t>reserved.</t> </section> <sectiontitle="Flagnumbered="true" toc="default"> <name>Flag Bits for Type 12(PFM)">(PFM)</name> <t>PIM message type 12(PFM)(PIM Flooding Mechanism) <xreftarget="RFC8364"/>target="RFC8364" format="default"/> definesFlag Bitflag bit 7 as No-Forward. The usage of the bit is defined in that document. The remainingFlag Bitsflag bits areReserved.</t>reserved.</t> </section> <sectiontitle="Flagnumbered="true" toc="default"> <name>Flag Bits for Types 13,1414, and 15 (Type SpaceExtension)">Extension)</name> <t>These types and the correspondingFlag Bitsflag bits are defined in <xreftarget="ext"/>.</t>target="ext" format="default"/>.</t> </section> </section> <section anchor="ext"title="PIMnumbered="true" toc="default"> <name>PIM Type SpaceExtension">Extension</name> <t>This document defines types 13,1414, and 15, such that each of these types has 16 subtypes, providing a total of 48 subtypes available for future PIM extensions. This is achieved by defining a newSubTypeSubtype field (see Figure 3) using the four most significantFlag Bitsflag bits (bits 4-7). The notation type.subtype is used to reference these new extended types. The remaining fourFlag Bitsflag bits (bits 0-3) areReservedreserved to be used by each extended type (abbreviated as FB below). </t><t><figure title="Figure 3: Sub-Types"> <artwork><![CDATA[<figure> <name>Subtypes</name> <artwork name="" type="" align="left" 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||Subtype| FB | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork></figure></t></figure> </section> <sectiontitle="Security Considerations">numbered="true" toc="default"> <name>Security Considerations</name> <t>This document clarifies the use of theFlag Bitsflag bits in the common PIMheaderheader, and it extends the PIM type space. As such, there is no impact on security or changes to the considerations in <xreftarget="RFC7761"/>target="RFC7761" format="default"/> and <xreftarget="RFC3973"/>.</t>target="RFC3973" format="default"/>.</t> </section> <section anchor="IANA"title="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <t>This document updates thePIM"PIM MessageTypesTypes" registry to indicate whichFlag Bitsflag bits are defined for use by each of the PIM message types. TheRegistry shouldregistry nowreferencereferences thisdocument instead of <xref target="RFC6166"/>.document. TheRegistration Policyregistration policy remains IETF Review <xreftarget="RFC8126"/>.target="RFC8126" format="default"/>. Assignments into this registryMUST<bcp14>MUST</bcp14> define any non-default usage (see <xreftarget="flagbits"/>)target="flagbits" format="default"/>) of theFlag Bitsflag bits in addition todefiningtheType.</t>type.</t> <t>The updatedPIM"PIM MessageTypesTypes" registry is shown below.</t><t><figure title="Table 1: Updated<table anchor="PIM-registry"> <name>Updated PIM Message TypesRegistry"> <artwork><![CDATA[ Type Name Flag Bits Reference --------------------------------------------------------------------- 0 Hello 0-7: Reserved [RFC3973][RFC7761] 1 Register 0-7: Reserved [RFC7761] 2 Register Stop 0-7: Reserved [RFC7761] 3 Join/Prune 0-7: Reserved [RFC3973][RFC7761] 4 Bootstrap 0-6: Reserved [RFC5059][RFC7761] 7: No-Forward [RFC5059] 5 Assert 0-7: Reserved [RFC3973][RFC7761] 6 Graft 0-7: Reserved [RFC3973] 7 Graft-Ack 0-7: Reserved [RFC3973] 8 CandidateRegistry</name> <thead> <tr> <th>Type</th> <th>Name</th> <th>Flag Bits</th> <th>Reference</th> </tr> </thead> <tbody> <tr> <td>0</td> <td>Hello</td> <td>0-7: Reserved</td> <td><xref target="RFC3973" format="default"/><xref target="RFC7761" format="default"/></td> </tr> <tr> <td>1</td> <td>Register</td> <td>0-7: Reserved</td> <td><xref target="RFC7761" format="default"/></td> </tr> <tr> <td>2</td> <td>Register Stop</td> <td>0-7: Reserved</td> <td><xref target="RFC7761" format="default"/></td> </tr> <tr> <td>3</td> <td>Join/Prune</td> <td>0-7: Reserved</td> <td><xref target="RFC3973" format="default"/><xref target="RFC7761" format="default"/></td> </tr> <tr> <td rowspan="2">4</td> <td rowspan="2">Bootstrap</td> <td>0-6: Reserved</td> <td><xref target="RFC5059" format="default"/><xref target="RFC7761" format="default"/></td> </tr> <tr> <td>7: No-Forward</td> <td><xref target="RFC5059" format="default"/></td> </tr> <tr> <td>5</td> <td>Assert</td> <td>0-7: Reserved</td> <td><xref target="RFC3973" format="default"/><xref target="RFC7761" format="default"/></td> </tr> <tr> <td>6</td> <td>Graft</td> <td>0-7: Reserved</td> <td><xref target="RFC3973" format="default"/></td> </tr> <tr> <td>7</td> <td>Graft-Ack</td> <td>0-7: Reserved</td> <td><xref target="RFC3973" format="default"/></td> </tr> <tr> <td>8</td> <td>Candidate RP0-7: Reserved [RFC7761] Advertisement 9 State Refresh 0-7: Reserved [RFC3973] 10 DF Election 0-3: Reserved [RFC5015] 4-7: Subtype [RFC5015] 11 ECMP Redirect 0-7: Reserved [RFC6754] 12 PIMAdvertisement</td> <td>0-7: Reserved</td> <td><xref target="RFC7761" format="default"/></td> </tr> <tr> <td>9</td> <td>State Refresh</td> <td>0-7: Reserved</td> <td><xref target="RFC3973" format="default"/></td> </tr> <tr> <td rowspan="2">10</td> <td rowspan="2">DF Election</td> <td>0-3: Reserved</td> <td><xref target="RFC5015" format="default"/></td> </tr> <tr> <td>4-7: Subtype</td> <td><xref target="RFC5015" format="default"/></td> </tr> <tr> <td>11</td> <td>ECMP Redirect</td> <td>0-7: Reserved</td> <td><xref target="RFC6754" format="default"/></td> </tr> <tr> <td rowspan="2">12</td> <td rowspan="2">PIM FloodingMechanism 0-6: Reserved [RFC8364] 7: No-Forward [RFC8364] 13.0-15.15 Unassigned 0-3: Unassigned [this document] ]]></artwork> </figure>The UnassignedMechanism</td> <td>0-6: Reserved</td> <td><xref target="RFC8364" format="default"/></td> </tr> <tr> <td>7: No-Forward</td> <td><xref target="RFC8364" format="default"/></td> </tr> <tr> <td>13.0-15.15</td> <td>Unassigned</td> <td>0-3: Unassigned</td> <td>RFC 8736</td> </tr> </tbody> </table> <t>The unassigned types above, as explained in <xreftarget="ext"/>,target="ext" format="default"/>, use the extended type notation of type.subtype. Each extended type only has 4Flag Bitsflag bits available. New extended message types should be assignedconscutively,consecutively, starting with 13.0, then 13.1, etc.</t> </section> </middle> <back><references title="Normative References"> <?rfc include='reference.RFC.2119' ?> <?rfc include='reference.RFC.7761' ?> <?rfc include='reference.RFC.8126'?> <?rfc include='reference.RFC.8174'?><references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7761.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6166.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3973.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6754.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8364.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5059.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5015.xml"/> </references><references title="Informative References"> <?rfc include='reference.RFC.6166'?> <?rfc include='reference.RFC.3973' ?> <?rfc include='reference.RFC.6754' ?> <?rfc include='reference.RFC.8364' ?> <?rfc include='reference.RFC.5059' ?> <?rfc include='reference.RFC.5015' ?></references> </back> </rfc>