Distributed Denial-of-Service Open
Threat Signaling (DOTS) Data ChannelMcAfee, Inc.Embassy Golf Link Business ParkBangaloreKarnataka560071Indiakondtir@gmail.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.A network has partner sites from which only legitimate
traffic arrives and the network wants to ensure that the traffic
from these sites is not penalized during DDOS attacks. The DOTS
client uses the 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 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 which it would like to refer to by alias when
requesting mitigation. The server can respond to this request
with either with a success or failure response (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 signal degradation due to packet
loss, the data channel is not expected to be constructed to deal with
DDoS 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 retrieve the company proprietary YANG
model supported by the DOTS server.Note: This document uses RESTCONF, a protocol based on HTTP , for configuring data defined in YANG version 1
or YANG version 1.1 , using the datastore concepts defined in the
Network Configuration Protocol (NETCONF) .
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 propagate 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 identifiers, 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.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
2001:db8:6401::1 and 2001: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 192.0.2.0/24, destined to 198.51.100.0/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 documentThe following individuals have contributed to this document:Dan WingEmail: 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, Russ White and Gilbert Clark for the
discussion and comments.Standard for Binary Floating-Point ArithmeticInstitute of Electrical and Electronics
Engineers