<?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">
<!ENTITY RFC4702 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4702.xml">
<!ENTITY RFC4704 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4704.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-05"
     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 day="11" month="March" year="2013"/>

    <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 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="Problem Background and Scenario">
      <t>DHCPv4 protocol specification <xref target="RFC2131"/> provides a way
      to specify the client link-layer address in the DHCPv4 message header.
      DHCPv4 message header has 'htype' and 'chaddr' fields to specify client
      link-layer address type and link-layer address respectively. The client
      link-layer 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,
      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 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 protocol 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. 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 link-layer address as the customer identifier, and
      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 client
      link-layer address explicitly will help 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 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       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   link-layer type (16 bits)   |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |               link-layer address (variable length)            |  
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 

   option-code:        OPTION_CLIENT_LINKLAYER_ADDR (TBD)
   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>

        <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 the Client Link-layer Address option
      needs to be 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-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>Client Link-layer Address option is only exchanged between the relay
      agents and the servers. DHCPv6 clients are not aware of the usage of
      Client Link-layer Address option. DHCPv6 client MUST NOT send Client
      Link-layer Address option, and MUST ignore Client Link-layer Address
      option if received. </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is requested to assign an option code to
      OPTION_CLIENT_LINKLAYER_ADDR from the "DHCP Option Codes" registry
      (http://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-
      parameters.xml).</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, 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 an 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 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 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;

      &RFC826;

      &RFC4361;
    </references>

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

      &RFC4702;

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