<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!-- xml2rfc v2 -->

<!ENTITY RFC2119 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
<!ENTITY RFC2131 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2131.xml'>
<!ENTITY RFC3315 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3315.xml'>
<!ENTITY RFC3633 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3633.xml'>
<!ENTITY RFC4580 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4580.xml'>
<!ENTITY RFC6221 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6221.xml'>
<!ENTITY RFC4361 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4361.xml'>
<!ENTITY RFC826 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0826.xml'>
<!ENTITY RFC4702 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4702.xml'>
<!ENTITY RFC4704 PUBLIC ' ' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4704.xml'>
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="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"
     number="6939" submissionType="IETF" consensus="yes"
     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 4429 2703</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 4429 2627</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 month="May" year="2013"/>

    <abstract>
      <t>This document specifies the format and mechanism that is to be used
      for encoding the client link-layer address in DHCPv6 Relay-Forward
      messages by defining a new DHCPv6 Client Link-Layer Address option.</t>
    </abstract>

    
  </front>

  <middle>
    <section title="Introduction">
      <t>This specification defines an optional mechanism and the related
      DHCPv6 option to allow first-hop DHCPv6 relay agents (relay agents that
      are connected to the same link as the client) to provide the client's
      link-layer address in the DHCPv6 messages being sent towards the
      server.</t>
    </section>

<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 title="Problem Background and Scenario">

      <t>The DHCPv4 specification <xref target="RFC2131"/> provides a way
      to specify the client link-layer address in the DHCPv4 message header.
      A DHCPv4 message header has 'htype' and 'chaddr' fields to specify the client
      link-layer address type and the link-layer address, respectively. The
client 
      link-layer address thus learned can be used by the DHCPv4 server and the
relay agent 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,
      which results in a dual-stack network environment, there will be devices
      that act as both DHCPv4 and DHCPv6 clients. In service provider
      deployments, a typical DHCPv4 implementation will use the client
      link-layer address as one of the keys to build the DHCP client lease
      database. In dual-stack scenarios, operators need to be able to associate
      DHCPv4 and DHCPv6 messages with the same client interface, based on an
      identifier that is common to the interface. The client link-layer
      address is such an identifier.</t>

      <t>Currently, the DHCPv6 specification <xref target="RFC3315"/>
      does not define a way to communicate the client link-layer address to
      the DHCP server in cases where the DHCP server is not connected to the
      same network link as the DHCP client. The DHCPv6 specification
      mandates that all clients prepare and send a DHCP Unique Identifier (DUID) as the client identifier
      option in all the DHCPv6 message exchanges. However, none of these methods
      provide a simple way to extract a client's link-layer address. This
      presents a problem to an operator who is using an existing DHCPv4 system
      with the client link-layer address as the customer identifier and who
      desires to correlate DHCPv6 assignments using the same identifier. <xref
      target="RFC4361"/> describes a mechanism for using the same DUID in both
      DHCPv4 and DHCPv6. Unfortunately, this specification requires
      modification of existing DHCPv4 clients, and has not seen broad adoption
      in the industry (indeed, we are not aware of any commercial
      implementations).</t>

      <t>Providing an option in DHCPv6 Relay-Forward messages to carry the client
      link-layer address explicitly will help the above mentioned scenarios. For
      example, it can be used along with other identifiers to associate DHCPv4
      and DHCPv6 messages from a dual-stack client. Further, having the client
      link-layer address in DHCPv6 will help by providing additional
      information for event debugging and logging related to the client at the
      relay agent and the server. The proposed option may be used in a 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       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   link-layer type (16 bits)   |                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
  |               link-layer address (variable length)            |  
  |                                                               |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

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

    </section>

    <section title="DHCPv6 Relay Agent Behavior">
      <t>DHCPv6 relay agents that 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 the Client Link-Layer Address option, in relayed DHCPv6
      Relay-Forward messages. The DHCPv6 relay agent behavior can depend on
      configuration that decides whether the Client Link-Layer Address option
      needs to be included.</t>
    </section>

    <section title="DHCPv6 Server Behavior">

      <t>If the DHCPv6 server is configured to store or use a client link-layer
      address, it SHOULD look for the Client Link-Layer Address option in the
      Relay-Forward DHCP message of the DHCPv6 relay agent closest to the
      client. The mechanism described in this document is not necessary in the
      case where the DHCPv6 server is connected to the same network link as
      the client, because the server can obtain the link-layer address from
      the link-layer header of the DHCPv6 message. If the DHCP server receives
      a Client Link-Layer Address option anywhere in any encapsulated message
      that is not a Relay-Forward DHCP message, the server MUST silently
      ignore that option. </t>

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

    <section title="DHCPv6 Client Behavior">
      <t>The Client Link-Layer Address option is only exchanged between the relay
      agents and the servers. DHCPv6 clients are not aware of the usage of
      the Client Link-Layer Address option. The DHCPv6 client MUST NOT send the Client
      Link-Layer Address option, and MUST ignore the Client Link-Layer Address
      option if received. </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA has assigned an option code (79) to
      OPTION_CLIENT_LINKLAYER_ADDR from the "DHCP Option Codes" registry
      (http://www.iana.org/assignments/dhcpv6-parameters/).</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>It is possible for a rogue DHCPv6 relay agent to insert an incorrect
      Client Link-Layer Address option for malicious purposes. A DHCPv6 client
      can also pose as a rogue DHCP relay agent by sending a Relay-Forward
      message containing an incorrect Client Link-Layer Address option. In
      either case, it would be possible for a DHCPv6 client to masquerade as
      the same device as a DHCPv4 client, when in fact the two are
      distinct.</t>

      <t>One possible attack that could be accomplished using this masquerade
      would be in the case where a DHCPv4 client is using DHCPv4 to do a
      Dynamic DNS update to install an A record so that it can be reached by
      other nodes <xref target="RFC4702"/>. A masquerading DHCPv6 client could
      use DHCPv6 to install a AAAA record with the same name <xref
      target="RFC4704"/>. Dual-stack nodes attempting to connect to the DHCPv4
      client might then be tricked into connecting to the masquerading DHCPv6
      client instead.</t>

      <t>It is possible that there are other attacks that could be
      accomplished using this masquerading technique, although the authors are
      not aware of any. To prevent masquerades of this sort, DHCP server
      administrators are strongly advised to configure DHCP servers that use
      this option to communicate with their relay agents using IPsec, as
      described in Section 21.1 of <xref target="RFC3315"/>.</t>

      <t>In some networks, it may be the case that the operator of the
      physical network and the provider of connectivity over that network are
      administratively separate, such that the Client Link-Layer Address
      option would reveal information to one or the other party that they do
      not need and could not otherwise obtain. It is also possible, in some
      cases, that a relay agent might communicate with a DHCP server over an
      open network where eavesdropping would be possible. In these cases, it
      is strongly recommended, in order to protect end-user privacy, that
      network operators use IPsec to provide confidentiality for messages
      between the relay agent and the DHCP server.</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 title="Normative References">
      &RFC2119;

      &RFC3315;

      &RFC826;

      &RFC4361;
    </references>

    <references title="Informative References">
      &RFC2131;

      &RFC4702;

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