<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc number="7371" category="std" submissionType="IETF" consensus="yes"
     ipr="pre5378Trust200902" updates="3306, 3956, 4291">
  <front>
    <title abbrev="Multicast Flag Bits">Updates to the IPv6 Multicast
    Addressing Architecture</title>

    <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
      <organization>France Telecom</organization>

      <address>
        <postal>
          <street></street>

          <city>Rennes</city>

          <region></region>

          <code>35000</code>

          <country>France</country>
        </postal>

        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>

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

      <address>
        <postal>
          <street></street>

          <city></city>

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

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

    <date month="September" year="2014" />

    <workgroup>6man Working Group</workgroup>

<keyword>example</keyword>

    <abstract>
      <t>This document updates the IPv6 multicast addressing architecture by
      redefining the reserved bits as generic flag bits. The document
      also provides some clarifications related to the use of these flag
      bits.</t>

      <t>This document updates RFCs 3956, 3306, and 4291.</t>
    </abstract>

  </front>

  <middle>
    <section title="Introduction">
      <t>This document updates the IPv6 addressing architecture <xref
      target="RFC4291"></xref> by redefining reserved bits as generic flag
      bits (<xref target="flag"></xref>). The document also provides some
      clarifications related to the use of these flag bits (<xref
      target="reco"></xref>).</t>

      <t>This document updates <xref target="RFC3956"></xref>, <xref
      target="RFC3306"></xref>, and <xref target="RFC4291"></xref>. These
      updates are logical consequences of the new processing rules in <xref
      target="reco"></xref>.</t>

      <t>Textual representation of IPv6 addresses included in the RFC updates
      follows the recommendation in <xref target="RFC5952"></xref>.</t>

    <section title="Requirements Language">
      <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 <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </section>

    </section>

    <section anchor="flag" title="Addressing Architecture Update">
      <t>Bits 17-20 of a multicast address, where bit 1 is the most
      significant bit, are defined in <xref target="RFC3956"></xref> and <xref
      target="RFC3306"></xref> as reserved bits. This document defines these
      bits as generic flag bits so that they apply to any multicast address.
      These bits are referred to as "ff2" (flag field 2), while the "flgs"
      bits in <xref target="RFC4291"></xref> <xref target="RFC3956"></xref>
      are renamed to "ff1" (flag field 1).</t>

      <t>Within this document, flag bits denote both ff1 and ff2.</t>

      <t>Defining the bits 17-20 as flags for all IPv6 multicast addresses
      allows addresses to be treated in a more uniform and generic way, and
      allows for these bits to be defined in the future for different
      purposes, irrespective of the specific type of multicast address. For
      the record, this design choice was initially triggered by the
      specification in <xref
      target="ADDR-FORMAT"></xref>, which
      proposed associating a meaning with one of the reserved bits.
      Moreover, <xref
      target="ADDR-FORMAT"></xref> also
      considered the use of the last remaining flag in ff1, but that approach was
      abandoned because it is not clear at this stage whether there are other
      usage scenarios of the flag.</t>

      <t><xref target="updates"></xref> specifies the updated structure of the
      addressing architecture.</t>

      <t>Further specification documents may define a meaning for these flag
      bits.</t>
    </section>

    <section anchor="reco" title="Flag Bits: New Processing Rules">
      <t>Some implementations and specification documents do not treat the
      flag bits as separate bits but tend to use their combined value as a
      4-bit integer. This practice is a hurdle for assigning a meaning to the
      remaining flag bits. Below are listed some examples for illustration
      purposes:<list style="symbols">
          <t>The reading of <xref target="RFC3306"></xref> may lead one to
          conclude that ff3x::/32 is the only allowed Source-Specific
          Multicast (SSM) IPv6 prefix block.</t>

          <t><xref target="RFC3956"></xref> states that only ff70::/12
          applies to Embedded-RP. Particularly, implementations should not
          treat the fff0::/12 range as Embedded-RP.</t>
        </list></t>

      <t>To avoid such confusion and to unambiguously associate a meaning with
      the remaining flags, the following requirement is made:</t>

      <t><list style="empty">
          <t>Implementations MUST treat flag bits as separate bits.</t>
        </list></t>

      <t></t>
    </section>

    <section anchor="updates" title="RFC Updates">
      <t></t>

      <section title="Updates to RFC 3306">
        <t></t>

        <section title="Update #1">
          <t>This document changes Section 4 of <xref target="RFC3306"></xref>
          as follows:</t>

          <t>OLD:</t>

          <figure>
            <artwork><![CDATA[
   |   8    |  4 |  4 |   8    |    8   |       64       |    32    |
   +--------+----+----+--------+--------+----------------+----------+
   |11111111|flgs|scop|reserved|  plen  | network prefix | group ID |
   +--------+----+----+--------+--------+----------------+----------+

                                +-+-+-+-+
flgs is a set of 4 flags:       |0|0|P|T|
                                +-+-+-+-+

      o  P = 0 indicates a multicast address that is not assigned
         based on the network prefix.  This indicates a multicast
         address as defined in [ADDRARCH].

      o  P = 1 indicates a multicast address that is assigned based
         on the network prefix.

      o  If P = 1, T MUST be set to 1, otherwise the setting of the T
         bit is defined in Section 2.7 of [ADDRARCH].

The reserved field MUST be zero.
]]></artwork>
          </figure>

          <t><list style="empty">
              <t>Note: [ADDRARCH] is a reference listed in <xref
              target="RFC3306"></xref>. [ADDRARCH] has been since obsoleted by
              <xref target="RFC4291"></xref>.</t>
            </list>NEW:</t>

          <figure>
            <artwork><![CDATA[
  |   8    |  4 |  4 |  4 |  4 |    8   |       64       |    32    |
  +--------+----+----+----+----+--------+----------------+----------+
  |11111111|ff1 |scop|ff2 |rsvd|  plen  | network prefix | group ID |
  +--------+----+----+----+----+--------+----------------+----------+

                                               +-+-+-+-+
ff1 (flag field 1) is a set of 4 flags:        |X|Y|P|T|  
                                               +-+-+-+-+

X and Y may each be set to 0 or 1.  Note that X is for future 
assignment, while a meaning is associated with Y in RFC 3956.

      o  P = 0 indicates a multicast address that is not assigned
         based on the network prefix.  This indicates a multicast
         address as defined in [RFC4291].

      o  P = 1 indicates a multicast address that is assigned based
         on the network prefix.

      o  If P = 1, T MUST be set to 1; otherwise, the setting of the 
         T bit is defined in Section 2.7 of [RFC4291].

                                               +-+-+-+-+
ff2 (flag field 2) is a set of 4 flags:        |r|r|r|r|  
                                               +-+-+-+-+

where "rrrr" are for future assignment as additional flag bits.
r bits MUST each be sent as zero and MUST be ignored on receipt.

Flag bits denote both ff1 and ff2.
]]></artwork>
          </figure>

          <t></t>
        </section>

        <section title="Update #2">
          <t>This document changes Section 6 of <xref target="RFC3306"></xref>
          as follows:</t>

          <t>OLD:<list style="empty">
              <t>
   These settings create an SSM range of FF3x::/32 (where 'x' is any
   valid scope value).  The source address field in the IPv6 header
   identifies the owner of the multicast address.
	  </t>
            </list></t>

          <t>NEW:<list style="empty">
              <t>If the flag bits in ff1 are set to 0011, these settings
              create an SSM range of ff3x::/32 (where 'x' is any valid scope
              value).  The source address field in the IPv6 header identifies
              the owner of the multicast address.  ff3x::/32 is not the only
              allowed SSM prefix range.  For example, if the most significant
              flag bit in ff1 is set, then we would get the SSM range
              ffbx::/32.</t>
            </list></t>

          <t></t>
        </section>
      </section>

      <section title="Updates to RFC 3956">
        <t></t>

        <section title="Update #1">
          <t>This document changes Section 2 of <xref target="RFC3956"></xref>
          as follows:</t>

          <t>OLD:</t>

          <t><figure>
              <artwork><![CDATA[
   As described in [RFC3306], the multicast address format is
   as follows:

      |   8    |  4 |  4 |   8    | 8  |       64       |    32    |
      +--------+----+----+--------+----+----------------+----------+
      |11111111|flgs|scop|reserved|plen| network prefix | group ID |
      +--------+----+----+--------+----+----------------+----------+

   Where flgs are "0011".  (The first two bits are as yet undefined,
   sent as zero and ignored on receipt.)
]]></artwork>
            </figure>NEW:</t>

          <t><figure>
              <artwork><![CDATA[
   The multicast address format is as follows:

      |   8    |  4 |  4 |  4 |  4 | 8  |       64       |    32    |
      +--------+----+----+----+----+----+----------------+----------+
      |11111111|ff1 |scop|ff2 |rsvd|plen| network prefix | group ID |
      +--------+----+----+----+----+----+----------------+----------+

                                                     +-+-+-+-+
      ff1 (flag field 1) is a set of four flags:     |X|R|P|T|
                                                     +-+-+-+-+

      where X is for future assignment as an additional flag bit.
      X may be set to 0 or 1.

                                                     +-+-+-+-+
      ff2 (flag field 2) is a set of 4 flags:        |r|r|r|r|  
                                                     +-+-+-+-+

      where "rrrr" are for future assignment as additional flag bits.
      r bits MUST each be sent as zero and MUST be ignored
      on receipt.

      Flag bits denote both ff1 and ff2.]]></artwork>
            </figure></t>

          <t></t>
        </section>

        <section title="Update #2">
          <t>This document changes Section 3 of <xref target="RFC3956"></xref>
          as follows:</t>

          <t>OLD:</t>

          <figure>
            <artwork><![CDATA[
      |   8    |  4 |  4 |  4 |  4 | 8  |       64       |    32    |
      +--------+----+----+----+----+----+----------------+----------+
      |11111111|flgs|scop|rsvd|RIID|plen| network prefix | group ID |
      +--------+----+----+----+----+----+----------------+----------+
                                      +-+-+-+-+
      flgs is a set of four flags:    |0|R|P|T|
                                      +-+-+-+-+

   When the highest-order bit is 0, R = 1 indicates a multicast address
   that embeds the address on the RP.  Then P MUST be set to 1, and
   consequently T MUST be set to 1, as specified in [RFC3306].  In
   effect, this implies the prefix FF70::/12.  In this case, the last 4
   bits of the previously reserved field are interpreted as embedding
   the RP interface ID, as specified in this memo.

   The behavior is unspecified if P or T is not set to 1, as then the
   prefix would not be FF70::/12.  Likewise, the encoding and the
   protocol mode used when the two high-order bits in "flgs" are set to
   11 ("FFF0::/12") is intentionally unspecified until such time that
   the highest-order bit is defined.  Without further IETF
   specification, implementations SHOULD NOT treat the FFF0::/12 range
   as Embedded-RP.
]]></artwork>
          </figure>

          <t>NEW:</t>

          <figure>
            <artwork><![CDATA[
      |   8    |  4 |  4 |  4 |  4 | 8  |       64       |    32    |
      +--------+----+----+----+----+----+----------------+----------+
      |11111111|ff1 |scop|ff2 |RIID|plen| network prefix | group ID |
      +--------+----+----+----+----+----+----------------+----------+
                                      +-+-+-+-+
      ff1 is a set of four flags:     |X|R|P|T|
                                      +-+-+-+-+
      where X is for future assignment as an additional flag bit.
      X may be set to 0 or 1.

   R = 1 indicates a multicast address that embeds the address of the
   RP.  Then, P MUST be set to 1, and consequently T MUST be set
   to 1, according to [RFC3306], as this is a special case of
   unicast-prefix-based addresses.  This implies that, for instance,
   prefixes ff70::/12 and fff0::/12 are embedded RP prefixes.  When
   the R-bit is set, the last 4 bits of the field that were reserved
   in [RFC3306] are interpreted as embedding the RP interface ID, as
   specified in this memo.
]]></artwork>
          </figure>

          <t></t>
        </section>

        <section title="Update #3">
          <t>This document changes Section 4 of <xref target="RFC3956"></xref>
          as follows:</t>

          <t>OLD:
      <figure><artwork>
   o It MUST be a multicast address with "flgs" set to 0111, that is, to
      be of the prefix FF70::/12,
      </artwork></figure>
      </t>

          <t>NEW:<list style="symbols">
              <t>It MUST be a multicast address with the R-bit set to 1.</t>

              <t>It MUST have the P-bit and T-bit both set to 1 when using the
              embedding in this document as it is a prefix-based address.</t>
            </list></t>
        </section>

        <section title="Update #4">
          <t>This document changes Section 7.1 of <xref
          target="RFC3956"></xref> as follows:</t>

          <t>OLD:<list style="empty">
