<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<rfc category="std" docName="draft-ietf-softwire-multicast-prefix-option-11"
     ipr="trust200902">
  <!-- ***** FRONT MATTER ***** -->

  <front>
    <title abbrev="IPv4/IPv6 Multicast Prefixes Option">DHCPv6 Option for
    IPv4-Embedded Multicast and Unicast IPv6 Prefixes</title>

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

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

          <city>Rennes</city>

          <code>35000</code>

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

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

    <author fullname="Jacni Qin" initials="J." surname="Qin">
      <organization>Cisco</organization>

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

          <city></city>

          <country>China</country>
        </postal>

        <phone></phone>

        <email>jacni@jacni.com</email>
      </address>
    </author>

    <author fullname="Tina Tsou" initials="T." surname="Tsou">
      <organization>Philips Lighting</organization>

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

          <city></city>

          <country></country>
        </postal>

        <phone></phone>

        <email>tina.tsou@philips.com</email>
      </address>
    </author>

    <author fullname="Xiaohong Deng" initials="X." surname="Deng">
      <organization>The University of New South Wales</organization>

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

          <code>NSW 2052</code>

          <city>Sydney</city>

          <country>Australia</country>
        </postal>

        <email>dxhbupt@gmail.com</email>
      </address>
    </author>

    <date day="" month="" year="" />

    <area>Internet</area>

    <workgroup>Softwire WG</workgroup>

    <keyword>PREFIX64, SSM, ASM, Prefix Discovery, IPv4-Converted IPv6
    Addresses, IPv4 service continuity, IPv6 Address Synthesis, Any-Source
    Multicast, Source-Specific Multicast, PIM, IPv4-IPv6 interconnection, IPv4
    over IPv6</keyword>

    <abstract>
      <t>This document defines a Dynamic Host Configuration Protocol version 6
      (DHCPv6) Option for multicast IPv4 service continuity solutions, which
      is used to carry the IPv6 prefixes to be used to build unicast and
      multicast IPv4-embedded IPv6 addresses.</t>
    </abstract>
  </front>

  <!-- ***** MIDDLE MATTER ***** -->

  <middle>
    <section title="Introduction">
      <t>Several solutions (e.g., <xref
      target="I-D.ietf-softwire-dslite-multicast"></xref>) are proposed for
      the delivery of multicast services in the context of transition to IPv6.
      Even if these solutions may have different applicable use cases, they
      all use specific IPv6 addresses that embed IPv4 addresses, for both
      multicast group and source addresses.</t>

      <t>This document defines a DHCPv6 option <xref target="RFC3315"></xref>
      that carries the IPv6 prefixes to be used for constructing these
      IPv4-embedded IPv6 addresses.</t>

      <t>In particular, this option can be used in the context of DS-Lite
      <xref target="RFC6333"></xref>, Stateless A+P <xref
      target="RFC6346"></xref>, and other IPv4-IPv6 transition techniques.</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 title="Terminology">
      <t>This document makes use of the following terms:</t>

      <t><list style="hanging">
          <t hangText="IPv4-embedded IPv6 address:">an IPv6 address which
          embeds a 32 bit-encoded IPv4 address <xref target="RFC6052"></xref>.
          An IPv4-embedded IPv6 address can be a unicast or a multicast
          address.</t>

          <t hangText="PREFIX64:">is an IPv6 prefix used for synthesizing
          IPv4-embedded IPv6 addresses. A PREFIX64 can be of unicast or
          multicast.<list style="empty">
              <t>Note: "64" is used as an abbreviation for IPv6-IPv4
              interconnection.</t>
            </list></t>

          <t hangText="ASM_PREFIX64:">a multicast PREFIX64 which belongs to
          the Any-Source Multicast (ASM) range.</t>

          <t hangText="SSM_PREFIX64:">a multicast PREFIX64 which belongs to
          the Source-Specific Multicast (SSM) <xref target="RFC4607"></xref>)
          range.</t>

          <t hangText="U_PREFIX64:">a unicast PREFIX64 for building the
          IPv4-embedded IPv6 addresses of multicast sources in SSM mode.</t>
        </list></t>
    </section>

    <section title="PREFIX64 DHCPv6 Option">
      <t>OPTION_V6_PREFIX64 (<xref target="option"></xref>) conveys the IPv6
      prefix(es) to be used (e.g., by an mB4 <xref
      target="I-D.ietf-softwire-dslite-multicast"></xref>) to synthesize
      IPv4-embedded IPv6 addresses.</t>

      <figure align="center" anchor="option"
              title="DHCPv6 Option Format for PREFIX64">
        <artwork align="center"><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        OPTION_V6_PREFIX64     |         option-length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  asm-length   |                                               |
