<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2131 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2131.xml">
<!ENTITY RFC3315 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3315.xml">
<!ENTITY RFC3633 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3633.xml">
<!ENTITY RFC4580 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4580.xml">
<!ENTITY RFC6221 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6221.xml">
<!ENTITY RFC4361 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4361.xml">
<!ENTITY RFC826 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.0826.xml">
]>
<?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-dhc-dhcpv6-client-link-layer-addr-opt-03"
     ipr="trust200902">
  <front>
    <title abbrev="DHCPv6 client link-layer address option">Client Link-layer
    Address Option in DHCPv6</title>

    <author fullname="Gaurav Halwasia" initials="G." surname="Halwasia">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>Cessna Business Park, Sarjapura Marathalli Outer Ring
          Road</street>

          <city>Bangalore</city>

          <region>KARNATAKA</region>

          <code>560 087</code>

          <country>India</country>
        </postal>

        <phone>+91 80 4426 1321</phone>

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

    <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>Cessna Business Park, Sarjapura Marathalli Outer Ring
          Road</street>

          <city>Bangalore</city>

          <region>KARNATAKA</region>

          <code>560 087</code>

          <country>India</country>
        </postal>

        <phone>+91 80 4426 0474</phone>

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

    <author fullname="Wojciech Dec" initials="W." surname="Dec">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>Haarlerbergweg 13-19</street>

          <city>1101 CH Amsterdam</city>

          <region>Amsterdam</region>

          <code>560 087</code>

          <country>The Netherlands</country>
        </postal>

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

    <date day="18" month="October" year="2012"/>

    <abstract>
      <t>This document specifies the format and mechanism that is to be used
      for encoding client link-layer address in DHCPv6 relay forward messages
      by defining a new DHCPv6 Client Link-layer Address option.</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 specification defines an optional mechanism and the related
      DHCPv6 option to allow first hop DHCPv6 relay agent directly connected
      to the client to populate client link-layer address in the DHCPv6
      messages being sent towards the server.</t>
    </section>

    <section title="Problem Background and Scenario">
      <t>DHCPv4 protocol specification <xref target="RFC2131"/> provides a way
      to specify the client hardware address in the DHCPv4 message header.
      DHCPv4 message header has 'htype' and 'chaddr' fields to specify client
      hardware address type and hardware address respectively. The client
      hardware address thus learnt can be used by DHCPv4 server and relay in
      different ways. In some of the deployments DHCPv4 servers use 'chaddr'
      as a customer identifier and a key for lookup in the client lease
      database.</t>

      <t>With the incremental deployment of IPv6 to existing IPv4 networks,
      effectively an enablement of dual-stack, there will be devices that act
      as both DHCPv4 and DHCPv6 clients. In service provider deployments, a
      typical DHCPv4 implementation will use the client hardware address as
      one of the keys to build DHCP client lease database. In dual stack
      scenarios it is desirable for the operator to associate DHCPv4 and
      DHCPv6 messages as belonging to the same client interface based on an
      identifier that is already used by that operator such as the client
      hardware address.</t>

      <t>Currently, the DHCPv6 protocol specification <xref target="RFC3315"/>
      does not define a way for DHCP clients to specify client link-layer
      address in the DHCPv6 message sent towards DHCPv6 Server. Similarly
      DHCPv6 Relay or Server cannot glean client link-layer address from the
      contents of DHCPv6 message received. DHCPv6 protocol specification
      mandates all clients to prepare and send DUID as the client identifier
      option in all the DHCPv6 message exchange. However none of these methods
      provide a simple way to extract client's link-layer address. This
      presents a problem to an operator who is using an existing DHCPv4 system
      with the client hardware address as the customer identifier, and desires
      to correlate DHCPv6 assignments using the same identifier. Modifying the
      system to use DUID based correlation across DHCPv4 and DHCPv6 is
      possible, but it requires a modification of the DHCPv4 system and
      associated back-ends.</t>

      <t>Providing an option in DHCPv6 relay forward messages to carry client
      link-layer address explicitly will help above mentioned scenarios. For
      e.g. it can be used along with other identifiers to associate DHCPv4 and
      DHCPv6 messages from a dual stack client. Further, having client
      link-layer address in DHCPv6 will help in proving additional information
      in event debugging and logging related to the client at relay and
      server. The proposed option may be used in wide range of networks, two
      notable deployment models are service provider and enterprise network
      environments.</t>
    </section>

    <section title="DHCPv6 Client Link-layer Address Option">
      <figure suppress-title="true">
        <preamble>The format of the DHCPv6 Client Link-layer Address option is
        shown below.</preamble>

        <artwork><![CDATA[    0                   1                   2                   3
    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_CLIENT_LINKLAYER_ADDR  |           option-length       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    hardware type (16 bits)    |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |               link-layer address (variable length)            |  
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 

   option-code:        OPTION_CLIENT_LINKLAYER_ADDR (TBD)
   option-length:      2 + length of link-layer address
   hardware type:      Client Link-layer address type. The hardware type MUST be a
                       valid hardware type assigned by the IANA, as described in [RFC0826]
   link-layer address: Client Link-layer address.
   
 ]]></artwork>

        <postamble/>
      </figure>

      <t/>
    </section>

    <section title="DHCPv6 Relay Agent Behavior">
      <t>DHCPv6 Relay agents which receive messages originating from clients
      (for example Solicit and Request, but not, for example, Relay Forward or
      Advertise) MAY include the link-layer source address of the received
      DHCPv6 message in Client Link-layer Address option in relayed DHCPv6
      Relay Forward messages. The DHCPv6 Relay agent behavior can depend on
      configuration that decides whether Client Link-layer Address option
      needs to be processed and included.</t>
    </section>

    <section title="DHCPv6 Server Behavior">
      <t>If DHCPv6 Server is configured to store or use client link-layer
      address, it SHOULD look for the client link-layer address option in the
      RELAY-FORW DHCP message of the DHCPv6 Relay agent closest to the client.
      This specification does not specify the mechanism for DHCPv6 Server to
      find out link-layer address of the directly connected clients as a DHCP
      option as it can obtain it directly from the link-layer source address
      of the received DHCPv6 message.</t>

      <t>There is no requirement that a server return this option and its data
      in a downstream DHCP message.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is requested to assign an option code to
      OPTION_CLIENT_LINKLAYER_ADDR from the "DHCPv6 and DHCPv6 options"
      registry (http://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-
      parameters.xml).</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Security issues related DHCPv6 are described in section 23 of <xref
      target="RFC3315"/>.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Many thanks to Ted Lemon, Bernie Volz, Hemant Singh, Simon Hobson,
      Tina TSOU, Andre Kostur, Chuck Anderson, Steinar Haug, Niall O'Reilly,
      Jarrod Johnson, Tomek Mrugalski and Vincent Zimmer for their input and
      review.</t>
    </section>
  </middle>

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

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      &RFC2119;

      &RFC3315;

      &RFC2131;

      &RFC826;
    </references>
  </back>
</rfc>
