<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-6man-multicast-addr-arch-update-05"
     ipr="trust200902" 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 day="18" month="June" year="2014" />

    <workgroup>6man Working Group</workgroup>

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

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

    <note 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>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>This document updates the IPv6 addressing architecture <xref
      target="RFC4291"></xref> by re-defining reserved bits as generic flag
      bits (<xref target="flag"></xref>). The document provides also 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 recommendation on the flag bits
      (<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>

    <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.</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: A Recommendation">
      <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 to
          conclude that ff3x::/32 is the only allowed SSM IPv6 prefix
          block.</t>

          <t><xref target="RFC3956"></xref> states 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="RFC 3306">
        <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>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.

         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.

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

        <t></t>

        <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 title="RFC 3956">
        <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|
                                                     +-+-+-+-+
      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.

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

        <t></t>

        <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|
                                      +-+-+-+-+
      X may be set to 0 or 1.

   R = 1 indicates a multicast address that embeds the address of the
   RP.  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.  The behavior is unspecified
   if P or T is not set to 1.  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>

        <t>This document changes Section 4 of <xref target="RFC3956"></xref>
        as follows:</t>

        <t>OLD:<list style="empty">
            <t>It MUST be a multicast address with "flgs" set to 0111, that
            is, to be of the prefix FF70::/12,</t>
          </list></t>

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

            <t>It MUST have 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>

        <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 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 anchor="IANA" title="IANA Considerations">
      <t>This document does not require any action from IANA.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Security considerations discussed in <xref target="RFC3956"></xref>,
      <xref target="RFC3306"></xref> and <xref target="RFC4291"></xref> MUST
      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 and Tatuya Jinmei 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>
  </back>
</rfc>