+-+-+-+-+-+-+-+-+                                               :
:                  ASM_PREFIX64 (Variable)                      :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  ssm-length   |                                               |
+-+-+-+-+-+-+-+-+                                               :
:                  SSM_PREFIX64 (Variable)                      :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unicast-length|                                               |
+-+-+-+-+-+-+-+-+                                               :
:                   U_PREFIX64 (Variable)                       :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>

      <t>The fields of the option shown in <xref target="option"></xref> are
      as follows:</t>

      <t><list style="hanging">
          <t hangText="option-code:">OPTION_V6_PREFIX64 (see <xref
          target="IANA"></xref>).</t>

          <t hangText="option-length:">length of the PREFIX64 option.</t>

          <t hangText="asm-length:">the prefix-length for the ASM
          IPv4-embedded prefix, as an 8-bit unsigned integer (0 to 128). This
          field represents the number of valid leading bits in the prefix.</t>

          <t hangText="ASM_PREFIX64:">this field identifies the IPv6 multicast
          prefix to be used to synthesize the IPv4-embedded IPv6 addresses of
          the multicast groups in the ASM mode. It is a variable size field
          with the length of the field defined by the asm-length field and is
          rounded up to the nearest octet boundary. In this case, any
          additional padding bits must be zeroed. The conveyed multicast IPv6
          prefix MUST belong to the ASM range.</t>

          <t hangText="ssm-length:">the prefix-length for the SSM
          IPv4-embedded prefix, as an 8-bit unsigned integer (0 to 128). This
          field represents the number of valid leading bits in the prefix.</t>

          <t hangText="SSM_PREFIX64:">this field identifies the IPv6 multicast
          prefix to be used to synthesize the IPv4-embedded IPv6 addresses of
          the multicast groups in the SSM mode. It is a variable size field
          with the length of the field defined by the ssm-length field and is
          rounded up to the nearest octet boundary. In such case any
          additional padding bits must be zeroed. The conveyed multicast IPv6
          prefix MUST belong to the SSM range.</t>

          <t hangText="unicast-length:">the prefix-length for the IPv6 unicast
          prefix to be used to synthesize the IPv4-embedded IPv6 addresses of
          the multicast sources, as an 8-bit unsigned integer (0 to 128). This
          field represents the number of valid leading bits in the prefix.</t>

          <t hangText="U_PREFIX64:">this field identifies the IPv6 unicast
          prefix to be used in SSM mode for constructing the IPv4-embedded
          IPv6 addresses representing the IPv4 multicast sources in the IPv6
          domain. U_PREFIX64 may also be used to extract the IPv4 address from
          the received multicast data flows. It is a variable size field with
          the length of the field defined by the unicast-length field and is
          rounded up to the nearest octet boundary. In this case, any
          additional padding bits must be zeroed. The address mapping MUST
          follow the guidelines documented in <xref
          target="RFC6052"></xref>.</t>
        </list></t>

      <t>Note that it was tempting to define three distinct DHCPv6 options,
      but that approach was not adopted because it has a side effect: the
      specification of a DHCPv6 option that could be used to discover unicast
      PREFIX64s in environments where multicast is not enabled. Such side
      effect conflicts with the recommendation documented in Section 6 of
      <xref target="RFC7051"></xref>.</t>
    </section>

    <section title="Configuration Guidelines for the Server">
      <t>DHCP servers supporting OPTION_V6_PREFIX64 should be configured with
      U_PREFIX64 and at least one multicast PREFIX64 (i.e., ASM_PREFIX64
      and/or SSM_PREFIX64).</t>

      <t>When a multicast PREFIX64 (ASM_PREFIX64 or SSM_PREFIX64) is
      configured, the length of the prefix must be /96.</t>

      <t>Both ASM_PREFIX64 and SSM_PREFIX64 may be configured and therefore be
      returned to a requesting DHCP client in the same OPTION_V6_PREFIX64. In
      particular, if both SSM and ASM modes are supported, ASM_PREFIX64 and
      SSM_PREFIX64 prefixes must be configured. For SSM deployments, both
      SSM_PREFIX64 and U_PREFIX64 must be configured.</t>

      <t>When distinct IPv6 multicast address scopes <xref
      target="RFC7346"></xref> are required to preserve the scope when
      translating IPv4 multicast addresses (Section 8 of <xref
      target="RFC2365"></xref>), each scope is configured as a separate
      OPTION_V6_PREFIX64. How DHCP servers are configured to separate
      multicast PREFIX64 per scope is implementation-specific and not covered
      by this document.</t>

      <t>When scope preservation is not required, only one instance of
      OPTION_V6_PREFIX64 is configured.</t>
    </section>

    <section title="DHCPv6 Client Behavior">
      <t>To retrieve the IPv6 prefixes that will be used to synthesize unicast
      and multicast IPv4-embedded IPv6 addresses, the DHCPv6 client MUST
      include OPTION_V6_PREFIX64 in its OPTION_ORO. If the DHCPv6 client
      receives more than one OPTION_V6_PREFIX64 option from the DHCPv6
      server:<list style="symbols">
          <t>If each enclosed IPv6 multicast prefix has a distinct scope, the
          client MUST select the appropriate IPv6 multicast prefix whose scope
          matches the IPv4 multicast address used to synthesize an
          IPv4-embedded IPv6 multicast address.</t>

          <t>If at least two of the received options convey IPv6 multicast
          prefixes that have the same scope, the said options MUST be
          discarded.</t>
        </list></t>

      <t>If asm-length, ssm-length and unicast-length fields are all set to 0,
      the DHCPv6 client MUST behave as if OPTION_V6_PREFIX64 had not been
      received in the response received from the DHCPv6 server.</t>

      <t>If the asm-length field is non-null, the IPv6 prefix identified by
      ASM_PREFIX64 is used to synthesize IPv4-embedded IPv6 multicast
      addresses in the ASM range. This is achieved by concatenating the
      ASM_PREFIX64 and the IPv4 multicast address; the Pv4 multicast address
      is inserted in the last 32 bits of the IPv4-embedded IPv6 multicast
      address.</t>

      <t>If the ssm-length field is non-null, the IPv6 prefix identified by
      SSM_PREFIX64 is used to synthesize IPv4-embedded IPv6 multicast
      addresses in the SSM range. This is achieved by concatenating the
      SSM_PREFIX64 and the IPv4 multicast address; the Pv4 multicast address
      is inserted in the last 32 bits of the IPv4-embedded IPv6 multicast
      address.</t>

      <t>If the unicast-length field is non-null, the IPv6 prefix identified
      by U_PREFIX64 is used to synthesize IPv4-embedded IPv6 unicast addresses
      as specified in <xref target="RFC6052"></xref>.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The security considerations documented in <xref
      target="RFC3315"></xref> and <xref target="RFC6052"></xref> are to be
      considered.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Particular thanks to C. Jacquenet, S. Venaas, B. Volz, and T. Taylor
      for their review.</t>

      <t>Many thanks to I. Farrer and T. Lemon for the comments.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>Authors of this document request IANA to assign a new DHCPv6 option
      code in the registry maintained in
      http://www.iana.org/assignments/dhcpv6-parameters:</t>

      <t><figure>
          <artwork><![CDATA[                                Option Name    Value
                             ----------------- -----
                            OPTION_V6_PREFIX64 TBA]]></artwork>
        </figure></t>

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

  <!--  *****BACK MATTER ***** -->

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

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

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

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

    <references title="Informative References">
      <?rfc include='reference.I-D.ietf-softwire-dslite-multicast'?>

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

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

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

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

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