Distributed Denial-of-Service Open
Threat Signaling (DOTS) Data ChannelCisco Systems, Inc.Cessna Business Park, Varthur HobliSarjapur Marathalli Outer Ring RoadBangaloreKarnataka560103Indiatireddy@cisco.comOrangeRennes35000Francemohamed.boucadair@orange.comNTT CommunicationsGranPark 16F 3-4-1 Shibaura, Minato-kuTokyo108-8118Japankaname@nttv6.jpHuawei101 Software Avenue, Yuhuatai DistrictNanjing, Jiangsu210012Chinafrank.xialiang@huawei.comCisco Systems, Inc.praspati@cisco.comArbor Networks, Inc.2727 S. State StAnn Arbor, MI48104United Statesamortensen@arbor.netVerisign, Inc.United Statesnteague@verisign.comDOTSThe document specifies a Distributed Denial-of-Service Open Threat
Signaling (DOTS) data channel used for bulk exchange of data not easily
or appropriately communicated through the DOTS signal channel under
attack conditions. This is a companion document to the DOTS signal
channel specification.A distributed denial-of-service (DDoS) attack is an attempt to make
machines or network resources unavailable to their intended users. In
most cases, sufficient scale can be achieved by compromising enough
end-hosts and using those infected hosts to perpetrate and amplify the
attack. The victim in this attack can be an application server, a
client, a router, a firewall, or an entire network.DDoS Open Threat Signaling (DOTS) defines two channels: signal and
data channels (). The DOTS signal channel used to convey that a
network is under a DDOS attack to an upstream DOTS server so that
appropriate mitigation actions are undertaken on the suspect traffic is
further elaborated in .
The DOTS data channel is used for infrequent bulk data exchange between
DOTS agents in the aim to significantly augment attack response
coordination.Section 2 of identifies
that the DOTS data channel is used to perform the tasks listed
below:Filter management, which enables a DOTS client to install or
remove traffic filters, dropping or rate-limiting unwanted traffic
and permitting white-listed traffic. Sample use cases for populating
black- or white-list filtering rules are detailed hereafter: If a network resource (DOTS client) detects a potential DDoS
attack from a set of IP addresses, the DOTS client informs its
servicing router (DOTS gateway) of all suspect IP addresses that
need to be blocked or black-listed for further investigation.
The DOTS client could also specify a list of protocols and ports
in the black-list rule. That DOTS gateway in-turn propagates the
black-listed IP addresses to the DOTS server which will
undertake appropriate action so that traffic from these IP
addresses to the target network (specified by the DOTS client)
is blocked.An enterprise network has partner sites from which only
legitimate traffic arrives and the enterprise network wants to
ensure that the traffic from these sites is not penalized during
DDOS attacks. The DOTS client uses DOTS data channel to convey
the white-listed IP addresses or prefixes of the partner sites
to its DOTS server. The DOTS server uses this information to
white-list flows from such IP addresses or prefixes reaching the
enterprise network.Creating identifiers, such as names or aliases, for resources for
which mitigation may be requested:The DOTS client may submit to the 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 (see requirement OP-006 in and Section 2 in ).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 .The reader should be familiar with the terms defined in .For simplicity, all of the examples in this document use "/restconf"
as the discovered RESTCONF API root path. Many protocol header lines and
message-body text within examples throughout the document are split into
multiple lines for display purposes only. When a line ends with
backslash ('\') as the last character, the line is wrapped for display
purposes. It is to be considered to be joined to the next line by
deleting the backslash, the following line break, and the leading
whitespace of the next line.The DOTS data channel is intended to be used for bulk data exchanges
between DOTS agents. Unlike the signal channel, which must operate
nominally even when confronted with despite signal degradation due to
packet loss, 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. RESTCONF over TLS
over TCP is used for DOTS data channel (). RESTCONF uses HTTP methods to provide CRUD
operations on a conceptual datastore containing YANG-defined data, which
is compatible with a server which implements NETCONF datastores. The
HTTP POST, PUT, PATCH, and DELETE methods are used to edit data
resources represented by DOTS data channel YANG data models. These basic
edit operations allow the DOTS data channel running configuration to be
altered by a DOTS client. DOTS data channel configuration data and state
data can be retrieved with the GET method. HTTP status codes are used to
report success or failure for RESTCONF operations. The DOTS client will
perform the root resource discovery procedure discussed in Section 3.1
of to determine the root of the RESTCONF API.
After discovering the RESTCONF API root, the DOTS client MUST use this
value as the initial part of the path in the request URI, in any
subsequent request to the DOTS server. The DOTS server can optionally
support retrieval of the YANG modules it supports (Section 3.7 in ), for example, DOTS client can use RESTCONF to
retreive the company proprietary YANG model supported by the DOTS
server.Note: This document uses RESTCONF, a protocol based on HTTP
[RFC7230], for configuring data defined in YANG version 1 [RFC6020] or
YANG version 1.1 [RFC7950], using the datastore concepts defined in the
Network Configuration Protocol (NETCONF) [RFC6241]. RESTCONF combines
the simplicity of the HTTP protocol with the predictability and
automation potential of a schema-driven API. RESTCONF offers a simple
subset of NETCONF functionality and provides a simplified interface
using REST-like API which addresses the needs of the DOTS data channel
and hence an optimal choice.JavaScript Object Notation (JSON)
payload is used to propogate data channel specific payload messages that
convey request parameters and response information such as errors. This
specification uses the encoding rules defined in for representing DOTS data channel configuration data
defined using YANG () as JSON text.A DOTS client registers itself to its DOTS server(s) in order to set
up DOTS data channel related configuration data on the DOTS server and
receive state data (i.e., non-configuration data) from the DOTS server.
A single DOTS data channel between DOTS agents can be used to exchange
multiple requests and multiple responses. To reduce DOTS client and DOTS
server workload, DOTS client SHOULD re-use the TLS session. While the
communication to the DOTS server is quiescent, the DOTS client MAY probe
the server to ensure it has maintained cryptographic state. Such probes
can also keep alive firewall or NAT bindings. A TLS heartbeat verifies the DOTS server still has TLS state by
returning a TLS message.This document defines a YANG data model
for creating identifers, such as names or aliases, for resources for
which mitigation may be requested. Such identifiers may then be used
in subsequent DOTS signal channel exchanges to refer more
efficiently to the resources under attack.This document defines the YANG module
"ietf-dots-data-channel-identifier", which has the following
structure:This document uses the Access Control List (ACL) YANG data model
for the configuration of
filtering rules. ACL is explained in Section 1 of .Examples of such configuration include:Black-list management, which enables a DOTS client to inform
the DOTS server about sources from which traffic should be
suppressed.White-list management, which enables a DOTS client to inform
the DOTS server about sources from which traffic should always
be accepted.Filter management, which enables a DOTS client to install or
remove traffic filters, dropping or rate-limiting unwanted
traffic and permitting white-listed traffic.A POST request is used to create identifiers, such as names or
aliases, for resources for which a mitigation may be requested. Such
identifiers may then be used in subsequent DOTS signal channel
exchanges to refer more efficiently to the resources under attack
().The header parameters are described below:Name of the alias. This is a mandatory
attribute.Internet Protocol numbers. This
is an optional attribute.The port range, lower-port for lower
port number and upper-port for upper port number. For TCP, UDP,
SCTP, or DCCP: the range of ports (e.g., 80 to 8080). This is an
optional attribute.IP addresses are separated by commas. This is
an optional attribute.Prefixes are separated by commas. This is
an optional attribute.Fully Qualified Domain Name, is the full
name of a system, rather than just its hostname. For example,
"venera" is a hostname, and "venera.isi.edu" is an FQDN. This is
an optional attribute.Uniform Resource Identifier (URI). This is
an optional attribute.E.164 number. This is an optional
attribute.In the POST request at least one of the attributes ip or prefix
or FQDN or URI MUST be present. DOTS agents can safely ignore
Vendor-Specific parameters they don't understand. shows a POST request to create alias
called "https1" for HTTP(S) servers with IP addresses
2002:db8:6401::1 and 2002:db8:6401::2 listening on port 443.The DOTS server indicates the result of processing the POST
request using HTTP response codes. HTTP 2xx codes are success, HTTP
4xx codes are some sort of invalid requests and 5xx codes are
returned if the DOTS server has erred or it is incapable of
accepting the alias. Response code 201 (Created) will be returned in
the response if the DOTS server has accepted the alias. If the
request is missing one or more mandatory attributes then 400 (Bad
Request) will be returned in the response or if the request contains
invalid or unknown parameters then 400 (Invalid query) will be
returned in the response. The HTTP response will include the JSON
body received in the request.The DOTS client can use the PUT request (Section 4.5 in ) to create or modify the aliases in the DOTS
server.A DELETE request is used to delete identifiers maintained by a
DOTS server ().In RESTCONF, URI-encoded path expressions are used. A RESTCONF
data resource identifier is encoded from left to right, starting
with the top-level data node, according to the "api-path" rule
defined in Section 3.5.3.1 of . The data
node in the above path expression is a YANG list node and MUST be
encoded according to the rules defined in Section 3.5.1 of .If the DOTS server does not find the alias name conveyed in the
DELETE request in its configuration data, then it responds with a
404 (Not Found) error response code. The DOTS server successfully
acknowledges a DOTS client's request to remove the identifier using
204 (No Content) in the response.A GET request is used to retrieve the set of installed
identifiers from a DOTS server (Section 3.3.1 in ). shows how to retrieve
all the identifiers that were instantiated by the DOTS client. The
content parameter and its permitted values are defined in Section
4.8.1 of . shows response for all identifiers on
the DOTS server.If the DOTS server does not find the alias name conveyed in the
GET request in its configuration data, then it responds with a 404
(Not Found) error response code.The DOTS server either receives the filtering rules directly from
the DOTS client or via the DOTS gateway. If the DOTS client signals
the filtering rules via the DOTS gateway then the DOTS gateway
validates if the DOTS client is authorized to signal the filtering
rules and if the client is authorized propagates the rules to the DOTS
server. Likewise, the DOTS server validates if the DOTS gateway is
authorized to signal the filtering rules. To create or purge filters,
the DOTS client sends HTTP requests to the DOTS gateway. The DOTS
gateway validates the rules in the requests and proxies the requests
containing the filtering rules to a DOTS server. When the DOTS gateway
receives the associated HTTP response from the DOTS server, it
propagates the response back to the DOTS client.The following APIs define means for a DOTS client to configure
filtering rules on a DOTS server.A POST request is used to push filtering rules to a DOTS server.
shows a POST request example to block
traffic from 10.10.10.1/24, destined to 11.11.11.1/24. The ACL JSON
configuration for the filtering rule is generated using the ACL YANG
data model defined in and
the ACL configuration XML for the filtering rule is specified in
Section 4.3 of . This
specification updates the ACL YANG data model defined in to support rate-limit
action.The header parameters defined in are discussed below:The name of access-list. This is a
mandatory attribute.Indicates the primary intended type of
match criteria (e.g. IPv4, IPv6). This is a mandatory
attribute.Internet Protocol numbers. This is an
optional attribute.The source IPv4 prefix. This
is an optional attribute.The destination IPv4
prefix. This is an optional attribute."deny" or "permit" or "rate-limit".
"permit" action is used to white-list traffic. "deny" action is
used to black-list traffic. "rate-limit" action is used to
rate-limit traffic, the allowed traffic rate is represented in
bytes per second indicated in IEEE floating point format . If actions attribute is not specified
in the request then the default action is "deny". This is an
optional attribute.The DOTS server indicates the result of processing the POST
request using HTTP response codes. HTTP 2xx codes are success, HTTP
4xx codes are some sort of invalid requests and 5xx codes are
returned if the DOTS server has erred or it is incapable of
configuring the filtering rules. Response code 201 (Created) will be
returned in the response if the DOTS server has accepted the
filtering rules. If the request is missing one or more mandatory
attributes then 400 (Bad Request) will be returned in the response
or if the request contains invalid or unknown parameters then 400
(Invalid query) will be returned in the response.The DOTS client can use the PUT request to create or modify the
filtering rules in the DOTS server.A DELETE request is used to delete filtering rules from a DOTS
server ().If the DOTS server does not find the access list name and access
list type conveyed in the DELETE request in its configuration data,
then it responds with a 404 (Not Found) error response code. The
DOTS server successfully acknowledges a DOTS client's request to
withdraw the filtering rules using 204 (No Content) response code,
and removes the filtering rules as soon as possible.The DOTS client periodically queries the DOTS server to check the
counters for installed filtering rules. A GET request is used to
retrieve filtering rules from a DOTS server. shows how to retrieve all the filtering rules
programmed by the DOTS client and the number of matches for the
installed filtering rules.If the DOTS server does not find the access list name and access
list type conveyed in the GET request in its configuration data,
then it responds with a 404 (Not Found) error response code.This specification registers new parameters for the DOTS data channel
and establishes registries for mappings to JSON attributes.A new registry will be requested from IANA, entitled "DOTS data
channel JSON attribute Mappings Registry". The registry is to be
created as Expert Review Required. JSON attribute name. Brief description of the
attribute. For Standards Track
RFCs, list the "IESG". For others, give the name of the
responsible party. Other details (e.g., postal address, email
address, home page URI) may also be included. Reference to
the document or documents that specify the parameter, preferably
including URIs that can be used to retrieve copies of the
documents. An indication of the relevant sections may also be
included but is not required.JSON Attribute: "alias-name"Description: Name of alias.Change Controller: IESGSpecification Document(s): this documentJSON Attribute: "traffic-protocol"Description: Internet protocol numbers.Change Controller: IESGSpecification Document(s): this documentJSON Attribute: "port-range"Description: The port range, lower-port for lower port number
and upper-port for upper port number. For TCP, UDP, SCTP, or DCCP:
the range of ports (e.g., 80 to 8080).Change Controller: IESGSpecification Document(s): this documentJSON Attribute: "lower-port"Description: Lower port number for port range.Change Controller: IESGSpecification Document(s): this documentJSON Attribute: "upper-port"Description: Upper port number for port range.Change Controller: IESGSpecification Document(s): this documentJSON Attribute: "ip"Description: IP address.Change Controller: IESGSpecification Document(s): this documentJSON Attribute: "prefix"Description: IP prefixChange Controller: IESGSpecification Document(s): this documentJSON Attribute: "FQDN"Description: Fully Qualified Domain Name, is the full name of a
system, rather than just its hostname. For example, "venera" is a
hostname, and "venera.isi.edu" is an FQDN.Change Controller: IESGSpecification Document(s): this documentJSON Attribute: "URI"Description: Uniform Resource Identifier (URI).Change Controller: IESGSpecification Document(s): this documentJSON Attribute: "E.164"Description: E.164 number.Change Controller: IESGSpecification Document(s): this documentThe following individuals have contributed to this document:Dan Wing Email: dwing-ietf@fuggles.comAuthenticated encryption MUST be used for data confidentiality and
message integrity. TLS based on client certificate MUST be used for
mutual authentication. The interaction between the DOTS agents requires
Transport Layer Security (TLS) with a cipher suite offering
confidentiality protection and the guidance given in MUST be followed to avoid attacks on TLS.An attacker may be able to inject RST packets, bogus application
segments, etc., regardless of whether TLS authentication is used.
Because the application data is TLS protected, this will not result in
the application receiving bogus data, but it will constitute a DoS on
the connection. This attack can be countered by using TCP-AO . If TCP-AO is used, then any bogus packets injected
by an attacker will be rejected by the TCP-AO integrity check and
therefore will never reach the TLS layer.Special care should be taken in order to ensure that the activation
of the proposed mechanism won't have an impact on the stability of the
network (including connectivity and services delivered over that
network).Involved functional elements in the cooperation system must establish
exchange instructions and notification over a secure and authenticated
channel. Adequate filters can be enforced to avoid that nodes outside a
trusted domain can inject request such as deleting filtering rules.
Nevertheless, attacks can be initiated from within the trusted domain if
an entity has been corrupted. Adequate means to monitor trusted nodes
should also be enabled.Thanks to Christian Jacquenet, Roland Dobbins, Andrew Mortensen,
Roman Danyliw, Ehud Doron and Gilbert Clark for the discussion and
comments.Standard for Binary Floating-Point ArithmeticInstitute of Electrical and Electronics
Engineers