<?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-14"
     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>P.R. 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>United States of America</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, A+P, MAP, MAP-E, address-sharing, CGN, NAT64</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_mPrefix64:">a multicast Prefix64 which belongs to
          the Any-Source Multicast (ASM) range.</t>

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

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

    <section title="OPTION_V6_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="OPTION_V6_PREFIX64: Option Format">
        <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_mPrefix64                           :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  ssm-length   |                                               |
+-+-+-+-+-+-+-+-+                                               :
:                        SSM_mPrefix64                          :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unicast-length|                                               |
+-+-+-+-+-+-+-+-+                                               :
:                   uPrefix64 (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 option, in octets.</t>

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

          <t hangText="ASM_mPrefix64:">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. 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. This field
          represents the number of valid leading bits in the prefix. This
          field MUST be set to 96.</t>

          <t hangText="SSM_mPrefix64:">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. 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. As specified in
          <xref target="RFC6052"></xref>, the unicast-length MUST be one of
          32, 40, 48, 56, 64, or 96. This field represents the number of valid
          leading bits in the prefix.</t>

          <t hangText="uPrefix64:">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. uPrefix64 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>Multiple instances of OPTION_V6_PREFIX64 may be returned to a DHCPv6
      client.</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 to support the Well-Known DNS
      Name heuristic discovery-based method for unicast-only environments
      (Section 6 of <xref target="RFC7051"></xref>).</t>
    </section>

    <section title="Configuration Guidelines for the Server">
      <t>This section is not normative but specifies a set of configuration
      guidelines.</t>

      <t>DHCP servers supporting OPTION_V6_PREFIX64 must be configured with
      ASM_mPrefix64 or SSM_mPrefix64, and may be configured with both.
      uPrefix64 must also be configured when SSM_mPrefix64 is provided.
      uPrefix64 may be configured when ASM_mPrefix64 is provided. Note that
      uPrefix64 is not mandatory for the ASM case if, for example, a local
      address mapping algorithm is supported or the Well-Known Prefix
      (64:ff9b::/96) is used.</t>

      <t>When a multicast Prefix64 (ASM_mPrefix64 or SSM_mPrefix64) is
      configured, the length of the prefix must be /96.</t>

      <t>Both ASM_mPrefix64 and SSM_mPrefix64 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_mPrefix64
      and SSM_mPrefix64 prefixes must be configured. For SSM deployments, both
      SSM_mPrefix64 and uPrefix64 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 code 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 <xref
          target="RFC7346"></xref>, 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_mPrefix64 is used to synthesize IPv4-embedded IPv6 multicast
      addresses in the ASM range. This is achieved by concatenating the
      ASM_mPrefix64 and the IPv4 multicast address; the IPv4 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_mPrefix64 is used to synthesize IPv4-embedded IPv6 multicast
      addresses in the SSM range. This is achieved by concatenating the
      SSM_mPrefix64 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 uPrefix64 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="Acknowledgments">
      <t>Thanks to C. Jacquenet, S. Venaas, B. Volz, T. Taylor, R. Weber, R.
      Even, J. Sheng, T. Mrugalski, and T. Chown 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>
