<?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="info" docName="draft-ietf-dhc-v4configuration-00"
     ipr="trust200902">
  <front>
    <title abbrev="Provisioning IPv4 Config Over IPv6">Provisioning IPv4
    Configuration Over IPv6 Only Networks</title>

    <author fullname="Branimir Rajtar" initials="B." surname="Rajtar">
      <organization>Hrvatski Telekom</organization>

      <address>
        <postal>
          <street/>

          <city>Zagreb</city>

          <country>Croatia</country>
        </postal>

        <email>branimir.rajtar@t.ht.hr</email>
      </address>
    </author>

    <author fullname="Ian Farrer" initials="I." surname="Farrer">
      <organization>Deutsche Telekom AG</organization>

      <address>
        <postal>
          <street/>

          <city>Bonn</city>

          <country>Germany</country>
        </postal>

        <email>ian.farrer@telekom.de</email>
      </address>
    </author>

    <date day="13" month="May" year="2013"/>

    <area>Internet</area>

    <workgroup>DHC WG</workgroup>

    <abstract>
      <t>As IPv6 becomes more widely adopted, some service providers are
      taking the approach of deploying IPv6 only networks, without dual-stack
      functionality for IPv4. However, access to IPv4 based services is still
      an ongoing requirement and approaches such as IPv4-in-IPv6 softwire
      tunnels are being developed to meet this need.</t>

      <t>In order to provision end-user's hosts with the necessary IPv4
      configuration, a number of different mechanisms have been proposed. This
      memo discusses the benefits and drawbacks of each, with the aim of
      recommending a single approach as the basis for future work.</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>A service provider with an IPv6-only network must also be able to
      provide customers with access to the Internet and other services over
      IPv4. Softwire based IPv4-in-IPv6 tunneling mechanisms are an obvious
      example of this, such as the ones described in: <list style="symbols">
          <t><xref target="I-D.ietf-softwire-lw4over6"/></t>

          <t><xref target="I-D.ietf-softwire-map"/></t>

          <t><xref target="I-D.ietf-softwire-unified-cpe"/></t>
        </list></t>

      <t>A general trend here is to relocate NAT44 functionality and IPv4
      address sharing from the centralized tunnel concentrator to the CPE in
      order to achieve better scalability. This results in the need to
      provision a number of configuration parameters to the CPE, such as the
      external public IPv4 address and a restricted port-range to use for
      NAT.</t>

      <t>In order to configure customer's devices for softwire functionality,
      a dynamic provisioning mechanism is necessary. In IPv4 only networks,
      DHCPv4 has often been used to provide configuration, but in an IPv6 only
      network, DHCPv4 messages cannot be transported natively.</t>

      <t>Although softwire mechanisms are currently the only use-case for dhcp
      based configuration of IPv4 parameters in IPv6 only networks, a suitable
      approach must not be limited to only supporting softwire
      configuration.</t>

      <t>This document compares four different approaches which have been
      proposed for resolving this problem.</t>

      <section title="Overview of IPv4 Parameter Configuration Approaches">
        <t>In order to resolve the problem described above, the following
        approaches for transporting IPv4 configuration parameters have been
        suggested:<list style="numbers">
            <t>Adapt DHCPv4 format messages to be transported over IPv6 as
            described in <xref target="I-D.ietf-dhc-dhcpv4-over-ipv6"/>. For
            brevity, this is referred to as DHCPv4o6.</t>

            <t>Extend DHCPv6 with new options for IPv4 configuration, such as
            <xref target="I-D.ietf-softwire-map-dhcp"/> describes.</t>

            <t>Use DHCPv6 as above for external IPv4 address and source port
            configuration. Use DHCPv4 over IPv4 messages within an IPv6
            softwire for configuring additional parameters. This is referred
            to as DHCPv4oSW.</t>

            <t>Use DHCPv4 format messages, transporting them within a new
            DHCPv6 message type as described in <xref
            target="I-D.scskf-dhc-dhcpv4-over-dhcpv6"/>. This is referred to
            as DHCPv4oDHCPv6.</t>
          </list></t>

        <t>At the time of writing, working examples of the first two
        approaches have been developed and successfully tested in several
        different operators networks. The third and fourth methods are still
        theoretical.</t>

        <t>The following sections provide more detail for each approach.</t>
      </section>

      <section title="DHCPv4o6 Based Provisioning - Functional Overview">
        <t>In order to receive IPv4 configuration parameters, IPv4-only
        clients initiate and exchange DHCPv4 messages with the DHCPv4 server.
        In order adapt this to an IPv6-only network, an existing DHCPv4 client
        implements a 'Client Relay' (CRA) function, which takes DHCPv4
        messages and puts them into UDPv6 and IPv6.</t>

        <t>As the mechanism involves unicast based communications, the IPv6
        address of the server must be provisioned to the client. This option
        is described in <xref
        target="I-D.mrugalski-softwire-dhcpv4-over-v6-option"/>.</t>

        <t>The DHCPv4o6 server must either provide an IPv6 interface to the
        client, or an intermediary 'Transport Relay Agent' device can act as
        the gateway between the IPv4 and IPv6 domains.</t>

        <t>For the dynamic allocation of IPv4 addresses, the DHCPv4o6 server
        needs to be extended to support the new functionality, such as storing
        the IPv6 address of DHCPv4o6 clients. The CRA6ADDR option must also be
        implemented.</t>

        <t>This approach currently uses functional elements for ingress and
        egress of the IPv6-only transport domain--the CRA on the host and the
        TRA or TSV on the server. As a result, this approach has sometimes
        been referred to as a tunneling approach. However, relay agent
        encapsulation is not a tunnel, since it carries only DHCP traffic; it
        would be more accurate to describe it as an encapsulation.</t>

        <t>It is worth noting that there is no technical reason for using
        relay encapsulation for DHCPv4o6; this approach was taken because the
        authors of the draft originally imagined that it might be used to
        provide configuration information for an unmodified DHCPv4 client.
        However, this turns out not to be a viable approach: in order for this
        to work, there would have to be IPv4 routing on the local link to
        which the client is connected. In that case, there's no need for
        DHCPv4o6.</t>

        <t>Given that this is the case, there is no technical reason why
        DHCPv4o6 can't simply use the IPv6 transport directly, without any
        relay encapsulation. This would greatly simplify the specification and
        the implementation, and would still address the requirements stated in
        this document.</t>

        <t><xref target="I-D.ietf-dhc-dhcpv4-over-ipv6"/> decribes this
        solution in detail.</t>

        <t>The protocol stack is as follows:</t>

        <t>DHCPv4/UDPv6/IPv6</t>
      </section>

      <section title="DHCPv6 Based Provisioning - Functional Overview">
        <t>In this approach, DHCPv6 would be extended with new DHCPv6 options
        for configuring all IPv4 based services and functions. Any DHCPv4
        options needed by IPv4 clients connected to the IPV6 network are
        updated as new DHCPv6 native options carrying IPv4 configuration
        parameters.</t>

        <t>At the time of writing, it is not known how many such options would
        need to be ported from DHCPv4 to DHCPv6.</t>

        <t>An example of this approach is described in <xref
        target="I-D.ietf-softwire-map-dhcp"/>, where a DHCPv6 message is used
        to convey the parameters necessary for IPv4 in IPv6 softwire
        configuration.</t>

        <t>The protocol stack is as follows:</t>

        <t>DHCPv6/UDPv6/IPv6</t>
      </section>

      <section title="DHCPv4oSW Based Provisioning - Functional Overview">
        <t>In this approach, the configuration of IPv4 address and source
        ports (if required) is carried out using DHCPv6 as described in
        section 1.3 above. Any additional IPv4 configuration parameters which
        are required are then provisioned using a DHCPv4 messages transported
        within IPv6 in the configured softwire in the same manner as any other
        IPv4 based traffic.</t>

        <t>On receipt at the tunnel concentrator (e.g. MAP Border Router or a
        Lightweight 4over6 lwAFTR), the DHCPv4 message removed from the
        softwire and forwarded to the DHCPv4 server in the same way as any
        other IPv4 packet is handled.</t>

        <t>As the client is already configured with its external IPv4 address
        and source ports (using DHCPv6), the messages exchanged between the
        DHCPv4 client and server would be strictly DHCPINFORM/DHCPACK
        messages, for the configuration of additional IPv4 parameters.
        Broadcast based DHCPDISCOVER messages can not be transported as they
        are not compatible with the softwire architecture.</t>

        <t>For this approach to function, a mechanism for the DHCPv4 client to
        learn the IPv4 address of the DHCPv4 server is needed. This could be
        done by defining a well-known IPv4 address for the DHCPv4 server,
        implementing a DHCPv4 relay function within the tunnel concentrator or
        other configuration methods.</t>

        <t>From a transport perspective, the key difference between this
        method and DHCPv4o6 (described above) is that here, the DHCPv4 message
        is put into UDPv4 and IPv4 and then put into the IPv6 softwire,
        instead of directly placing the DHCPv4 message into UDPv6 and
        IPv6.</t>

        <t>Currently, this approach is only theoretical and does not have a
        corresponding Internet Draft providing more detail.</t>

        <t>The protocol stack that would be used for obtaining additional IPv4
        configuraion is as follows:</t>

        <t>DHCPv4/UDPv4/IPv4/IPv6</t>
      </section>

      <section title="DHCPv4oDHCPv6 Based Provisioning - Functional Overview">
        <t><xref target="I-D.scskf-dhc-dhcpv4-over-dhcpv6"/> describes the
        transport of DHCPv4 messages within two new DHCPv6 messages types:
        BOOTREQUESTV6 and BOOTREPLYV6. These messages types must be
        implemented in both the DHCPv4oDHCPv6 client and server.</t>

        <t>In this approach, the configuration of stateless IPv4 addresses and
        source ports (if required) is carried out using DHCPv6 as described in
        section 1.3 above. Dynamic IPv4 addressing, and/or any additional IPv4
        configuration, is provided using DHCPv4 messages carried (without
        IPv4/UDPv4 headers) within a new OPTION_BOOTP_MSG DHCPv6 option.</t>

        <t>OPTION_BOOTP_MSG enables the client and server to send BOOTP/DHCPv4
        messages verbatim across the IPv6 network. When a DHCPv4oDHCPv6 server
        receives a DHCPv6 request containing OPTION_BOOT_MSG within a
        BOOTREQUESTV6 message, it passes it to the DHCPv4 server engine.
        Likewise, the DHCPv4 server place its DHCPv4 response in the payload
        of OPTION_BOOTP_MSG and puts this into a BOOTPRPLYV6 message.</t>

        <t>As the DHCPv4 messages are carried within DHCPv6 multicast
        messages, using the All_DHCP_Relay_Agents_and_Servers, they can be
        relayed in exactly the same way as any other DHCPv6 multicasted
        message. Optionally, DHCPv6 relays could be updated so that they
        forward the BOOTREQUESTV6 message to a different destination address,
        allowing for the separation of DHCPv4 and DHCPv4 provisioning
        infrastructure.</t>

        <t>The protocol stack used for obtaining dynamic v4 addressing or
        additional IPv4 configuraion is as follows:</t>

        <t>DHCPv4/DHCPv6/UDPv6/IPv6</t>
      </section>
    </section>

    <section title="Requirements for the Solution Evaluation">
      <t>The following requirements have been defined for the evalution of the
      different approaches:</t>

      <t><list style="numbers">
          <t>Minimize the amount of work necessary to implement the solution
          through re-use of existing standards and implementations as much as
          possible.</t>

          <t>Provide a method of supporting all existing DHCPv4 options so
          that they can be utilised without the need for further
          standardation.</t>

          <t>Allow for the dynamic leasing of IPv4 addresses to clients. This
          allows for more efficient use of limited IPv4 resources.</t>

          <t>Enable the separation of IPv4 and IPv6 host configuration.</t>

          <t>Avoid leaving legacy IPv4 options in DHCPv6.</t>

          <t>Provide a flexible architecture to give operators the option of
          only deploying the functional elements necessary for their specific
          requirements. <vspace blankLines="15"/></t>
        </list></t>
    </section>

    <section title="Comparison of the Four Approaches">
      <t>The table below shows a comparison of the different approaches
      against the solution requirements described above.</t>

      <texttable anchor="functional" title="Approach Comparison">
        <ttcol align="center">Req. No.</ttcol>

        <ttcol align="center">DHCPv4o6</ttcol>

        <ttcol align="center">DHCPv6</ttcol>

        <ttcol align="center">DHCPv4oSW</ttcol>

        <ttcol align="center">DHCPv4oDHCPv6</ttcol>

        <c>1</c>

        <c>No</c>

        <c>Yes</c>

        <c>Yes</c>

        <c>Yes</c>

        <c>2</c>

        <c>Yes</c>

        <c>No</c>

        <c>Yes</c>

        <c>Yes</c>

        <c>3</c>

        <c>Yes</c>

        <c>No</c>

        <c>No</c>

        <c>Yes</c>

        <c>4</c>

        <c>Yes</c>

        <c>No</c>

        <c>Yes</c>

        <c>Yes</c>

        <c>5</c>

        <c>Yes</c>

        <c>No</c>

        <c>Yes</c>

        <c>Yes</c>

        <c>6</c>

        <c>Yes</c>

        <c>No</c>

        <c>Yes</c>

        <c>Yes</c>
      </texttable>

      <section title="Pros and Cons of the Different Approaches">
        <t>The following sections of the document provide more details of the
        pros and cons relevant to each of the approaches.</t>

        <section title="DHCPv4o6 Based Provisioning">
          <t/>

          <section title="Pros">
            <t><list style="numbers">
                <t>Once implemented, all existing DHCPv4 options will be
                available with no further ongoing development work
                necessary.</t>

                <t>IPv4 and IPv6 based provisioning can be separated from each
                other if required, allowing flexibility in network design.</t>

                <t>Easy to implement through minor adaptation of existing
                DHCPv4 client/server code.</t>

                <t>Simple, in that no additional functional elements are
                necessary except the DHCPv4o6 client and server. The Transport
                Relay Agent is completely optional.</t>

                <t>Suitable for the provisioning of dynamic IPv4 configuration
                as the existing DHCPv4 leasing mechanism can be used.</t>

                <t>Implementations already exist, proving that the approach
                works.</t>
              </list></t>
          </section>

          <section title="Cons">
            <t><list style="numbers">
                <t>More complex, in that there are more new functional
                elements (CRA, DHCPv4o6 server and optionally TRA) within the
                architecture than are necessary in DHCPv6 based
                provisioning.</t>

                <t>A new DHCPv6 option is necessary in order to provision the
                IPv6 address of the DHCPv4 server to the end device.</t>

                <t>For a Host CRA (HCRA), DHCPv4 client host needs to be
                updated to implement the IPv6 encapsulation and decapsulation
                function. Otherwise a physically separate On-Link CRA (LCRA)
                functional element must be deployed.</t>

                <t>A DHCPv4 server must be deployed and maintained.</t>

                <t>The DHCPv4 server needs to be updated to implement new
                DHCPv4o6 functionality.</t>
              </list></t>
          </section>
        </section>

        <section title="DHCPv6 Based Provisioning">
          <t/>

          <section title="Pros">
            <t><list style="numbers">
                <t>Simpler, in that no additional functional elements are
                required except the DHCPv6 client and server.</t>

                <t>A single protocol is used to deliver configuration
                information for IPv4 and IPv6.</t>

                <t>A single provisioning point for all configuration
                parameters.</t>

                <t>Implementations already exist, proving that the approach
                works.</t>
              </list></t>
          </section>

          <section title="Cons">
            <t><list style="numbers">
                <t>Any required DHCPv4 options must be ported to DHCPv6, which
                will require re-development work for each option. All
                functional elements in the DHCPv6 implementation (clients,
                servers, relays) would need to be updated for each change.</t>

                <t>Means that DHCPv4 'legacy' options, which will be of
                decreasing relevance in the future will remain in DHCPv6 for
                the lifetime of the protocol.</t>

                <t>Each time that a DHCPv4 option is ported to DHCPv6, all
                clients and servers would need to be updated to implement the
                new option.</t>

                <t>Does not provide an architecture for keeping IPv4 and IPv6
                domains separated.</t>

                <t>Does not provide a mechanism for dynamic IPv4 address
                leasing. A DHCPv4 lease lifetime mechanism would need to be
                added to DHCPv6 for this.</t>
              </list></t>
          </section>
        </section>
      </section>

      <section title="DHCPv4oSW Based Provisioning">
        <t/>

        <section title="Pros">
          <t><list style="numbers">
              <t>Once implemented, all existing DHCPv4 options will be be
              available with no further ongoing development work
              necessary.</t>

              <t>Uses the existing DHCPv4 and DHCPv6 architectures in order to
              provide IPv4 configuration in an IPv6 only environment.</t>

              <t>DHCPv4 and DHCPv6 based provisioning can be separated from
              each other if required, allowing flexibility in network
              design.</t>
            </list></t>
        </section>

        <section title="Cons">
          <t><list style="numbers">
              <t>More complex, in that there are more new functional elements
              within the architecture than are necessary in DHCPv6 based
              provisioning.</t>

              <t>IPv4 over IPv6 softwire approaches which distribute NAT to
              the CPE and allow for IP address sharing (MAP-E &amp; LW4o6)
              forbid the use of reserved TCP/UDP ports (e.g. 0-1024). Every
              DHCPv4 client sharing the same address needs to have a UDP
              listener running on UDP port 68. To resolve this would require
              significant rework to either the softwire mechanisms and/or the
              DHCPv4 client implementation.</t>

              <t>From the current specification, DHCPINFORM is not suitable
              for use over a softwire. Additional work, such as the
              development of 'shims' would be necessary</t>

              <t>The current DHCPINFORM specification has a number of unclear
              points, such as those described in <xref
              target="I-D.ietf-dhc-dhcpinform-clarify"/>. Substantial work
              would be required to resolve this.</t>

              <t>Links the deployment of IPv4 configuration over IPv6 to a
              softwire implementation (e.g. requiring a softwire concentrator
              to act as a DHCPv4 relay). Whilst softwires are the only
              application for this functionality at the moment, this may not
              always be the case.</t>

              <t>A new mechanism must be defined in order to provide the
              DHCPv4 client with the IPv4 address of the DHCPv4 server so that
              unicast DHCPINFORM messages can be sent.</t>

              <t>As only DHCPINFORM/DHCPACK DHCPv4 message types are
              supported, dynamic IPv4 address leasing (using DHCPDISCOVER
              messages) can not be used.</t>

              <t>The approach is unproven as no existing implementations
              exist.</t>
            </list></t>
        </section>
      </section>

      <section title="DHCPv4oDHCPv6 Based Provisioning">
        <t/>

        <section title="Pros">
          <t><list style="numbers">
              <t>Once implemented, all existing DHCPv4 options will be be
              available with no further ongoing development work
              necessary.</t>

              <t>Uses the existing DHCPv4 and DHCPv6 architectures in order to
              provide IPv4 configuration in an IPv6 only environment.</t>

              <t>DHCPv4 and DHCPv6 based provisioning can be separated from
              each other if required, allowing flexibility in network
              design.</t>

              <t>Suitable for the provisioning of dynamic IPv4 configuration
              as the existing DHCPv4 leasing mechanism can be used.</t>
            </list></t>
        </section>

        <section title="Cons">
          <t><list style="numbers">
              <t>More complex, in that there are more new functional elements
              within the architecture than are necessary in DHCPv6 based
              provisioning.</t>

              <t>DHCPv6 clients needs to be updated to implement the new
              DHCPv6 message types.</t>

              <t>The DHCPv6 server needs to be updated to implement new
              DHCPv4oDHCPv6 message types and functionality.</t>

              <t>If separation of DHCPv4 and DHCPv4 provisioning
              infrastructure is required, DHCPv6 relay agents need to be
              updated to implement dedicated forwarding destinations based on
              message type.</t>

              <t>The approach is currently unproven as no existing
              implementations exist.</t>
            </list></t>
        </section>
      </section>
    </section>

    <section title="Conclusion">
      <t><list>
          <t>Discussion: This chapter will be updated to reflect the consensus
          of the DHC Working Group.</t>
        </list></t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no request of IANA.</t>

      <t>Note to RFC Editor: this section may be removed on publication as an
      RFC.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t/>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Thanks to Ted Lemon and Tomek Mrugalski for their input and
      reviews.</t>
    </section>
  </middle>

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

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

      <?rfc include='reference.I-D.ietf-softwire-map'?>

      <?rfc include='reference.I-D.ietf-softwire-unified-cpe'?>

      <?rfc include='reference.I-D.ietf-dhc-dhcpv4-over-ipv6'?>

      <?rfc include='reference.I-D.ietf-softwire-map-dhcp'?>

      <?rfc include='reference.I-D.ietf-dhc-dhcpinform-clarify'?>

      <?rfc include='reference.I-D.scskf-dhc-dhcpv4-over-dhcpv6'?>

      <?rfc include='reference.I-D.mrugalski-softwire-dhcpv4-over-v6-option'?>
    </references>
  </back>
</rfc>
