<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" submissionType="IETF" category="std" consensus="true" ipr="trust200902" docName="draft-ietf-pim-null-register-packing-16" number="9465" tocInclude="true" sortRefs="true" symRefs="true" updates="" obsoletes="" xml:lang="en" prepTime="2023-09-29T12:25:04" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-pim-null-register-packing-16" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9465" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="PIM Null-Register Packing">PIM Null-Register Packing</title>
    <seriesInfo name="RFC" value="9465" stream="IETF"/>
    <author initials="V." surname="Kamath" fullname="Vikas Ramesh Kamath">
      <organization showOnFrontPage="true">VMware</organization>
      <address>
        <postal>
          <street>3401 Hillview Ave</street>
          <city>Palo Alto</city>
          <region>CA</region>
          <code>94304</code>
          <country>United States of America</country>
        </postal>
        <email>vkamath@vmware.com</email>
      </address>
    </author>
    <author initials="R." surname="Chokkanathapuram Sundaram" fullname="Ramakrishnan Chokkanathapuram Sundaram">
      <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>ramaksun@cisco.com</email>
      </address>
    </author>
    <author initials="R." surname="Banthia" fullname="Raunak Banthia">
      <organization showOnFrontPage="true">Apstra</organization>
      <address>
        <postal>
          <extaddr>Suite 200</extaddr>
          <street>333 Middlefield Rd</street>
          <city>Menlo Park</city>
          <region>CA</region>
          <code>94025</code>
          <country>United States of America</country>
        </postal>
        <email>rbanthia@apstra.com</email>
      </address>
    </author>
    <author initials="A." surname="Gopal" fullname="Ananya Gopal">
      <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>ananygop@cisco.com</email>
      </address>
    </author>
    <date month="09" year="2023"/>
    <area>rtg</area>
    <workgroup>pim</workgroup>
    <keyword>Multicast</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">In PIM Sparse Mode (PIM-SM) networks, PIM Null-Register messages are sent by the Designated Router (DR) to the Rendezvous Point (RP) to signal the presence of multicast sources in the network. There are periodic PIM Null-Registers sent from the DR to the RP to keep the state alive at the RP as long as the source is active. The PIM Null-Register message carries information about a single multicast source and group.</t>
      <t indent="0" pn="section-abstract-2">This document defines a standard to send information about multiple multicast sources and groups in a single PIM message. This document refers to the new messages as the "PIM Packed Null-Register message" and "PIM Packed Register-Stop message".</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 indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" 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 indent="0" 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/rfc9465" 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 indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2023 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" 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 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.
        </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 indent="0" 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>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <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.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" 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-packing-capability">Packing Capability</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" 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-packed-null-register-me">PIM Packed Null-Register Message Format</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" 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-pim-packed-register-stop-me">PIM Packed Register-Stop Message Format</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" 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-protocol-operation">Protocol Operation</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" 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-operational-considerations">Operational Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pim-anycast-rp-consideratio">PIM Anycast RP Considerations</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-interoperability-between-di">Interoperability between Different Versions</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-disabling-pim-packed-messag">Disabling PIM Packed Message Support at RP and/or DR</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" 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-fragmentation-consideration">Fragmentation Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" 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-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="sec1" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The DR periodically sends PIM Null-Registers to keep the state of existing multicast sources active on the RP. As the number of multicast sources increases, the number of PIM Null-Register messages that are sent also increases. This results in more PIM packet processing at the RP and the DR.</t>
      <t indent="0" pn="section-1-2">
   This document specifies a method to efficiently pack the content
   of multiple PIM Null-Register and Register-Stop messages <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="RFC7761"/>
   into a single message.
                
      </t>
      <t indent="0" pn="section-1-3">The document also discusses interoperability between PIM routers that support PIM Packed Null-Registers and PIM Packed Register-Stops and PIM routers that do not.</t>
      <section anchor="sec1.1" numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in This Document</name>
        <t indent="0" pn="section-1.1-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 anchor="sec1.2" numbered="true" removeInRFC="false" toc="include" pn="section-1.2">
        <name slugifiedName="name-terminology">Terminology</name>
        <dl newline="false" spacing="normal" indent="3" pn="section-1.2-1">
          <dt pn="section-1.2-1.1">RP:</dt>
          <dd pn="section-1.2-1.2">Rendezvous Point</dd>
          <dt pn="section-1.2-1.3">DR:</dt>
          <dd pn="section-1.2-1.4">Designated Router</dd>
          <dt pn="section-1.2-1.5">MSDP:</dt>
          <dd pn="section-1.2-1.6">Multicast Source Discovery Protocol</dd>
          <dt pn="section-1.2-1.7">PIM-SM:</dt>
          <dd pn="section-1.2-1.8">PIM Sparse Mode</dd>
        </dl>
      </section>
    </section>
    <section anchor="sec2" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-packing-capability">Packing Capability</name>
      <t indent="0" pn="section-2-1">
