<?xml version="1.0" encoding="UTF-8"?>
<rfc category="std" ipr="trust200902" docName="draft-ietf-pim-null-register-packing-14">
	<?rfc toc="yes"?>
	<?rfc compact="yes"?>
	<?rfc subcompact="no"?>
	<?rfc symrefs="yes"?>
	<front>
		<title abbrev="PIM Null-Register packing">PIM Null-Register packing</title>
		<author initials="V." surname="Kamath" fullname="Vikas Ramesh Kamath">
			<organization>VMware</organization>
			<address>
				<postal>
					<street>3401 Hillview Ave</street>
					<city>Palo Alto</city>
					<code>CA 94304</code>
					<country>USA</country>
				</postal>
				<email>vkamath@vmware.com</email>
			</address>
		</author>
		<author initials="R." surname="Chokkanathapuram Sundaram" fullname="Ramakrishnan Chokkanathapuram Sundaram">
			<organization>Cisco Systems, Inc.</organization>
			<address>
				<postal>
					<street>Tasman Drive</street>
					<city>San Jose</city>
					<code>CA 95134</code>
					<country>USA</country>
				</postal>
				<email>ramaksun@cisco.com</email>
			</address>
		</author>
		<author initials="R." surname="Banthia" fullname="Raunak Banthia">
			<organization>Apstra</organization>
			<address>
				<postal>
					<street>333 Middlefield Rd STE 200</street>
					<city>Menlo Park</city>
					<code>CA 94025</code>
					<country>USA</country>
				</postal>
				<email>rbanthia@apstra.com</email>
			</address>
		</author>
		<author initials="A." surname="Gopal" fullname="Ananya Gopal">
			<organization>Cisco Systems, Inc.</organization>
			<address>
				<postal>
					<street>Tasman Drive</street>
					<city>San Jose</city>
					<code>CA 95134</code>
					<country>USA</country>
				</postal>
				<email>ananygop@cisco.com</email>
			</address>
		</author>
		<date />
		<area>Routing</area>
		<keyword>Multicast</keyword>
		<abstract>
			<t>In 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>This document defines a standard to send multiple Multicast source and group information 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>
	</front>
	<middle>
		<section title="Introduction">
			<t>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> This draft proposes a method to efficiently pack multiple PIM Null-Registers and Register-Stops <xref target="RFC7761" /> into a single message as these packets do not contain encapsulated data.
			</t>
			<t>The draft 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 title="Conventions used in this document">
				<t>
      The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
      "MAY", and "OPTIONAL" in this document are to be interpreted as
      described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
      appear in all capitals, as shown here.
				</t>
			</section>
			<section title="Terminology">
				<t>
					<list style="hanging">
						<t hangText="RP:">Rendezvous Point</t>
						<t hangText="DR:">Designated Router</t>
					</list>
				</t>
			</section>
		</section>
<section title="Packed Null-Register Packing Capability">
    <t>
            This section allocates a bit in the PIM Register-Stop message Flag Bits field for the RP to indicate its ability to receive PIM Packed Null-Register messages (Section 3), and send PIM Packed Register-Stop messages (Section 4). 
    </t>
            
    <figure>
    <artwork>
 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  |P|6 5 4 3 2 1 0|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Group Address (Encoded-Group format)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Source Address (Encoded-Unicast format)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    Figure 1: PIM Register-Stop message with Packing Capability option
</artwork>
      </figure>
<t> The fields in the PIM Register-Stop message are defined in Section 4.9.4 of <xref target="RFC7761" />, and the common header in <xref target="RFC8736" />. </t>
<t> Packing Capability bit (Flag Bit TBD1): When set, it indicates the ability of the RP to receive PIM Packed Null-Register messages, and send PIM Packed Register-Stop messages. </t>
</section>
        
        
 
		<section title="PIM Packed Null-Register message format">
			<figure>
				<artwork>
   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]                                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           Figure 2: PIM Packed Null-Register message format                
                </artwork>
			</figure>

					<t> The fields in the PIM Packed Null-Register message are defined in Section 
   4.9.4 of [RFC7761], and the common header in [RFC8736]</t>
					<t> Type, Subtype: The PIM Packed Null-Register Type value TBD2. <xref target="RFC8736" /> </t>
					
			
		</section>
		<section title="PIM Packed Register-Stop message format">
			<figure>
				<artwork>
   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]                                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           Figure 3: PIM Packed Register-Stop message format                
                
                </artwork>
			</figure>
