<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc category="std" docName="draft-venaas-pim-reserved-bits-01"
     ipr="trust200902"
     updates="3973, 5015, 6754, 7761, 8364">
  <?rfc toc="yes"?>

  <?rfc compact="yes"?>

  <?rfc subcompact="no"?>

  <?rfc symrefs="yes"?>

  <front>
    <title abbrev="PIM reserved bits and type space extension">PIM reserved
    bits and type space extension</title>

    <author fullname="Stig Venaas" initials="S." surname="Venaas">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>Tasman Drive</street>

          <city>San Jose</city>

          <code>CA 95134</code>

          <country>USA</country>
        </postal>

        <email>stig@cisco.com</email>
      </address>
    </author>

    <author fullname="Alvaro Retana" initials="A." surname="Retana">
      <organization>Huawei R&amp;D USA</organization>

      <address>
        <postal>
          <street>2330 Central Expressway</street>

          <city>Santa Clara</city>

          <region/>

          <code>CA 95050</code>

          <country>USA</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>alvaro.retana@huawei.com</email>

        <uri/>
      </address>
    </author>

    <date/>

    <area>Routing</area>

    <keyword>Multicast</keyword>

    <abstract>
      <t>The currently defined 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>This document Updates RFC7761 and RFC3973 by defining the use of the
      currently Reserved field in the PIM common header. This document further
      updates RFC7761 and RFC3973, along with RFC5015, RFC6754 and RFC8364,
      by specifying the use of the currently Reserved bits for each PIM
      message.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>The currently defined PIM version 2 messages share a common message
      header format defined in the PIM Sparse Mode <xref target="RFC7761"/>
      and Dense Mode <xref target="RFC3973"/> specifications. The common
      header definition contains eight reserved bits. The message types
      defined in these documents all use this common header. However, several
      messages already make use of one or more bits, including the Bootstrap
      <xref target="RFC5059"/>, DF-Election <xref target="RFC5015"/>, and PIM
      Flooding Mechanism (PFM) <xref target="RFC8364"/> messages. There is no
      document formally specifying that these bits are to be used per message
      type.</t>

      <t>This document refers to the bits specified as Reserved in the common
      PIM header <xref target="RFC7761"/> <xref target="RFC3973"/> 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 the per message type usage. For a particular
      message type, the usage of the flag bits can be defined in the document
      defining the message type, or a new document that updates that
      document.</t>

      <t>The PIM message types as defined in the PIM Sparse Mode <xref
      target="RFC7761"/> and Dense Mode <xref target="RFC3973"/>
      specifications are in the range from 0 to 15. That type space is almost
      exhausted. Message type 15 was reserved by <xref target="RFC6166"/> for
      type space extension. In <xref target="ext"/>, this document specifies
      the use of the flag bits for message types 13, 14 and 15 in order to
      extend the PIM type space. The registration procedure for the extended
      type space is the same as for the existing type space, and the existing
      PIM message type registry is updated to include the extended type
      space.</t>
    </section>

    <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="PIM header common format">
      <t>The common PIM header is defined in section 4.9 of <xref
      target="RFC7761"/> and section 4.7.1 of <xref target="RFC3973"/>. 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. <figure>
          <artwork><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |PIM Ver| Type  |   Flags Bits  |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	]]></artwork>
        </figure></t>

      <t>The Flags Bits field is defined in <xref target="flagbits"/>. All
      other fields remain unchanged.</t>
    </section>

    <section anchor="flagbits" title="Flag Bit definitions">
      <t>Unless otherwise specified, all the flag bits for each PIM type are
      Reserved <xref target="RFC8126"/>. They MUST be set to zero on
      transmission, and they MUST be ignored upon receipt. The specification
      of a new PIM type, MUST indicate whether the bits should be treated
      differently. Currently for the message types 0 (Hello), 1 (Register), 2
      (Register Stop), 3 (Join/Prune), 5 (Assert), 6 (Graft), 7 (Graft-Ack), 8
      (Candidate RP Advertisement), 9 (State Refresh) and 11 (ECMP Redirect),
      all flag bits are Reserved.</t>

      <t>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>

      <t><figure>
          <artwork><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |PIM Ver| Type  |7 6 5 4 3 2 1 0|           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	]]></artwork>
        </figure></t>

      <section title="Flag Bits for Type 4 (Bootstrap)">
        <t>PIM message type 4 (Bootstrap) <xref target="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 title="Flag Bits for Type 10 (DF Election)">
        <t>PIM message type 10 (DF Election) <xref target="RFC5015"/>
        specifies that the four most significant flag bits (bits 4-7) are to
        be used as a sub-type. The remaining flag bits are currently
        Reserved.</t>
      </section>

      <section title="Flag Bits for Type 12 (PFM)">
        <t>PIM message type 12 (PFM) <xref target="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 title="Flag Bits for Type 13 (Type Space Extension)">
        <t>This type and the flag bit usage is defined in <xref
        target="ext"/>.</t>
      </section>
      <section title="Flag Bits for Type 14 (Type Space Extension)">
        <t>This type and the flag bit usage is defined in <xref
        target="ext"/>.</t>
      </section>
      <section title="Flag Bits for Type 15 (Type Space Extension)">
        <t>This type and the flag bit usage is defined in <xref
        target="ext"/>.</t>
      </section>
    </section>

    <section anchor="ext" title="PIM Type Space Extension">
      <t>The type space defined by the existing PIM specifications is almost
      exhausted. This document defines types 13, 14 and 15
      (Type Space Extension) allowing for 48 additional types by for each of
      the three types, using the four most significant flag bits
      (bits 4-7) as a new field to store the extended type. These types are
      referred to as types 13.0 to 13.15, 14.0 to 14.15 and 15.0 to 15.15
      where the last number denotes the
      value stored in the new field. The remaining four flag bits (bits 0-3)
      are Reserved to be used by each extended type. The specification of a
      new PIM extended type MUST indicate whether the bits should be treated
      differently. The common header for the new types is shown in the
      diagram below. The "Type" field is set to 13, 14 or 15, and the
      extended type field "SubType" denotes the value after the dot.</t>

      <t><figure>
          <artwork><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |PIM Ver| Type  |SubType| Rsvd  |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	]]></artwork>
        </figure></t>
    </section>

    <section title="Security Considerations">
      <t>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"/>
      and <xref target="RFC3973"/>.</t>
    </section>

    <section title="IANA considerations">
      <t>This document updates the PIM Message Types registry and also creates
      a PIM Message Type Flag Bits registry that shows which flag bits are
      defined for use by each of the PIM message types.</t>

      <t>The following changes should be made to the existing PIM Message
      Types registry. For types 4 (Bootstrap) and 8 (Candidate RP
      Advertisement) a reference to RFC5059 should be added. For the
      currently unassigned types 13 and 14, and the reserved type 15,
      the name should be changed to "Type Space Extension", and
      reference this document. In addition, right underneath each of
      the rows for types 13, 14 and 15, there should be a new row where it
      says "13.0-13.15 Unassigned", "14.0-14.15 Unassigned" and
      "15.0-15.15 Unassigned", respectively.