The RP indicates its ability to receive PIM Packed Null-Register messages (<xref target="sec3" format="default" sectionFormat="of" derivedContent="Section 3"/>) and send PIM Packed Register-Stop messages (<xref target="sec4" format="default" sectionFormat="of" derivedContent="Section 4"/>) with a Packing Capability bit (P-bit) in the PIM Register-Stop message. The P-bit is allocated in <xref target="sec9" format="default" sectionFormat="of" derivedContent="Section 9"/>.
      </t>
      <figure align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-pim-register-stop-message-w">PIM Register-Stop Message with Packing Capability Option</name>
        <artwork align="left" pn="section-2-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  |7 6 5 4 3 2 1|P|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Group Address (Encoded-Group format)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Source Address (Encoded-Unicast format)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
      </figure>
      <t indent="0" pn="section-2-3"> The Group Address and Source Address fields in the PIM Register-Stop message are defined in <xref target="RFC7761" sectionFormat="of" section="4.9.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7761#section-4.9.4" derivedContent="RFC7761"/>. The common header is defined in <xref target="RFC9436" format="default" sectionFormat="of" derivedContent="RFC9436"/>. </t>
      <dl newline="false" spacing="normal" indent="3" pn="section-2-4">
        <dt pn="section-2-4.1">Packing Capability bit (P-bit; flag bit 0):</dt>
        <dd pn="section-2-4.2">When set, it indicates the ability of the RP to receive PIM
	  Packed Null-Register messages and send PIM Packed Register-Stop
	  messages.</dd>
      </dl>
    </section>
    <section anchor="sec3" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-pim-packed-null-register-me">PIM Packed Null-Register Message Format</name>
      <figure align="left" suppress-title="false" pn="figure-2">
        <name slugifiedName="name-pim-packed-null-register-mes">PIM Packed Null-Register Message Format</name>
        <artwork align="left" pn="section-3-1.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            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Group Address[1]   (Encoded-Group format)                 |
|     Source Address[1]  (Encoded-Unicast format)               |
.                                                               .
.                                                               .
.                                                               .
.                                                               .
.     Group Address[N]                                          .
|     Source Address[N]                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
      </figure>
      <t indent="0" pn="section-3-2"> The Group Address and Source Address fields in the PIM Packed Null-Register message are defined in
      <xref target="RFC7761" sectionFormat="of" section="4.9.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7761#section-4.9.4" derivedContent="RFC7761"/>. The
      common header is defined in <xref target="RFC9436" format="default" sectionFormat="of" derivedContent="RFC9436"/>.</t>
      <dl spacing="normal" newline="false" indent="4" pn="section-3-3">
        <dt pn="section-3-3.1">Type, Subtype:</dt>
        <dd pn="section-3-3.2">PIM Packed Null-Register (13.0).</dd>
        <dt pn="section-3-3.3">N:</dt>
        <dd pn="section-3-3.4">The total number of records; a record consists of a Group
     Address and Source Address pair.</dd>
      </dl>
      <t indent="0" pn="section-3-4"> After parsing the PIM common header, individual records are then
      parsed one by one until the end of the PIM Packed Null-Register
      message. This length is inferred from the IP layer.
      </t>
      <t indent="0" pn="section-3-5"> Sending or receiving a PIM Packed Null-Register message has the equivalent effect of sending or receiving an individual Null-Register message for each record
   represented in the PIM Packed Null-Register message.</t>
    </section>
    <section anchor="sec4" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-pim-packed-register-stop-me">PIM Packed Register-Stop Message Format</name>
      <figure align="left" suppress-title="false" pn="figure-3">
        <name slugifiedName="name-pim-packed-register-stop-mes">PIM Packed Register-Stop Message Format</name>
        <artwork align="left" pn="section-4-1.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            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Group Address[1]  (Encoded-Group format)                  |
