<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<rfc category="std" ipr="trust200902" docName="draft-ietf-pim-null-register-packing-02">

<?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>
    <date/>
    <area>Routing</area>
    <keyword>Multicast</keyword>

    <abstract>
	<t>
    In PIM-SM networks PIM registers are sent from the first hop router to 
    the RP (Rendezvous Point) to signal the presence of Multicast source in
    the network. There are periodic PIM Null registers sent from first hop router 
    to the RP to keep the state alive at the RP as long as the source is active. 
    The PIM Null register packet carries information about a single Multicast 
    source and group. 
    This document defines a standard to send multiple Multicast source and group 
    information in a single pim Null register packet and the interoperability between
    the PIM routers which do not understand the packet format with 
    multiple Multicast source and group details.

	</t>
    </abstract>

</front>
<middle>
    <section title="Introduction">
      <t>
      PIM Null registers are sent by First hop routers periodically for Multicast 
      streams to keep the states active on the RP as long as the Multicast source is
      alive. As the number of multicast sources increases, the number of PIM Null register
      packets that are sent increases at a given time. This results in more PIM
      packet processing at RP and FHR. The control plane policing (COPP), monitors the 
      packets that gets processed by the control plane. Due to the high rate at which Null 
      registers are received at the RP, this can lead to COPP drops of Multicast PIM Null 
      register packets.
      This draft proposes a method to efficiently pack multiple PIM Null registers and register
      stop into a single message as these packets anyway don't contain data.
      The draft also proposes interoperability with the routers that do not understand the new 
      packet format.
      </t>
      <section title="Conventions Used in This Document">
        <t>
        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
        NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described
        in RFC 2119 <xref target='RFC2119'/>.
        </t>
      </section>
          <section title="Terminology">
      <t>
  <list style='hanging'>
    <t hangText='RP:'>
      Rendezvous Point
    </t>
    <t hangText='RPF:'>
      Reverse Path Forwarding
    </t>
    <t hangText='SPT:'>
      Shortest Path Tree
    </t>
    <t hangText='FHR:'>
      First Hop Router, directly connected to the source
    </t>
    <t hangText='LHR:'>
      Last Hop Router, directly connected to the receiver
    </t>
  </list>
      </t>
    </section>
    </section>

  <section title="PIM Register Stop format with capability option">
    <t>
      A router (FHR) can decide to pack multiple Null registers based on the capability received from the RP as part of Register Stop. This ensures compatibility with routers that don't support processing of the new format.
      The capability information can be indicated by the RP via the PIM register stop message sent to the FHR.
      Thus a FHR will switch to the new format only when it learns RP is capable of handling the packed Null register messages. 
      Conversely, a FHR that doesn't support the new format can continue generating the PIM Null register the current way.
      To exchange the capability information in the Register Stop message, the "reserved" field can be used to indicate this capability in those register stop messages. One bit of the reserved field is used to indicate the "packing" capability (P bit). The rest of the bits in the "Reserved" field will be retained for future use.

     <figure>
    <artwork>Figure 1: PIM Register Stop message with capability option

 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|  Reserved   |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Group Address (Encoded-Group format)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Source Address (Encoded-Unicast format)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

PIM Version, Reserved, Type, Checksum, Group Address, Source Address
    Same as RFC 7761 (Section 4.9.4)

P   Capability bit used to indicate support for Packed Null Register


</artwork>
     </figure>
    </t>
  </section>

  <section title="New PIM Null register message">
    <t>

     New PIM Null register message format includes a count  to indicate the
     number of Null register records in the message.
     
       <figure>

    <artwork>Figure 2: New PIM Null Register message format
    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| Rsvd  |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   count       |              Reserved2                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Group Address[1]  (Encoded-Group format)                  |
   |     Source Address[1]  (Encoded-Unicast format)               |                                       
   .                                                               .
   .                                                               .
   .                                                               .
   .                                                               .
   .     Group Address[N]                                          .          
   |     Source Address[N]                                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

   PIM Version, Reserved, Checksum
       Same as RFC 7761 (Section 4.9.3)

   Type, SubType
       The new packed Null Register Type and SubType values TBD
       
   count
       The count of the number of packed Null register records. 
       A record consists of Group and Source Address

   Group Address
       IP address of the Multicast Group

   Source Address
       IP Address of the Multicast Source
</artwork>
       </figure>
    </t>
   
  </section>
 
   <section title="New PIM Register Stop message format">
    <t>

      The new PIM register stop is message includes a count to indicate the number of 
      records that are present in the message.
   <figure>

    <artwork>Figure 3: New PIM Register Stop message format
    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| Rsvd  |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     count     |          Reserved2                            | 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Group Address[1]  (Encoded-Group format)                  |
   |     Source Address[1]  (Encoded-Unicast format)               |                                       
   .                                                               .
   .                                                               .
   .                                                               .
   .                                                               .
   .     Group Address[N]                                          .          
   |     Source Address[N]                                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
   PIM Version, Reserved, Checksum
       Same as RFC 7761 (Section 4.9.3)

   Type 
       The new Register Stop Type and SubType values TBD

   Record count
       The count of the number of packed register stop records. 
       A record consists of Group and Source Address

   Group Address
       IP address of the Multicast Group

   Source Address
       IP Address of the Multicast Source

</artwork>
       </figure>
    </t>
  </section>
  <section title="Protocol operation">
    <figure>
    <artwork>   The following combinations exist -
   FHR and RP both support the new PIM Register formats -
     a. FHR sends the PIM register towards the RP when a new source is
        detected
     b. RP sends a modified register stop towards the FHR that includes
        capability 
        information by setting the P bit (Figure 2)
     c. Based on the receipt of new Register Stop, FHR will 
        start packing of Null registers using the new packed register
        format (Figure 1)
     d. RP processes the new Null register message and can generate new 
        register Stop messages by packing multiple S,Gs towards the same
        FHR (Figure 3)

   FHR supports but RP doesn't support new PIM Register formats-
     a. FHR sends the PIM register towards the RP
     b. RP sends a normal register stop without any capability 
        information
     c. FHR then sends Null registers in the old format

   RP supports but FHR doesn't support the new PIM Register formats-
     a. FHR sends the PIM register towards the RP 
     b. RP sends a modified register stop towards the FHR that includes 
        capability information 
     c. Since FHR doesn't support the new format, it sends Null 
        registers in the old format
    </artwork>
    </figure>

  </section>

 <section title="PIM Anycast RP considerations">
    <t>   The new PIM register format should be enabled only if its supported by all PIM anycast
      RP members in the RP set for the RP address. 
    </t>

  </section>

  <section title="IANA Considerations">
    <t>
        This document requires the assignment of 2 new PIM message types for the
        packed pim register and pim register stop.      
     </t>
  </section>
  <section title="Acknowledgments">
    <t>
The authors would like to thank Stig Venaas and Umesh Dudani for 
contributing to the original idea and also their very helpful comments on the draft.
    </t>
  </section>
</middle>
<back>
  <references title='Normative References'>
	  <?rfc include='reference.RFC.2119' ?>
	  <?rfc include='reference.RFC.7761' ?>
  </references>
  
  <references title='Informative References'>
	  <?rfc include='reference.RFC.3973' ?>
	    </references>
</back>

</rfc>
