<?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 category="std" docName="draft-boucadair-dots-dhcp-01" ipr="trust200902">
  <front>
    <title abbrev="DHCP for MPTCP">DHCP Options for
    Distributed-Denial-of-Service Open Threat Signaling (DOTS)</title>

    <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
      <organization>Orange</organization>

      <address>
        <postal>
          <street></street>

          <city>Rennes</city>

          <region></region>

          <code>35000</code>

          <country>France</country>
        </postal>

        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>

    <date />

    <abstract>
      <t>It may not be possible for a network to determine the cause for an
      attack, but instead just realize that some resources seem to be under
      attack. To fill that gap, Distributed-Denial-of-Service Open Threat
      Signaling (DOTS) allows a network to inform a server that it is under a
      potential attack so that appropriate mitigation actions are
      undertaken.</t>

      <t>This document specifies DHCP (IPv4 and IPv6) options to configure
      hosts with DOTS servers.<!----></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>In many deployments, it may not be possible for a network to
      determine the cause for a distributed Denial-of-Service (DoS) attack
      <xref target="RFC4732"></xref>, but instead just realize that some
      resources seem to be under attack. To fill that gap, the IETF is
      specifying an architecture, called DDoS Open Threat Signaling (DOTS)
      <xref target="I-D.ietf-dots-architecture"></xref>, in which a DOTS
      client can inform a DOTS server that the network is under a potential
      attack and that appropriate mitigation actions are required. Indeed,
      because the lack of a common method to coordinate a real-time response
      among involved actors and network domains inhibits the effectiveness of
      DDoS attack mitigation, DOTS protocol is meant to carry requests for
      DDoS attack mitigation, thereby reducing the impact of an attack and
      leading to more efficient defensive actions. <xref
      target="I-D.ietf-dots-use-cases"></xref> identifies a set of scenarios
      for DOTS; almost all these scenarios involve a CPE.</t>

      <t>The basic high-level DOTS architecture is illustrated in <xref
      target="arch"></xref> (<xref
      target="I-D.ietf-dots-architecture"></xref>):</t>

      <t><figure align="center" anchor="arch" title="Basic DOTS Architecture">
          <artwork><![CDATA[       +-----------+            +-------------+
       | Mitigator | ~~~~~~~~~~ | DOTS Server |
       +-----------+            +-------------+
                                       |
                                       |
                                       |
       +---------------+        +-------------+
       | Attack Target | ~~~~~~ | DOTS Client |
       +---------------+        +-------------+
]]></artwork>
        </figure></t>

      <t><xref target="I-D.ietf-dots-architecture"></xref> specifies that the
      DOTS client may be provided with a list of DOTS servers; each associated
      with one or more IP addresses. These addresses may or may not be of the
      same address family. The DOTS client establishes one or more signaling
      sessions by connecting to the provided DOTS server addresses.</t>

      <t>To that aim, this document defines DHCPv4 <xref
      target="RFC2131"></xref> and DHCPv6 <xref target="RFC3315"></xref>
      options that can be used to configure hosts, embedding a DOTS client,
      with DOTS servers' names. These names will be resolved into one or a
      list of IP addresses. </t>

      <t>The use of DHCP for DOTS provisioning is justified because many of
      the target use cases identified in <xref
      target="I-D.ietf-dots-use-cases"></xref> involve CPEs; these devices
      widely support DHCP.</t>

      <t>Also, the use of DHCP to provision a name that will be resolved into
      one or many unicast address(es) of the appropriate DOTS server
      instance(s) to contact does not suffer from the complications
      encountered if a anycast address is used (see Section 3.2.4.1 of <xref
      target="I-D.ietf-dots-architecture"></xref>). The use of DHCP ensures a
      deterministic behavior.</t>
    </section>

    <section title="Terminology">
      <t>This document makes use of the following terms:<?rfc subcompact="yes" ?></t>

      <t><list style="symbols">
          <t>DOTS client: A DOTS-aware software module responsible for
          requesting attack response coordination with other DOTS-aware
          elements.</t>

          <t>DOTS server: A DOTS-aware software module handling and responding
          to messages from DOTS clients. The DOTS server should enable
          mitigation on behalf of the DOTS client, if requested, by
          communicating the DOTS client's request to the mitigator and
          returning selected mitigator feedback to the requesting DOTS client.
          A DOTS server may also be a mitigator.</t>

          <t>DDoS: A distributed Denial-of-Service attack, in which traffic
          originating from multiple sources are directed at a target on a
          network. DDoS attacks are intended to cause a negative impact on the
          availability of servers, services, applications, and/or other
          functionality of an attack target.</t>

          <t>DHCP refers to both DHCPv4 <xref target="RFC2131"></xref> and
          DHCPv6 <xref target="RFC3315"></xref>.</t>

          <t>DHCP client denotes a node that initiates requests to obtain
          configuration parameters from one or more DHCP servers.</t>

          <t>DHCP server refers to a node that responds to requests from DHCP
          clients.</t>
        </list><?rfc subcompact="no" ?></t>
    </section>

    <section title="Design Rationale">
      <t>As reported in Section 1.7.2 of <xref target="RFC6125"></xref>, "few
      certification authorities issue server certificates based on IP
      addresses, but preliminary evidence indicates that such certificates are
      a very small percentage (less than 1%) of issued certificates". In order
      to allow for PKIX-based authentication between a DOTS client and server,
      this document specifies the DHCP option as a name. One or multiple IP
      addresses may be returned as a result of name resolution.</t>

      <t>Defining the option to include a list of IP addresses would avoid a
      dependency on an underlying name resolution, but that design requires to
      also supply a name for PKIX-based authentication purposes. </t>

      <t>Because aliasing is to be avoided (Section 7 of <xref
      target="RFC7227"></xref>), this document specifies one single option
      that conveys a DOTS server's name.</t>
    </section>

    <section title="DHCPv6 DOTS Option">
      <t></t>

      <section title="Format">
        <t>The DHCPv6 DOTS option is used to configure a name of the DOTS
        server. The format of this option is shown in <xref
        target="dhcpv6_option"></xref>.</t>

        <t><figure anchor="dhcpv6_option" title="DHCPv6 DOTS option">
            <artwork><![CDATA[    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_V6_DOTS            |         Option-length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                      dots-server-name (FQDN)                  |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure>The fields of the option shown in <xref
        target="dhcpv6_option"></xref> are as follows:<?rfc subcompact="yes" ?></t>

        <t><list style="symbols">
            <t>Option-code: OPTION_V6_DOTS (TBA, see <xref
            target="iana6"></xref>)</t>

            <t>Option-length: Length of the dots-server-name field in
            octets.</t>

            <t>dots-server-name: A fully qualified domain name of the DOTS
            server. This field is formatted as specified in Section 8 of <xref
            target="RFC3315"></xref>.</t>
          </list></t>

        <t><?rfc subcompact="no" ?>An example of the dots-server-name encoding
        is shown in <xref target="fqdn"></xref>. This example conveys the FQDN
        "dots.example.com.".</t>

        <t><figure anchor="fqdn" title="An example">
            <artwork><![CDATA[      +------+------+------+------+------+------+------+------+------+
      | 0x04 |   d  |   o  |   t  |  s   | 0x07 |   e  |   x  |   a  |
      +------+------+------+------+------+------+------+------+------+
      |   m  |   p  |   l  |   e  | 0x03 |   c  |   o  |   m  | 0x00 |
      +------+------+------+------+------+------+------+------+------+
]]></artwork>
          </figure></t>

        <t></t>
      </section>

      <section title="DHCPv6 Client Behavior">
        <t>Clients MAY request option OPTION_V6_DOTS, as defined in <xref
        target="RFC3315"></xref>, Sections 17.1.1, 18.1.1, 18.1.3, 18.1.4,
        18.1.5, and 22.7. As a convenience to the reader, we mention here that
        the client includes requested option codes in the Option Request
        Option.</t>

        <t>If the DHCP client receives more than one OPTION_V6_DOTS option, it
        MUST use only the first instance of that option.</t>

        <t>If the OPTION_V6_DOTS option contains more than one name, as
        distinguished by the presence of multiple root labels, the DHCP client
        MUST use only the first name. Once the name is validated (Section 8 of
        <xref target="RFC3315"></xref>), the name is passed to a name
        resolution library.</t>
      </section>
    </section>

    <section title="DHCPv4 DOTS Option">
      <t></t>

      <section title="Format">
        <t>The DHCPv4 DOTS option is used to configure a name of the DOTS
        server. The format of this option is illustrated in <xref
        target="dhcp_dots"></xref>.</t>

        <t><figure anchor="dhcp_dots" title="DHCPv4 DOTS option">
            <artwork><![CDATA[
          Code  Length   DOTS server name
         +-----+-----+-----+-----+-----+-----+-----+--
         | TBA |  n  |  s1 |  s2 |  s3 |  s4 | s5  |  ...
         +-----+-----+-----+-----+-----+-----+-----+--

   The values s1, s2, s3, etc. represent the domain name labels in the
   domain name encoding.

]]></artwork>
          </figure></t>

        <t>The fields of the option shown in <xref target="dhcp_dots"></xref>
        are as follows:<?rfc subcompact="yes" ?><list style="symbols">
            <t>Code: OPTION_V4_DOTS (TBA, see <xref
            target="iana4"></xref>);</t>

            <t>Length: Includes the length of the "DOTS server name" field in
            octets; the maximum length is 255 octets.</t>

            <t>DOTS server name: The domain name of the DOTS server. This
            field is formatted as specified in Section 8 of <xref
            target="RFC3315"></xref>.</t>
          </list></t>

        <t><?rfc subcompact="no" ?></t>
      </section>

      <section title="DHCPv4 Client Behavior">
        <t>To discover a DOTS server, the DHCPv4 client MUST include
        OPTION_V4_DOTS in a Parameter Request List Option <xref
        target="RFC2132"></xref>.</t>

        <t>If the DHCP client receives more than one OPTION_V4_DOTS option, it
        MUST use only the first instance of that option.</t>

        <t>If the OPTION_V4_DOTS option contains more than one name, as
        distinguished by the presence of multiple root labels, the DHCP client
        MUST use only the first FQDN. Once the name is validated (Section 8 of
        <xref target="RFC3315"></xref>), the name is passed to a name
        resolution library.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The security considerations in <xref target="RFC2131"></xref> and
      <xref target="RFC3315"></xref> are to be considered.</t>

      <t>DOTS-related security considerations are discussed in Section 4 of
      <xref target="I-D.ietf-dots-architecture"></xref>.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t></t>

      <section anchor="iana6" title="DHCPv6 Option">
        <t>IANA is requested to assign the following new DHCPv6 Option Code in
        the registry maintained in
        http://www.iana.org/assignments/dhcpv6-parameters:</t>

        <texttable style="headers">
          <ttcol align="right">Option Name</ttcol>

          <ttcol>Value</ttcol>

          <c>OPTION_V6_DOTS</c>

          <c>TBA</c>
        </texttable>
      </section>

      <section anchor="iana4" title="DHCPv4 Option">
        <t>IANA is requested to assign the following new DHCPv4 Option Code in
        the registry maintained in
        http://www.iana.org/assignments/bootp-dhcp-parameters/:</t>

        <texttable style="headers">
          <ttcol align="right">Option Name</ttcol>

          <ttcol>Value</ttcol>

          <ttcol>Data length</ttcol>

          <ttcol>Meaning</ttcol>

          <c>OPTION_V4_DOTS</c>

          <c>TBA</c>

          <c>Variable; the maximum length is 255 octets.</c>

          <c>Includes the name of the DOTS server.</c>
        </texttable>

        <t></t>
      </section>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Many thanks to Tiru Reddy for his comments.</t>
    </section>
  </middle>

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

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

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

      <?rfc include='reference.RFC.2132'?>

      <?rfc include='reference.I-D.ietf-dots-architecture'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.7227'?>

      <?rfc include='reference.RFC.4732'?>

      <?rfc include='reference.RFC.6125'?>

      <?rfc include='reference.I-D.ietf-dots-use-cases'?>
    </references>
  </back>
</rfc>