</t>

      <t>A new registry called "PIM Message Type Flag Bits" should be created
      in the pim-paremeters section with registration procedure "IETF Review"
      as defined in <xref target="RFC8126"/> with this document as a
      reference. The initial content of the registry should be as below.</t>

      <t><figure>
          <artwork><![CDATA[
 Type      bit(s)         Name                   Reference
--------------------------------------------------------------
  0         0-7   Reserved                  [RFC3973][RFC7761]
  1         0-7   Reserved                  [RFC3973][RFC7761]
  2         0-7   Reserved                  [RFC3973][RFC7761]
  3         0-7   Reserved                  [RFC3973][RFC7761]
  4         0-6   Reserved                  [RFC3973][RFC7761]
  4         7     No-Forward                [RFC5059]
  5         0-7   Reserved                  [RFC3973][RFC7761]
  6         0-7   Reserved                  [RFC3973][RFC7761]
  7         0-7   Reserved                  [RFC3973][RFC7761]
  8         0-7   Reserved                  [RFC3973][RFC7761]
  9         0-7   Reserved                  [RFC3973][RFC7761]
 10         0-3   Reserved                  [RFC3973][RFC7761]
 10         4-7   Sub-type                  [RFC5015]
 11         0-7   Reserved                  [RFC6754]
 12         0-6   Reserved                  [RFC3973][RFC7761]
 12         7     No-Forward                [RFC8364]
 13         0-3   N/A (used by 13.0-13.15)  [this document]
 13         4-7   Extended type             [this document]
 13.0-13.15 0-3   Reserved                  [this document]
 14         0-3   N/A (used by 14.0-14.15)  [this document]
 14         4-7   Extended type             [this document]
 14.0-14.15 0-3   Reserved                  [this document]
 15         0-3   N/A (used by 15.0-15.15)  [this document]
 15         4-7   Extended type             [this document]
 15.0-15.15 0-3   Reserved                  [this document]
	]]></artwork>
        </figure></t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119' ?>

      <?rfc include='reference.RFC.3973' ?>

      <?rfc include='reference.RFC.5015' ?>

      <?rfc include='reference.RFC.5059' ?>

      <?rfc include='reference.RFC.6754' ?>

      <?rfc include='reference.RFC.7761' ?>

      <?rfc include='reference.RFC.8126'?>

      <?rfc include='reference.RFC.8174'?>

      <?rfc include='reference.RFC.8364' ?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.6166' ?>
    </references>
  </back>
</rfc>
