<?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 strict='yes'?>
<?rfc iprnotified='no'?>
<rfc category="info" docName="draft-templin-client-cllao-01.txt"
     ipr="trust200902" obsoletes="">
  <front>
    <title abbrev="Client CLLAO">Client-Inserted Client Link-Layer Address
    Options in DHCPv6</title>

    <author fullname="Fred L. Templin" initials="F. L." role="editor"
            surname="Templin">
      <organization>Boeing Research &amp; Technology</organization>

      <address>
        <postal>
          <street>P.O. Box 3707</street>

          <city>Seattle</city>

          <region>WA</region>

          <code>98124</code>

          <country>USA</country>
        </postal>

        <email>fltemplin@acm.org</email>
      </address>
    </author>

    <date day="22" month="January" year="2015"/>

    <keyword>I-D</keyword>

    <keyword>Internet-Draft</keyword>

    <abstract>
      <t>RFC6939 specifies a method for DHCPv6 relay agents to insert a Client
      Link Layer Address Option (CLLAO) in a DHCPv6 Relay-Forward message. In
      some cases, however, the DHCPv6 client may need to insert a CLLAO in its
      message on its own behalf even though it is on the same link as the
      DHCPv6 server. This document discusses client-inserted CLLAOs.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t><xref target="RFC6939"/> specifies a method for DHCPv6 relays<xref
      target="RFC3315"/> to insert a Client Link-Layer Address Option (CLLAO)
      in Relay-Forward messages. This provides a means for a first-hop relay
      to inform the DHCPv6 server of the link-layer address of the DHCPv6
      client on the client&lt;-&gt;relay link. However, on some links it may
      be necessary for the client to include a CLLAO even though it is on the
      same link as the server.</t>

      <t>Asymmetric Extended Route Optimization (AERO) <xref
      target="I-D.templin-aerolink"/> is an example of a "DHCPv6-over-(foo)"
      link layer where the client and server are always on the same link but
      it may be difficult or impossible for the DHCPv6 server process to
      determine the client's link-layer address through normal socket API
      operations. Additionally, it may be difficult or impossible for the
      client to determine its own link-layer address (as seen by the server)
      since the address may be altered by a link-layer switching element on
      the path. In that case, if the client inserts a CLLAO option the
      server's (foo) driver can use the option to convey the client's
      link-layer address to the DHCPv6 server process, and then from the
      DHCPv6 server process back to the client in the DHCPv6 reply. The
      following section specifies the protocol for client-inserted CLLAOs.</t>
    </section>

    <section anchor="minencaps" title="Client-Inserted CLLAOs">
      <t>When a DHCPv6 client is on the same link as the server, and a
      supplementary client link-layer address discovery method is necessary,
      the client inserts a CLLAO option <xref target="RFC6939"/> in its DHCPv6
      messages and writes any link-layer-specific values in the non-mutable
      portions of the "link-layer address" field as specified by the relevant
      "DHCPv6-over-(foo) document.</t>

      <t>When a DHCPv6 server is on the same link as the client, and the
      client includes a CLLAO option in a DHCPv6 message, the server's (foo)
      driver writes the client's observed link-layer address in the mutable
      portions of the "link-layer address" field of the option and delivers
      the message to the DHCPv6 server process. The server then processes the
      CLLAO option locally as necessary and returns the CLLAO option in its
      DHCPv6 replies.</t>

      <t>When a DHCPv6 relay on the same link as a client forwards the
      client's DHCPv6 messages, and the server requires a means for
      discovering the client's link-layer address, the relay follows the
      specifications in <xref target="RFC6939"/>.</t>

      <t>A DHCPv6 server MUST ignore a CLLAO option supplied by the client if
      it is not on the same link as the client.</t>

      <t>A DHCPv6 client SHOULD NOT include a CLLAO option if it is not on the
      same link as the server.</t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>This document introduces no IANA considerations.</t>
    </section>

    <section anchor="secure" title="Security Considerations">
      <t>The CLLAO suppled by the client may contain both a non-mutable
      portion and a mutable portion that is rewritten by the server's (foo)
      driver. When DHCPv6 authentication <xref target="RFC3315"/> and/or
      DHCPv6 Security <xref target="I-D.ietf-dhc-sedhcpv6"/> are used, the
      client and server MUST first write the value '0' in any mutable fields
      of the CLLAO in the client's DHCPv6 message before performing security
      transformations. When the server returns the CLLAO to the client in a
      DHCPv6 reply, however, it performs security transformations with the
      actual client link-layer address in the mutable fields rather than
      writing the value '0'.</t>

      <t>This means that the mutable portions of the client's link-layer
      address could be rewritten by a link-layer switching element on the path
      from the client to the server and not detected by the DHCPv6 security
      mechanism. However, such a condition would only be a matter of concern
      on unmanaged/unsecured links where the link-layer switching elements
      themselves present a man-in-the-middle attack threat. For this reason,
      IP security MUST be used when this mechanism is employed over
      unmanaged/unsecured links.</t>
    </section>

    <section anchor="ack" title="Acknowledgements">
      <t/>
    </section>
  </middle>

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

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

      <?rfc ?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.templin-aerolink"?>

      <?rfc include="reference.I-D.ietf-dhc-sedhcpv6"?>
    </references>
  </back>
</rfc>