<t>
   To avoid loops and inconsistencies, for addresses in the range
   FF70::/12, the Embedded-RP mapping MUST be considered the longest
   possible match and higher priority than any other mechanism.
 </t>
            </list></t>

          <t>NEW:<list style="empty">
              <t>To avoid loops and inconsistencies, for addresses with the
              R-bit set to 1, the Embedded-RP mapping MUST be considered the
              longest possible match and higher priority than any other
              mechanism.</t>
            </list></t>
        </section>
      </section>
    </section>


    <section anchor="Security" title="Security Considerations">
      <t>The same security considerations as those discussed in <xref
      target="RFC3956"></xref>, <xref target="RFC3306"></xref>, and <xref
      target="RFC4291"></xref> are to be taken into account.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Special thanks to Brian Haberman for the discussions prior to the
      publication of this document.</t>

      <t>Many thanks to Jouni Korhonen, Tatuya Jinmei, Charlie Kaufman, and
      Ben Campbell for their review.</t>
    </section>
  </middle>

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

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

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

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

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

    <references title="Informative References">
<!-- draft-ietf-mboned-64-multicast-address-format: Expired -->

<reference anchor='ADDR-FORMAT'>
<front>
<title>IPv6 Multicast Address With Embedded IPv4 Multicast Address</title>

<author initials='M' surname='Boucadair' fullname='Mohamed Boucadair'>
    <organization />
</author>

<author initials='J' surname='Qin' fullname='Jacni Qin'>
    <organization />
</author>

<author initials='Y' surname='Lee' fullname='Yiu Lee'>
    <organization />
</author>

<author initials='S' surname='Venaas' fullname='Stig Venaas'>
    <organization />
</author>

<author initials='X' surname='Li' fullname='Xing Li'>
    <organization />
</author>

<author initials='M' surname='Xu' fullname='Mingwei Xu'>
    <organization />
</author>

<date month='April' day='18' year='2013' />

<abstract><t>This document reserves one bit (M-bit) of the unicast prefix-based multicast IPv6 address for ASM and an IPv6 multicast prefix for SSM mode to be used in the context of IPv4-IPv6 interconnection.  The document specifies an algorithmic translation of an IPv6 multicast address to a corresponding IPv4 multicast address, and vice versa.  This algorithmic translation can be used in both IPv4-IPv6 translation or encapsulation schemes.</t></abstract>

</front>

<seriesInfo name="Work" value="in Progress"/>

</reference>

    </references>
  </back>
</rfc>