<t>The fields in the PIM Packed Register-Stop message are defined in Section 4.9.4 of [RFC7761], and the common header in [RFC8736] </t>
					<t>Type, Subtype: The PIM Packed Register-Stop Type TBD3</t>
		</section>
	
		<section title="Protocol operation">
			<t>
					
						<list style="symbols">
							<t>As specified in <xref target="RFC7761"/>, the DR sends PIM Register messages towards the RP when a new source is detected. </t>
							<t>When this feature is enabled/configured, an RP supporting this specification MUST set the P-bit (Flag bit TBD1) in all Register-Stop messages. </t>
							<t>
								When a Register-Stop message with the P-bit set is received, the DR MAY send PIM Packed Null-Register messages (Section 3) to the RP instead of multiple Register messages with the N-bit set <xref target="RFC7761"/>.
                                The DR may 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 RECOMMENDED to stick to the packed format as long as the RP and DR have the feature enabled.

							</t>
							<t> The RP, after receiving a PIM Packed Null-Register message, MAY start sending PIM Packed Register-Stop messages (Section 4) to the corresponding DR instead of individual Register-Stop messages.
                            The RP may 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 RECOMMENDED to stick to the packed format as long as the RP and DR have the feature enabled. </t> 
						</list>
				
	
    
            </t>
		</section>
		<section title="Operational Considerations">
        
            <section title="PIM Anycast RP Considerations">
             
            	<t>
				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" />. This consideration applies to PIM Anycast RP with MSDP <xref target="RFC3446" /> as well.
                 </t>
             </section>
        
            <section title="Interoperability between different versions" >
       			<t>A router (DR) can decide to pack multiple Null-Register messages 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 can 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>
				Conversely, a DR that does not support the packed format can continue generating the PIM Null-Register as defined in 
				<xref target="RFC7761" /> (Section 4.4). 
			</t>     
            
                </section>
            <section title="PIM RP router version downgrade " >
              
                <t> Consider a PIM RP router that supports PIM Packed Null-Registers and PIM Packed Register-Stops. When this router downgrades to a software version which does not support PIM Packed Null-Registers and PIM Packed Register-Stops, the DR that sends the PIM Packed Null-Register message will not get a PIM Register-Stop message back from the RP. 
                </t> 
                
                <t> When the DR switches to Data Registers from Null-Registers, it MUST 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> When Packed_Register_Probe_Time expires, The DR MAY 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>In case the network manager disables the Packing Capability at the RP, or in other words, disables the feature from the RP, the router SHOULD NOT advertise the Packing Capability. However, an implementation MAY 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 title="Fragmentation Considerations">
            <t>
           
            
For IPv6 PIM Packed Null-Register messages or PIM Packed Register-Stop messages, the DR MUST perform Path MTU Discovery. For IPv4, the DR SHOULD perform Path MTU Discovery. This allows the DR to fragment packets as needed. However, in order to avoid fragmentation altogether, a DR sending packed registers SHOULD limit the number of records such that the message can fit within the Path MTU. A record consists of a Group Address and Source Address pair.
                
                 </t>
            
		</section>
		<section title="Security Considerations">
			<t>   The Security Considerations from [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 and 
   not a single source/group pair. 
</t>
			<t> 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 title="IANA Considerations">
			<t>
                
				<list>
					<t> When this document is published, IANA is asked to assign a Packing Capability bit  (TBD1) in the PIM Register-Stop Common Header from the PIM Message Types registry.</t>
					<t>When this document is published, IANA is asked to assign a PIM message type (TBD2) for the PIM Packed Null-Register from the PIM Message Types registry.</t>
					<t>When this document is published, IANA is asked to assign a PIM message type (TBD3) for the PIM Packed Register-Stop from the PIM Message Types registry.</t>
				</list>
			</t>
		</section>
		<section title="Acknowledgments">
			<t>The authors would like to thank Stig Venaas, Alvaro Retana, Anish Peter, Zheng Zhang and Umesh Dudani for their helpful comments on the draft.</t>
		</section>
	</middle>
	<back>
		<references title="Normative References">
			<?rfc include='reference.RFC.2119' ?>
            <?rfc include='reference.RFC.8174' ?>
			<?rfc include='reference.RFC.7761' ?>
			<?rfc include='reference.RFC.4610' ?>
			<?rfc include='reference.RFC.8736' ?>
            <?rfc include='reference.RFC.3446' ?>
		</references>
	</back>
</rfc>