<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc comments="no" ?>
<?rfc inline="no" ?>
<?rfc editing="no" ?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc rfcedstyle="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc category="std" number="6842" consensus="yes" submissionType="IETF" ipr="trust200902"
     updates="2131">
  <front>
    <title abbrev="Client Identifier Option">Client Identifier Option in DHCP
    Server Replies</title>



    <author fullname="Narasimha Swamy Nelakuditi" initials="N."
            surname="Swamy">
      <organization>Samsung India</organization>

      <address>
        <postal>
          <street>Block-B, Bagmane Lakeview,</street>

          <street>66/1, Bagmane Tech Park,</street>

          <city>Byrasandra, C.V. Raman Nagar, Bangalore</city>

          <code>560093</code>

          <region/>

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

        <phone>+91 80 4181 9999</phone>

        <email>nn.swamy@samsung.com</email>
      </address>
    </author>

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

      <address>
        <postal>
          <street>SEZ Unit, Cessna Business Park</street>

          <street>Sarjapur Marathalli Outer Ring Road</street>

          <city>Bangalore</city>

          <code>560103</code>

          <region/>

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

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

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

    <author fullname="Prashant Jhingran" initials="P." surname="Jhingran">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>SEZ Unit, Cessna Business Park</street>

          <street>Sarjapur Marathalli Outer Ring Road</street>

          <city>Bangalore</city>

          <code>560103</code>

          <region/>

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

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

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

    <date month="January" year="2013"/>

    <area>Internet Engineering Task Force</area>

    <workgroup>DHC Working Group</workgroup>


    <abstract>
      <t>This document updates RFC 2131 "Dynamic Host Configuration Protocol" by addressing the issues arising from that document's
      specification that the server MUST NOT return the 'client identifier'
      option to the client.</t>
    </abstract>


   

  </front>

  <middle>
  

    <section anchor="section1" title="Introduction">
      <t>The Dynamic Host Configuration Protocol (DHCP) defined in <xref target="RFC2131" />
      provides configuration parameters to hosts on an IP-based network. DHCP
      is built on a client-server model, where designated DHCP servers
      allocate network addresses and deliver configuration parameters to
      dynamically configured hosts.</t>



      <t>The changes to <xref target="RFC2131" /> defined in this document clarify the use of
      the 'client identifier' option by the DHCP servers. The clarification
      addresses the issues (as mentioned in Problem Statement) arising out of
      the point specified by <xref target="RFC2131" /> that the server MUST NOT return the
      'client identifier' option to the client.</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"/>.</t>
     </section>

    </section>

    <section anchor="section2" title="Problem Statement">
      <t><xref target="RFC2131" /> specifies that a combination of 'client identifier' or
      'chaddr' and assigned network address constitute a unique identifier for
      the client's lease and are used by both the client and server to
      identify a lease referred in any DHCP messages. <xref target="RFC2131" /> also specifies
      that the server MUST NOT return the 'client identifier' option in DHCPOFFER and
      DHCPACK messages. Furthermore, DHCP relay agents and servers
      implementing <xref target="RFC2131" /> MAY drop the DHCP packets in the absence of
      both the 'client identifier' and 'chaddr' option.</t>

      <t>In some cases, a client may not have a valid hardware address to
      populate the 'chaddr' field and may set the field to all zeroes. One
      such example is when DHCP is used to assign an IP address to a mobile phone
      or a tablet and where the 'chaddr' field is set to zero in DHCP request
      packets. In such cases, the client usually sets the 'client identifier'
      option field (to a value as permitted in <xref target="RFC2131" />), and both the client and
      server use this field to uniquely identify the client with in a
      subnet.</t>

      <t>Note that due to aforementioned recommendations in <xref target="RFC2131" />, valid
      downstream DHCP packets (DHCPOFFER, DHCPACK, and DHCPNAK) from the server
      MAY get dropped at the DHCP relay agent in the absence of the 'client
      identifier' option when the 'chaddr' field is set to zero.</t>

      <t>The problem may get aggravated when a client receives a response from
      the server without 'client identifier' and with the 'chaddr' value set to
      zero, as it cannot guarantee that the response is intended for it. This
      is due to the fact that even though the 'xid' field is present to map responses with
      requests, this field alone cannot guarantee that a particular response
      is for a particular client, as 'xid' values generated by multiple
      clients within a subnet need not be unique.</t>

      <t>Lack of the 'client identifier' option in DHCP reply messages also
      affects the scenario where multiple DHCP clients may be running on the
      same host sharing the same 'chaddr'.</t>

      <t>This document attempts to address these problems faced by the DHCP relay
      agent and client by proposing modification to DHCP server behavior. The
      solution specified in this document is in line with DHCPv6 <xref target="RFC3315" />
      where the server always includes the Client Identifier option in the
      Reply messages.</t>


      <t>The requirement for DHCP servers not to return the 'client
      identifier' option was made purely to conserve the limited space in the
      packet. It is possible, though unlikely, that clients will drop packets
      that contain this formerly unexpected option. There are no known client
      implementations that will drop packets, but the benefit provided by this
      change outweighs any small risk of such behavior. More harm is being
      done by not having the 'client identifier' option present than might be
      done by adding it now.</t>
    </section>

    <section anchor="section3" title="Modification to RFC 2131">
      <t>If the 'client identifier' option is present in a message received
      from a client, the server MUST return the 'client identifier' option,
      unaltered, in its response message.</t>

      <t>The following table is extracted from Section 4.3.1 of <xref target="RFC2131" /> and
      relevant fields are modified accordingly to overcome the problems
      mentioned in this document.</t>

      <figure>
        <artwork><![CDATA[ 

Option                    DHCPOFFER    DHCPACK            DHCPNAK
------                    ---------    -------            -------
Client identifier (if     MUST         MUST               MUST
  sent by client)
Client identifier (if     MUST NOT     MUST NOT           MUST NOT
  not sent by client)
  
]]></artwork>
      </figure>

      <t>When a client receives a DHCP message containing a 'client
      identifier' option, the client MUST compare that client identifier to
      the one it is configured to send. If the two client identifiers do not
      match, the client MUST silently discard the message.</t>
    </section>




    <section anchor="Security" title="Security Considerations">
      <t>This specification does not add any new security considerations other
      than the ones already mentioned in <xref target="RFC2131" />. It is worth noting that
      DHCP clients routinely connect to different IP networks managed by
      different network providers. DHCP clients have no a priori knowledge of
      which network they are connecting to. Consequently, the client
      identifier will, by definition, be routinely shared with network
      operators and could be used in ways that violate the user's privacy.
      This is a problem that existed in <xref target="RFC2131" />. This document does nothing
      to address this problem.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgments">
      <t>The authors would like to thank Bernie Volz, Ted Lemon, Barr Hibbs,
      Richard Johnson, Barry Leiba, Stephen Farrell, and Adrian Farrel for
      insightful discussions and review. 
</t>
    </section>
  </middle>

  <back>
    <!-- references split to informative and normative -->

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

      <?rfc include="reference.RFC.2131"?>

      <?rfc include="reference.RFC.3315"?>



    </references>
  </back>
</rfc>
