<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-pim-reserved-bits-04" indexInclude="true" ipr="trust200902" number="8736" obsoletes="6166" prepTime="2020-02-28T19:10:44" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" updates="3973, 5015, 5059, 6754, 7761, 8364" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-pim-reserved-bits-04" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8736" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="PIM Type Extension and Reserved Bits">PIM Message Type Space Extension and Reserved Bits</title>
    <seriesInfo name="RFC" value="8736" stream="IETF"/>
    <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>
    <date month="02" year="2020"/>
    <area>Routing</area>
    <keyword>Multicast</keyword>
    <abstract pn="section-abstract">
      <t pn="section-abstract-1">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
      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 pn="section-abstract-2">This document updates RFCs 7761 and 3973 by defining the use of
      the currently 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 currently reserved
      bits for each PIM message.</t>
      <t pn="section-abstract-3">This document obsoletes RFC 6166.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t pn="section-boilerplate.1-2">
            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.
        </t>
        <t pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8736" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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 Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-used-in-this-do">Conventions Used in This Document</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pim-header-common-format">PIM Header Common Format</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-flag-bit-definitions">Flag Bit Definitions</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-flag-bits-for-type-4-bootst">Flag Bits for Type 4 (Bootstrap)</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-flag-bits-for-type-10-df-el">Flag Bits for Type 10 (DF Election)</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t keepWithNext="true" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-flag-bits-for-type-12-pfm">Flag Bits for Type 12 (PFM)</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t keepWithNext="true" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-flag-bits-for-types-13-14-a">Flag Bits for Types 13, 14, and 15 (Type Space Extension)</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pim-type-space-extension">PIM Type Space Extension</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t keepWithNext="true" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t keepWithNext="true" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t keepWithNext="true" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t pn="section-1-1">The PIM version 2 messages share a common message header format
      defined in the PIM Sparse Mode specification <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="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 pn="section-1-2">This document refers to the bits specified as "reserved" in the common
      PIM header <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="RFC7761"/> as "PIM message type Flag 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 pn="section-1-3">This document updates <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="RFC7761"/> and
      <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="RFC3973"/> by defining the use of the
      currently Reserved field 
      in the PIM common header. This document further updates <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="RFC7761"/> and <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="RFC3973"/>, along with <xref target="RFC5015" format="default" sectionFormat="of" derivedContent="RFC5015"/>, <xref target="RFC5059" format="default" sectionFormat="of" derivedContent="RFC5059"/>, <xref target="RFC6754" format="default" sectionFormat="of" derivedContent="RFC6754"/>, 
      and <xref target="RFC8364" format="default" sectionFormat="of" derivedContent="RFC8364"/>, by specifying the use of the currently
      reserved bits for each PIM message.</t>
      <t pn="section-1-4">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
      <xref target="RFC6166" format="default" sectionFormat="of" derivedContent="RFC6166"/> for type space extension. In
      <xref target="ext" format="default" sectionFormat="of" derivedContent="Section 5"/>, this document specifies the use
      of the Flag Bits for 
      message types 13, 14, and 15 in order to extend the PIM type space. This
      document obsoletes <xref target="RFC6166" format="default" sectionFormat="of" derivedContent="RFC6166"/>.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in This Document</name>
      <t pn="section-2-1">
    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 in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/>                            
    when, and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-pim-header-common-format">PIM Header Common Format</name>
      <t pn="section-3-1">The common PIM header is defined in <xref target="RFC7761" sectionFormat="of" section="4.9" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7761#section-4.9" derivedContent="RFC7761"/>. This document
      updates the definition of the Reserved 
      field and refers to that field as "PIM message type Flag Bits" or, simply,
      "Flag Bits". The new common header format is as below. </t>
      <figure align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-new-common-header">New Common Header</name>
        <artwork name="" type="" align="left" alt="" pn="section-3-2.1">
    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 pn="section-3-3">The Flag Bits field is defined in <xref target="flagbits" format="default" sectionFormat="of" derivedContent="Section 4"/>. All
      other fields remain unchanged.</t>
    </section>
    <section anchor="flagbits" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-flag-bit-definitions">Flag Bit Definitions</name>
      <t pn="section-4-1">Unless otherwise specified, all the flag bits for each PIM type are
      Reserved <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="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 pn="section-4-2">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" pn="figure-2">
        <name slugifiedName="name-flag-bits">Flag Bits</name>
        <artwork name="" type="" align="left" alt="" pn="section-4-3.1">
    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>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-flag-bits-for-type-4-bootst">Flag Bits for Type 4 (Bootstrap)</name>
        <t pn="section-4.1-1">PIM message type 4 (Bootstrap) <xref target="RFC5059" format="default" sectionFormat="of" derivedContent="RFC5059"/> defines
        flag bit 7 as No-Forward. The usage of the bit is defined in that
        document. The remaining flag bits are reserved.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-flag-bits-for-type-10-df-el">Flag Bits for Type 10 (DF Election)</name>
        <t pn="section-4.2-1">PIM message type 10 (DF Election) <xref target="RFC5015" format="default" sectionFormat="of" derivedContent="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 reserved.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-flag-bits-for-type-12-pfm">Flag Bits for Type 12 (PFM)</name>
        <t pn="section-4.3-1">PIM message type 12 (PIM Flooding Mechanism) <xref target="RFC8364" format="default" sectionFormat="of" derivedContent="RFC8364"/> defines flag bit 
        7 as No-Forward. The usage of the bit is defined in that document. The
        remaining flag bits are reserved.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-flag-bits-for-types-13-14-a">Flag Bits for Types 13, 14, and 15 (Type Space Extension)</name>
        <t pn="section-4.4-1">These types and the corresponding flag bits are defined in <xref target="ext" format="default" sectionFormat="of" derivedContent="Section 5"/>.</t>
      </section>
    </section>
    <section anchor="ext" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-pim-type-space-extension">PIM Type Space Extension</name>
      <t pn="section-5-1">This document defines types 13, 14, 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 new Subtype field
      (see Figure 3) using the four most significant flag bits (bits 4-7). The
      notation type.subtype is used to reference these new extended types. The
      remaining four flag bits (bits 0-3) are reserved to be used by each
      extended type (abbreviated as FB below). </t>
      <figure align="left" suppress-title="false" pn="figure-3">
        <name slugifiedName="name-subtypes">Subtypes</name>
        <artwork name="" type="" align="left" alt="" pn="section-5-2.1">
    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>
      </figure>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t pn="section-6-1">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" format="default" sectionFormat="of" derivedContent="RFC7761"/>
      and <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="RFC3973"/>.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t pn="section-7-1">This document updates the "PIM Message Types" registry to indicate
      which flag bits are defined for use by each of the PIM message types.
      The registry now references this document. The registration policy remains
      IETF Review <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>. Assignments into
      this registry <bcp14>MUST</bcp14> define any 
      non-default usage (see <xref target="flagbits" format="default" sectionFormat="of" derivedContent="Section 4"/>) of
      the flag bits in addition to the type.</t>
      <t pn="section-7-2">The updated "PIM Message Types" registry is shown below.</t>
      <table anchor="PIM-registry" align="center" pn="table-1">
        <name slugifiedName="name-updated-pim-message-types-r">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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="RFC3973"/><xref target="RFC7761" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="RFC3973"/><xref target="RFC7761" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC5059" format="default" sectionFormat="of" derivedContent="RFC5059"/><xref target="RFC7761" format="default" sectionFormat="of" derivedContent="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" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="RFC3973"/><xref target="RFC7761" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC3973" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC5015" format="default" sectionFormat="of" derivedContent="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" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC6754" format="default" sectionFormat="of" derivedContent="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: Reserved</td>
            <td align="left" colspan="1" rowspan="1">
              <xref target="RFC8364" format="default" sectionFormat="of" derivedContent="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" format="default" sectionFormat="of" derivedContent="RFC8364"/></td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">13.0-15.15</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">RFC 8736</td>
          </tr>
        </tbody>
      </table>
      <t pn="section-7-4">The unassigned types above, as explained in <xref target="ext" format="default" sectionFormat="of" derivedContent="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.</t>
    </section>
  </middle>
  <back>
    <references pn="section-8">
      <name slugifiedName="name-references">References</name>
      <references pn="section-8.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC7761" target="https://www.rfc-editor.org/info/rfc7761" quoteTitle="true" derivedAnchor="RFC7761">
          <front>
            <title>Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)</title>
            <author initials="B." surname="Fenner" fullname="B. Fenner">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Holbrook" fullname="H. Holbrook">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I." surname="Kouvelas" fullname="I. Kouvelas">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Parekh" fullname="R. Parekh">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Z." surname="Zhang" fullname="Z. Zhang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Zheng" fullname="L. Zheng">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="March"/>
            <abstract>
              <t>This document specifies Protocol Independent Multicast - Sparse Mode (PIM-SM).  PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information base.  It builds unidirectional shared trees rooted at a Rendezvous Point (RP) per group, and it optionally creates shortest-path trees per source.</t>
              <t>This document obsoletes RFC 4601 by replacing it, addresses the errata filed against it, removes the optional (*,*,RP), PIM Multicast Border Router features and authentication using IPsec that lack sufficient deployment experience (see Appendix A), and moves the PIM specification to Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="83"/>
          <seriesInfo name="RFC" value="7761"/>
          <seriesInfo name="DOI" value="10.17487/RFC7761"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="June"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references pn="section-8.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC3973" target="https://www.rfc-editor.org/info/rfc3973" quoteTitle="true" derivedAnchor="RFC3973">
          <front>
            <title>Protocol Independent Multicast - Dense Mode (PIM-DM): Protocol Specification (Revised)</title>
            <author initials="A." surname="Adams" fullname="A. Adams">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Nicholas" fullname="J. Nicholas">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Siadak" fullname="W. Siadak">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="January"/>
            <abstract>
              <t>This document specifies Protocol Independent Multicast - Dense Mode (PIM-DM).  PIM-DM is a multicast routing protocol that uses the underlying unicast routing information base to flood multicast datagrams to all multicast routers.  Prune messages are used to prevent future messages from propagating to routers without group membership information.  This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3973"/>
          <seriesInfo name="DOI" value="10.17487/RFC3973"/>
        </reference>
        <reference anchor="RFC5015" target="https://www.rfc-editor.org/info/rfc5015" quoteTitle="true" derivedAnchor="RFC5015">
          <front>
            <title>Bidirectional Protocol Independent Multicast (BIDIR-PIM)</title>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I." surname="Kouvelas" fullname="I. Kouvelas">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Speakman" fullname="T. Speakman">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Vicisano" fullname="L. Vicisano">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="October"/>
            <abstract>
              <t>This document discusses Bidirectional PIM (BIDIR-PIM), a variant of PIM Sparse-Mode that builds bidirectional shared trees connecting multicast sources and receivers.  Bidirectional trees are built using a fail-safe Designated Forwarder (DF) election mechanism operating on each link of a multicast topology.  With the assistance of the DF, multicast data is natively forwarded from sources to the Rendezvous-Point (RP) and hence along the shared tree to receivers without requiring source-specific state.  The DF election takes place at RP discovery time and provides the route to the RP, thus eliminating the requirement for data-driven protocol events.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5015"/>
          <seriesInfo name="DOI" value="10.17487/RFC5015"/>
        </reference>
        <reference anchor="RFC5059" target="https://www.rfc-editor.org/info/rfc5059" quoteTitle="true" derivedAnchor="RFC5059">
          <front>
            <title>Bootstrap Router (BSR) Mechanism for Protocol Independent Multicast (PIM)</title>
            <author initials="N." surname="Bhaskar" fullname="N. Bhaskar">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Gall" fullname="A. Gall">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Lingard" fullname="J. Lingard">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Venaas" fullname="S. Venaas">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="January"/>
            <abstract>
              <t>This document specifies the Bootstrap Router (BSR) mechanism for the class of multicast routing protocols in the PIM (Protocol Independent Multicast) family that use the concept of a Rendezvous Point as a means for receivers to discover the sources that send to a particular multicast group.  BSR is one way that a multicast router can learn the set of group-to-RP mappings required in order to function.  The mechanism is dynamic, largely self-configuring, and robust to router failure.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5059"/>
          <seriesInfo name="DOI" value="10.17487/RFC5059"/>
        </reference>
        <reference anchor="RFC6166" target="https://www.rfc-editor.org/info/rfc6166" quoteTitle="true" derivedAnchor="RFC6166">
          <front>
            <title>A Registry for PIM Message Types</title>
            <author initials="S." surname="Venaas" fullname="S. Venaas">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="April"/>
            <abstract>
              <t>This document provides instructions to IANA for the creation of a registry for PIM message types.  It specifies the initial content of the registry, based on existing RFCs specifying PIM message types. It also specifies a procedure for registering new types.</t>
              <t>In addition to this, one message type is reserved, and may be used for a future extension of the message type space.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6166"/>
          <seriesInfo name="DOI" value="10.17487/RFC6166"/>
        </reference>
        <reference anchor="RFC6754" target="https://www.rfc-editor.org/info/rfc6754" quoteTitle="true" derivedAnchor="RFC6754">
          <front>
            <title>Protocol Independent Multicast Equal-Cost Multipath (ECMP) Redirect</title>
            <author initials="Y." surname="Cai" fullname="Y. Cai">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Wei" fullname="L. Wei">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Ou" fullname="H. Ou">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Arya" fullname="V. Arya">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Jethwani" fullname="S. Jethwani">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="October"/>
            <abstract>
              <t>A Protocol Independent Multicast (PIM) router uses the Reverse Path Forwarding (RPF) procedure to select an upstream interface and router in order to build forwarding state.  When there are equal cost multipaths (ECMPs), existing implementations often use hash algorithms to select a path.  Such algorithms do not allow the spread of traffic among the ECMPs according to administrative metrics.  This usually leads to inefficient or ineffective use of network resources. This document introduces the ECMP Redirect, a mechanism to improve the RPF procedure over ECMPs.  It allows ECMP selection to be based on administratively selected metrics, such as data transmission delays, path preferences, and routing metrics.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6754"/>
          <seriesInfo name="DOI" value="10.17487/RFC6754"/>
        </reference>
        <reference anchor="RFC8364" target="https://www.rfc-editor.org/info/rfc8364" quoteTitle="true" derivedAnchor="RFC8364">
          <front>
            <title>PIM Flooding Mechanism (PFM) and Source Discovery (SD)</title>
            <author initials="IJ." surname="Wijnands" fullname="IJ. Wijnands">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Venaas" fullname="S. Venaas">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Brig" fullname="M. Brig">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Jonasson" fullname="A. Jonasson">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="March"/>
            <abstract>
              <t>Protocol Independent Multicast - Sparse Mode (PIM-SM) uses a Rendezvous Point (RP) and shared trees to forward multicast packets from new sources.  Once Last-Hop Routers (LHRs) receive packets from a new source, they may join the Shortest Path Tree (SPT) for the source for optimal forwarding.  This document defines a new mechanism that provides a way to support PIM-SM without the need for PIM registers, RPs, or shared trees.  Multicast source information is flooded throughout the multicast domain using a new generic PIM Flooding Mechanism (PFM).  This allows LHRs to learn about new sources without receiving initial data packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8364"/>
          <seriesInfo name="DOI" value="10.17487/RFC8364"/>
        </reference>
      </references>
    </references>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <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>
    </section>
  </back>
</rfc>
