<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.7 -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC0768 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0768.xml">
<!ENTITY RFC0791 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml">
<!ENTITY RFC0793 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0793.xml">
<!ENTITY RFC1035 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
<!ENTITY RFC1122 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1122.xml">
<!ENTITY RFC1191 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1191.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
<!ENTITY RFC4291 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4291.xml">
<!ENTITY RFC4632 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4632.xml">
<!ENTITY RFC4787 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4787.xml">
<!ENTITY RFC4821 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4821.xml">
<!ENTITY RFC5952 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5952.xml">
<!ENTITY RFC6888 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6888.xml">
<!ENTITY RFC7857 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7857.xml">
<!ENTITY RFC8085 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8085.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY I-D.ietf-dots-architecture SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dots-architecture.xml">
<!ENTITY I-D.ietf-dots-use-cases SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dots-use-cases.xml">
<!ENTITY I-D.ietf-intarea-frag-fragile SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-intarea-frag-fragile.xml">
<!ENTITY RFC3261 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3261.xml">
<!ENTITY RFC7092 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7092.xml">
<!ENTITY RFC4732 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4732.xml">
<!ENTITY RFC4949 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4949.xml">
<!ENTITY RFC8200 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC7525 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7525.xml">
]>
<?rfc toc="yes"?>
<?rfc sortrefs="no"?>
<?rfc symrefs="yes"?>
<rfc category="info" docName="draft-ietf-dots-requirements-22">
  <front>
    <title abbrev="DOTS Requirements">Distributed Denial of Service (DDoS)
    Open Threat Signaling Requirements</title>

    <author fullname="Andrew Mortensen" initials="A." surname="Mortensen">
      <organization>Arbor Networks</organization>

      <address>
        <postal>
          <street>2727 S. State St</street>

          <city>Ann Arbor, MI</city>

          <code>48104</code>

          <country>United States</country>
        </postal>

        <email>andrewmortensen@gmail.com</email>
      </address>
    </author>

    <author fullname="Tirumaleswar Reddy" initials="T." surname="Reddy">
      <organization>McAfee</organization>

      <address>
        <postal>
          <street>Embassy Golf Link Business Park</street>

          <city>Bangalore, Karnataka</city>

          <code>560071</code>

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

        <email>TirumaleswarReddy_Konda@McAfee.com</email>
      </address>
    </author>

    <author fullname="Robert Moskowitz" initials="R." surname="Moskowitz">
      <organization>Huawei</organization>

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

          <city>Oak Park, MI</city>

          <code>42837</code>

          <country>United States</country>
        </postal>

        <email>rgm@htt-consult.com</email>
      </address>
    </author>

    <date day="23" month="March" year="2019" />

    <area>Security</area>

    <workgroup>DOTS</workgroup>

    <keyword>Internet-Draft</keyword>

    <abstract>
      <t>This document defines the requirements for the Distributed Denial of
      Service (DDoS) Open Threat Signaling (DOTS) protocols enabling
      coordinated response to DDoS attacks.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="problems" title="Introduction">
      <section anchor="context-and-motivation" title="Context and Motivation">
        <t>Distributed Denial of Service (DDoS) attacks afflict networks
        connected to the Internet, plaguing network operators at service
        providers and enterprises around the world. High-volume attacks
        saturating inbound links are now common, as attack scale and frequency
        continue to increase.</t>

        <t>The prevalence and impact of these DDoS attacks has led to an
        increased focus on coordinated attack response. However, many
        enterprises lack the resources or expertise to operate on-premises
        attack mitigation solutions themselves, or are constrained by local
        bandwidth limitations. To address such gaps, service providers have
        begun to offer on-demand traffic scrubbing services, which are
        designed to separate the DDoS attack traffic from legitimate traffic
        and forward only the latter.</t>

        <t>Today, these services offer proprietary interfaces for subscribers
        to request attack mitigation. Such proprietary interfaces tie a
        subscriber to a service and limit the abilities of network elements
        that would otherwise be capable of participating in attack mitigation.
        As a result of signaling interface incompatibility, attack responses
        may be fragmented or otherwise incomplete, leaving operators in the
        attack path unable to assist in the defense.</t>

        <t>A standardized method to coordinate a real-time response among
        involved operators will increase the speed and effectiveness of DDoS
        attack mitigation, and reduce the impact of these attacks. This
        document describes the required characteristics of protocols that
        enable attack response coordination and mitigation of DDoS
        attacks.</t>

        <t>DDoS Open Threat Signaling (DOTS) communicates the need for
        defensive action in anticipation of or in response to an attack, but
        does not dictate the implementation of these actions. The DOTS use
        cases are discussed in <xref target="I-D.ietf-dots-use-cases"></xref>
        and the DOTS architecture is discussed in <xref
        target="I-D.ietf-dots-architecture"></xref>.</t>
      </section>

      <section anchor="terminology" title="Terminology">
        <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 BCP14 <xref
        target="RFC2119"></xref> <xref target="RFC8174"></xref>, when, and
        only when, they appear in all capitals. These capitalized words are
        used to signify the requirements for DOTS protocols design.</t>

        <t>This document adopts the following terms:</t>

        <t><list style="hanging">
            <t hangText="DDoS:">A distributed denial-of-service attack, in
            which traffic originating from multiple sources is directed at a
            target on a network. DDoS attacks are intended to cause a negative
            impact on the availability and/or other functionality of an attack
            target. Denial-of-service considerations are discussed in detail
            in <xref target="RFC4732"></xref>.</t>

            <t hangText="DDoS attack target:">A network connected entity that
            is the target of a DDoS attack. Potential targets include (but are
            not limited to) network elements, network links, servers, and
            services.</t>

            <t hangText="DDoS attack telemetry:">Collected measurements and
            behavioral characteristics defining the nature of a DDoS
            attack.</t>

            <t hangText="Countermeasure:">An action or set of actions focused
            on recognizing and filtering out specific types of DDoS attack
            traffic while passing legitimate traffic to the attack target.
            Distinct countermeasures can be layered to defend against attacks
            combining multiple DDoS attack types.</t>

            <t hangText="Mitigation:">A set of countermeasures enforced
            against traffic destined for the target or targets of a detected
            or reported DDoS attack, where countermeasure enforcement is
            managed by an entity in the network path between attack sources
            and the attack target. Mitigation methodology is out of scope for
            this document.</t>

            <t hangText="Mitigator:">An entity, typically a network element,
            capable of performing mitigation of a detected or reported DDoS
            attack. The means by which this entity performs these mitigations
            and how they are requested of it are out of scope for this
            document. The mitigator and DOTS server receiving a mitigation
            request are assumed to belong to the same administrative
            entity.</t>

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

            <t hangText="DOTS server:">A DOTS-aware software module handling
            and responding to messages from DOTS clients. The DOTS server
            enables 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.</t>

            <t hangText="DOTS agent:">Any DOTS-aware software module capable
            of participating in a DOTS signal or data channel. It can be a
            DOTS client, DOTS server, or, as a logical agent, a DOTS
            gateway.</t>

            <t hangText="DOTS gateway:">A DOTS-aware software module resulting
            from the logical concatenation of the functionality of a DOTS
            server and a DOTS client into a single DOTS agent. This
            functionality is analogous to a Session Initiation Protocol (SIP)
            <xref target="RFC3261"></xref> Back-to-Back User Agent (B2BUA)
            <xref target="RFC7092"></xref>. A DOTS gateway has a client-facing
            side, which behaves as a DOTS server for downstream clients, and a
            server-facing side, which performs the role of DOTS client for
            upstream DOTS servers. Client-domain DOTS gateways are DOTS
            gateways that are in the DOTS client's domain, while server-domain
            DOTS gateways denote DOTS gateways that are in the DOTS server's
            domain. A DOTS gateway may terminate multiple discrete DOTS client
            connections and may aggregate these into a single or multiple
            connections. DOTS gateways are described further in <xref
            target="I-D.ietf-dots-architecture"></xref>.</t>

            <t hangText="Signal channel:">A bidirectional, mutually
            authenticated communication channel between DOTS agents that is
            resilient even in conditions leading to severe packet loss, such
            as a volumetric DDoS attack causing network congestion.</t>

            <t hangText="DOTS signal:">A status/control message transmitted
            over the authenticated signal channel between DOTS agents, used to
            indicate the client's need for mitigation, or to convey the status
            of any requested mitigation.</t>

            <t hangText="Heartbeat:">A message transmitted between DOTS agents
            over the signal channel, used as a keep-alive and to measure peer
            health.</t>

            <t hangText="Data channel:">A bidirectional, mutually
            authenticated communication channel between two DOTS agents used
            for infrequent but reliable bulk exchange of data not easily or
            appropriately communicated through the signal channel. Reliable
            bulk data exchange may not function well or at all during attacks
            causing network congestion. The data channel is not expected to
            operate in such conditions.</t>

            <t hangText="Filter:">A specification of a matching network
            traffic flow or set of flows. The filter will typically have a
            policy associated with it, e.g., rate-limiting or discarding
            matching traffic <xref target="RFC4949"></xref>.</t>

            <t hangText="Drop-list:">A list of filters indicating sources from
            which traffic should be blocked, regardless of traffic
            content.</t>

            <t hangText="Accept-list:">A list of filters indicating sources
            from which traffic should always be allowed, regardless of
            contradictory data gleaned in a detected attack.</t>

            <t hangText="Multi-homed DOTS client:">A DOTS client exchanging
            messages with multiple DOTS servers, each in a separate
            administrative domain.</t>
          </list></t>
      </section>
    </section>

    <section anchor="requirements" title="Requirements">
      <t>The expected layout and interactions amongst DOTS entities is
      described in the DOTS Architecture <xref
      target="I-D.ietf-dots-architecture"></xref>.</t>

      <t>The goal of the DOTS requirements specification is to specify the
      requirements for DOTS signal channel and data channel protocols that
      have different application and transport layer requirements. This
      section describes the required features and characteristics of the DOTS
      protocols.</t>

      <t>The goal of DOTS protocols is to enable and manage mitigation on
      behalf of a network domain or resource which is or may become the focus
      of a DDoS attack. An active DDoS attack against the entity controlling
      the DOTS client need not be present before establishing a communication
      channel between DOTS agents. Indeed, establishing a relationship with
      peer DOTS agents during normal network conditions provides the
      foundation for more rapid attack response against future attacks, as all
      interactions setting up DOTS, including any business or service level
      agreements, are already complete. Reachability information of peer DOTS
      agents is provisioned to a DOTS client using a variety of manual or
      dynamic methods. Once a relationship between DOTS agents is established,
      regular communication between DOTS clients and servers enables a common
      understanding of the DOTS agents' health and activity.</t>

      <t>The DOTS protocol must at a minimum make it possible for a DOTS
      client to request aid mounting a defense against a suspected attack.
      This defense could be coordinated by a DOTS server and include signaling
      within or between domains as requested by local operators. DOTS clients
      should similarly be able to withdraw aid requests. DOTS requires no
      justification from DOTS clients for requests for help, nor do DOTS
      clients need to justify withdrawing help requests: the decision is local
      to the DOTS clients' domain. Multi-homed DOTS clients must be able to
      select the appropriate DOTS server(s) to which a mitigation request is
      to be sent. The method for selecting the appropriate DOTS server in a
      multi-homed environment is out of scope for this document.</t>

      <t>DOTS protocol implementations face competing operational goals when
      maintaining this bidirectional communication stream. On the one hand,
      DOTS must include measures to ensure message confidentiality, integrity,
      authenticity, and replay protection to keep the protocols from becoming
      additional vectors for the very attacks it is meant to help fight off.
      On the other hand, the protocol must be resilient under extremely
      hostile network conditions, providing continued contact between DOTS
      agents even as attack traffic saturates the link. Such resiliency may be
      developed several ways, but characteristics such as small message size,
      asynchronous, redundant message delivery and minimal connection overhead
      (when possible given local network policy) will tend to contribute to
      the robustness demanded by a viable DOTS protocol. Operators of peer
      DOTS-enabled domains may enable quality- or class-of-service traffic
      tagging to increase the probability of successful DOTS signal delivery,
      but DOTS does not require such policies be in place, and should be
      viable in their absence.</t>

      <t>The DOTS server and client must also have some standardized method of
      defining the scope of any mitigation, as well as managing other
      mitigation-related configuration.</t>

      <t>Finally, DOTS should be sufficiently extensible to meet future needs
      in coordinated attack defense, although this consideration is
      necessarily superseded by the other operational requirements.</t>

      <section anchor="general-requirements" title="General Requirements">
        <t><list style="hanging">
            <t hangText="GEN-001">Extensibility: Protocols and data models
            developed as part of DOTS MUST be extensible in order to keep DOTS
            adaptable to proprietary DDoS defenses. Future extensions MUST be
            backward compatible. Implementations of older protocol versions
            MUST ignore optional information added to DOTS messages as part of
            newer protocol versions. Implementations of older protocol
            versions MUST reject DOTS messages carrying mandatory information
            as part of newer protocol versions.</t>

            <t hangText="GEN-002">Resilience and Robustness: The signaling
            protocol MUST be designed to maximize the probability of signal
            delivery even under the severely constrained network conditions
            caused by attack traffic. Additional means to enhance the
            resilience of DOTS protocols, including when multiple DOTS servers
            are provisioned to the DOTS clients, SHOULD be considered. The
            protocol MUST be resilient, that is, continue operating despite
            message loss and out-of-order or redundant message delivery. In
            support of signaling protocol robustness, DOTS signals SHOULD be
            conveyed over transport and application protocols not susceptible
            to Head of Line Blocking. These requirements are at SHOULD
            strength to handle middle-boxes and firewall traversal.</t>

            <t hangText="GEN-003">Bulk Data Exchange: Infrequent bulk data
            exchange between DOTS agents can also significantly augment attack
            response coordination, permitting such tasks as population of
            drop- or accept-listed source addresses; address or prefix group
            aliasing; exchange of incident reports; and other hinting or
            configuration supplementing attack response.</t>

            <t>As the resilience requirements for the DOTS signal channel
            mandate small signal message size, a separate, secure data channel
            utilizing a reliable transport protocol MUST be used for bulk data
            exchange. However, reliable bulk data exchange may not be possible
            during attacks causing network congestion.</t>

            <t hangText="GEN-004">Mitigation Hinting: DOTS clients may have
            access to attack details which can be used to inform mitigation
            techniques. Example attack details might include locally collected
            fingerprints for an on-going attack, or anticipated or active
            attack focal points based on other threat intelligence. DOTS
            clients MAY send mitigation hints derived from attack details to
            DOTS servers, in the full understanding that the DOTS server MAY
            ignore mitigation hints. Mitigation hints MUST be transmitted
            across the signal channel, as the data channel may not be
            functional during an attack. DOTS server handling of mitigation
            hints is implementation-specific.</t>

            <t hangText="GEN-005">Loop Handling: In certain scenarios,
            typically involving misconfiguration of DNS or routing policy, it
            may be possible for communication between DOTS agents to loop.
            Signal and data channel implementations should be prepared to
            detect and terminate such loops to prevent service disruption.</t>
          </list></t>
      </section>

      <section anchor="signal-channel-requirements"
               title="Signal Channel Requirements">
        <t><list style="hanging">
            <t hangText="SIG-001">Use of Common Transport Protocols: DOTS MUST
            operate over common widely deployed and standardized transport
            protocols. While connectionless transport such as the User
            Datagram Protocol (UDP) <xref target="RFC0768"></xref> SHOULD be
            used for the signal channel, the Transmission Control Protocol
            (TCP) <xref target="RFC0793"></xref> MAY be used if necessary due
            to network policy or middlebox capabilities or configurations.</t>

            <t hangText="SIG-002">Sub-MTU Message Size: To avoid message
            fragmentation and the consequently decreased probability of
            message delivery over a congested link, signaling protocol message
            size MUST be kept under signaling Path Maximum Transmission Unit
            (PMTU), including the byte overhead of any encapsulation,
            transport headers, and transport- or message-level security. If
            the total message size exceeds the path MTU, the DOTS agent MUST
            split the message into separate messages; for example, the list of
            mitigation scope types could be split into multiple lists and each
            list conveyed in a new message.</t>

            <t>DOTS agents can attempt to learn PMTU using the procedures
            discussed in <xref target="I-D.ietf-intarea-frag-fragile"></xref>.
            If the PMTU cannot be discovered, DOTS agents MUST assume a PMTU
            of 1280 bytes, as IPv6 requires that every link in the Internet
            have an MTU of 1280 octets or greater as specified in <xref
            target="RFC8200"></xref>. If IPv4 support on legacy or otherwise
            unusual networks is a consideration and the PMTU is unknown, DOTS
            implementations MAY assume on a PMTU of 576 bytes for IPv4
            datagrams, as every IPv4 host must be capable of receiving a
            packet whose length is equal to 576 bytes as discussed in <xref
            target="RFC0791"></xref> and <xref target="RFC1122"></xref>.</t>

            <t hangText="SIG-003">Bidirectionality: To support peer health
            detection, to maintain an active signal channel, and to increase
            the probability of signal delivery during an attack, the signal
            channel MUST be bidirectional, with client and server transmitting
            signals to each other at regular intervals, regardless of any
            client request for mitigation. The bidirectional signal channel
            MUST support unidirectional messaging to enable notifications
            between DOTS agents.</t>

            <t hangText="SIG-004">Channel Health Monitoring: DOTS agents MUST
            support exchange of heartbeat messages over the signal channel to
            monitor channel health. These keepalives serve the purpose to
            maintain any on-path NAT or Firewall bindings to avoid
            cryptographic handshake for new mitigation requests. The heartbeat
            interval during active mitigation could be negotiable based on
            NAT/Firewall characteristics. Absent information about the
            NAT/Firewall characteristics, DOTS agent needs to ensure its
            on-path NAT or Firewall bindings do not expire, by using the
            keep-alive frequency discussed in Section 3.5 of <xref
            target="RFC8085"></xref>.</t>

            <t>To support scenarios in which loss of heartbeat is used to
            trigger mitigation, and to keep the channel active, DOTS servers
            MUST solicit heartbeat exchanges after successful mutual
            authentication. When DOTS agents are exchanging heartbeats and no
            mitigation request is active, either agent MAY request changes to
            the heartbeat rate. For example, a DOTS server might want to
            reduce heartbeat frequency or cease heartbeat exchanges when an
            active DOTS client has not requested mitigation, in order to
            control load.</t>

            <t>Following mutual authentication, a signal channel MUST be
            considered active until a DOTS agent explicitly ends the session.
            When no attack traffic is present, the signal channel MUST be
            considered active until either DOTS agent fails to receive
            heartbeats from the other peer after a mutually agreed upon
            retransmission procedure has been exhausted. Peer DOTS agents MUST
            regularly send heartbeats to each other while a mitigation request
            is active. Because heartbeat loss is much more likely during
            volumetric attack, DOTS agents SHOULD avoid signal channel
            termination when mitigation is active and heartbeats are not
            received by either DOTS agent for an extended period. The
            exception circumstances to terminate the signal channel session
            during active mitigation are discussed below:</t>

            <t><list style="symbols">
                <t>To handle possible DOTS server restart or crash, the DOTS
                clients MAY attempt to establish a new signal channel session,
                but MUST continue to send heartbeats on the current session so
                that the DOTS server knows the session is still alive. If the
                new session is successfully established, the DOTS client can
                terminate the current session.</t>

                <t>DOTS servers are assumed to have the ability to monitor the
                attack, using feedback from the mitigator and other available
                sources, and MAY use the absence of attack traffic and lack of
                client heartbeats as an indication the signal channel is
                defunct.</t>
              </list></t>

            <t hangText="SIG-005">Channel Redirection: In order to increase
            DOTS operational flexibility and scalability, DOTS servers SHOULD
            be able to redirect DOTS clients to another DOTS server at any
            time. DOTS clients MUST NOT assume the redirection target DOTS
            server shares security state with the redirecting DOTS server.
            DOTS clients are free to attempt abbreviated security negotiation
            methods supported by the protocol, such as DTLS session
            resumption, but MUST be prepared to negotiate new security state
            with the redirection target DOTS server. The redirection DOTS
            server and redirecting DOTS server MUST belong to the same
            administrative domain.</t>

            <t>Due to the increased likelihood of packet loss caused by link
            congestion during an attack, DOTS servers SHOULD NOT redirect
            while mitigation is enabled during an active attack against a
            target in the DOTS client's domain.</t>

            <t hangText="SIG-006">Mitigation Requests and Status: Authorized
            DOTS clients MUST be able to request scoped mitigation from DOTS
            servers. DOTS servers MUST send status to the DOTS clients about
            mitigation requests. If a DOTS server rejects an authorized
            request for mitigation, the DOTS server MUST include a reason for
            the rejection in the status message sent to the client.</t>

            <t>DOTS servers MUST regularly send mitigation status updates to
            authorized DOTS clients which have requested and been granted
            mitigation. If unreliable transport is used for the signal channel
            protocol, due to the higher likelihood of packet loss during a
            DDoS attack, DOTS servers needs to send mitigation status multiple
            times at regular intervals following the the data transmission
            guidelines discussed in Section 3.1.3 of <xref
            target="RFC8085"></xref>.</t>

            <t>When DOTS client-requested mitigation is active, DOTS server
            status messages MUST include the following mitigation metrics:
            <list style="symbols">
                <t>Total number of packets blocked by the mitigation</t>

                <t>Current number of packets per second blocked</t>

                <t>Total number of bytes blocked</t>

                <t>Current number of bytes per second blocked</t>
              </list></t>

            <t>DOTS clients MAY take these metrics into account when
            determining whether to ask the DOTS server to cease
            mitigation.</t>

            <t>A DOTS client MAY withdraw a mitigation request at any time,
            regardless of whether mitigation is currently active. The DOTS
            server MUST immediately acknowledge a DOTS client's request to
            stop mitigation.</t>

            <t>To protect against route or DNS flapping caused by a client
            rapidly toggling mitigation, and to dampen the effect of
            oscillating attacks, DOTS servers MAY allow mitigation to continue
            for a limited period after acknowledging a DOTS client's
            withdrawal of a mitigation request. During this period, DOTS
            server status messages SHOULD indicate that mitigation is active
            but terminating. DOTS clients MAY reverse the mitigation
            termination during this active-but-terminating period with a new
            mitigation request for the same scope. The DOTS server MUST treat
            this request as a mitigation lifetime extension (see SIG-007
            below).</t>

            <t>The initial active-but-terminating period is implementation-
            and deployment- specific, but SHOULD be sufficiently long to
            absorb latency incurred by route propagation. If a DOTS client
            refreshes the mitigation before the active-but-terminating period
            elapses, the DOTS server MAY increase the active-but-terminating
            period up to a maximum of 300 seconds (5 minutes). After the
            active-but-terminating period elapses, the DOTS server MUST treat
            the mitigation as terminated, as the DOTS client is no longer
            responsible for the mitigation.</t>

            <t hangText="SIG-007">Mitigation Lifetime: DOTS servers MUST
            support mitigations for a negotiated time interval, and MUST
            terminate a mitigation when the lifetime elapses. DOTS servers
            also MUST support renewal of mitigation lifetimes in mitigation
            requests from DOTS clients, allowing clients to extend mitigation
            as necessary for the duration of an attack.</t>

            <t>DOTS servers MUST treat a mitigation terminated due to lifetime
            expiration exactly as if the DOTS client originating the
            mitigation had asked to end the mitigation, including the
            active-but-terminating period, as described above in SIG-005.</t>

            <t>DOTS clients MUST include a mitigation lifetime in all
            mitigation requests.</t>

            <t>DOTS servers SHOULD support indefinite mitigation lifetimes,
            enabling architectures in which the mitigator is always in the
            traffic path to the resources for which the DOTS client is
            requesting protection. DOTS clients MUST be prepared to not be
            granted mitigations with indefinite lifetimes. DOTS servers MAY
            refuse mitigations with indefinite lifetimes, for policy reasons.
            The reasons themselves are out of scope. If the DOTS server does
            not grant a mitigation request with an indefinite mitigation
            lifetime, it MUST set the lifetime to a value that is configured
            locally. That value MUST be returned in a reply to the requesting
            DOTS client.</t>

            <t hangText="SIG-008">Mitigation Scope: DOTS clients MUST indicate
            desired mitigation scope. The scope type will vary depending on
            the resources requiring mitigation. All DOTS agent implementations
            MUST support the following required scope types: <list
                style="symbols">
                <t>IPv4 prefixes <xref target="RFC4632"></xref></t>

                <t>IPv6 prefixes <xref target="RFC4291"></xref><xref
                target="RFC5952"></xref></t>

                <t>Domain names <xref target="RFC1035"></xref></t>
              </list></t>

            <t>The following mitigation scope types are OPTIONAL: <list
                style="symbols">
                <t>Uniform Resource Identifiers <xref
                target="RFC3986"></xref></t>
              </list></t>

            <t>DOTS servers MUST be able to resolve domain names and (when
            supported) URIs. How name resolution is managed on the DOTS server
            is implementation-specific.</t>

            <t>DOTS agents MUST support mitigation scope aliases, allowing
            DOTS clients and servers to refer to collections of protected
            resources by an opaque identifier created through the data
            channel, direct configuration, or other means. Domain name and URI
            mitigation scopes may be thought of as a form of scope alias, in
            which the addresses to which the domain name or URI resolve
            represent the full scope of the mitigation.</t>

            <t>If there is additional information available narrowing the
            scope of any requested attack response, such as targeted port
            range, protocol, or service, DOTS clients SHOULD include that
            information in client mitigation requests. DOTS clients MAY also
            include additional attack details. DOTS servers MAY ignore such
            supplemental information when enabling countermeasures on the
            mitigator.</t>

            <t>As an active attack evolves, DOTS clients MUST be able to
            adjust as necessary the scope of requested mitigation by refining
            the scope of resources requiring mitigation.</t>

            <t>A DOTS client may obtain the mitigation scope through direct
            provisioning or through implementation-specific methods of
            discovery. DOTS clients MUST support at least one mechanism to
            obtain mitigation scope.</t>

            <t hangText="SIG-009">Mitigation Efficacy: When a mitigation
            request is active, DOTS clients MUST be able to transmit a metric
            of perceived mitigation efficacy to the DOTS server. DOTS servers
            MAY use the efficacy metric to adjust countermeasures activated on
            a mitigator on behalf of a DOTS client.</t>

            <t hangText="SIG-010">Conflict Detection and Notification:
            Multiple DOTS clients controlled by a single administrative entity
            may send conflicting mitigation requests as a result of
            misconfiguration, operator error, or compromised DOTS clients.
            DOTS servers in the same administrative domain attempting to honor
            conflicting requests may flap network route or DNS information,
            degrading the networks attempting to participate in attack
            response with the DOTS clients. DOTS servers in a single
            administrative domain SHALL detect such conflicting requests, and
            SHALL notify the DOTS clients in conflict. The notification MUST
            indicate the nature and scope of the conflict, for example, the
            overlapping prefix range in a conflicting mitigation request.</t>

            <t hangText="SIG-011">Network Address Translator Traversal: DOTS
            clients may be deployed behind a Network Address Translator (NAT),
            and need to communicate with DOTS servers through the NAT. DOTS
            protocols MUST therefore be capable of traversing NATs.</t>

            <t>If UDP is used as the transport for the DOTS signal channel,
            all considerations in "Middlebox Traversal Guidelines" in <xref
            target="RFC8085"></xref> apply to DOTS. Regardless of transport,
            DOTS protocols MUST follow established best common practices
            established in BCP 127 for NAT traversal <xref
            target="RFC4787"></xref><xref target="RFC6888"></xref><xref
            target="RFC7857"></xref>.</t>
          </list></t>
      </section>

      <section anchor="data-channel-requirements"
               title="Data Channel Requirements">
        <t>The data channel is intended to be used for bulk data exchanges
        between DOTS agents. Unlike the signal channel, the data channel is
        not expected to be constructed to deal with attack conditions. As the
        primary function of the data channel is data exchange, a reliable
        transport is required in order for DOTS agents to detect data delivery
        success or failure.</t>

        <t>The data channel provides a protocol for DOTS configuration,
        management. For example, a DOTS client may submit to a DOTS server a
        collection of prefixes it wants to refer to by alias when requesting
        mitigation, to which the server would respond with a success status
        and the new prefix group alias, or an error status and message in the
        event the DOTS client's data channel request failed.</t>

        <t><list style="hanging">
            <t hangText="DATA-001">Reliable transport: Messages sent over the
            data channel MUST be delivered reliably, in order sent.</t>

            <t hangText="DATA-003">Resource Configuration: To help meet the
            general and signal channel requirements in <xref
            target="general-requirements"></xref> and <xref
            target="signal-channel-requirements"></xref>, DOTS server
            implementations MUST provide an interface to configure resource
            identifiers, as described in SIG-008. DOTS server implementations
            MAY expose additional configurability. Additional configurability
            is implementation-specific.</t>

            <t hangText="DATA-004">Policy management: DOTS servers MUST
            provide methods for DOTS clients to manage drop- and accept-lists
            of traffic destined for resources belonging to a client.</t>

            <t>For example, a DOTS client should be able to create a drop- or
            accept-list entry, retrieve a list of current entries from either
            list, update the content of either list, and delete entries as
            necessary.</t>

            <t>How a DOTS server authorizes DOTS client management of drop-
            and accept-list entries is implementation-specific.</t>
          </list></t>
      </section>

      <section anchor="security-requirements" title="Security Requirements">
        <t>DOTS must operate within a particularly strict security context, as
        an insufficiently protected signal or data channel may be subject to
        abuse, enabling or supplementing the very attacks DOTS purports to
        mitigate.</t>

        <t><list style="hanging">
            <t hangText="SEC-001">Peer Mutual Authentication: DOTS agents MUST
            authenticate each other before a DOTS signal or data channel is
            considered valid. The method of authentication is not specified in
            this document, but should follow current IETF best practices 
            <xref target="RFC7525"></xref> with respect to any cryptographic
            mechanisms to authenticate the remote peer.</t>

            <t hangText="SEC-002">Message Confidentiality, Integrity and
            Authenticity: DOTS protocols MUST take steps to protect the
            confidentiality, integrity and authenticity of messages sent
            between client and server. While specific transport- and
            message-level security options are not specified, the protocols
            MUST follow current IETF best practices <xref
            target="RFC7525"></xref> for encryption and message
            authentication. Client-domain DOTS gateways are more trusted than
            DOTS clients, while server-domain DOTS gateways and DOTS servers
            share the same level of trust. A security mechanism at the
	    transport layer TLS/DTLS is thus adequate to provide security
            between peer DOTS agents.</t>

            <t>In order for DOTS protocols to remain secure despite
            advancements in cryptanalysis and traffic analysis, DOTS agents
            MUST support secure negotiation of the terms and mechanisms of
            protocol security, subject to the interoperability and signal
            message size requirements in <xref
            target="signal-channel-requirements"></xref>.</t>

            <t>While the interfaces between downstream DOTS server and
            upstream DOTS client within a DOTS gateway are
            implementation-specific, those interfaces nevertheless MUST
            provide security equivalent to that of the signal channels bridged
            by gateways in the signaling path. For example, when a DOTS
            gateway consisting of a DOTS server and DOTS client is running on
            the same logical device, the two DOTS agents could be implemented
            within the same process security boundary.</t>

            <t hangText="SEC-003">Data privacy and integrity: Transmissions
            over the DOTS protocols are likely to contain operationally or
            privacy-sensitive information or instructions from the remote DOTS
            agent. Theft, modification, or replay of message transmissions
            could lead to information leaks or malicious transactions on
            behalf of the sending agent (see <xref
            target="security-considerations"></xref> below). Consequently data
            sent over the DOTS protocols MUST be encrypted using secure
	    transports TLS/DTLS. DOTS servers MUST enable means to
            prevent leaking operationally or privacy-sensitive data. Although
            administrative entities participating in DOTS may detail what data
            may be revealed to third-party DOTS agents, such considerations
            are not in scope for this document.</t>

            <t hangText="SEC-004">Message Replay Protection: To prevent a
            passive attacker from capturing and replaying old messages, and
            thereby potentially disrupting or influencing the network policy
            of the receiving DOTS agent's domain, DOTS protocols MUST provide
            a method for replay detection and prevention.</t>

            <t>Within the signal channel, messages MUST be uniquely identified
            such that replayed or duplicated messages can be detected and
            discarded. Unique mitigation requests MUST be processed at most
            once.</t>

            <t hangText="SEC-005">Authorization: DOTS servers MUST authorize
            all messages from DOTS clients which pertain to mitigation,
            configuration, filtering, or status.</t>

            <t>DOTS servers MUST reject mitigation requests with scopes which
            the DOTS client is not authorized to manage.</t>

            <t>Likewise, DOTS servers MUST refuse to allow creation,
            modification or deletion of scope aliases and drop-/accept-lists
            when the DOTS client is unauthorized.</t>

            <t>The modes of authorization are implementation-specific.</t>
          </list></t>
      </section>

      <section anchor="data-model-requirements"
               title="Data Model Requirements">
        <t>A well-structured DOTS data model is critical to the development of
        successful DOTS protocols.</t>

        <t><list style="hanging">
            <t hangText="DM-001">Structure: The data model structure for the
            DOTS protocol MAY be described by a single module, or be divided
            into related collections of hierarchical modules and sub-modules.
            If the data model structure is split across modules, those
            distinct modules MUST allow references to describe the overall
            data model's structural dependencies.</t>

            <t hangText="DM-002">Versioning: To ensure interoperability
            between DOTS protocol implementations, data models MUST be
            versioned. How the protocols represent data model versions is not
            defined in this document.</t>

            <t hangText="DM-003">Mitigation Status Representation: The data
            model MUST provide the ability to represent a request for
            mitigation and the withdrawal of such a request. The data model
            MUST also support a representation of currently requested
            mitigation status, including failures and their causes.</t>

            <t hangText="DM-004">Mitigation Scope Representation: The data
            model MUST support representation of a requested mitigation's
            scope. As mitigation scope may be represented in several different
            ways, per SIG-008 above, the data model MUST include extensible
            representation of mitigation scope.</t>

            <t hangText="DM-005">Mitigation Lifetime Representation: The data
            model MUST support representation of a mitigation request's
            lifetime, including mitigations with no specified end time.</t>

            <t hangText="DM-006">Mitigation Efficacy Representation: The data
            model MUST support representation of a DOTS client's understanding
            of the efficacy of a mitigation enabled through a mitigation
            request.</t>

            <t hangText="DM-007">Acceptable Signal Loss Representation: The
            data model MUST be able to represent the DOTS agent's preference
            for acceptable signal loss when establishing a signal channel.
            Measurements of loss might include, but are not restricted to,
            number of consecutive missed heartbeat messages, retransmission
            count, or request timeouts.</t>

            <t hangText="DM-008">Heartbeat Interval Representation: The data
            model MUST be able to represent the DOTS agent's preferred
            heartbeat interval, which the client may include when establishing
            the signal channel, as described in SIG-003.</t>

            <t hangText="DM-009">Relationship to Transport: The DOTS data
            model MUST NOT make any assumptions about specific characteristics
            of any given transport into the data model, but instead, represent
            the fields in the model explicitly.</t>
          </list></t>
      </section>
    </section>

    <section anchor="congestion-control-considerations"
             title="Congestion Control Considerations">
      <section anchor="signal-channel" title="Signal Channel">
        <t>As part of a protocol expected to operate over links affected by
        DDoS attack traffic, the DOTS signal channel MUST NOT contribute
        significantly to link congestion. To meet the signal channel
        requirements above, DOTS signal channel implementations SHOULD support
        connectionless transports. However, some connectionless transports
        when deployed naively can be a source of network congestion, as
        discussed in <xref target="RFC8085"></xref>. Signal channel
        implementations using such connectionless transports, such as UDP,
        therefore MUST include a congestion control mechanism.</t>

        <t>Signal channel implementations using a IETF standard
        congestion-controlled transport protocol (like TCP) may rely on
        built-in transport congestion control support.</t>
      </section>

      <section anchor="data-channel" title="Data Channel">
        <t>As specified in DATA-001, the data channel requires reliable,
        in-order message delivery. Data channel implementations using a IETF
        standard congestion-controlled transport protocol may rely on the
        transport implementation's built-in congestion control mechanisms.</t>
      </section>
    </section>

    <section anchor="security-considerations" title="Security Considerations">
      <t>This document informs future protocols under development, and so does
      not have security considerations of its own. However, operators should
      be aware of potential risks involved in deploying DOTS. DOTS agent
      impersonation and signal blocking are discussed here. Additional DOTS
      security considerations may be found in <xref
      target="I-D.ietf-dots-architecture"></xref> and DOTS protocol
      documents.</t>

      <t>Impersonation of either a DOTS server or a DOTS client could have
      catastrophic impact on operations in either domain. If an attacker has
      the ability to impersonate a DOTS client, that attacker can affect
      policy on the network path to the DOTS client's domain, up to and
      including instantiation of drop-lists blocking all inbound traffic to
      networks for which the DOTS client is authorized to request
      mitigation.</t>

      <t>Similarly, an impersonated DOTS server may be able to act as a sort
      of malicious DOTS gateway, intercepting requests from the downstream
      DOTS client, and modifying them before transmission to the DOTS server
      to inflict the desired impact on traffic to or from the DOTS client's
      domain. Among other things, this malicious DOTS gateway might receive
      and discard mitigation requests from the DOTS client, ensuring no
      requested mitigation is ever applied.</t>

      <t>To detect misuse, as detailed in <xref
      target="security-requirements"></xref>, DOTS implementations require
      mutual authentication of DOTS agents in order to make agent
      impersonation more difficult. However, impersonation may still be
      possible as a result of credential theft, implementation flaws, or
      compromise of DOTS agents.</t>

      <t>To detect compromised DOTS agents, DOTS operators should carefully
      monitor and audit DOTS agents to detect misbehavior and to deter misuse,
      while employing current secure network communications best practices to
      reduce attack surface.</t>

      <t>Blocking communication between DOTS agents has the potential to
      disrupt the core function of DOTS, which is to request mitigation of
      active or expected DDoS attacks. The DOTS signal channel is expected to
      operate over congested inbound links, and, as described in <xref
      target="signal-channel-requirements"></xref>, the signal channel
      protocol must be designed for minimal data transfer to reduce the
      incidence of signal loss.</t>
    </section>

    <section anchor="iana-considerations" title="IANA Considerations">
      <t>This document does not require any IANA action.</t>
    </section>

    <section anchor="contributors" title="Contributors">
      <t><list style="hanging">
          <t hangText="Mohamed Boucadair"><vspace blankLines="0" /> Orange</t>

          <t>mohamed.boucadair@orange.com</t>
        </list></t>

      <t><list style="hanging">
          <t hangText="Flemming Andreasen"><vspace blankLines="0" /> Cisco
          Systems, Inc.</t>

          <t>fandreas@cisco.com</t>
        </list></t>

      <t><list style="hanging">
          <t hangText="Dave Dolson"><vspace blankLines="0" /> Sandvine</t>

          <t>ddolson@sandvine.com</t>
        </list></t>
    </section>

    <section anchor="acknowledgments" title="Acknowledgments">
      <t>Thanks to Roman Danyliw, Matt Richardson, Joe Touch, Scott Bradner,
      Robert Sparks, Brian Weis, Benjamin Kaduk, Eric Rescorla, Alvaro Retana,
      Suresh Krishnan, Ben Campbell, Mirja K&uuml;hlewind and Jon Shallow for
      careful reading and feedback.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &RFC0768;

      &RFC0791;

      &RFC0793;

      &RFC1035;

      &RFC1122;

      &RFC2119;

      &RFC3986;

      &RFC4291;

      &RFC4632;

      &RFC4787;

      &RFC5952;

      &RFC6888;

      &RFC7857;

      &RFC8085;

      &RFC8174;

      &RFC8200;
    </references>

    <references title="Informative References">
      &I-D.ietf-dots-architecture;

      &I-D.ietf-dots-use-cases;

      &I-D.ietf-intarea-frag-fragile;

      &RFC3261;

      &RFC7092;

      &RFC4732;

      &RFC4949;

      &RFC7525;
    </references>
  </back>

  <!--
-->
</rfc>