|     Source Address[1]  (Encoded-Unicast format)               |
.                                                               .
.                                                               .
.                                                               .
.                                                               .
.     Group Address[N]                                          .
|     Source Address[N]                                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
      </figure>
      <t indent="0" pn="section-4-2">The Group Address and Source Address fields in the PIM Packed
      Register-Stop message are defined in <xref target="RFC7761" sectionFormat="of" section="4.9.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7761#section-4.9.4" derivedContent="RFC7761"/>. The common header is defined in <xref target="RFC9436" format="default" sectionFormat="of" derivedContent="RFC9436"/>.</t>
      <dl newline="false" spacing="normal" indent="4" pn="section-4-3">
        <dt pn="section-4-3.1">Type, Subtype:</dt>
        <dd pn="section-4-3.2">PIM Packed Register-Stop (13.1).</dd>
        <dt pn="section-4-3.3">N:</dt>
        <dd pn="section-4-3.4">The total number of records; a record consists of a Group Address
	and Source Address pair.</dd>
      </dl>
      <t indent="0" pn="section-4-4"> After parsing the PIM common header, individual records are then
      parsed one by one until the end of the PIM Packed Register-Stop
      message. This length is inferred from the IP layer.  </t>
      <t indent="0" pn="section-4-5"> Sending or receiving a PIM Packed Register-Stop message has the equivalent effect of sending or receiving an individual Null-Register message for each record
   represented in the PIM Packed Register-Stop.</t>
    </section>
    <section anchor="sec5" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-protocol-operation">Protocol Operation</name>
      <t indent="0" pn="section-5-1">As specified in <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="RFC7761"/>, the DR sends PIM Register messages towards the RP when a new source is detected. </t>
      <t indent="0" pn="section-5-2">When this feature is enabled/configured, an RP supporting this specification <bcp14>MUST</bcp14> set the P-bit (flag bit 0) in all Register-Stop messages. </t>
      <t indent="0" pn="section-5-3">When a Register-Stop message with the P-bit set is received, the DR
      <bcp14>SHOULD</bcp14> send PIM Packed Null-Register messages (<xref target="sec3" format="default" sectionFormat="of" derivedContent="Section 3"/>) to the RP instead of multiple Register messages with
      the N-bit set <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="RFC7761"/>.  The DR <bcp14>MAY</bcp14> use a
      mixture of PIM Packed Null-Register messages and Register messages. The
      decision is up to the implementation and out of the scope of this
      document. However, it is <bcp14>RECOMMENDED</bcp14> to stick to the PIM
      Packed Null-Register and PIM Packed Register-Stop formats as long as the
      RP and DR have the feature enabled.  </t>
      <t indent="0" pn="section-5-4">After receiving a PIM Packed Null-Register message, the RP
      <bcp14>SHOULD</bcp14> start sending PIM Packed Register-Stop messages
      (<xref target="sec4" format="default" sectionFormat="of" derivedContent="Section 4"/>) to the corresponding DR instead of individual
      Register-Stop messages.  The RP <bcp14>MAY</bcp14> use a mixture of PIM
      Packed Register-Stop messages and individual Register-Stop messages. The
      decision is up to the implementation and out of the scope of this
      document. However, it is <bcp14>RECOMMENDED</bcp14> to stick to the PIM
      Packed Null-Register and PIM Packed Register-Stop formats as long as the
      RP and DR have the feature enabled. </t>
    </section>
    <section anchor="sec6" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <section anchor="sec6.1" numbered="true" removeInRFC="false" toc="include" pn="section-6.1">
        <name slugifiedName="name-pim-anycast-rp-consideratio">PIM Anycast RP Considerations</name>
        <t indent="0" pn="section-6.1-1">The PIM Packed Null-Register packet format should be enabled only
        if it is supported by all the routers in the Anycast-RP set <xref target="RFC4610" format="default" sectionFormat="of" derivedContent="RFC4610"/>. This consideration applies to PIM Anycast RP with
        Multicast Source Discovery Protocol (MSDP) <xref target="RFC3446" format="default" sectionFormat="of" derivedContent="RFC3446"/> as
        well.
        </t>
      </section>
      <section anchor="sec6.2" numbered="true" removeInRFC="false" toc="include" pn="section-6.2">
        <name slugifiedName="name-interoperability-between-di">Interoperability between Different Versions</name>
        <t indent="0" pn="section-6.2-1"> A router (DR) can decide to use the PIM Packed Null-Register
        message format based on the Packing Capability received from the RP as
        part of the PIM Register-Stop. This ensures compatibility with routers
        that do not support processing of the new packet format. The Packing
        Capability information <bcp14>MUST</bcp14> be indicated by the RP via
        the PIM Register-Stop message sent to the DR. Thus, a DR will switch
        to the new packet format only when it learns that the RP is capable of
        handling the PIM Packed Null-Register messages.
        </t>
        <t indent="0" pn="section-6.2-2">Conversely, a DR that does not support the packed format can
        continue generating the PIM Null-Register as defined in <xref target="RFC7761" sectionFormat="of" section="4.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7761#section-4.4" derivedContent="RFC7761"/>.
        </t>
      </section>
      <section anchor="sec6.3" numbered="true" removeInRFC="false" toc="include" pn="section-6.3">
        <name slugifiedName="name-disabling-pim-packed-messag">Disabling PIM Packed Message Support at RP and/or DR</name>
        <t indent="0" pn="section-6.3-1"> Consider a PIM RP router that supports PIM Packed Null-Registers and PIM Packed Register-Stops. In scenarios where this router no longer supports this feature, for example, in case of a software downgrade, it will not send a PIM Register-Stop message to the DR in response to a PIM Packed Null-Register message.
        </t>
        <t indent="0" pn="section-6.3-2"> When the DR switches to Data Registers from Null-Registers, it <bcp14>MUST</bcp14> start a Packed_Register_Probe_Time timer. If no PIM Packed Register-Stop or Register-Stop with the P-bit set is received within Packed_Register_Probe_Time seconds, the DR can decide that the RP no longer supports PIM Packed Null-Registers. The Packed_Register_Probe_Time timer is configurable; its default value is 60 seconds.
 
        </t>
        <t indent="0" pn="section-6.3-3"> When Packed_Register_Probe_Time expires, the DR <bcp14>MAY</bcp14> also send an unpacked PIM Null-Register and check the PIM Register-Stop to see if the P-bit is set or not. If it is not set, then the DR will continue sending unpacked PIM Null-Register messages.</t>
        <t indent="0" pn="section-6.3-4">In case the network manager disables the Packing Capability at the RP (or in other words, disables the feature from the RP), the router <bcp14>MUST NOT</bcp14> advertise the Packing Capability. However, an implementation <bcp14>MAY</bcp14> choose to still parse any packed registers if they are received. This may be particularly useful in the transitional period after the network manager disables it.</t>
      </section>
    </section>
    <section anchor="sec7" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-fragmentation-consideration">Fragmentation Considerations</name>
      <t indent="0" pn="section-7-1"> As explained in <xref target="RFC7761" sectionFormat="of" section="4.4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7761#section-4.4.1" derivedContent="RFC7761"/>, the DR may perform Path MTU Discovery to the RP
      before sending PIM Packed Null-Register messages.  Similarly, the RP may
      perform Path MTU Discovery to the DR before sending PIM Packed
      Register-Stop messages.  In both cases, the number of records in a
      message should be limited such that it can fit within the Path MTU.
      </t>
    </section>
    <section anchor="sec8" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-8-1"> The Security Considerations in <xref target="RFC7761" format="default" sectionFormat="of" derivedContent="RFC7761"/> apply to
      this document.  In particular, the effect of forging a PIM Packed
      Null-Register or Register-Stop message would be amplified to all the
      records included instead of just one.</t>
      <t indent="0" pn="section-8-2"> By forging a PIM Register-Stop message and setting the P-bit, an
      attacker can trigger the use of PIM Packed Null-Register messages by a
      DR, thus creating unnecessary churn in the network.</t>
    </section>
    <section anchor="sec9" numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-9-1"> IANA has assigned a Packing
      Capability bit (0) in the PIM Register-Stop common header in the
      "PIM Message Types" registry.</t>
      <t indent="0" pn="section-9-2"> IANA has assigned a PIM
      message type (13.0) for PIM Packed Null-Register in the "PIM
      Message Types" registry. Flag bits 0-3 for this message type
      are "Unassigned".</t>
      <t indent="0" pn="section-9-3"> IANA has assigned a PIM
      message type (13.1) for PIM Packed Register-Stop in the "PIM
      Message Types" registry. The flag bits 0-3 for this message type
      are "Unassigned". </t>
    </section>
  </middle>
  <back>
    <references anchor="norm-ref" pn="section-10">
      <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 fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t indent="0">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="RFC3446" target="https://www.rfc-editor.org/info/rfc3446" quoteTitle="true" derivedAnchor="RFC3446">
        <front>
          <title>Anycast Rendevous Point (RP) mechanism using Protocol Independent Multicast (PIM) and Multicast Source Discovery Protocol (MSDP)</title>
          <author fullname="D. Kim" initials="D." surname="Kim"/>
          <author fullname="D. Meyer" initials="D." surname="Meyer"/>
          <author fullname="H. Kilmer" initials="H." surname="Kilmer"/>
          <author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
          <date month="January" year="2003"/>
          <abstract>
            <t indent="0">This document describes a mechanism to allow for an arbitrary number of Rendevous Points (RPs) per group in a single shared-tree Protocol Independent Multicast-Sparse Mode (PIM-SM) domain. This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3446"/>
        <seriesInfo name="DOI" value="10.17487/RFC3446"/>
      </reference>
      <reference anchor="RFC4610" target="https://www.rfc-editor.org/info/rfc4610" quoteTitle="true" derivedAnchor="RFC4610">
        <front>
          <title>Anycast-RP Using Protocol Independent Multicast (PIM)</title>
          <author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
          <author fullname="Y. Cai" initials="Y." surname="Cai"/>
          <date month="August" year="2006"/>
          <abstract>
            <t indent="0">This specification allows Anycast-RP (Rendezvous Point) to be used inside a domain that runs Protocol Independent Multicast (PIM) only. Other multicast protocols (such as Multicast Source Discovery Protocol (MSDP), which has been used traditionally to solve this problem) are not required to support Anycast-RP. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4610"/>
        <seriesInfo name="DOI" value="10.17487/RFC4610"/>
      </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 fullname="B. Fenner" initials="B." surname="Fenner"/>
          <author fullname="M. Handley" initials="M." surname="Handley"/>
          <author fullname="H. Holbrook" initials="H." surname="Holbrook"/>
          <author fullname="I. Kouvelas" initials="I." surname="Kouvelas"/>
          <author fullname="R. Parekh" initials="R." surname="Parekh"/>
          <author fullname="Z. Zhang" initials="Z." surname="Zhang"/>
          <author fullname="L. Zheng" initials="L." surname="Zheng"/>
          <date month="March" year="2016"/>
          <abstract>
            <t indent="0">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 indent="0">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="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 fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t indent="0">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>
      <reference anchor="RFC9436" target="https://www.rfc-editor.org/info/rfc9436" quoteTitle="true" derivedAnchor="RFC9436">
        <front>
          <title>PIM Message Type Space Extension and Reserved Bits</title>
          <author fullname="S. Venaas" initials="S." surname="Venaas"/>
          <author fullname="A. Retana" initials="A." surname="Retana"/>
          <date month="August" year="2023"/>
          <abstract>
            <t indent="0">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 indent="0">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.</t>
            <t indent="0">This document obsoletes RFC 8736.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9436"/>
        <seriesInfo name="DOI" value="10.17487/RFC9436"/>
      </reference>
    </references>
    <section anchor="ack" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.a-1">The authors would like to thank <contact fullname="Stig Venaas"/>,
      <contact fullname="Alvaro Retana"/>, <contact fullname="Anish Peter"/>,
      <contact fullname="Zheng Zhang"/>, and <contact fullname="Umesh Dudani"/>
      for their helpful comments on the document.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="V." surname="Kamath" fullname="Vikas Ramesh Kamath">
        <organization showOnFrontPage="true">VMware</organization>
        <address>
          <postal>
            <street>3401 Hillview Ave</street>
            <city>Palo Alto</city>
            <region>CA</region>
            <code>94304</code>
            <country>United States of America</country>
          </postal>
          <email>vkamath@vmware.com</email>
        </address>
      </author>
      <author initials="R." surname="Chokkanathapuram Sundaram" fullname="Ramakrishnan Chokkanathapuram Sundaram">
        <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>ramaksun@cisco.com</email>
        </address>
      </author>
      <author initials="R." surname="Banthia" fullname="Raunak Banthia">
        <organization showOnFrontPage="true">Apstra</organization>
        <address>
          <postal>
            <extaddr>Suite 200</extaddr>
            <street>333 Middlefield Rd</street>
            <city>Menlo Park</city>
            <region>CA</region>
            <code>94025</code>
            <country>United States of America</country>
          </postal>
          <email>rbanthia@apstra.com</email>
        </address>
      </author>
      <author initials="A." surname="Gopal" fullname="Ananya Gopal">
        <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>ananygop@cisco.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
