< draft-ietf-dots-signal-channel-10.txt   draft-ietf-dots-signal-channel-11.txt >
DOTS T. Reddy DOTS T. Reddy
Internet-Draft McAfee Internet-Draft McAfee
Intended status: Standards Track M. Boucadair Intended status: Standards Track M. Boucadair
Expires: June 3, 2018 Orange Expires: June 8, 2018 Orange
P. Patil P. Patil
Cisco Cisco
A. Mortensen A. Mortensen
Arbor Networks, Inc. Arbor Networks, Inc.
N. Teague N. Teague
Verisign, Inc. Verisign, Inc.
November 30, 2017 December 5, 2017
Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal
Channel Channel
draft-ietf-dots-signal-channel-10 draft-ietf-dots-signal-channel-11
Abstract Abstract
This document specifies the DOTS signal channel, a protocol for This document specifies the DOTS signal channel, a protocol for
signaling the need for protection against Distributed Denial-of- signaling the need for protection against Distributed Denial-of-
Service (DDoS) attacks to a server capable of enabling network Service (DDoS) attacks to a server capable of enabling network
traffic mitigation on behalf of the requesting client. traffic mitigation on behalf of the requesting client.
A companion document defines the DOTS data channel, a separate A companion document defines the DOTS data channel, a separate
reliable communication layer for DOTS management and configuration. reliable communication layer for DOTS management and configuration.
skipping to change at page 1, line 43 skipping to change at page 1, line 43
o "This version of this YANG module is part of RFC XXXX;" o "This version of this YANG module is part of RFC XXXX;"
o "RFC XXXX: Distributed Denial-of-Service Open Threat Signaling o "RFC XXXX: Distributed Denial-of-Service Open Threat Signaling
(DOTS) Signal Channel"; (DOTS) Signal Channel";
o "| 3.00 | Alternate server | [RFCXXXX] |" o "| 3.00 | Alternate server | [RFCXXXX] |"
o reference: RFC XXXX o reference: RFC XXXX
o This RFC
Please update TBD statements with the port number to be assigned to
DOTS Signal Channel Protocol.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on June 3, 2018. This Internet-Draft will expire on June 8, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Notational Conventions and Terminology . . . . . . . . . . . 5 2. Notational Conventions and Terminology . . . . . . . . . . . 5
3. Design Overview . . . . . . . . . . . . . . . . . . . . . . . 5 3. Design Overview . . . . . . . . . . . . . . . . . . . . . . . 6
4. DOTS Signal Channel: Messages & Behaviors . . . . . . . . . . 7 4. DOTS Signal Channel: Messages & Behaviors . . . . . . . . . . 8
4.1. DOTS Server(s) Discovery . . . . . . . . . . . . . . . . 7 4.1. DOTS Server(s) Discovery . . . . . . . . . . . . . . . . 8
4.2. CoAP URIs . . . . . . . . . . . . . . . . . . . . . . . . 8 4.2. CoAP URIs . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3. Happy Eyeballs for DOTS Signal Channel . . . . . . . . . 8 4.3. Happy Eyeballs for DOTS Signal Channel . . . . . . . . . 8
4.4. DOTS Mitigation Methods . . . . . . . . . . . . . . . . . 9 4.4. DOTS Mitigation Methods . . . . . . . . . . . . . . . . . 10
4.4.1. Request Mitigation . . . . . . . . . . . . . . . . . 10 4.4.1. Request Mitigation . . . . . . . . . . . . . . . . . 10
4.4.2. Withdraw a Mitigation . . . . . . . . . . . . . . . . 18 4.4.2. Retrieve Information Related to a Mitigation . . . . 19
4.4.3. Retrieve Information Related to a Mitigation . . . . 19 4.4.3. Efficacy Update from DOTS Clients . . . . . . . . . . 27
4.4.4. Efficacy Update from DOTS Clients . . . . . . . . . . 26 4.4.4. Withdraw a Mitigation . . . . . . . . . . . . . . . . 29
4.5. DOTS Signal Channel Session Configuration . . . . . . . . 28 4.5. DOTS Signal Channel Session Configuration . . . . . . . . 31
4.5.1. Discover Configuration Parameters . . . . . . . . . . 29 4.5.1. Discover Configuration Parameters . . . . . . . . . . 32
4.5.2. Convey DOTS Signal Channel Session Configuration . . 31 4.5.2. Convey DOTS Signal Channel Session Configuration . . 34
4.5.3. Delete DOTS Signal Channel Session Configuration . . 35 4.5.3. Delete DOTS Signal Channel Session Configuration . . 39
4.6. Redirected Signaling . . . . . . . . . . . . . . . . . . 36 4.6. Redirected Signaling . . . . . . . . . . . . . . . . . . 39
4.7. Heartbeat Mechanism . . . . . . . . . . . . . . . . . . . 37 4.7. Heartbeat Mechanism . . . . . . . . . . . . . . . . . . . 41
5. DOTS Signal Channel YANG Modules . . . . . . . . . . . . . . 38 5. DOTS Signal Channel YANG Module . . . . . . . . . . . . . . . 42
5.1. Mitigation Request YANG Module Tree Structure . . . . . . 38 5.1. Tree Structure . . . . . . . . . . . . . . . . . . . . . 42
5.2. Mitigation Request YANG Module . . . . . . . . . . . . . 39 5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 44
5.3. Session Configuration YANG Module Tree Structure . . . . 46 6. Mapping Parameters to CBOR . . . . . . . . . . . . . . . . . 53
5.4. Session Configuration YANG Module . . . . . . . . . . . . 46 7. (D)TLS Protocol Profile and Performance Considerations . . . 55
6. Mapping Parameters to CBOR . . . . . . . . . . . . . . . . . 48 7.1. (D)TLS Protocol Profile . . . . . . . . . . . . . . . . . 55
7. (D)TLS Protocol Profile and Performance Considerations . . . 50 7.2. (D)TLS 1.3 Considerations . . . . . . . . . . . . . . . . 56
7.1. (D)TLS Protocol Profile . . . . . . . . . . . . . . . . . 50 7.3. MTU and Fragmentation . . . . . . . . . . . . . . . . . . 57
7.2. MTU and Fragmentation . . . . . . . . . . . . . . . . . . 51 8. Mutual Authentication of DOTS Agents & Authorization of DOTS
8. (D)TLS 1.3 Considerations . . . . . . . . . . . . . . . . . . 52 Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9. Mutual Authentication of DOTS Agents & Authorization of DOTS 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 59
Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 9.1. DOTS Signal Channel UDP and TCP Port Number . . . . . . . 59
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 9.2. Well-Known 'dots' URI . . . . . . . . . . . . . . . . . . 59
10.1. DOTS Signal Channel UDP and TCP Port Number . . . . . . 54 9.3. CoAP Response Code . . . . . . . . . . . . . . . . . . . 59
10.2. Well-Known 'dots' URI . . . . . . . . . . . . . . . . . 54 9.4. DOTS Signal Channel CBOR Mappings Registry . . . . . . . 60
10.3. CoAP Response Code . . . . . . . . . . . . . . . . . . . 54 9.4.1. Registration Template . . . . . . . . . . . . . . . . 60
10.4. DOTS Signal Channel CBOR Mappings Registry . . . . . . . 55 9.4.2. Initial Registry Contents . . . . . . . . . . . . . . 60
10.4.1. Registration Template . . . . . . . . . . . . . . . 55 9.5. DOTS Signal Channel YANG Module . . . . . . . . . . . . . 66
10.4.2. Initial Registry Contents . . . . . . . . . . . . . 55 10. Implementation Status . . . . . . . . . . . . . . . . . . . . 66
10.5. YANG Modules . . . . . . . . . . . . . . . . . . . . . . 60 10.1. nttdots . . . . . . . . . . . . . . . . . . . . . . . . 66
11. Implementation Status . . . . . . . . . . . . . . . . . . . . 61 11. Security Considerations . . . . . . . . . . . . . . . . . . . 67
11.1. nttdots . . . . . . . . . . . . . . . . . . . . . . . . 61 12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 68
12. Security Considerations . . . . . . . . . . . . . . . . . . . 62 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 68
13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 63 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 68
14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 63 14.1. Normative References . . . . . . . . . . . . . . . . . . 68
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 63 14.2. Informative References . . . . . . . . . . . . . . . . . 70
15.1. Normative References . . . . . . . . . . . . . . . . . . 63 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 74
15.2. Informative References . . . . . . . . . . . . . . . . . 65
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 68
1. Introduction 1. Introduction
A distributed denial-of-service (DDoS) attack is an attempt to make A distributed denial-of-service (DDoS) attack is an attempt to make
machines or network resources unavailable to their intended users. machines or network resources unavailable to their intended users.
In most cases, sufficient scale can be achieved by compromising In most cases, sufficient scale can be achieved by compromising
enough end-hosts and using those infected hosts to perpetrate and enough end-hosts and using those infected hosts to perpetrate and
amplify the attack. The victim in this attack can be an application amplify the attack. The victim in this attack can be an application
server, a host, a router, a firewall, or an entire network. server, a host, a router, a firewall, or an entire network.
skipping to change at page 4, line 20 skipping to change at page 4, line 24
longer instantiate the state required to pass legitimate flows. longer instantiate the state required to pass legitimate flows.
Other possible DDoS attacks are discussed in [RFC4732]. Other possible DDoS attacks are discussed in [RFC4732].
In many cases, it may not be possible for network administrators to In many cases, it may not be possible for network administrators to
determine the causes of an attack, but instead just realize that determine the causes of an attack, but instead just realize that
certain resources seem to be under attack. This document defines a certain resources seem to be under attack. This document defines a
lightweight protocol permitting a DOTS client to request mitigation lightweight protocol permitting a DOTS client to request mitigation
from one or more DOTS servers for protection against detected, from one or more DOTS servers for protection against detected,
suspected, or anticipated attacks. This protocol enables cooperation suspected, or anticipated attacks. This protocol enables cooperation
between DOTS agents to permit a highly-automated network defense that between DOTS agents to permit a highly-automated network defense that
is robust, reliable and secure. is robust, reliable, and secure.
An example of network diagram showing a deployment of DOTS agents is An example of network diagram showing a deployment of DOTS agents is
shown in Figure 1. In this example, the DOTS server is operating on shown in Figure 1. In this example, the DOTS server is operating on
the access network. The DOTS client is located on the LAN (Local the access network. The DOTS client is located on the LAN (Local
Area Network), while a DOTS gateway is embedded in the CPE (Customer Area Network), while a DOTS gateway is embedded in the CPE (Customer
Premises Equipment). Premises Equipment).
Network Network
Resource CPE router Access network __________ Resource CPE router Access network __________
+-----------+ +--------------+ +-------------+ / \ +-----------+ +--------------+ +-------------+ / \
| |____| |_______| |___ | Internet | | |____| |_______| |___ | Internet |
|DOTS client| | DOTS gateway | | DOTS server | | | |DOTS client| | DOTS gateway | | DOTS server | | |
| | | | | | | | | | | | | | | |
+-----------+ +--------------+ +-------------+ \__________/ +-----------+ +--------------+ +-------------+ \__________/
Figure 1: Sample DOTS Deployment (1) Figure 1: Sample DOTS Deployment (1)
The DOTS server can also be running on the Internet, as depicted in The DOTS server can also be reachable over the Internet, as depicted
Figure 2. in Figure 2.
Network DDoS mitigation Network DDoS mitigation
Resource CPE router __________ service Resource CPE router __________ service
+-----------+ +-------------+ / \ +-------------+ +-----------+ +-------------+ / \ +-------------+
| |____| |_______| |___ | | | |____| |_______| |___ | |
|DOTS client| |DOTS gateway | | Internet | | DOTS server | |DOTS client| |DOTS gateway | | Internet | | DOTS server |
| | | | | | | | | | | | | | | |
+-----------+ +-------------+ \__________/ +-------------+ +-----------+ +-------------+ \__________/ +-------------+
Figure 2: Sample DOTS Deployment (2) Figure 2: Sample DOTS Deployment (2)
In typical deployments, the DOTS client belongs to a different In typical deployments, the DOTS client belongs to a different
administrative domain than the DOTS server. For example, the DOTS administrative domain than the DOTS server. For example, the DOTS
client is a firewall protecting services owned and operated by a client is embedded in a firewall protecting services owned and
domain, while the DOTS server is owned and operated by a different operated by a domain, while the DOTS server is owned and operated by
domain providing DDoS mitigation services. That domain providing a different domain providing DDoS mitigation services. That domain
DDoS mitigation service might, or might not, also provide Internet providing DDoS mitigation service might, or might not, provide
access service to the website operator. connectivity service to the network hosting the DOTS client.
The DOTS server may (not) be co-located with the DOTS mitigator. In The DOTS server may (not) be co-located with the DOTS mitigator. In
typical deployments, the DOTS server belongs to the same typical deployments, the DOTS server belongs to the same
administrative domain as the mitigator. The DOTS client can administrative domain as the mitigator. The DOTS client can
communicate directly with the DOTS server or indirectly via a DOTS communicate directly with a DOTS server or indirectly via a DOTS
gateway. gateway.
The document adheres to the DOTS architecture The document adheres to the DOTS architecture
[I-D.ietf-dots-architecture]. The requirements for DOTS signal [I-D.ietf-dots-architecture]. The requirements for DOTS signal
channel protocol are obtained from [I-D.ietf-dots-requirements]. channel protocol are obtained from [I-D.ietf-dots-requirements].
This document satisfies all the use cases discussed in This document satisfies all the use cases discussed in
[I-D.ietf-dots-use-cases]. [I-D.ietf-dots-use-cases].
This document focuses on the DOTS signal channel. This is a This document focuses on the DOTS signal channel. This is a
companion document to the DOTS data channel specification companion document to the DOTS data channel specification
[I-D.ietf-dots-data-channel] that defines a configuration and bulk [I-D.ietf-dots-data-channel] that defines a configuration and bulk
data exchange mechanism supporting the DOTS signal channel. data exchange mechanism supporting the DOTS signal channel.
2. Notational Conventions and Terminology 2. Notational Conventions and Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
[RFC2119]. [RFC2119].
(D)TLS: For brevity this term is used for statements that apply to (D)TLS is used for statements that apply to both Transport Layer
both Transport Layer Security [RFC5246] and Datagram Transport Layer Security [RFC5246] and Datagram Transport Layer Security [RFC6347].
Security [RFC6347]. Specific terms will be used for any statement Specific terms will be used for any statement that applies to either
that applies to either protocol alone. protocol alone.
The reader should be familiar with the terms defined in The reader should be familiar with the terms defined in
[I-D.ietf-dots-architecture]. [I-D.ietf-dots-architecture].
The meaning of the symbols in YANG tree diagrams is defined in The meaning of the symbols in YANG tree diagrams is defined in
[I-D.ietf-netmod-yang-tree-diagrams]. [I-D.ietf-netmod-yang-tree-diagrams].
3. Design Overview 3. Design Overview
The DOTS signal channel is built on top of the Constrained The DOTS signal channel is built on top of the Constrained
skipping to change at page 6, line 26 skipping to change at page 6, line 40
+--------------+ +--------------+
| TCP | UDP | | TCP | UDP |
+--------------+ +--------------+
| IP | | IP |
+--------------+ +--------------+
Figure 3: Abstract Layering of DOTS signal channel over CoAP over Figure 3: Abstract Layering of DOTS signal channel over CoAP over
(D)TLS (D)TLS
By default, DOTS signal channel MUST run over port number TBD as By default, DOTS signal channel MUST run over port number TBD as
defined in Section 10.1, for both UDP and TCP, unless the DOTS server defined in Section 9.1, for both UDP and TCP, unless the DOTS server
has mutual agreement with its DOTS clients to use a port other than has mutual agreement with its DOTS clients to use a port number other
TBD for DOTS signal channel, or DOTS clients supports means to than TBD for DOTS signal channel, or DOTS clients supports means to
dynamically discover the ports used by their DOTS servers. In order dynamically discover the ports used by their DOTS servers. In order
to use a distinct port number (vs. TBD), DOTS clients and servers to use a distinct port number (vs. TBD), DOTS clients and servers
should support a configurable parameter to supply the port number to should support a configurable parameter to supply the port number to
use. use. The rationale for not using the default port number 5684
((D)TLS CoAP) is to allow for differentiated behaviors in deployment
contexts where both a DOTS gateway and an IoT gateway (e.g., Figure 3
of [RFC7452]) are present.
The signal channel is initiated by the DOTS client (Section 4.4). The signal channel is initiated by the DOTS client (Section 4.4).
Once the signal channel is established, the DOTS agents periodically Once the signal channel is established, the DOTS agents periodically
send heartbeats to keep the channel active (Section 4.7). At any send heartbeats to keep the channel active (Section 4.7). At any
time, the DOTS client may send a mitigation request message to a DOTS time, the DOTS client may send a mitigation request message to a DOTS
server over the active channel. While mitigation is active, due to server over the active channel. While mitigation is active, due to
the higher likelihood of packet loss during a DDoS attack, the DOTS the higher likelihood of packet loss during a DDoS attack, the DOTS
server periodically sends status messages to the client, including server periodically sends status messages to the client, including
basic mitigation feedback details. Mitigation remains active until basic mitigation feedback details. Mitigation remains active until
the DOTS client explicitly terminates mitigation, or the mitigation the DOTS client explicitly terminates mitigation, or the mitigation
lifetime expires. lifetime expires.
DOTS signaling can happen with DTLS [RFC6347] over UDP and TLS DOTS signaling can happen with DTLS [RFC6347] over UDP and TLS
[RFC5246] over TCP. Likewise, requests may be sent using IPv4 or [RFC5246] over TCP. Likewise, DOTS requests may be sent using IPv4
IPv6 transfer capabilities. A Happy Eyeballs procedure for DOTS or IPv6 transfer capabilities. A Happy Eyeballs procedure for DOTS
signal channel is specified in Section 4.3. signal channel is specified in Section 4.3.
Messages exchanged between DOTS clients and servers are serialized Messages exchanged between DOTS agents are serialized using Concise
using Concise Binary Object Representation (CBOR) [RFC7049], CBOR is Binary Object Representation (CBOR) [RFC7049], CBOR is a binary
a binary encoding designed for small code and message size. CBOR encoding designed for small code and message size. CBOR encoded
encoded payloads are used to convey signal channel specific payload payloads are used to convey signal channel specific payload messages
messages that convey request parameters and response information such that convey request parameters and response information such as
as errors. This specification uses the encoding rules defined in errors. This specification uses the encoding rules defined in
[I-D.ietf-core-yang-cbor] for representing mitigation scope and DOTS [I-D.ietf-core-yang-cbor] for representing mitigation scope and DOTS
signal channel session configuration data defined using YANG signal channel session configuration data defined using YANG
(Section 5) as CBOR data. (Section 5) as CBOR data.
In order to prevent fragmentation, DOTS agents must follow the In order to prevent fragmentation, DOTS agents must follow the
recommendations in Section 4.6 of [RFC7252]. Refer to Section 7.2 recommendations in Section 4.6 of [RFC7252]. Refer to Section 7.3
for more details. for more details.
DOTS agents MUST support GET, PUT, and DELETE CoAP methods. The DOTS agents MUST support GET, PUT, and DELETE CoAP methods. The
payload included in CoAP responses with 2.xx and 3.xx Response Codes payload included in CoAP responses with 2.xx and 3.xx Response Codes
MUST be of content type "application/cbor" (Section 5.5.1 of MUST be of content type "application/cbor" (Section 5.5.1 of
[RFC7252]). CoAP responses with 4.xx and 5.xx error Response Codes [RFC7252]). CoAP responses with 4.xx and 5.xx error Response Codes
MUST include a diagnostic payload (Section 5.5.2 of [RFC7252]). The MUST include a diagnostic payload (Section 5.5.2 of [RFC7252]). The
Diagnostic Payload may contain additional information to aid Diagnostic Payload may contain additional information to aid
troubleshooting. troubleshooting.
In deployments where multiple DOTS clients are enabled in a network In deployments where multiple DOTS clients are enabled in a network
(owned by the same entity), the DOTS server may detect conflicting (owned by the same entity), the DOTS server may detect conflicting
mitigation requests from these clients. This document does not aim mitigation requests from these clients. This document does not aim
to specify a comprehensive list of conditions under which a DOTS to specify a comprehensive list of conditions under which a DOTS
server will characterize two mitigation requests from distinct DOTS server will characterize two mitigation requests from distinct DOTS
clients as conflicting, nor recommend a DOTS server behavior for clients as conflicting, nor recommend a DOTS server behavior for
processing conflicting mitigation requests. Those considerations are processing conflicting mitigation requests. Those considerations are
implementation- and deployment-specific. Nevertheless, the document implementation- and deployment-specific. Nevertheless, the document
specifies the mechanisms to notify DOTS clients when conflicts occur, specifies the mechanisms to notify DOTS clients when conflicts occur,
including the conflict cause. including the conflict cause (Section 4.4).
4. DOTS Signal Channel: Messages & Behaviors 4. DOTS Signal Channel: Messages & Behaviors
4.1. DOTS Server(s) Discovery 4.1. DOTS Server(s) Discovery
This document assumes that DOTS clients are provisioned with the This document assumes that DOTS clients are provisioned with the
reachability information of their DOTS server(s) using a variety of reachability information of their DOTS server(s) using a variety of
means (e.g., local configuration, or dynamic means such as DHCP). means (e.g., local configuration, or dynamic means such as DHCP).
These means are out of scope of this document. These means are out of scope of this document.
skipping to change at page 8, line 45 skipping to change at page 9, line 10
UDP and TCP. UDP and TCP.
If an IPv4 path to reach a DOTS server is found, but the DOTS If an IPv4 path to reach a DOTS server is found, but the DOTS
server's IPv6 path is not working, a dual-stack DOTS client can server's IPv6 path is not working, a dual-stack DOTS client can
experience a significant connection delay compared to an IPv4-only experience a significant connection delay compared to an IPv4-only
DOTS client. The other problem is that if a middlebox between the DOTS client. The other problem is that if a middlebox between the
DOTS client and DOTS server is configured to block UDP, the DOTS DOTS client and DOTS server is configured to block UDP, the DOTS
client will fail to establish a DTLS session with the DOTS server and client will fail to establish a DTLS session with the DOTS server and
will, then, have to fall back to TLS over TCP incurring significant will, then, have to fall back to TLS over TCP incurring significant
connection delays. [I-D.ietf-dots-requirements] discusses that DOTS connection delays. [I-D.ietf-dots-requirements] discusses that DOTS
client and server will have to support both connectionless and agents will have to support both connectionless and connection-
connection-oriented protocols. oriented protocols.
To overcome these connection setup problems, the DOTS client can try To overcome these connection setup problems, the DOTS client can try
connecting to the DOTS server using both IPv6 and IPv4, and try both connecting to the DOTS server using both IPv6 and IPv4, and try both
DTLS over UDP and TLS over TCP in a fashion similar to the Happy DTLS over UDP and TLS over TCP in a fashion similar to the Happy
Eyeballs mechanism [RFC6555]. These connection attempts are Eyeballs mechanism [RFC6555]. These connection attempts are
performed by the DOTS client when its initializes, and the client performed by the DOTS client when its initializes, and the client
uses that information for its subsequent alert to the DOTS server. uses that information for its subsequent alert to the DOTS server.
In order of preference (most preferred first), it is UDP over IPv6, In order of preference (most preferred first), it is UDP over IPv6,
UDP over IPv4, TCP over IPv6, and finally TCP over IPv4, which UDP over IPv4, TCP over IPv6, and finally TCP over IPv4, which
adheres to address preference order [RFC6724] and the DOTS preference adheres to address preference order [RFC6724] and the DOTS preference
skipping to change at page 9, line 43 skipping to change at page 10, line 10
over UDP becomes available from the DOTS server, so the DOTS client over UDP becomes available from the DOTS server, so the DOTS client
can migrate the DOTS signal channel from TCP to UDP, but such probing can migrate the DOTS signal channel from TCP to UDP, but such probing
SHOULD NOT be done more frequently than every 24 hours and MUST NOT SHOULD NOT be done more frequently than every 24 hours and MUST NOT
be done more frequently than every 5 minutes. be done more frequently than every 5 minutes.
4.4. DOTS Mitigation Methods 4.4. DOTS Mitigation Methods
The following methods are used by a DOTS client to request, withdraw, The following methods are used by a DOTS client to request, withdraw,
or retrieve the status of mitigation requests: or retrieve the status of mitigation requests:
PUT: DOTS clients use the PUT method to request mitigation from a PUT: DOTS clients use the PUT method to request mitigation from a
DOTS server (Section 4.4.1). During active mitigation, DOTS DOTS server (Section 4.4.1). During active mitigation, DOTS
clients may use PUT requests to convey mitigation efficacy updates clients may use PUT requests to convey mitigation efficacy
to the DOTS server (Section 4.4.4). updates to the DOTS server (Section 4.4.3).
DELETE: DOTS clients use the DELETE method to withdraw a request for GET: DOTS clients may use the GET method to subscribe to DOTS
mitigation from the DOTS server (Section 4.4.2). server status messages, or to retrieve the list of its
mitigations maintained by a DOTS server (Section 4.4.2).
GET: DOTS clients may use the GET method to subscribe to DOTS server DELETE: DOTS clients use the DELETE method to withdraw a request for
status messages, or to retrieve the list of existing mitigations mitigation from a DOTS server (Section 4.4.4).
(Section 4.4.3).
Mitigation request and response messages are marked as Non- Mitigation request and response messages are marked as Non-
confirmable messages. DOTS agents SHOULD follow the data confirmable messages (Section 2.2 of [RFC7252]).
transmission guidelines discussed in Section 3.1.3 of [RFC8085] and
control transmission behavior by not sending on average more than one DOTS agents SHOULD follow the data transmission guidelines discussed
UDP datagram per RTT to the peer DOTS agent. in Section 3.1.3 of [RFC8085] and control transmission behavior by
not sending on average more than one UDP datagram per RTT to the peer
DOTS agent.
Requests marked by the DOTS client as Non-confirmable messages are Requests marked by the DOTS client as Non-confirmable messages are
sent at regular intervals until a response is received from the DOTS sent at regular intervals until a response is received from the DOTS
server. If the DOTS client cannot maintain an RTT estimate, it server. If the DOTS client cannot maintain an RTT estimate, it
SHOULD NOT send more than one Non-confirmable request every 3 SHOULD NOT send more than one Non-confirmable request every 3
seconds, and SHOULD use an even less aggressive rate when possible seconds, and SHOULD use an even less aggressive rate when possible
(case 2 in Section 3.1.3 of [RFC8085]). (case 2 in Section 3.1.3 of [RFC8085]).
4.4.1. Request Mitigation 4.4.1. Request Mitigation
When a DOTS client requires mitigation for any reason, the DOTS When a DOTS client requires mitigation for any reason, the DOTS
client uses CoAP PUT method to send a mitigation request to the DOTS client uses CoAP PUT method to send a mitigation request to its DOTS
server(s) (Figure 5, illustrated in JSON diagnostic notation). If server(s) (Figure 5, illustrated in JSON diagnostic notation). If
this DOTS client is entitled to solicit the DOTS service, the DOTS this DOTS client is entitled to solicit the DOTS service, the DOTS
server can enable mitigation on behalf of the DOTS client by server can enable mitigation on behalf of the DOTS client by
communicating the DOTS client's request to the mitigator and relaying communicating the DOTS client's request to the mitigator and relaying
selected mitigator feedback to the requesting DOTS client. selected mitigator feedback to the requesting DOTS client.
Header: PUT (Code=0.03) Header: PUT (Code=0.03)
Uri-Host: "host" Uri-Host: "host"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "dots" Uri-Path: "dots"
skipping to change at page 12, line 29 skipping to change at page 12, line 29
This is an optional attribute. This is an optional attribute.
mitigation-id: Identifier for the mitigation request represented mitigation-id: Identifier for the mitigation request represented
using an integer. This identifier MUST be unique for each using an integer. This identifier MUST be unique for each
mitigation request bound to the DOTS client, i.e., the mitigation- mitigation request bound to the DOTS client, i.e., the mitigation-
id parameter value in the mitigation request needs to be unique id parameter value in the mitigation request needs to be unique
relative to the mitigation-id parameter values of active relative to the mitigation-id parameter values of active
mitigation requests conveyed from the DOTS client to the DOTS mitigation requests conveyed from the DOTS client to the DOTS
server. This identifier MUST be generated by the DOTS client. server. This identifier MUST be generated by the DOTS client.
This document does not make any assumption about how this This document does not make any assumption about how this
identifier is generated. This is a mandatory attribute. identifier is generated.
target-ip: A list of IP addresses under attack. This is an optional This is a mandatory attribute.
attribute.
target-prefix: A list of prefixes under attack. Prefixes are target-ip: A list of IP addresses identifying resources under
represented using CIDR notation [RFC4632]. This is an optional attack. This is an optional attribute.
attribute.
target-port-range: A list of ports under attack. The port range, target-prefix: A list of prefixes identifying resources under
lower-port for lower port number and upper-port for upper port attack. Prefixes are represented using Classless Inter-domain
number. When only lower-port is present, it represents a single Routing (CIDR) notation [RFC4632].
port. For TCP, UDP, Stream Control Transmission Protocol (SCTP)
[RFC4960], or Datagram Congestion Control Protocol (DCCP)
[RFC4340]: the range of ports (e.g., 1024-65535). This is an
optional attribute.
target-protocol: A list of protocols under attack. Values are taken This is an optional attribute.
from the IANA protocol registry [proto_numbers]. The value 0 has
a special meaning for 'all protocols'. This is an optional
attribute.
target-fqdn: A list of Fully Qualified Domain Names. Fully target-port-range: A list of port numbers bound to resources under
Qualified Domain Name (FQDN) is the full name of a system, rather attack.
than just its hostname. For example, "venera" is a hostname, and
"venera.isi.edu" is an FQDN. This is an optional attribute.
target-uri: A list of Uniform Resource Identifiers (URI). This is The port range is defined by two bounds, a lower port number
an optional attribute. (lower-port) and an upper port number (upper-port). When only
'lower-port' is present, it represents a single port number. For
TCP, UDP, Stream Control Transmission Protocol (SCTP) [RFC4960],
or Datagram Congestion Control Protocol (DCCP) [RFC4340], the
range of ports can be, for example, 1024-65535.
alias-name: A list of aliases. Aliases can be created using the This is an optional attribute.
DOTS data channel (Section 3.1.1 of [I-D.ietf-dots-data-channel])
or direct configuration, or other means and then used in target-protocol: A list of protocols involved in an attack. Values
subsequent signal channel exchanges to refer more efficiently to are taken from the IANA protocol registry [proto_numbers].
the resources under attack. This is an optional attribute.
The value 0 has a special meaning for 'all protocols'.
This is an optional attribute.
target-fqdn: A list of Fully Qualified Domain Names (FQDNs)
identifying resources under attack. An FQDN is the full name of a
resource, rather than just its hostname. For example, "venera" is
a hostname, and "venera.isi.edu" is an FQDN.
This is an optional attribute.
target-uri: A list of Uniform Resource Identifiers (URIs) [RFC3986]
identifying resources under attack.
This is an optional attribute.
alias-name: A list of aliases of resources for which the mitigation
is requested. Aliases can be created using the DOTS data channel
(Section 6.1 of [I-D.ietf-dots-data-channel]), direct
configuration, or other means. An alias is used in subsequent
signal channel exchanges to refer more efficiently to the
resources under attack.
This is an optional attribute.
lifetime: Lifetime of the mitigation request in seconds. The lifetime: Lifetime of the mitigation request in seconds. The
RECOMMENDED lifetime of a mitigation request is 3600 seconds (60 RECOMMENDED lifetime of a mitigation request is 3600 seconds (60
minutes) -- this value was chosen to be long enough so that minutes) -- this value was chosen to be long enough so that
refreshing is not typically a burden on the DOTS client, while refreshing is not typically a burden on the DOTS client, while
expiring the request where the client has unexpectedly quit in a expiring the request where the client has unexpectedly quit in a
timely manner. timely manner. DOTS clients MUST include this parameter in their
mitigation requests. Upon the expiry of this lifetime, and if the
request is not refreshed, the mitigation request is removed. The
request can be refreshed by sending the same request again.
A lifetime of 0 in a mitigation request is an invalid value.
A lifetime of negative one (-1) indicates indefinite lifetime for A lifetime of negative one (-1) indicates indefinite lifetime for
the mitigation request. A lifetime of 0 in the request is an the mitigation request. The DOTS server MAY refuse indefinite
invalid value. lifetime, for policy reasons; the granted lifetime value is
returned in the response. DOTS clients MUST be prepared to not be
granted mitigations with indefinite lifetimes.
DOTS clients MUST include this parameter in their mitigation The DOTS server MUST always indicate the actual lifetime in the
requests. Upon the expiry of this lifetime, and if the request is
not refreshed, the mitigation request is removed. The request can
be refreshed by sending the same request again. The server MAY
refuse indefinite lifetime, for policy reasons; the granted
lifetime value is returned in the response. DOTS clients MUST be
prepared to not be granted mitigations with indefinite lifetimes.
The server MUST always indicate the actual lifetime in the
response and the remaining lifetime in status messages sent to the response and the remaining lifetime in status messages sent to the
client. This is a mandatory attribute. DOTS client.
This is a mandatory attribute.
Because of the complexity to handle partial failure cases, this
specification does not allow for including multiple mitigation
requests in the same PUT request. Concretely, a DOTS client MUST NOT
include multiple 'scope' parameters in the same PUT request.
The CBOR key values for the parameters are defined in Section 6. The CBOR key values for the parameters are defined in Section 6.
Section 10 defines how the CBOR key values can be allocated to Section 9 defines how the CBOR key values can be allocated to
standards bodies and vendors. standards bodies and vendors.
FQDN and URI mitigation scopes may be thought of as a form of scope FQDN 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 alias, in which the addresses to which the domain name or URI resolve
represent the full scope of the mitigation. represent the full scope of the mitigation.
In the PUT request at least one of the attributes 'target-ip' or In the PUT request at least one of the attributes 'target-ip' or
'target-prefix' or 'target-fqdn' or 'target-uri 'or 'alias-name' MUST 'target-prefix' or 'target-fqdn' or 'target-uri 'or 'alias-name' MUST
be present. If the attribute value is empty, then the attribute MUST be present. If the attribute value is empty, then the attribute MUST
NOT be present in the request. DOTS agents can safely ignore Vendor- NOT be present in the request.
Specific parameters they don't understand.
The relative order of two mitigation requests from a DOTS client is The relative order of two mitigation requests from a DOTS client is
determined by comparing their respective 'mitigation-id' values. If determined by comparing their respective 'mitigation-id' values. If
two mitigation requests have overlapping mitigation scopes, the two mitigation requests have overlapping mitigation scopes, the
mitigation request with higher numeric 'mitigation-id' value will mitigation request with higher numeric 'mitigation-id' value will
override the mitigation request with a lower numeric 'mitigation-id' override the mitigation request with a lower numeric 'mitigation-id'
value. Two mitigation-ids from a DOTS client are overlapping if value. Two mitigation-ids from a DOTS client are overlapping if
there is a common IP address, IP prefix, FQDN, URI, or alias-name. there is a common IP address, IP prefix, FQDN, URI, or alias-name.
To avoid maintaining a long list of overlapping mitigation requests To avoid maintaining a long list of overlapping mitigation requests
from a DOTS client and avoid error-prone provisioning of mitigation from a DOTS client and avoid error-prone provisioning of mitigation
requests from a DOTS client, the overlapped lower numeric requests from a DOTS client, the overlapped lower numeric
'mitigation-id' MUST be automatically deleted and no longer available 'mitigation-id' MUST be automatically deleted and no longer available
at the DOTS server. at the DOTS server.
The Uri-Path option carries a major and minor version nomenclature to The Uri-Path option carries a major and minor version nomenclature to
manage versioning and DOTS signal channel in this specification uses manage versioning and DOTS signal channel in this specification uses
v1 major version. v1 major version.
If the DOTS client is using the certificate provisioned by the
Enrollment over Secure Transport (EST) server [RFC7030] in the DOTS
gateway-domain to authenticate itself to the DOTS gateway, then the
'client-identifier' value can be the output of a cryptographic hash
algorithm whose input is the DER-encoded ASN.1 representation of the
Subject Public Key Info (SPKI) of an X.509 certificate. In this
version of the specification, the cryptographic hash algorithm used
is SHA-256 [RFC6234]. The output of the cryptographic hash algorithm
is truncated to 16 bytes; truncation is done by stripping off the
final 16 bytes. The truncated output is base64url encoded. If the
'client-identifier' value is already present in the mitigation
request received from the DOTS client, the DOTS gateway MAY compute
the 'client-identifier' value, as discussed above, and add the
computed 'client-identifier' value to the end of the 'client-
identifier' list. The DOTS server MUST NOT use the 'client-
identifier' for the DOTS client authentication process.
In both DOTS signal and data channel sessions, the DOTS client MUST
authenticate itself to the DOTS server (Section 9). The DOTS server
may use the algorithm in Section 7 of [RFC7589] to derive the DOTS
client identity or username from the client certificate. The DOTS
client identity allows the DOTS server to accept mitigation requests
with scopes which the DOTS client is authorized to manage. The DOTS
server couples the DOTS signal and data channel sessions using the
DOTS client identity and the 'client-identifier' parameter value, so
the DOTS server can validate whether the aliases conveyed in the
mitigation request were indeed created by the same DOTS client using
the DOTS data channel session. If the aliases were not created by
the DOTS client, the DOTS server returns 4.00 (Bad Request) in the
response.
The DOTS server couples the DOTS signal channel sessions using the
DOTS client identity and the 'client-identifier' parameter value, and
the DOTS server uses 'mitigation-id' parameter value to detect
duplicate mitigation requests. If the mitigation request contains
both alias-name and other parameters identifying the target resources
(such as, 'target-ip', 'target-prefix', 'target-port-range', 'target-
fqdn', or 'target-uri'), then the DOTS server appends the parameter
values in 'alias-name' with the corresponding parameter values in
'target-ip', 'target-prefix', 'target-port-range', 'target-fqdn', or
'target-uri'.
Figure 6 shows a PUT request example to signal that ports 80, 8080, Figure 6 shows a PUT request example to signal that ports 80, 8080,
and 443 on the servers 2001:db8:6401::1 and 2001:db8:6401::2 are and 443 on the servers 2001:db8:6401::1 and 2001:db8:6401::2 are
being attacked (illustrated in JSON diagnostic notation). being attacked (illustrated in JSON diagnostic notation).
Header: PUT (Code=0.03) Header: PUT (Code=0.03)
Uri-Host: "www.example.com" Uri-Host: "www.example.com"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "dots" Uri-Path: "dots"
Uri-Path: "v1" Uri-Path: "v1"
Uri-Path: "mitigate" Uri-Path: "mitigate"
Content-Format: "application/cbor" Content-Format: "application/cbor"
{ {
"mitigation-scope": { "mitigation-scope": {
"client-identifier": [ "client-identifier": [
"dz6pHjaADkaFTbjr0JGBpw" "dz6pHjaADkaFTbjr0JGBpw"
], ],
"scope": [ "scope": [
{ {
"mitigation-id": 12332, "mitigation-id": 12332,
"target-ip": [ "target-ip": [
"2001:db8:6401::1", "2001:db8:6401::1",
"2001:db8:6401::2" "2001:db8:6401::2"
], ],
"target-port-range": [ "target-port-range": [
{ {
"lower-port": 80 "lower-port": 80
}, },
{ {
"lower-port": 443 "lower-port": 443
}, },
{ {
"lower-port": 8080 "lower-port": 8080
} }
], ],
"target-protocol": [ "target-protocol": [
6 6
] ]
}
]
}
}
} Figure 6: PUT for DOTS signal
]
}
}
The CBOR encoding format is shown below: The corresponding CBOR encoding format is shown in Figure 7.
A1 # map(1) A1 # map(1)
01 # unsigned(1) 01 # unsigned(1)
A2 # map(2) A2 # map(2)
18 20 # unsigned(32) 18 20 # unsigned(32)
81 # array(1) 81 # array(1)
76 # text(22) 76 # text(22)
647A3670486A6141446B614654626A72304A47427077 # "dz6pHjaADkaFTbjr0JGBpw" 647A3670486A6141446B614654626A72304A47427077 # "dz6pHjaADkaFTbjr0JGBpw"
02 # unsigned(2) 02 # unsigned(2)
81 # array(1) 81 # array(1)
skipping to change at page 16, line 45 skipping to change at page 16, line 38
A1 # map(1) A1 # map(1)
06 # unsigned(6) 06 # unsigned(6)
19 01BB # unsigned(443) 19 01BB # unsigned(443)
A1 # map(1) A1 # map(1)
06 # unsigned(6) 06 # unsigned(6)
19 1F90 # unsigned(8080) 19 1F90 # unsigned(8080)
08 # unsigned(8) 08 # unsigned(8)
81 # array(1) 81 # array(1)
06 # unsigned(6) 06 # unsigned(6)
Figure 6: PUT for DOTS signal Figure 7: PUT for DOTS signal (CBOR)
If the DOTS client is using the certificate provisioned by the
Enrollment over Secure Transport (EST) server [RFC7030] in the DOTS
gateway-domain to authenticate itself to the DOTS gateway, then the
'client-identifier' value can be the output of a cryptographic hash
algorithm whose input is the DER-encoded ASN.1 representation of the
Subject Public Key Info (SPKI) of an X.509 certificate. In this
version of the specification, the cryptographic hash algorithm used
is SHA-256 [RFC6234]. The output of the cryptographic hash algorithm
is truncated to 16 bytes; truncation is done by stripping off the
final 16 bytes. The truncated output is base64url encoded. If the
'client-identifier' value is already present in the mitigation
request received from the DOTS client, the DOTS gateway MAY compute
the 'client-identifier' value, as discussed above, and add the
computed 'client-identifier' value to the end of the 'client-
identifier' list. The DOTS server MUST NOT use the 'client-
identifier' for the DOTS client authentication process.
In both DOTS signal and data channel sessions, the DOTS client MUST
authenticate itself to the DOTS server (Section 8). The DOTS server
may use the algorithm in Section 7 of [RFC7589] to derive the DOTS
client identity or username from the client certificate. The DOTS
client identity allows the DOTS server to accept mitigation requests
with scopes which the DOTS client is authorized to manage. The DOTS
server couples the DOTS signal and data channel sessions using the
DOTS client identity and the 'client-identifier' parameter value, so
the DOTS server can validate whether the aliases conveyed in the
mitigation request were indeed created by the same DOTS client using
the DOTS data channel session. If the aliases were not created by
the DOTS client, the DOTS server returns 4.00 (Bad Request) in the
response.
The DOTS server uses 'mitigation-id' parameter value to detect
duplicate mitigation requests. If the mitigation request contains
both alias-name and other parameters identifying the target resources
(such as, 'target-ip', 'target-prefix', 'target-port-range', 'target-
fqdn', or 'target-uri'), then the DOTS server appends the parameter
values in 'alias-name' with the corresponding parameter values in
'target-ip', 'target-prefix', 'target-port-range', 'target-fqdn', or
'target-uri'.
The DOTS server indicates the result of processing the PUT request The DOTS server indicates the result of processing the PUT request
using CoAP response codes. CoAP 2.xx codes are success. CoAP 4.xx using CoAP response codes. CoAP 2.xx codes are success. CoAP 4.xx
codes are some sort of invalid requests (client errors). COAP 5.xx codes are some sort of invalid requests (client errors). COAP 5.xx
codes are returned if the DOTS server has erred or is currently codes are returned if the DOTS server has erred or is currently
unavailable to provide mitigation in response to the mitigation unavailable to provide mitigation in response to the mitigation
request from the DOTS client. request from the DOTS client.
Figure 7 shows an example of a PUT request that is successfully Figure 8 shows an example of a PUT request that is successfully
processed (i.e., CoAP 2.xx response codes). processed (i.e., CoAP 2.xx response codes).
{ {
"mitigation-scope": { "mitigation-scope": {
"client-identifier": [ "client-identifier": [
"string" "string"
], ],
"scope": [ "scope": [
{ {
"mitigation-id": integer, "mitigation-id": integer,
"lifetime": integer "lifetime": integer
} }
] ]
} }
} }
Figure 7: 2.xx response body Figure 8: 2.xx response body
If the request is missing one or more mandatory attributes, includes
multiple 'scope' parameters, or contains invalid or unknown
parameters, the DOTS server replies with 4.00 (Bad Request). DOTS
agents can safely ignore Vendor-Specific parameters they don't
understand.
A DOTS server that receives a mitigation request with a lifetime set
to 0 MUST reply with a 4.00 (Bad Request).
If the DOTS server does not find the 'mitigation-id' parameter value If the DOTS server does not find the 'mitigation-id' parameter value
conveyed in the PUT request in its configuration data, then the conveyed in the PUT request in its configuration data, it MAY accept
server MAY accept the mitigation request by sending back a 2.01 the mitigation request by sending back a 2.01 (Created) response to
(Created) response to the DOTS client; the DOTS server will the DOTS client; the DOTS server will consequently try to mitigate
consequently try to mitigate the attack. the attack.
If the DOTS server finds the 'mitigation-id' parameter value conveyed If the DOTS server finds the 'mitigation-id' parameter value conveyed
in the PUT request in its configuration data, then the server MAY in the PUT request in its configuration data, it MAY update the
update the mitigation request, and a 2.04 (Changed) response is mitigation request, and a 2.04 (Changed) response is returned to
returned to indicate a successful update of the mitigation request. indicate a successful update of the mitigation request.
If the request is missing one or more mandatory attributes, then 4.00
(Bad Request) will be returned in the response or if the request
contains invalid or unknown parameters then 4.02 (Invalid query) is
returned in the response.
If the request is conflicting with an existing mitigation request If the request is conflicting with an existing mitigation request
from a different DOTS client, and the DOTS server decides to maintain from a different DOTS client, and the DOTS server decides to maintain
the conflicting mitigation request, the DOTS server returns 4.09 the conflicting mitigation request, the DOTS server returns 4.09
(Conflict) [RFC8132] to the requesting DOTS client. (Conflict) [RFC8132] to the requesting DOTS client. The response
includes enough information for a DOTS client to recognize the source
of the conflict (refer to 'conflict-information' specified in
Section 4.4.2).
For a mitigation request to continue beyond the initial negotiated For a mitigation request to continue beyond the initial negotiated
lifetime, the DOTS client need to refresh the current mitigation lifetime, the DOTS client has to refresh the current mitigation
request by sending a new PUT request. The PUT request MUST use the request by sending a new PUT request. This PUT request MUST use the
same 'mitigation-id' value, and MUST repeat all the other parameters same 'mitigation-id' value, and MUST repeat all the other parameters
as sent in the original mitigation request apart from a possible as sent in the original mitigation request apart from a possible
change to the lifetime parameter value. change to the lifetime parameter value.
A DOTS gateway MUST update the 'client-identifier' list in the A DOTS gateway MUST update the 'client-identifier' list in the
response to remove the 'client-identifier' value it had added in the response to remove the 'client-identifier' value it had added in the
corresponding request before forwarding the response to the DOTS corresponding request before forwarding the response to the DOTS
client. client.
4.4.2. Withdraw a Mitigation 4.4.2. Retrieve Information Related to a Mitigation
A DELETE request is used to withdraw a DOTS mitigation request from a
DOTS server (Figure 8).
Header: DELETE (Code=0.04)
Uri-Host: "host"
Uri-Path: ".well-known"
Uri-Path: "dots"
Uri-Path: "version"
Uri-Path: "mitigate"
Content-Format: "application/cbor"
{
"mitigation-scope": {
"client-identifier": [
"string"
],
"scope": [
{
"mitigation-id": integer
}
]
}
}
Figure 8: Withdraw DOTS signal
The DOTS server immediately acknowledges a DOTS client's request to A GET request is used to retrieve information (including status) of a
withdraw the DOTS signal using 2.02 (Deleted) response code with no DOTS mitigation from a DOTS server. If the DOTS server does not find
response payload. A 2.02 (Deleted) Response Code is returned even if the 'mitigation-id' parameter value conveyed in the GET request in
the 'mitigation-id' parameter value conveyed in the DELETE request its configuration data, it responds with a 4.04 (Not Found) error
does not exist in its configuration data before the request. response code.
If the DOTS server finds the 'mitigation-id' parameter value conveyed The 'c' (content) parameter and its permitted values defined in
in the DELETE request in its configuration data, then to protect [I-D.ietf-core-comi] can be used to retrieve non-configuration data
against route or DNS flapping caused by a client rapidly toggling (attack mitigation status) or configuration data or both. The DOTS
mitigation, and to dampen the effect of oscillating attacks, DOTS server SHOULD support this optional filtering capability but can
servers MAY allow mitigation to continue for a limited period after safely ignore it if not supported.
acknowledging a DOTS client's withdrawal of a mitigation request.
During this period, the DOTS server status messages SHOULD indicate
that mitigation is active but terminating. The initial active-but-
terminating period SHOULD be sufficiently long to absorb latency
incurred by route propagation. The active-but-terminating period
SHOULD be set by default to 120 seconds. If the client requests
mitigation again before the initial active-but-terminating period
elapses, the DOTS server MAY exponentially 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. For example, if there is a financial
relationship between the DOTS client and server domains, the DOTS
client ceases incurring cost at this point.
4.4.3. Retrieve Information Related to a Mitigation The following examples illustrate how a DOTS client retrieves active
mitigation requests from a DOTS server. In particular:
A GET request is used to retrieve information (including status) of a o Figure 9 shows the example of a GET request to retrieve all DOTS
DOTS mitigation from a DOTS server (Figure 9). If the DOTS server mitigation requests signaled by a DOTS client.
does not find the 'mitigation-id' parameter value conveyed in the GET
request in its configuration data, then it responds with a 4.04 (Not
Found) error response code. The 'c' (content) parameter and its
permitted values defined in [I-D.ietf-core-comi] can be used to
retrieve non-configuration data (attack mitigation status) or
configuration data or both. The DOTS server SHOULD support this
optional filtering capability but can safely ignore it if not
supported.
The examples depicted in Figure 9 assume the default of "c=a". o Figure 10 shows the example of a GET request to retrieve a
specific DOTS mitigation request signaled by a DOTS client. The
configuration data to be reported in the response is formatted in
the same order it was processed at the DOTS server.
1) To retrieve all DOTS signals signaled by the DOTS client. These two examples assume the default of "c=a"; that is the DOTS
client asks for all data to be reported by the DOTS server.
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "host" Uri-Host: "host"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "dots" Uri-Path: "dots"
Uri-Path: "version" Uri-Path: "version"
Uri-Path: "mitigate" Uri-Path: "mitigate"
Observe : 0 Observe : 0
{ {
"mitigation-scope": { "mitigation-scope": {
"client-identifier": [ "client-identifier": [
"string" "string"
] ]
} }
} }
2) To retrieve a specific DOTS signal signaled by the DOTS client. Figure 9: GET to retrieve all DOTS mitigation requests
The configuration data in the response will be formatted in the
same order it was processed at the DOTS server.
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "host" Uri-Host: "host"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "dots" Uri-Path: "dots"
Uri-Path: "version" Uri-Path: "version"
Uri-Path: "mitigate" Uri-Path: "mitigate"
Observe : 0 Observe : 0
Content-Format: "application/cbor" Content-Format: "application/cbor"
{ {
skipping to change at page 20, line 47 skipping to change at page 20, line 43
"string" "string"
], ],
"scope": [ "scope": [
{ {
"mitigation-id": integer "mitigation-id": integer
} }
] ]
} }
} }
Figure 9: GET to retrieve the rules Figure 10: GET to retrieve a specific DOTS mitigation request
Figure 10 shows a response example of all the active mitigation Figure 11 shows a response example of all active mitigation requests
requests associated with the DOTS client on the DOTS server and the associated with the DOTS client on the DOTS server and the mitigation
mitigation status of each mitigation request. status of each mitigation request.
{ {
"mitigation-scope": { "mitigation-scope": {
"scope": [ "scope": [
{ {
"mitigation-id": 12332, "mitigation-id": 12332,
"mitigation-start": 1507818434.00, "mitigation-start": 1507818434.00,
"target-protocol": [ "target-protocol": [
17 17
], ],
skipping to change at page 21, line 38 skipping to change at page 21, line 38
"status":3 "status":3
"bytes-dropped": 0, "bytes-dropped": 0,
"bps-dropped": 0, "bps-dropped": 0,
"pkts-dropped": 0, "pkts-dropped": 0,
"pps-dropped": 0 "pps-dropped": 0
} }
] ]
} }
} }
Figure 10: Response body Figure 11: Response body
The mitigation status parameters are described below: The mitigation status parameters are described below:
mitigation-start: Mitigation start time is represented in seconds mitigation-start: Mitigation start time is represented in seconds
relative to 1970-01-01T00:00Z in UTC time (Section 2.4.1 of relative to 1970-01-01T00:00Z in UTC time (Section 2.4.1 of
[RFC7049]). The encoding is modified so that the leading tag 1 [RFC7049]). The encoding is modified so that the leading tag 1
(epoch-based date/time) MUST be omitted. (epoch-based date/time) MUST be omitted.
lifetime: The remaining lifetime of the mitigation request in lifetime: The remaining lifetime of the mitigation request, in
seconds. seconds.
status: Status of attack mitigation. The 'status' parameter is a status: Status of attack mitigation. The 'status' parameter is a
mandatory attribute. The various possible values of 'status' mandatory attribute. The various possible values of 'status'
parameter are explained in Table 2. parameter are explained in Table 2.
conflict-information: Indicates that a mitigation request is conflict-information: Indicates that a mitigation request is
conflicting with another mitigation request(s) from other DOTS conflicting with another mitigation request(s) from other DOTS
client(s). This optional attribute has the following structure: client(s). This optional attribute has the following structure:
conflict-status: Indicates the status of a conflicting mitigation conflict-status: Indicates the status of a conflicting mitigation
request. The following values are defined: request. The following values are defined:
1: DOTS Server has detected conflicting mitigation requests 1: DOTS server has detected conflicting mitigation requests
from different DOTS clients. This mitigation request is from different DOTS clients. This mitigation request is
currently inactive until the conflicts are resolved. currently inactive until the conflicts are resolved.
Another mitigation request is active. Another mitigation request is active.
2: DOTS Server has detected conflicting mitigation requests 2: DOTS server has detected conflicting mitigation requests
from different DOTS clients. This mitigation request is from different DOTS clients. This mitigation request is
currently active. currently active.
3: DOTS Server has detected conflicting mitigation requests 3: DOTS server has detected conflicting mitigation requests
from different DOTS clients. All conflicting mitigation from different DOTS clients. All conflicting mitigation
requests are inactive. requests are inactive.
conflict-cause: Indicates the cause of the conflict. The conflict-cause: Indicates the cause of the conflict. The
following values are defined: following values are defined:
1: Overlapping target prefixes 1: Overlapping targets. 'conflict-scope' provides more details
about the conflicting target clauses.
2: Conflicts with an existing white list 2: Conflicts with an existing white list. This code is
returned when the DDoS mitigation detects source addresses/
prefixes in the white-listed ACLs are attacking the target.
conflict-scope Indicates the conflict scope. It may include a
list of IP addresses, a list of prefixes, a list of port
numbers, a list of target protocols, a list of FQDNs, a list of
URIs, or a list of alias-names.
retry-timer Indicates, in seconds, the time upon which the DOTS retry-timer Indicates, in seconds, the time upon which the DOTS
client may re-issue the same request. Any retransmission of client may re-issue the same request. The DOTS server returns
the same mitigation request before the expiry of this timer 'retry-timer' only to DOTS client(s) for which a mitigation
will be discarded by the DOTS server. request is deactivated. Any retransmission of the same
mitigation request before the expiry of this timer is likely to
be rejected by the DOTS server for the same reasons.
The retry-timer SHOULD be equal to the lifetime of the active
mitigation request resulting in the deactivation of the
conflicting mitigation request. The lifetime of the
deactivated mitigation request will be updated to (retry-timer
+ 45 seconds), so the DOTS client can refresh the deactivated
mitigation request after retry-timer seconds before expiry of
lifetime and check if the conflict is resolved.
bytes-dropped: The total dropped byte count for the mitigation bytes-dropped: The total dropped byte count for the mitigation
request since the attack mitigation is triggered. The count wraps request since the attack mitigation is triggered. The count wraps
around when it reaches the maximum value of unsigned integer. around when it reaches the maximum value of unsigned integer.
This is an optional attribute. This is an optional attribute.
bps-dropped: The average dropped bytes per second for the mitigation bps-dropped: The average dropped bytes per second for the mitigation
request since the attack mitigation is triggered. This SHOULD be request since the attack mitigation is triggered. This SHOULD be
a five-minute average. This is an optional attribute. a five-minute average. This is an optional attribute.
skipping to change at page 24, line 7 skipping to change at page 25, line 7
packet loss during a DDoS attack, DOTS server periodically sends packet loss during a DDoS attack, DOTS server periodically sends
attack mitigation status to the DOTS client and also notifies the attack mitigation status to the DOTS client and also notifies the
DOTS client whenever the status of the attack mitigation changes. If DOTS client whenever the status of the attack mitigation changes. If
the DOTS server cannot maintain a RTT estimate, it SHOULD NOT send the DOTS server cannot maintain a RTT estimate, it SHOULD NOT send
more than one unsolicited notification every 3 seconds, and SHOULD more than one unsolicited notification every 3 seconds, and SHOULD
use an even less aggressive rate when possible (case 2 in use an even less aggressive rate when possible (case 2 in
Section 3.1.3 of [RFC8085]). Section 3.1.3 of [RFC8085]).
When conflicting requests are detected, the DOTS server enforces the When conflicting requests are detected, the DOTS server enforces the
corresponding policy (e.g. accept all requests, reject all requests, corresponding policy (e.g. accept all requests, reject all requests,
accept only one request but reject all the other, ...). It is accept only one request but reject all the others, ...). It is
assumed that this policy is supplied by the DOTS server administrator assumed that this policy is supplied by the DOTS server administrator
or it is a default behavior of the DOTS server implementation. Then, or it is a default behavior of the DOTS server implementation. Then,
the DOTS server sends notification message(s) to the DOTS client(s) the DOTS server sends notification message(s) to the DOTS client(s)
at the origin of the conflict. A conflict notification message at the origin of the conflict. A conflict notification message
includes information about the conflict cause and the status of the includes information about the conflict cause, scope, and the status
mitigation request(s). For example, of the mitigation request(s). For example,
o A notification message with status code set to '8 (Attack o A notification message with status code set to '8 (Attack
mitigation is rejected)' is sent to a DOTS client to indicate that mitigation is rejected)' and 'conflict-status' set to '1' is sent
this mitigation request is rejected because a conflict is to a DOTS client to indicate that this mitigation request is
detected. rejected because a conflict is detected.
o A notification message with status code set to '7 (Attack o A notification message with status code set to '7 (Attack
mitigation is withdrawn)' is sent to a DOTS client to indicate mitigation is withdrawn)' and 'conflict-status' set to '1' is sent
that an active mitigation request is deactivated because a to a DOTS client to indicate that an active mitigation request is
conflict is detected. deactivated because a conflict is detected.
o A notification message with status code set to '1 (Attack o A notification message with status code set to '1 (Attack
mitigation is in progress)' and 'conflict-status' set to 2 is sent mitigation is in progress)' and 'conflict-status' set to 2 is sent
to a DOTS client to indicate that this mitigation request is in to a DOTS client to indicate that this mitigation request is in
progress, but a conflict is detected. progress, but a conflict is detected.
Upon receipt of a conflict notification message indicating that a Upon receipt of a conflict notification message indicating that a
mitigation request is deactivated because of a conflict, a DOTS mitigation request is deactivated because of a conflict, a DOTS
client MUST NOT resend the same mitigation request before the expiry client MUST NOT resend the same mitigation request before the expiry
of 'retry-timer'. It is also recommended that DOTS clients support of 'retry-timer'. It is also recommended that DOTS clients support
skipping to change at page 24, line 46 skipping to change at page 25, line 46
A DOTS client that is no longer interested in receiving notifications A DOTS client that is no longer interested in receiving notifications
from the DOTS server can simply "forget" the observation. When the from the DOTS server can simply "forget" the observation. When the
DOTS server then sends the next notification, the DOTS client will DOTS server then sends the next notification, the DOTS client will
not recognize the token in the message and thus will return a Reset not recognize the token in the message and thus will return a Reset
message. This causes the DOTS server to remove the associated entry. message. This causes the DOTS server to remove the associated entry.
Alternatively, the DOTS client can explicitly deregister by issuing a Alternatively, the DOTS client can explicitly deregister by issuing a
GET request that has the Token field set to the token of the GET request that has the Token field set to the token of the
observation to be cancelled and includes an Observe Option with the observation to be cancelled and includes an Observe Option with the
value set to '1' (deregister). value set to '1' (deregister).
Figure 11 shows an example of a DOTS client requesting a DOTS server Figure 12 shows an example of a DOTS client requesting a DOTS server
to send notifications related a given mitigation request. to send notifications related a given mitigation request.
DOTS Client DOTS Server DOTS Client DOTS Server
| | | |
| GET /<mitigation-id number> | | GET /<mitigation-id number> |
| Token: 0x4a | Registration | Token: 0x4a | Registration
| Observe: 0 | | Observe: 0 |
+------------------------------>| +------------------------------>|
| | | |
| 2.05 Content | | 2.05 Content |
skipping to change at page 25, line 31 skipping to change at page 26, line 31
| status: "mitigation | | status: "mitigation |
| complete" | | complete" |
|<------------------------------+ |<------------------------------+
| 2.05 Content | | 2.05 Content |
| Token: 0x4a | Notification upon | Token: 0x4a | Notification upon
| Observe: 60 | a state change | Observe: 60 | a state change
| status: "attack stopped" | | status: "attack stopped" |
|<------------------------------+ |<------------------------------+
| | | |
Figure 11: Notifications of attack mitigation status Figure 12: Notifications of attack mitigation status
4.4.3.1. Mitigation Status 4.4.2.1. Mitigation Status
The DOTS client can send the GET request at frequent intervals The DOTS client can send the GET request at frequent intervals
without the Observe option to retrieve the configuration data of the without the Observe option to retrieve the configuration data of the
mitigation request and non-configuration data (i.e., the attack mitigation request and non-configuration data (i.e., the attack
status). The frequency of polling the DOTS server to get the status). The frequency of polling the DOTS server to get the
mitigation status should follow the transmission guidelines given in mitigation status should follow the transmission guidelines given in
Section 3.1.3 of [RFC8085]. If the DOTS server has been able to Section 3.1.3 of [RFC8085]. If the DOTS server has been able to
mitigate the attack and the attack has stopped, the DOTS server mitigate the attack and the attack has stopped, the DOTS server
indicates as such in the status, and the DOTS client recalls the indicates as such in the status, and the DOTS client recalls the
mitigation request by issuing a DELETE for the mitigation-id. mitigation request by issuing a DELETE request for the mitigation-id.
A DOTS client should react to the status of the attack from the DOTS A DOTS client SHOULD react to the status of the attack from the DOTS
server and not the fact that it has recognized, using its own means, server and not the fact that it has recognized, using its own means,
that the attack has been mitigated. This ensures that the DOTS that the attack has been mitigated. This ensures that the DOTS
client does not recall a mitigation request in a premature fashion client does not recall a mitigation request in a premature fashion
because it is possible that the DOTS client does not sense the DDOS because it is possible that the DOTS client does not sense the DDOS
attack on its resources but the DOTS server could be actively attack on its resources but the DOTS server could be actively
mitigating the attack and the attack is not completely averted. mitigating the attack and the attack is not completely averted.
4.4.4. Efficacy Update from DOTS Clients 4.4.3. Efficacy Update from DOTS Clients
While DDoS mitigation is active, due to the likelihood of packet While DDoS mitigation is active, due to the likelihood of packet
loss, a DOTS client MAY periodically transmit DOTS mitigation loss, a DOTS client MAY periodically transmit DOTS mitigation
efficacy updates to the relevant DOTS server. A PUT request efficacy updates to the relevant DOTS server. A PUT request is used
(Figure 12) is used to convey the mitigation efficacy update to the to convey the mitigation efficacy update to the DOTS server.
DOTS server.
The PUT request MUST include all the parameters used in the PUT The PUT request MUST include all the parameters used in the PUT
request to convey the DOTS signal (Section 4.4.1) unchanged apart request to convey the DOTS signal (Section 4.4.1) unchanged apart
from the lifetime parameter value. If this is not the case, the DOTS from the lifetime parameter value. If this is not the case, the DOTS
server MUST reject the request with a 4.02 error response code. server MUST reject the request with a 4.00 (Bad Request).
The If-Match Option (Section 5.10.8.1 of [RFC7252]) with an empty The If-Match Option (Section 5.10.8.1 of [RFC7252]) with an empty
value is used to make the PUT request conditional on the current value is used to make the PUT request conditional on the current
existence of the mitigation request. If UDP is used as transport, existence of the mitigation request. If UDP is used as transport,
CoAP requests may arrive out-of-order. For example, the DOTS client CoAP requests may arrive out-of-order. For example, the DOTS client
may send a PUT request to convey an efficacy update to the DOTS may send a PUT request to convey an efficacy update to the DOTS
server followed by a DELETE request to withdraw the mitigation server followed by a DELETE request to withdraw the mitigation
request, but the DELETE request arrives at the DOTS server before the request, but the DELETE request arrives at the DOTS server before the
PUT request. To handle out-of-order delivery of requests, if an If- PUT request. To handle out-of-order delivery of requests, if an If-
Match option is present in the PUT request and the 'mitigation-id' in Match option is present in the PUT request and the 'mitigation-id' in
the request matches a mitigation request from that DOTS client, then the request matches a mitigation request from that DOTS client, then
the request is processed. If no match is found, the PUT request is the request is processed. If no match is found, the PUT request is
silently ignored. silently ignored.
An example of an efficacy update message, which includes an If-Match
option with an empty value, is depicted in Figure 13.
Header: PUT (Code=0.03) Header: PUT (Code=0.03)
Uri-Host: "host" Uri-Host: "host"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "dots" Uri-Path: "dots"
Uri-Path: "version" Uri-Path: "version"
Uri-Path: "mitigate" Uri-Path: "mitigate"
Content-Format: "application/cbor" Content-Format: "application/cbor"
If-Match: If-Match:
{ {
"mitigation-scope": { "mitigation-scope": {
skipping to change at page 27, line 49 skipping to change at page 28, line 49
"alias-name": [ "alias-name": [
"string" "string"
], ],
"lifetime": integer, "lifetime": integer,
"attack-status": integer "attack-status": integer
} }
] ]
} }
} }
Figure 12: Efficacy Update Figure 13: Efficacy Update
The 'attack-status' parameter is a mandatory attribute when doing a The 'attack-status' parameter is a mandatory attribute when doing an
efficacy update. The various possible values contained in the efficacy update. The various possible values contained in the
'attack-status' parameter are described in Table 3. 'attack-status' parameter are described in Table 3.
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
| Parameter | Description | | Parameter | Description |
| value | | | value | |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
| 1 | The DOTS client determines that it is still under | | 1 | The DOTS client determines that it is still under |
| | attack. | | | attack. |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
skipping to change at page 28, line 30 skipping to change at page 29, line 30
Table 3: Values of 'attack-status' parameter Table 3: Values of 'attack-status' parameter
The DOTS server indicates the result of processing a PUT request The DOTS server indicates the result of processing a PUT request
using CoAP response codes. The response code 2.04 (Changed) is using CoAP response codes. The response code 2.04 (Changed) is
returned if the DOTS server has accepted the mitigation efficacy returned if the DOTS server has accepted the mitigation efficacy
update. The error response code 5.03 (Service Unavailable) is update. The error response code 5.03 (Service Unavailable) is
returned if the DOTS server has erred or is incapable of performing returned if the DOTS server has erred or is incapable of performing
the mitigation. the mitigation.
4.4.4. Withdraw a Mitigation
A DELETE request is used to withdraw a DOTS mitigation request from a
DOTS server (Figure 14).
Header: DELETE (Code=0.04)
Uri-Host: "host"
Uri-Path: ".well-known"
Uri-Path: "dots"
Uri-Path: "version"
Uri-Path: "mitigate"
Content-Format: "application/cbor"
{
"mitigation-scope": {
"client-identifier": [
"string"
],
"scope": [
{
"mitigation-id": integer
}
]
}
}
Figure 14: Withdraw DOTS signal
If the request does not include a 'mitigation-id', the DOTS server
MUST reply with a 4.00 (Bad Request).
Once the request is validated, the DOTS server immediately
acknowledges a DOTS client's request to withdraw the DOTS signal
using 2.02 (Deleted) response code with no response payload. A 2.02
(Deleted) Response Code is returned even if the 'mitigation-id'
parameter value conveyed in the DELETE request does not exist in its
configuration data before the request.
If the DOTS server finds the 'mitigation-id' parameter value conveyed
in the DELETE request in its configuration data, then to protect
against route or DNS flapping caused by a DOTS client rapidly
toggling mitigation, and to dampen the effect of oscillating attacks,
the DOTS server MAY allow mitigation to continue for a limited period
after acknowledging a DOTS client's withdrawal of a mitigation
request. During this period, the DOTS server status messages SHOULD
indicate that mitigation is active but terminating (Section 4.4.2).
The initial active-but-terminating period SHOULD be sufficiently long
to absorb latency incurred by route propagation. The active-but-
terminating period SHOULD be set by default to 120 seconds. If the
client requests mitigation again before the initial active-but-
terminating period elapses, the DOTS server MAY exponentially
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. For example, if there is a financial
relationship between the DOTS client and server domains, the DOTS
client ceases incurring cost at this point.
4.5. DOTS Signal Channel Session Configuration 4.5. DOTS Signal Channel Session Configuration
The DOTS client can negotiate, configure, and retrieve the DOTS The DOTS client can negotiate, configure, and retrieve the DOTS
signal channel session behavior. The DOTS signal channel can be signal channel session behavior. The DOTS signal channel can be
used, for example, to configure the following: used, for example, to configure the following:
a. Heartbeat interval: DOTS agents regularly send heartbeats (CoAP a. Heartbeat interval: DOTS agents regularly send heartbeats (CoAP
Ping/Pong) to each other after mutual authentication in order to Ping/Pong) to each other after mutual authentication in order to
keep the DOTS signal channel open, heartbeat messages are keep the DOTS signal channel open, heartbeat messages are
exchanged between the DOTS agents every heartbeat-interval exchanged between the DOTS agents every heartbeat-interval
skipping to change at page 29, line 7 skipping to change at page 31, line 35
number of consecutive heartbeat messages for which a DOTS agent number of consecutive heartbeat messages for which a DOTS agent
did not receive a response before concluding that the session is did not receive a response before concluding that the session is
disconnected or defunct. disconnected or defunct.
c. Acceptable signal loss ratio: Maximum retransmissions, c. Acceptable signal loss ratio: Maximum retransmissions,
retransmission timeout value and other message transmission retransmission timeout value and other message transmission
parameters for the DOTS signal channel. parameters for the DOTS signal channel.
Reliability is provided to requests and responses by marking them as Reliability is provided to requests and responses by marking them as
Confirmable (CON) messages. DOTS signal channel session Confirmable (CON) messages. DOTS signal channel session
configuration requests and responses are marked as Confirmable (CON) configuration requests and responses are marked as Confirmable
messages. As explained in Section 2.1 of [RFC7252], a Confirmable messages. As explained in Section 2.1 of [RFC7252], a Confirmable
message is retransmitted using a default timeout and exponential message is retransmitted using a default timeout and exponential
back-off between retransmissions, until the DOTS server sends an back-off between retransmissions, until the DOTS server sends an
Acknowledgement message (ACK) with the same Message ID conveyed from Acknowledgement message (ACK) with the same Message ID conveyed from
the DOTS client. Message transmission parameters are defined in the DOTS client. Message transmission parameters are defined in
Section 4.8 of [RFC7252]. Reliability is provided to the responses Section 4.8 of [RFC7252]. The DOTS server can either piggyback the
by marking them as Confirmable (CON) messages. The DOTS server can response in the acknowledgement message or if the DOTS server is not
either piggyback the response in the acknowledgement message or if able to respond immediately to a request carried in a Confirmable
the DOTS server is not able to respond immediately to a request message, it simply responds with an Empty Acknowledgement message so
carried in a Confirmable message, it simply responds with an Empty that the DOTS client can stop retransmitting the request. Empty
Acknowledgement message so that the DOTS client can stop Acknowledgement message is explained in Section 2.2 of [RFC7252].
retransmitting the request. Empty Acknowledgement message is When the response is ready, the server sends it in a new Confirmable
explained in Section 2.2 of [RFC7252]. When the response is ready, message which then in turn needs to be acknowledged by the DOTS
the server sends it in a new Confirmable message which then in turn client (see Sections 5.2.1 and 5.2.2 of [RFC7252]). Requests and
needs to be acknowledged by the DOTS client (see Sections 5.2.1 and responses exchanged between DOTS agents during peacetime are marked
5.2.2 of [RFC7252]). Requests and responses exchanged between DOTS as Confirmable messages.
agents during peacetime are marked as Confirmable messages.
Implementation Note: A DOTS client that receives a response in a CON Implementation Note: A DOTS client that receives a response in a
message may want to clean up the message state right after sending CON message may want to clean up the message state right after
the ACK. If that ACK is lost and the DOTS server retransmits the sending the ACK. If that ACK is lost and the DOTS server
CON, the DOTS client may no longer have any state to which to retransmits the CON, the DOTS client may no longer have any state
correlate this response, making the retransmission an unexpected to which to correlate this response, making the retransmission an
message; the DOTS client will send a Reset message so it does not unexpected message; the DOTS client will send a Reset message so
receive any more retransmissions. This behavior is normal and not an it does not receive any more retransmissions. This behavior is
indication of an error (see Section 5.3.2 of [RFC7252] for more normal and not an indication of an error (see Section 5.3.2 of
details). [RFC7252] for more details).
4.5.1. Discover Configuration Parameters 4.5.1. Discover Configuration Parameters
A GET request is used to obtain acceptable and current configuration A GET request is used to obtain acceptable and current configuration
parameters on the DOTS server for DOTS signal channel session parameters on the DOTS server for DOTS signal channel session
configuration. Figure 13 shows how to obtain acceptable configuration. Figure 15 shows how to obtain acceptable
configuration parameters for the DOTS server. configuration parameters for the DOTS server.
Header: GET (Code=0.01) Header: GET (Code=0.01)
Uri-Host: "host" Uri-Host: "host"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "dots" Uri-Path: "dots"
Uri-Path: "version" Uri-Path: "version"
Uri-Path: "config" Uri-Path: "config"
Figure 13: GET to retrieve configuration Figure 15: GET to retrieve configuration
The DOTS server in the 2.05 (Content) response conveys the current, The DOTS server in the 2.05 (Content) response conveys the current,
minimum and maximum attribute values acceptable by the DOTS server. minimum and maximum attribute values acceptable by the DOTS server.
Content-Format: "application/cbor" Content-Format: "application/cbor"
{ {
"heartbeat-interval": { "heartbeat-interval": {
"CurrentValue": integer, "CurrentValue": integer,
"MinValue": integer, "MinValue": integer,
"MaxValue" : integer, "MaxValue" : integer,
skipping to change at page 30, line 40 skipping to change at page 33, line 37
"ack-random-factor": { "ack-random-factor": {
"CurrentValue": number, "CurrentValue": number,
"MinValue": number, "MinValue": number,
"MaxValue" : number, "MaxValue" : number,
}, },
"trigger-mitigation": { "trigger-mitigation": {
"CurrentValue": boolean, "CurrentValue": boolean,
} }
} }
Figure 14: GET response body Figure 16: GET response body
Figure 15 shows an example of acceptable and current configuration Figure 17 shows an example of acceptable and current configuration
parameters on the DOTS server for DOTS signal channel session parameters on the DOTS server for DOTS signal channel session
configuration. configuration.
Content-Format: "application/cbor" Content-Format: "application/cbor"
{ {
"heartbeat-interval": { "heartbeat-interval": {
"CurrentValue": 30, "CurrentValue": 30,
"MinValue": 15, "MinValue": 15,
"MaxValue" : 240, "MaxValue" : 240,
}, },
skipping to change at page 31, line 37 skipping to change at page 34, line 37
"ack-random-factor": { "ack-random-factor": {
"CurrentValue": 1.5, "CurrentValue": 1.5,
"MinValue": 1.1, "MinValue": 1.1,
"MaxValue" : 4.0, "MaxValue" : 4.0,
}, },
"trigger-mitigation": { "trigger-mitigation": {
"CurrentValue": true, "CurrentValue": true,
} }
} }
Figure 15: Configuration response body Figure 17: Configuration response body
4.5.2. Convey DOTS Signal Channel Session Configuration 4.5.2. Convey DOTS Signal Channel Session Configuration
A PUT request is used to convey the configuration parameters for the A PUT request is used to convey the configuration parameters for the
signal channel (e.g., heartbeat interval, maximum retransmissions). signal channel (e.g., heartbeat interval, maximum retransmissions).
Message transmission parameters for CoAP are defined in Section 4.8 Message transmission parameters for CoAP are defined in Section 4.8
of [RFC7252]. The RECOMMENDED values of transmission parameter of [RFC7252]. The RECOMMENDED values of transmission parameter
values are ack_timeout (2 seconds), max-retransmit (3), ack-random- values are ack_timeout (2 seconds), max-retransmit (3), ack-random-
factor (1.5). In addition to those parameters, the RECOMMENDED factor (1.5). In addition to those parameters, the RECOMMENDED
specific DOTS transmission parameter values are heartbeat-interval specific DOTS transmission parameter values are heartbeat-interval
skipping to change at page 32, line 20 skipping to change at page 35, line 20
standpoint, this specification recommends a minimum heartbeat- standpoint, this specification recommends a minimum heartbeat-
interval of 15 seconds and a maximum heartbeat-interval of 240 interval of 15 seconds and a maximum heartbeat-interval of 240
seconds. The recommended value of 30 seconds is selected to seconds. The recommended value of 30 seconds is selected to
anticipate the expiry of NAT state. anticipate the expiry of NAT state.
A heartbeat-interval of 30 second may be seen as too chatty in A heartbeat-interval of 30 second may be seen as too chatty in
some deployments. For such deployments, DOTS agents may negotiate some deployments. For such deployments, DOTS agents may negotiate
longer heartbeat-interval values to avoid overloading the network longer heartbeat-interval values to avoid overloading the network
with too frequent keepalives. with too frequent keepalives.
When a confirmable "CoAP ping" is sent, and if there is no response, When a confirmable "CoAP Ping" is sent, and if there is no response,
the "CoAP ping" will get retransmitted max-retransmit number of times the "CoAP Ping" is retransmitted max-retransmit number of times by
by the CoAP layer using an initial timeout set to a random duration the CoAP layer using an initial timeout set to a random duration
between ack_timeout and (ack-timeout*ack-random-factor) and between ack_timeout and (ack-timeout*ack-random-factor) and
exponential back-off between retransmissions. By choosing the exponential back-off between retransmissions. By choosing the
recommended transmission parameters, the "CoAP ping" will timeout recommended transmission parameters, the "CoAP Ping" will timeout
after 45 seconds. If the DOTS agent does not receive any response after 45 seconds. If the DOTS agent does not receive any response
from the peer DOTS agent for missing-hb-allowed number of consecutive from the peer DOTS agent for missing-hb-allowed number of consecutive
"CoAP ping" confirmable messages, then it concludes that the DOTS "CoAP Ping" confirmable messages, it concludes that the DOTS signal
signal channel session is disconnected. A DOTS client MUST NOT channel session is disconnected. A DOTS client MUST NOT transmit a
transmit a "CoAP ping" while waiting for the previous "CoAP ping" "CoAP Ping" while waiting for the previous "CoAP Ping" response from
response from the same DOTS server. the same DOTS server.
If the DOTS agent wishes to change the default values of message If the DOTS agent wishes to change the default values of message
transmission parameters, then it should follow the guidance given in transmission parameters, then it should follow the guidance given in
Section 4.8.1 of [RFC7252]. The DOTS agents MUST use the negotiated Section 4.8.1 of [RFC7252]. The DOTS agents MUST use the negotiated
values for message transmission parameters and default values for values for message transmission parameters and default values for
non-negotiated message transmission parameters. non-negotiated message transmission parameters.
The signal channel session configuration is applicable to a single The signal channel session configuration is applicable to a single
DOTS signal channel session between the DOTS agents. DOTS signal channel session between the DOTS agents.
skipping to change at page 33, line 24 skipping to change at page 36, line 24
"session-id": integer, "session-id": integer,
"heartbeat-interval": integer, "heartbeat-interval": integer,
"missing-hb-allowed": integer, "missing-hb-allowed": integer,
"max-retransmit": integer, "max-retransmit": integer,
"ack-timeout": integer, "ack-timeout": integer,
"ack-random-factor": number "ack-random-factor": number
"trigger-mitigation": boolean "trigger-mitigation": boolean
} }
} }
Figure 16: PUT to convey the DOTS signal channel session Figure 18: PUT to convey the DOTS signal channel session
configuration data. configuration data.
The parameters are described below: The parameters are described below:
session-id: Identifier for the DOTS signal channel session session-id: Identifier for the DOTS signal channel session
configuration data represented as an integer. This identifier configuration data represented as an integer. This identifier
MUST be generated by the DOTS client. This document does not make MUST be generated by the DOTS client. This document does not make
any assumption about how this identifier is generated. This is a any assumption about how this identifier is generated.
mandatory attribute.
This is a mandatory attribute.
heartbeat-interval: Time interval in seconds between two heartbeat-interval: Time interval in seconds between two
consecutive heartbeat messages. This is an optional attribute. consecutive heartbeat messages.
This is an optional attribute.
missing-hb-allowed: Maximum number of consecutive heartbeat missing-hb-allowed: Maximum number of consecutive heartbeat
messages for which the DOTS agent did not receive a response messages for which the DOTS agent did not receive a response
before concluding that the session is disconnected. This is an before concluding that the session is disconnected.
optional attribute.
This is an optional attribute.
max-retransmit: Maximum number of retransmissions for a message max-retransmit: Maximum number of retransmissions for a message
(referred to as MAX_RETRANSMIT parameter in CoAP). This is an (referred to as MAX_RETRANSMIT parameter in CoAP).
optional attribute.
This is an optional attribute.
ack-timeout: Timeout value in seconds used to calculate the initial ack-timeout: Timeout value in seconds used to calculate the initial
retransmission timeout value (referred to as ACK_TIMEOUT parameter retransmission timeout value (referred to as ACK_TIMEOUT parameter
in CoAP). This is an optional attribute. in CoAP).
This is an optional attribute.
ack-random-factor: Random factor used to influence the timing of ack-random-factor: Random factor used to influence the timing of
retransmissions (referred to as ACK_RANDOM_FACTOR parameter in retransmissions (referred to as ACK_RANDOM_FACTOR parameter in
CoAP). This is an optional attribute. CoAP).
This is an optional attribute.
trigger-mitigation: If the parameter value is set to 'false', then trigger-mitigation: If the parameter value is set to 'false', then
DDoS mitigation is triggered only when the DOTS signal channel DDoS mitigation is triggered only when the DOTS signal channel
session is lost. Automated mitigation on loss of signal is session is lost. Automated mitigation on loss of signal is
discussed in Section 3.3.3 of [I-D.ietf-dots-architecture]. If discussed in Section 3.3.3 of [I-D.ietf-dots-architecture].
the DOTS client ceases to respond to heartbeat messages, then the
DOTS server can detect that the DOTS session is lost. The default
value of the parameter is 'true'. This is an optional attribute.
In the PUT request at least one of the attributes heartbeat-interval, If the DOTS client ceases to respond to heartbeat messages, the
missing-hb-allowed, max-retransmit, ack-timeout, ack-random-factor, DOTS server can detect that the DOTS session is lost.
and trigger-mitigation MUST be present. The PUT request with higher
numeric session-id value over-rides the DOTS signal channel session
configuration data installed by a PUT request with a lower numeric
session-id value.
Figure 17 shows a PUT request example to convey the configuration The default value of the parameter is 'true'.
This is an optional attribute.
In the PUT request at least one of the attributes 'heartbeat-
interval', 'missing-hb-allowed', 'max-retransmit', 'ack-timeout',
'ack-random-factor', and 'trigger-mitigation' MUST be present. The
PUT request with higher numeric 'session-id' value over-rides the
DOTS signal channel session configuration data installed by a PUT
request with a lower numeric 'session-id' value.
Figure 19 shows a PUT request example to convey the configuration
parameters for the DOTS signal channel. parameters for the DOTS signal channel.
Header: PUT (Code=0.03) Header: PUT (Code=0.03)
Uri-Host: "www.example.com" Uri-Host: "www.example.com"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "dots" Uri-Path: "dots"
Uri-Path: "v1" Uri-Path: "v1"
Uri-Path: "config" Uri-Path: "config"
Content-Format: "application/cbor" Content-Format: "application/cbor"
{ {
skipping to change at page 34, line 46 skipping to change at page 38, line 24
"session-id": 1234534333242, "session-id": 1234534333242,
"heartbeat-interval": 91, "heartbeat-interval": 91,
"missing-hb-allowed": 3, "missing-hb-allowed": 3,
"max-retransmit": 7, "max-retransmit": 7,
"ack-timeout": 5, "ack-timeout": 5,
"ack-random-factor": 1.5, "ack-random-factor": 1.5,
"trigger-mitigation": false "trigger-mitigation": false
} }
} }
Figure 17: PUT to convey the configuration parameters Figure 19: PUT to convey the configuration parameters
The DOTS server indicates the result of processing the PUT request The DOTS server indicates the result of processing the PUT request
using CoAP response codes: using CoAP response codes:
o If the DOTS server finds the 'session-id' parameter value conveyed o If the DOTS server finds the 'session-id' parameter value conveyed
in the PUT request in its configuration data and if the DOTS in the PUT request in its configuration data and if the DOTS
server has accepted the updated configuration parameters, then server has accepted the updated configuration parameters, then
2.04 (Changed) code is returned in the response. 2.04 (Changed) code is returned in the response.
o If the DOTS server does not find the 'session-id' parameter value o If the DOTS server does not find the 'session-id' parameter value
conveyed in the PUT request in its configuration data and if the conveyed in the PUT request in its configuration data and if the
DOTS server has accepted the configuration parameters, then a DOTS server has accepted the configuration parameters, then a
response code 2.01 (Created) is returned in the response. response code 2.01 (Created) is returned in the response.
o If the request is missing one or more mandatory attributes, then o If the request is missing one or more mandatory attributes or it
4.00 (Bad Request) is returned in the response. contains one or more invalid or unknown parameters, then 4.00 (Bad
Request) is returned in the response.
o If the request contains one or more invalid or unknown parameters,
then 4.02 (Invalid query) code is returned in the response.
o Response code 4.22 (Unprocessable Entity) is returned in the o Response code 4.22 (Unprocessable Entity) is returned in the
response, if any of the heartbeat-interval, missing-hb-allowed, response, if any of the heartbeat-interval, missing-hb-allowed,
max-retransmit, target-protocol, ack-timeout, and ack-random- max-retransmit, target-protocol, ack-timeout, and ack-random-
factor attribute values are not acceptable to the DOTS server. factor attribute values are not acceptable to the DOTS server.
Upon receipt of the 4.22 error response code, the DOTS client Upon receipt of the 4.22 error response code, the DOTS client
should request the maximum and minimum attribute values acceptable should request the maximum and minimum attribute values acceptable
to the DOTS server (Section 4.5.1). The DOTS client may re-try to the DOTS server (Section 4.5.1). The DOTS client may re-try
and send the PUT request with updated attribute values acceptable and send the PUT request with updated attribute values acceptable
to the DOTS server. to the DOTS server.
4.5.3. Delete DOTS Signal Channel Session Configuration 4.5.3. Delete DOTS Signal Channel Session Configuration
A DELETE request is used to delete the installed DOTS signal channel A DELETE request is used to delete the installed DOTS signal channel
session configuration data (Figure 18). session configuration data (Figure 20).
Header: DELETE (Code=0.04) Header: DELETE (Code=0.04)
Uri-Host: "host" Uri-Host: "host"
Uri-Path: ".well-known" Uri-Path: ".well-known"
Uri-Path: "dots" Uri-Path: "dots"
Uri-Path: "version" Uri-Path: "version"
Uri-Path: "config" Uri-Path: "config"
Content-Format: "application/cbor" Content-Format: "application/cbor"
Figure 18: DELETE configuration Figure 20: DELETE configuration
The DOTS server resets the DOTS signal channel session configuration The DOTS server resets the DOTS signal channel session configuration
back to the default values and acknowledges a DOTS client's request back to the default values and acknowledges a DOTS client's request
to remove the DOTS signal channel session configuration using 2.02 to remove the DOTS signal channel session configuration using 2.02
(Deleted) response code. (Deleted) response code.
4.6. Redirected Signaling 4.6. Redirected Signaling
Redirected DOTS signaling is discussed in detail in Section 3.2.2 of Redirected DOTS signaling is discussed in detail in Section 3.2.2 of
[I-D.ietf-dots-architecture]. [I-D.ietf-dots-architecture].
skipping to change at page 36, line 13 skipping to change at page 39, line 33
(Deleted) response code. (Deleted) response code.
4.6. Redirected Signaling 4.6. Redirected Signaling
Redirected DOTS signaling is discussed in detail in Section 3.2.2 of Redirected DOTS signaling is discussed in detail in Section 3.2.2 of
[I-D.ietf-dots-architecture]. [I-D.ietf-dots-architecture].
If a DOTS server wants to redirect a DOTS client to an alternative If a DOTS server wants to redirect a DOTS client to an alternative
DOTS server for a signal session, then the response code 3.00 DOTS server for a signal session, then the response code 3.00
(alternate server) will be returned in the response to the client. (alternate server) will be returned in the response to the client.
The DOTS server can return the error response code 3.00 in response The DOTS server can return the error response code 3.00 in response
to a PUT request from the DOTS client or convey the error response to a PUT request from the DOTS client or convey the error response
code 3.00 in a unidirectional notification response from the DOTS code 3.00 in a unidirectional notification response from the DOTS
server. server.
The DOTS server in the error response conveys the alternate DOTS The DOTS server in the error response conveys the alternate DOTS
server FQDN, and the alternate DOTS server IP addresses and time to server's FQDN, and the alternate DOTS server IP address(es) and time
live values in the CBOR body. to live values in the CBOR body.
{ {
"alt-server": "string", "alt-server": "string",
"alt-server-record": [ "alt-server-record": [
{ {
"addr": "string", "addr": "string",
"ttl" : integer, "ttl" : integer,
} }
] ]
} }
Figure 19: Error response body Figure 21: Error response body
The parameters are described below: The parameters are described below:
alt-server: FQDN of an alternate DOTS server. alt-server: FQDN of an alternate DOTS server.
addr: IP address of an alternate DOTS server. addr: IP address of an alternate DOTS server.
ttl: Time to live (TTL) represented as an integer number of seconds. ttl: Time to live (TTL) represented as an integer number of seconds.
Figure 20 shows a 3.00 response example to convey the DOTS alternate Figure 22 shows a 3.00 response example to convey the DOTS alternate
server www.example-alt.com, its IP addresses 2001:db8:6401::1 and server 'alt-server.example', its IP addresses 2001:db8:6401::1 and
2001:db8:6401::2, and TTL values 3600 and 1800. 2001:db8:6401::2, and TTL values 3600 and 1800.
{ {
"alt-server": "alt-server.example",
"alt-server": "www.example-alt.com",
"alt-server-record": [ "alt-server-record": [
{ {
"ttl" : 3600, "ttl" : 3600,
"addr": "2001:db8:6401::1" "addr": "2001:db8:6401::1"
}, },
{ {
"ttl" : 1800, "ttl" : 1800,
"addr": "2001:db8:6401::2" "addr": "2001:db8:6401::2"
} }
] ]
} }
Figure 20: Example of error response body Figure 22: Example of error response body
When the DOTS client receives 3.00 response, it considers the current When the DOTS client receives 3.00 response, it considers the current
request as having failed, but SHOULD try the request with the request as having failed, but SHOULD try the request with the
alternate DOTS server. During a DDOS attack, the DNS server may be alternate DOTS server. During a DDOS attack, the DNS server may be
subjected to DDOS attack, alternate DOTS server IP addresses conveyed subjected to DDOS attack, alternate DOTS server IP addresses conveyed
in the 3.00 response help the DOTS client to skip DNS lookup of the in the 3.00 response help the DOTS client to skip DNS lookup of the
alternate DOTS server and can try to establish UDP or TCP session alternate DOTS server and can try to establish UDP or TCP session
with the alternate DOTS server IP addresses. The DOTS client SHOULD with the alternate DOTS server IP addresses. The DOTS client SHOULD
implement DNS64 function to handle the scenario where IPv6-only DOTS implement DNS64 function to handle the scenario where IPv6-only DOTS
client communicates with IPv4-only alternate DOTS server. client communicates with IPv4-only alternate DOTS server.
skipping to change at page 38, line 8 skipping to change at page 41, line 31
to the DOTS server. to the DOTS server.
In case of a volumetric DDoS attack saturating the incoming link to In case of a volumetric DDoS attack saturating the incoming link to
the DOTS client, all traffic from the DOTS server to the DOTS client the DOTS client, all traffic from the DOTS server to the DOTS client
will likely be dropped, although the DOTS server receives heartbeat will likely be dropped, although the DOTS server receives heartbeat
requests and DOTS messages from the DOTS client. In this scenario, requests and DOTS messages from the DOTS client. In this scenario,
the DOTS agents MUST behave differently to handle message the DOTS agents MUST behave differently to handle message
transmission and DOTS session liveliness during link saturation: transmission and DOTS session liveliness during link saturation:
o The DOTS client MUST NOT consider the DOTS session terminated even o The DOTS client MUST NOT consider the DOTS session terminated even
after maximum "missing-hb-allowed" threshold is reached. The DOTS after maximum 'missing-hb-allowed' threshold is reached. The DOTS
client SHOULD continue to use the current DOTS session, and send client SHOULD continue to use the current DOTS session, and send
heartbeat requests over the current DOTS session, so the DOTS heartbeat requests over the current DOTS session, so the DOTS
server knows the DOTS client has not disconnected the DOTS server knows the DOTS client has not disconnected the DOTS
session. After the maximum "missing-hb-allowed" threshold is session.
reached, the DOTS client SHOULD try (D)TLS session resumption.
The DOTS client SHOULD send mitigation requests over the current After the maximum 'missing-hb-allowed' threshold is reached, the
DOTS session, and in parallel, try (D)TLS session resumption or DOTS client SHOULD try (D)TLS session resumption. The DOTS client
0-RTT mode in DTLS 1.3 to piggyback the mitigation request in the SHOULD send mitigation requests over the current DOTS session, and
ClientHello message. Once the link is no longer saturated, if in parallel, try (D)TLS session resumption or 0-RTT mode in DTLS
traffic from the DOTS server reaches the DOTS client over the 1.3 to piggyback the mitigation request in the ClientHello
current DOTS session, the DOTS client can stop (D)TLS session message.
resumption or if (D)TLS session resumption is successful then
disconnect the current DOTS session. Once the link is no longer saturated, if traffic from the DOTS
server reaches the DOTS client over the current DOTS session, the
DOTS client can stop (D)TLS session resumption or if (D)TLS
session resumption is successful then disconnect the current DOTS
session.
o If the DOTS server does not receive any traffic from the peer DOTS o If the DOTS server does not receive any traffic from the peer DOTS
client, then the DOTS server sends heartbeat requests to the DOTS client, then the DOTS server sends heartbeat requests to the DOTS
client and after maximum "missing-hb-allowed" threshold is client and after maximum 'missing-hb-allowed' threshold is
reached, the DOTS server concludes the session is disconnected. reached, the DOTS server concludes the session is disconnected.
In DOTS over UDP, heartbeat messages may be exchanged between the In DOTS over UDP, heartbeat messages may be exchanged between the
DOTS agents using the "COAP ping" mechanism defined in Section 4.2 of DOTS agents using the "COAP Ping" mechanism defined in Section 4.2 of
[RFC7252]. Concretely, the DOTS agent sends an Empty Confirmable [RFC7252]. Concretely, the DOTS agent sends an Empty Confirmable
message and the peer DOTS agent will respond by sending an Reset message and the peer DOTS agent will respond by sending an Reset
message. message.
In DOTS over TCP, heartbeat messages can be exchanged between the In DOTS over TCP, heartbeat messages can be exchanged between the
DOTS agents using the Ping and Pong messages specified in Section 4.4 DOTS agents using the Ping and Pong messages specified in Section 4.4
of [I-D.ietf-core-coap-tcp-tls]. That is, the DOTS agent sends a of [I-D.ietf-core-coap-tcp-tls]. That is, the DOTS agent sends a
Ping message and the peer DOTS agent would respond by sending a Ping message and the peer DOTS agent would respond by sending a
single Pong message. single Pong message.
5. DOTS Signal Channel YANG Modules 5. DOTS Signal Channel YANG Module
This document defines YANG [RFC7950] modules for mitigation scope and This document defines a YANG [RFC7950] module for mitigation scope
DOTS signal channel session configuration data. and DOTS signal channel session configuration data.
5.1. Mitigation Request YANG Module Tree Structure 5.1. Tree Structure
This document defines the YANG module "ietf-dots-signal" This document defines the YANG module "ietf-dots-signal"
(Section 5.2), which has the following tree structure: (Section 5.2), which has the following tree structure. A DOTS signal
message can either be a mitigation or a configuration message.
module: ietf-dots-signal module: ietf-dots-signal
+--rw mitigation-scope +--rw dots-signal
+--rw client-identifier* binary +--rw (message-type)?
+--rw scope* [mitigation-id] +--:(mitigation-scope)
+--rw mitigation-id int32 | +--rw client-identifier* binary
+--rw target-ip* inet:ip-address | +--rw scope* [mitigation-id]
+--rw target-prefix* inet:ip-prefix | +--rw mitigation-id int32
+--rw target-port-range* [lower-port upper-port] | +--rw target-ip* inet:ip-address
| +--rw lower-port inet:port-number | +--rw target-prefix* inet:ip-prefix
| +--rw upper-port inet:port-number | +--rw target-port-range* [lower-port upper-port]
+--rw target-protocol* uint8 | | +--rw lower-port inet:port-number
+--rw target-fqdn* inet:domain-name | | +--rw upper-port inet:port-number
+--rw target-uri* inet:uri | +--rw target-protocol* uint8
+--rw alias-name* string | +--rw target-fqdn* inet:domain-name
+--rw lifetime? int32 | +--rw target-uri* inet:uri
+--rw mitigation-start? int64 | +--rw alias-name* string
+--ro status? enumeration | +--rw lifetime? int32
+--ro conflict-information | +--rw mitigation-start? int64
| +--ro conflict-status? enumeration | +--ro status? enumeration
| +--ro conflict-cause? enumeration | +--ro conflict-information
| +--ro retry-timer? int32 | | +--ro conflict-status? enumeration
+--ro pkts-dropped? yang:zero-based-counter64 | | +--ro conflict-cause? enumeration
+--ro bps-dropped? yang:zero-based-counter64 | | +--ro retry-timer? int32
+--ro bytes-dropped? yang:zero-based-counter64 | | +--ro conflict-scope
+--ro pps-dropped? yang:zero-based-counter64 | | +--ro target-ip* inet:ip-address
| | +--ro target-prefix* inet:ip-prefix
| | +--ro target-port-range* [lower-port upper-port]
| | | +--ro lower-port inet:port-number
| | | +--ro upper-port inet:port-number
| | +--ro target-protocol* uint8
| | +--ro target-fqdn* inet:domain-name
| | +--ro target-uri* inet:uri
| | +--ro alias-name* string
| +--ro pkts-dropped? yang:zero-based-counter64
| +--ro bps-dropped? yang:zero-based-counter64
| +--ro bytes-dropped? yang:zero-based-counter64
| +--ro pps-dropped? yang:zero-based-counter64
+--:(configuration)
+--rw session-id int32
+--rw heartbeat-interval? int16
+--rw missing-hb-allowed? int16
+--rw max-retransmit? int16
+--rw ack-timeout? int16
+--rw ack-random-factor? decimal64
+--rw trigger-mitigation? boolean
5.2. Mitigation Request YANG Module 5.2. YANG Module
<CODE BEGINS> file "ietf-dots-signal@2017-12-01.yang" <CODE BEGINS> file "ietf-dots-signal@2017-12-05.yang"
module ietf-dots-signal { module ietf-dots-signal {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dots-signal"; namespace "urn:ietf:params:xml:ns:yang:ietf-dots-signal";
prefix "signal"; prefix "signal";
import ietf-inet-types {prefix "inet";} import ietf-inet-types {prefix "inet";}
import ietf-yang-types {prefix yang; } import ietf-yang-types {prefix yang; }
organization "IETF DOTS Working Group"; organization "IETF DOTS Working Group";
contact contact
"Konda, Tirumaleswar Reddy <TirumaleswarReddy_Konda@McAfee.com> "Konda, Tirumaleswar Reddy <TirumaleswarReddy_Konda@McAfee.com>
Mohamed Boucadair <mohamed.boucadair@orange.com> Mohamed Boucadair <mohamed.boucadair@orange.com>
Prashanth Patil <praspati@cisco.com> Prashanth Patil <praspati@cisco.com>
Andrew Mortensen <amortensen@arbor.net> Andrew Mortensen <amortensen@arbor.net>
Nik Teague <nteague@verisign.com>"; Nik Teague <nteague@verisign.com>";
description description
"This module contains YANG definition for DOTS "This module contains YANG definition for the signaling
signal sent by the DOTS client to the DOTS server. messages exchanegd between the DOTS client to the DOTS server.
Copyright (c) 2017 IETF Trust and the persons identified as Copyright (c) 2017 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2017-12-01 { revision 2017-12-05 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: Distributed Denial-of-Service Open Threat "RFC XXXX: Distributed Denial-of-Service Open Threat
Signaling (DOTS) Signal Channel"; Signaling (DOTS) Signal Channel";
} }
container mitigation-scope { grouping target {
description description
"Specifies the scope of the mitigation request."; "Specifies the scope of the mitigation request.";
leaf-list client-identifier {
type binary;
description
"The client identifier may be conveyed by
the DOTS gateway to propagate the DOTS client
identity from the gateway's client-side to the
gateway's server-side, and from the gateway's
server-side to the DOTS server.
It allows the final DOTS server to accept
mitigation requests with scopes which the DOTS
client is authorized to manage.";
}
list scope {
key mitigation-id;
description
"The scope of the request.";
leaf mitigation-id { leaf-list target-ip {
type int32; type inet:ip-address;
description description
"Mitigation request identifier. "IPv4 or IPv6 address identifying the target.";
}
This identifier must be unique for each mitigation leaf-list target-prefix {
request bound to the DOTS client."; type inet:ip-prefix;
} description
"IPv4 or IPv6 prefix identifying the target.";
}
leaf-list target-ip { list target-port-range {
type inet:ip-address; key "lower-port upper-port";
description
"IPv4 or IPv6 address identifying the target.";
}
leaf-list target-prefix { description
type inet:ip-prefix; "Port range. When only lower-port is
description present, it represents a single port.";
"IPv4 or IPv6 prefix identifying the target.";
}
list target-port-range { leaf lower-port {
key "lower-port upper-port"; type inet:port-number;
mandatory true;
description "Lower port number.";
}
description leaf upper-port {
"Port range. When only lower-port is type inet:port-number;
present, it represents a single port."; must ". >= ../lower-port" {
error-message
"The upper port number must be greater than
or equal to lower port number.";
}
description "Upper port number.";
}
}
leaf lower-port { leaf-list target-protocol {
type inet:port-number; type uint8;
mandatory true; description
description "Lower port number."; "Identifies the target protocol number.
}
leaf upper-port { The value '0' means 'all protocols'.
type inet:port-number;
must ". >= ../lower-port" {
error-message
"The upper port number must be greater than
or equal to lower port number.";
}
description "Upper port number.";
}
}
leaf-list target-protocol { Values are taken from the IANA protocol registry:
type uint8; https://www.iana.org/assignments/protocol-numbers/
description protocol-numbers.xhtml
"Identifies the target protocol number. For example, 6 for a TCP or 17 for UDP.";
}
The value '0' means 'all protocols'. leaf-list target-fqdn {
type inet:domain-name;
description "FQDN identifying the target.";
}
Values are taken from the IANA protocol registry: leaf-list target-uri {
https://www.iana.org/assignments/protocol-numbers/ type inet:uri;
protocol-numbers.xhtml description "URI identifying the target.";
}
For example, 6 for a TCP or 17 for UDP."; leaf-list alias-name {
} type string;
description "alias name";
}
}
leaf-list target-fqdn { grouping mitigation-scope {
type inet:domain-name; description
description "FQDN"; "Specifies the scope of the mitigation request.";
}
leaf-list target-uri { leaf-list client-identifier {
type inet:uri; type binary;
description "URI"; description
} "The client identifier may be conveyed by
the DOTS gateway to propagate the DOTS client
identity from the gateway's client-side to the
gateway's server-side, and from the gateway's
server-side to the DOTS server.
leaf-list alias-name { It allows the final DOTS server to accept
type string; mitigation requests with scopes which the DOTS
description "alias name"; client is authorized to manage.";
} }
leaf lifetime { list scope {
type int32; key mitigation-id;
units "seconds"; description
default 3600; "The scope of the request.";
description
"Indicates the lifetime of the mitigation request.";
}
leaf mitigation-start { leaf mitigation-id {
type int64; type int32;
units "seconds"; description
description "Mitigation request identifier.
"Mitigation start time is represented in seconds
relative to 1970-01-01T00:00Z in UTC time.";
}
leaf status { This identifier must be unique for each mitigation
type enumeration { request bound to the DOTS client.";
enum "1" { }
description
"Attack mitigation is in progress (e.g., changing
the network path to re-route the inbound traffic
to DOTS mitigator).";
}
enum "2" {
description
"Attack is successfully mitigated (e.g., traffic
is redirected to a DDOS mitigator and attack
traffic is dropped).";
}
enum "3" { uses target;
description
"Attack has stopped and the DOTS client can
withdraw the mitigation request.";
}
enum "4" { leaf lifetime {
description type int32;
"Attack has exceeded the mitigation provider units "seconds";
capability."; default 3600;
} description
"Indicates the lifetime of the mitigation request.";
reference
"RFC XXXX: Distributed Denial-of-Service Open Threat
Signaling (DOTS) Signal Channel";
}
enum "5" { leaf mitigation-start {
description type int64;
"DOTS client has withdrawn the mitigation units "seconds";
request and the mitigation is active but description
terminating."; "Mitigation start time is represented in seconds
} relative to 1970-01-01T00:00Z in UTC time.";
}
enum "6" { leaf status {
description type enumeration {
"Attack mitigation is now terminated."; enum "1" {
} description
"Attack mitigation is in progress (e.g., changing
the network path to re-route the inbound traffic
to DOTS mitigator).";
}
enum "7" { enum "2" {
description description
"Attack mitigation is withdrawn."; "Attack is successfully mitigated (e.g., traffic
} is redirected to a DDOS mitigator and attack
traffic is dropped).";
}
enum "8" { enum "3" {
description
"Attack mitigation is rejected.";
}
}
config false;
description description
"Indicates the status of a mitigation request. "Attack has stopped and the DOTS client can
It must be included in responses, only."; withdraw the mitigation request.";
} }
container conflict-information { enum "4" {
config false; description
description "Attack has exceeded the mitigation provider
"Indicates that a conflict is detected. capability.";
Must only be used for responses."; }
leaf conflict-status { enum "5" {
type enumeration { description
enum "1" { "DOTS client has withdrawn the mitigation
description request and the mitigation is active but
"DOTS Server has detected conflicting mitigation terminating.";
requests from different DOTS clients. }
This mitigation request is currently inactive
until the conflicts are resolved. Another
mitigation request is active.";
}
enum "2" { enum "6" {
description description
"DOTS Server has detected conflicting mitigation "Attack mitigation is now terminated.";
requests from different DOTS clients. }
This mitigation request is currently active.";
}
enum "3" { enum "7" {
description description
"DOTS Server has detected conflicting mitigation "Attack mitigation is withdrawn.";
requests from different DOTS clients. All }
conflicting mitigation requests are inactive.";
}
}
description
"Indicates the conflict status.
It must be included in responses, only.";
}
leaf conflict-cause { enum "8" {
type enumeration { description
enum "1" { "Attack mitigation is rejected.";
description }
"Overlapping target prefixes."; }
} config false;
description
"Indicates the status of a mitigation request.
It must be included in responses, only.";
}
enum "2" { container conflict-information {
description config false;
"Conflicts with an existing white list."; description
} "Indicates that a conflict is detected.
} Must only be used for responses.";
description
"Indicates the cause of the conflict.
It must be included in responses, only.";
}
leaf retry-timer { leaf conflict-status {
type int32; type enumeration {
units "seconds"; enum "1" {
description description
"The DOTS client must not re-send the "DOTS Server has detected conflicting mitigation
same request before the expiry of this timer. requests from different DOTS clients.
It must be included in responses, only."; This mitigation request is currently inactive
} until the conflicts are resolved. Another
} mitigation request is active.";
leaf pkts-dropped { }
type yang:zero-based-counter64;
config false;
description
"Number of dropped packets";
}
leaf bps-dropped { enum "2" {
type yang:zero-based-counter64; description
config false; "DOTS Server has detected conflicting mitigation
description requests from different DOTS clients.
"The average dropped bytes per second for This mitigation request is currently active.";
the mitigation request since the attack }
mitigation is triggered.";
}
leaf bytes-dropped { enum "3" {
type yang:zero-based-counter64; description
units 'bytes'; "DOTS Server has detected conflicting mitigation
config false; requests from different DOTS clients. All
description conflicting mitigation requests are inactive.";
"Counter for dropped pacckets; in bytes."; }
} }
description
"Indicates the conflict status.
It must be included in responses, only.";
}
leaf pps-dropped { leaf conflict-cause {
type yang:zero-based-counter64; type enumeration {
config false; enum "1" {
description description
"The average dropped packets per second "Overlapping targets. conflict-scope provides
for the mitigation request since the attack more details about the exact conflict.";
mitigation is triggered."; }
}
}
}
} enum "2" {
<CODE ENDS> description
"Conflicts with an existing white list.
5.3. Session Configuration YANG Module Tree Structure This code is returned when the DDoS mitigation
detects source addresses/prefixes in the
white-listed ACLs are attacking the target.";
}
}
description
"Indicates the cause of the conflict.
It must be included in responses, only.";
}
This document defines the YANG module "ietf-dots-signal-config" leaf retry-timer {
(Section 5.4), which has the following structure: type int32;
units "seconds";
description
"The DOTS client must not re-send the
same request before the expiry of this timer.
It must be included in responses, only.";
}
module: ietf-dots-signal-config container conflict-scope {
+--rw signal-config description
+--rw session-id? int32 "Provides more information about the conflict scope.";
+--rw heartbeat-interval? int16 uses target;
+--rw missing-hb-allowed? int16 }
+--rw max-retransmit? int16 }
+--rw ack-timeout? int16
+--rw ack-random-factor? decimal64
+--rw trigger-mitigation? boolean
5.4. Session Configuration YANG Module leaf pkts-dropped {
type yang:zero-based-counter64;
config false;
description
"Number of dropped packets";
}
<CODE BEGINS> file "ietf-dots-signal-config@2017-11-27.yang" leaf bps-dropped {
type yang:zero-based-counter64;
config false;
description
"The average dropped bytes per second for
the mitigation request since the attack
mitigation is triggered.";
}
module ietf-dots-signal-config { leaf bytes-dropped {
yang-version 1.1; type yang:zero-based-counter64;
namespace "urn:ietf:params:xml:ns:yang:ietf-dots-signal-config"; units 'bytes';
prefix "config"; config false;
description
"Counter for dropped pacckets; in bytes.";
}
organization "IETF DOTS Working Group"; leaf pps-dropped {
type yang:zero-based-counter64;
config false;
description
"The average dropped packets per second
for the mitigation request since the attack
mitigation is triggered.";
}
}
}
contact grouping signal-config {
"Konda, Tirumaleswar Reddy <TirumaleswarReddy_Konda@McAfee.com> description
Mohamed Boucadair <mohamed.boucadair@orange.com> "DOTS signal channel session configuration.";
Prashanth Patil <praspati@cisco.com>
Andrew Mortensen <amortensen@arbor.net>
Nik Teague <nteague@verisign.com>";
description leaf session-id {
"This module contains YANG definition for DOTS type int32;
signal channel session configuration. mandatory true;
description
"An identifier for the DOTS signal channel
session configuration data.";
}
Copyright (c) 2017 IETF Trust and the persons identified as leaf heartbeat-interval {
authors of the code. All rights reserved. type int16;
units "seconds";
default 30;
description
"DOTS agents regularly send heartbeats to each other
after mutual authentication in order to keep
the DOTS signal channel open.";
reference
"RFC XXXX: Distributed Denial-of-Service Open Threat
Signaling (DOTS) Signal Channel";
}
Redistribution and use in source and binary forms, with or leaf missing-hb-allowed {
without modification, is permitted pursuant to, and subject type int16;
to the license terms contained in, the Simplified BSD License default 5;
set forth in Section 4.c of the IETF Trust's Legal Provisions description
Relating to IETF Documents "Maximum number of missing heartbeats allowed.";
(http://trustee.ietf.org/license-info). reference
"RFC XXXX: Distributed Denial-of-Service Open Threat
Signaling (DOTS) Signal Channel";
}
This version of this YANG module is part of RFC XXXX; see leaf max-retransmit {
the RFC itself for full legal notices."; type int16;
default 3;
description
"Maximum number of retransmissions of a
Confirmable message.";
reference
"RFC XXXX: Distributed Denial-of-Service Open Threat
Signaling (DOTS) Signal Channel";
}
revision 2017-11-27 { leaf ack-timeout {
description type int16;
"Initial revision."; units "seconds";
reference default 2;
"RFC XXXX: A Distributed Denial-of-Service Open Threat description
Signaling (DOTS) Signal Channel"; "Initial retransmission timeout value.";
} reference
"Section 4.8 of RFC 7552.";
}
container signal-config { leaf ack-random-factor {
description type decimal64 {
"DOTS signal channel session configuration."; fraction-digits 2;
}
default 1.5;
description
"Random factor used to influence the timing of
retransmissions.";
reference
"Section 4.8 of RFC 7552.";
}
leaf session-id { leaf trigger-mitigation {
type int32; type boolean;
description default true;
"An identifier for the DOTS signal channel description
session configuration data."; "If false, then mitigation is triggered
} only when the DOTS server channel session is lost";
reference
"RFC XXXX: Distributed Denial-of-Service Open Threat
Signaling (DOTS) Signal Channel";
}
}
leaf heartbeat-interval { container dots-signal {
type int16; description
units "seconds"; "Main contaner for DOTS signal message.
default 30; A DOTS signal message can be a mitigation messages or
description a configuration message.";
"DOTS agents regularly send heartbeats to each other
after mutual authentication in order to keep
the DOTS signal channel open.";
}
leaf missing-hb-allowed { choice message-type {
type int16; description
default 5; "Either a mitigation or a configuration message.";
description
"Maximum number of missing heartbeats allowed.";
}
leaf max-retransmit { case mitigation-scope {
type int16; description
default 3; "Mitigation scope of a mitigation message.";
description uses mitigation-scope;
"Maximum number of retransmissions of a }
Confirmable message.";
}
leaf ack-timeout {
type int16;
units "seconds";
default 2;
description
"Initial retransmission timeout value.";
}
leaf ack-random-factor { case configuration {
type decimal64 { description
fraction-digits 2; "Configuration message.";
} uses signal-config;
default 1.5;
description
"Random factor used to influence the timing of
retransmissions.";
}
leaf trigger-mitigation {
type boolean;
default true;
description
"If false, then mitigation is triggered
only when the DOTS server channel session is lost";
}
} }
}
}
} }
<CODE ENDS> <CODE ENDS>
6. Mapping Parameters to CBOR 6. Mapping Parameters to CBOR
All parameters in the payload in the DOTS signal channel MUST be All parameters in the payload in the DOTS signal channel MUST be
mapped to CBOR types as shown in Table 4 and are given an integer key mapped to CBOR types as shown in Table 4 and are given an integer key
to save space. The recipient of the payload MAY reject the to save space. The recipient of the payload MAY reject the
information if it is not suitably mapped. information if it is not suitably mapped.
skipping to change at page 51, line 20 skipping to change at page 56, line 20
the TLS second flight of messages (ChangeCipherSpec) to also the TLS second flight of messages (ChangeCipherSpec) to also
contain the DOTS signal. contain the DOTS signal.
o Cached Information Extension [RFC7924] which avoids transmitting o Cached Information Extension [RFC7924] which avoids transmitting
the server's certificate and certificate chain if the client has the server's certificate and certificate chain if the client has
cached that information from a previous TLS handshake. cached that information from a previous TLS handshake.
o TCP Fast Open [RFC7413] can reduce the number of round-trips to o TCP Fast Open [RFC7413] can reduce the number of round-trips to
convey DOTS signal. convey DOTS signal.
7.2. MTU and Fragmentation 7.2. (D)TLS 1.3 Considerations
To avoid DOTS signal message fragmentation and the consequently
decreased probability of message delivery, DOTS agents MUST ensure
that the DTLS record MUST fit within a single datagram. If the path
MTU is not known to the DOTS server, an IP MTU of 1280 bytes SHOULD
be assumed. The length of the URL MUST NOT exceed 256 bytes. If UDP
is used to convey the DOTS signal messages then the DOTS client must
consider the amount of record expansion expected by the DTLS
processing when calculating the size of CoAP message that fits within
the path MTU. Path MTU MUST be greater than or equal to [CoAP
message size + DTLS overhead of 13 octets + authentication overhead
of the negotiated DTLS cipher suite + block padding (Section 4.1.1.1
of [RFC6347]). If the request size exceeds the path MTU then the
DOTS client MUST split the DOTS signal into separate messages, for
example the list of addresses in the 'target-ip' parameter could be
split into multiple lists and each list conveyed in a new PUT
request.
Implementation Note: DOTS choice of message size parameters works
well with IPv6 and with most of today's IPv4 paths. However, with
IPv4, it is harder to absolutely ensure that there is no IP
fragmentation. If IPv4 support on unusual networks is a
consideration and path MTU is unknown, implementations may want to
limit themselves to more conservative IPv4 datagram sizes such as 576
bytes, as per [RFC0791] IP packets up to 576 bytes should never need
to be fragmented, thus sending a maximum of 500 bytes of DOTS signal
over a UDP datagram will generally avoid IP fragmentation.
8. (D)TLS 1.3 Considerations
TLS 1.3 [I-D.ietf-tls-tls13] provides critical latency improvements TLS 1.3 [I-D.ietf-tls-tls13] provides critical latency improvements
for connection establishment over TLS 1.2. The DTLS 1.3 protocol for connection establishment over TLS 1.2. The DTLS 1.3 protocol
[I-D.rescorla-tls-dtls13] is based on the TLS 1.3 protocol and [I-D.ietf-tls-dtls13] is based on the TLS 1.3 protocol and provides
provides equivalent security guarantees. (D)TLS 1.3 provides two equivalent security guarantees. (D)TLS 1.3 provides two basic
basic handshake modes of interest to DOTS signal channel: handshake modes of interest to DOTS signal channel:
o Absent packet loss, a full handshake in which the DOTS client is o Absent packet loss, a full handshake in which the DOTS client is
able to send the DOTS signal message after one round trip and the able to send the DOTS signal message after one round trip and the
DOTS server immediately after receiving the first DOTS signal DOTS server immediately after receiving the first DOTS signal
message from the client. message from the client.
o 0-RTT mode in which the DOTS client can authenticate itself and o 0-RTT mode in which the DOTS client can authenticate itself and
send DOTS signal message on its first flight, thus reducing send DOTS signal message on its first flight, thus reducing
handshake latency. 0-RTT only works if the DOTS client has handshake latency. 0-RTT only works if the DOTS client has
previously communicated with that DOTS server, which is very previously communicated with that DOTS server, which is very
likely with the DOTS signal channel. The DOTS client SHOULD likely with the DOTS signal channel. The DOTS client SHOULD
establish a (D)TLS session with the DOTS server during peacetime establish a (D)TLS session with the DOTS server during peacetime
and share a PSK. During DDOS attack, the DOTS client can use the and share a PSK. During DDOS attack, the DOTS client can use the
(D)TLS session to convey the DOTS signal message and if there is (D)TLS session to convey the DOTS signal message and if there is
no response from the server after multiple re-tries then the DOTS no response from the server after multiple re-tries then the DOTS
client can resume the (D)TLS session in 0-RTT mode using PSK. A client can resume the (D)TLS session in 0-RTT mode using PSK. A
simplified TLS 1.3 handshake with 0-RTT DOTS signal message simplified TLS 1.3 handshake with 0-RTT DOTS signal message
exchange is shown in Figure 21. exchange is shown in Figure 23.
DOTS Client DOTS Server DOTS Client DOTS Server
ClientHello ClientHello
(Finished) (Finished)
(0-RTT DOTS signal message) (0-RTT DOTS signal message)
(end_of_early_data) --------> (end_of_early_data) -------->
ServerHello ServerHello
{EncryptedExtensions} {EncryptedExtensions}
{ServerConfiguration} {ServerConfiguration}
{Certificate} {Certificate}
{CertificateVerify} {CertificateVerify}
{Finished} {Finished}
<-------- [DOTS signal message] <-------- [DOTS signal message]
{Finished} --------> {Finished} -------->
[DOTS signal message] <-------> [DOTS signal message] [DOTS signal message] <-------> [DOTS signal message]
Figure 21: TLS 1.3 handshake with 0-RTT Figure 23: TLS 1.3 handshake with 0-RTT
9. Mutual Authentication of DOTS Agents & Authorization of DOTS Clients 7.3. MTU and Fragmentation
To avoid DOTS signal message fragmentation and the consequently
decreased probability of message delivery, DOTS agents MUST ensure
that the DTLS record MUST fit within a single datagram. If the path
MTU is not known to the DOTS server, an IP MTU of 1280 bytes SHOULD
be assumed. The length of the URL MUST NOT exceed 256 bytes. If UDP
is used to convey the DOTS signal messages then the DOTS client must
consider the amount of record expansion expected by the DTLS
processing when calculating the size of CoAP message that fits within
the path MTU. Path MTU MUST be greater than or equal to [CoAP
message size + DTLS overhead of 13 octets + authentication overhead
of the negotiated DTLS cipher suite + block padding (Section 4.1.1.1
of [RFC6347]). If the request size exceeds the path MTU then the
DOTS client MUST split the DOTS signal into separate messages, for
example the list of addresses in the 'target-ip' parameter could be
split into multiple lists and each list conveyed in a new PUT
request.
Implementation Note: DOTS choice of message size parameters works
well with IPv6 and with most of today's IPv4 paths. However, with
IPv4, it is harder to absolutely ensure that there is no IP
fragmentation. If IPv4 support on unusual networks is a
consideration and path MTU is unknown, implementations may want to
limit themselves to more conservative IPv4 datagram sizes such as 576
bytes, as per [RFC0791] IP packets up to 576 bytes should never need
to be fragmented, thus sending a maximum of 500 bytes of DOTS signal
over a UDP datagram will generally avoid IP fragmentation.
8. Mutual Authentication of DOTS Agents & Authorization of DOTS Clients
(D)TLS based on client certificate can be used for mutual (D)TLS based on client certificate can be used for mutual
authentication between DOTS agents. If a DOTS gateway is involved, authentication between DOTS agents. If a DOTS gateway is involved,
DOTS clients and DOTS gateway MUST perform mutual authentication; DOTS clients and DOTS gateway MUST perform mutual authentication;
only authorized DOTS clients are allowed to send DOTS signals to a only authorized DOTS clients are allowed to send DOTS signals to a
DOTS gateway. DOTS gateway and DOTS server MUST perform mutual DOTS gateway. DOTS gateway and DOTS server MUST perform mutual
authentication; DOTS server only allows DOTS signals from authorized authentication; DOTS server only allows DOTS signals from authorized
DOTS gateway, creating a two-link chain of transitive authentication DOTS gateway, creating a two-link chain of transitive authentication
between the DOTS client and the DOTS server. between the DOTS client and the DOTS server.
skipping to change at page 53, line 39 skipping to change at page 58, line 39
| +--------------+ | | | | | | +--------------+ | | | | |
| +----+--------+ | +---------------+ | +----+--------+ | +---------------+
| ^ | | ^ |
| | | | | |
| +----------------+ | | | +----------------+ | |
| | DDOS detector | | | | | DDOS detector | | |
| | (DOTS client) +<---------------+ | | | (DOTS client) +<---------------+ |
| +----------------+ | | +----------------+ |
+-----------------------------------------------+ +-----------------------------------------------+
Figure 22: Example of Authentication and Authorization of DOTS Agents Figure 24: Example of Authentication and Authorization of DOTS Agents
In the example depicted in Figure 22, the DOTS gateway and DOTS In the example depicted in Figure 24, the DOTS gateway and DOTS
clients within the 'example.com' domain mutually authenticate with clients within the 'example.com' domain mutually authenticate with
each other. After the DOTS gateway validates the identity of a DOTS each other. After the DOTS gateway validates the identity of a DOTS
client, it communicates with the AAA server in the 'example.com' client, it communicates with the AAA server in the 'example.com'
domain to determine if the DOTS client is authorized to request DDOS domain to determine if the DOTS client is authorized to request DDOS
mitigation. If the DOTS client is not authorized, a 4.01 mitigation. If the DOTS client is not authorized, a 4.01
(Unauthorized) is returned in the response to the DOTS client. In (Unauthorized) is returned in the response to the DOTS client. In
this example, the DOTS gateway only allows the application server and this example, the DOTS gateway only allows the application server and
DDOS detector to request DDOS mitigation, but does not permit the DDOS detector to request DDOS mitigation, but does not permit the
user of type 'guest' to request DDOS mitigation. user of type 'guest' to request DDOS mitigation.
Also, DOTS gateway and DOTS server located in different domains MUST Also, DOTS gateway and DOTS server located in different domains MUST
perform mutual authentication (e.g., using certificates). A DOTS perform mutual authentication (e.g., using certificates). A DOTS
server will only allow a DOTS gateway with a certificate for a server will only allow a DOTS gateway with a certificate for a
particular domain to request mitigation for that domain. In particular domain to request mitigation for that domain. In
reference to Figure 22, the DOTS server only allows the DOTS gateway reference to Figure 24, the DOTS server only allows the DOTS gateway
to request mitigation for 'example.com' domain and not for other to request mitigation for 'example.com' domain and not for other
domains. domains.
10. IANA Considerations 9. IANA Considerations
This specification registers a default port, new URI suffix in the This specification registers a service port (Section 9.1), an URI
Well-Known URIs registry, new CoAP response code, new parameters for suffix in the Well-Known URIs registry (Section 9.2), a CoAP response
DOTS signal channel and establishes registries for mappings to CBOR. code (Section 9.3), a YANG module (Section 9.5). It also creates a
registry for mappings to CBOR (Section 9.4).
10.1. DOTS Signal Channel UDP and TCP Port Number 9.1. DOTS Signal Channel UDP and TCP Port Number
IANA has assigned the port number TBD to the DOTS signal channel IANA is requested to assign the port number TBD to the DOTS signal
protocol, for both UDP and TCP. channel protocol for both UDP and TCP from the "Service Name and
Transport Protocol Port Number Registry" available at
https://www.iana.org/assignments/service-names-port-numbers/service-
names-port-numbers.xhtml.
10.2. Well-Known 'dots' URI It is strongly suggested that the port number 4646 is to be assigned.
4646 is the ASCII decimal value for ".." (DOTS).
This memo registers the 'dots' well-known URI in the Well-Known URIs 9.2. Well-Known 'dots' URI
registry as defined by [RFC5785].
This document requests IANA to register the 'dots' well-known URI in
the Well-Known URIs registry (https://www.iana.org/assignments/well-
known-uris/well-known-uris.xhtml) as defined by [RFC5785].
URI suffix: dots URI suffix: dots
Change controller: IETF Change controller: IETF
Specification document(s): This RFC Specification document(s): This RFC
Related information: None Related information: None
10.3. CoAP Response Code 9.3. CoAP Response Code
The following entry is added to the "CoAP Response Codes" sub- IANA is requested to add the following entry to the "CoAP Response
registry: Codes" sub-registry available at https://www.iana.org/assignments/
core-parameters/core-parameters.xhtml#response-codes:
+------+------------------+-----------+ +------+------------------+-----------+
| Code | Description | Reference | | Code | Description | Reference |
+------+------------------+-----------+ +------+------------------+-----------+
| 3.00 | Alternate server | [RFCXXXX] | | 3.00 | Alternate server | [RFCXXXX] |
+------+------------------+-----------+ +------+------------------+-----------+
Table 4: CoAP Response Code Table 4: CoAP Response Code
10.4. DOTS Signal Channel CBOR Mappings Registry 9.4. DOTS Signal Channel CBOR Mappings Registry
A new registry will be requested from IANA, entitled "DOTS signal The document requests IANA to create a new registry, entitled "DOTS
channel CBOR Mappings Registry". The registry is to be created as Signal Channel CBOR Mappings Registry". The structrue of this
Expert Review Required. registry is provided in Section 9.4.1.
10.4.1. Registration Template The registry is initially populated with the values in Section 9.4.2.
Values from that registry MUST be assigned via Expert Review
[RFC8126].
9.4.1. Registration Template
Parameter name: Parameter name:
Parameter names (e.g., "target_ip") in the DOTS signal channel. Parameter names (e.g., "target_ip") in the DOTS signal channel.
CBOR Key Value: CBOR Key Value:
Key value for the parameter. The key value MUST be an integer in Key value for the parameter. The key value MUST be an integer in
the range of 1 to 65536. The key values in the range of 32768 to the range of 1 to 65536. The key values in the range of 32768 to
65536 are assigned for Vendor-Specific parameters. 65536 are assigned for Vendor-Specific parameters.
CBOR Major Type: CBOR Major Type:
skipping to change at page 55, line 35 skipping to change at page 60, line 48
For Standards Track RFCs, list the "IESG". For others, give the For Standards Track RFCs, list the "IESG". For others, give the
name of the responsible party. Other details (e.g., postal name of the responsible party. Other details (e.g., postal
address, email address, home page URI) may also be included. address, email address, home page URI) may also be included.
Specification Document(s): Specification Document(s):
Reference to the document or documents that specify the parameter, Reference to the document or documents that specify the parameter,
preferably including URIs that can be used to retrieve copies of preferably including URIs that can be used to retrieve copies of
the documents. An indication of the relevant sections may also be the documents. An indication of the relevant sections may also be
included but is not required. included but is not required.
10.4.2. Initial Registry Contents 9.4.2. Initial Registry Contents
o Parameter Name: "mitigation-scope" o Parameter Name: "mitigation-scope"
o CBOR Key Value: 1 o CBOR Key Value: 1
o CBOR Major Type: 5 o CBOR Major Type: 5
o Change Controller: IESG o Change Controller: IESG
o Specification Document(s): this document o Specification Document(s): this document
o Parameter Name: "scope" o Parameter Name: "scope"
o CBOR Key Value: 2 o CBOR Key Value: 2
o CBOR Major Type: 5 o CBOR Major Type: 5
skipping to change at page 60, line 36 skipping to change at page 66, line 5
o CBOR Major Type: 2 o CBOR Major Type: 2
o Change Controller: IESG o Change Controller: IESG
o Specification Document(s): this document o Specification Document(s): this document
o Parameter Name:ttl o Parameter Name:ttl
o CBOR Key Value: 40 o CBOR Key Value: 40
o CBOR Major Type: 0 o CBOR Major Type: 0
o Change Controller: IESG o Change Controller: IESG
o Specification Document(s): this document o Specification Document(s): this document
10.5. YANG Modules 9.5. DOTS Signal Channel YANG Module
This document requests IANA to register the following URIs in the This document requests IANA to register the following URI in the
"IETF XML Registry" [RFC3688]: "IETF XML Registry" [RFC3688]:
URI: urn:ietf:params:xml:ns:yang:ietf-dots-signal URI: urn:ietf:params:xml:ns:yang:ietf-dots-signal
Registrant Contact: The IESG. Registrant Contact: The IESG.
XML: N/A; the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-dots-signal-config This document requests IANA to register the following YANG module in
Registrant Contact: The IESG.
XML: N/A; the requested URI is an XML namespace.
This document requests IANA to register the following YANG modules in
the "YANG Module Names" registry [RFC7950]. the "YANG Module Names" registry [RFC7950].
name: ietf-signal name: ietf-signal
namespace: urn:ietf:params:xml:ns:yang:ietf-dots-signal namespace: urn:ietf:params:xml:ns:yang:ietf-dots-signal
prefix: signal prefix: signal
reference: RFC XXXX reference: RFC XXXX
name: ietf-dots-signal-config
namespace: urn:ietf:params:xml:ns:yang:ietf-dots-signal-config
prefix: config
reference: RFC XXXX
11. Implementation Status 10. Implementation Status
[Note to RFC Editor: Please remove this section and reference to [Note to RFC Editor: Please remove this section and reference to
[RFC7942] prior to publication.] [RFC7942] prior to publication.]
This section records the status of known implementations of the This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in [RFC7942]. Internet-Draft, and is based on a proposal described in [RFC7942].
The description of implementations in this section is intended to The description of implementations in this section is intended to
assist the IETF in its decision processes in progressing drafts to assist the IETF in its decision processes in progressing drafts to
RFCs. Please note that the listing of any individual implementation RFCs. Please note that the listing of any individual implementation
skipping to change at page 61, line 40 skipping to change at page 66, line 47
features. Readers are advised to note that other implementations may features. Readers are advised to note that other implementations may
exist. exist.
According to [RFC7942], "this will allow reviewers and working groups According to [RFC7942], "this will allow reviewers and working groups
to assign due consideration to documents that have the benefit of to assign due consideration to documents that have the benefit of
running code, which may serve as evidence of valuable experimentation running code, which may serve as evidence of valuable experimentation
and feedback that have made the implemented protocols more mature. and feedback that have made the implemented protocols more mature.
It is up to the individual working groups to use this information as It is up to the individual working groups to use this information as
they see fit". they see fit".
11.1. nttdots 10.1. nttdots
Organization: NTT Communication is developing a DOTS client and Organization: NTT Communication is developing a DOTS client and
DOTS server software based on DOTS signal channel specified in DOTS server software based on DOTS signal channel specified in
this draft. It will be open-sourced. this draft. It will be open-sourced.
Description: Early implementation of DOTS protocol. It is aimed to Description: Early implementation of DOTS protocol. It is aimed to
implement a full DOTS protocol spec in accordance with maturing of implement a full DOTS protocol spec in accordance with maturing of
DOTS protocol itself. DOTS protocol itself.
Implementation: https://github.com/nttdots/go-dots Implementation: https://github.com/nttdots/go-dots
Level of maturity: It is a early implementation of DOTS protocol. Level of maturity: It is a early implementation of DOTS protocol.
Messaging between DOTS clients and DOTS servers has been tested. Messaging between DOTS clients and DOTS servers has been tested.
Level of maturity will increase in accordance with maturing of Level of maturity will increase in accordance with maturing of
DOTS protocol itself. DOTS protocol itself.
Coverage: Capability of DOTS client: sending DOTS messages to the Coverage: Capability of DOTS client: sending DOTS messages to the
DOTS server in CoAP over DTLS as dots-signal. Capability of DOTS DOTS server in CoAP over DTLS as dots-signal. Capability of DOTS
server: receiving dots-signal, validating received dots-signal, server: receiving dots-signal, validating received dots-signal,
starting mitigation by handing over the dots-signal to DDOS starting mitigation by handing over the dots-signal to DDOS
mitigator. mitigator.
Licensing: It will be open-sourced with BSD 3-clause license. Licensing: It will be open-sourced with BSD 3-clause license.
Implementation experience: It is implemented in Go-lang. Core Implementation experience: It is implemented in Go-lang. Core
specification of signaling is mature to be implemented, however, specification of signaling is mature to be implemented, however,
finding good libraries(like DTLS, CoAP) is rather difficult. finding good libraries(like DTLS, CoAP) is rather difficult.
Contact: Kaname Nishizuka <kaname@nttv6.jp> Contact: Kaname Nishizuka <kaname@nttv6.jp>
skipping to change at page 62, line 16 skipping to change at page 67, line 24
DOTS server in CoAP over DTLS as dots-signal. Capability of DOTS DOTS server in CoAP over DTLS as dots-signal. Capability of DOTS
server: receiving dots-signal, validating received dots-signal, server: receiving dots-signal, validating received dots-signal,
starting mitigation by handing over the dots-signal to DDOS starting mitigation by handing over the dots-signal to DDOS
mitigator. mitigator.
Licensing: It will be open-sourced with BSD 3-clause license. Licensing: It will be open-sourced with BSD 3-clause license.
Implementation experience: It is implemented in Go-lang. Core Implementation experience: It is implemented in Go-lang. Core
specification of signaling is mature to be implemented, however, specification of signaling is mature to be implemented, however,
finding good libraries(like DTLS, CoAP) is rather difficult. finding good libraries(like DTLS, CoAP) is rather difficult.
Contact: Kaname Nishizuka <kaname@nttv6.jp> Contact: Kaname Nishizuka <kaname@nttv6.jp>
12. Security Considerations 11. Security Considerations
Authenticated encryption MUST be used for data confidentiality and Authenticated encryption MUST be used for data confidentiality and
message integrity. The interaction between the DOTS agents requires message integrity. The interaction between the DOTS agents requires
Datagram Transport Layer Security (DTLS) and Transport Layer Security Datagram Transport Layer Security (DTLS) and Transport Layer Security
(TLS) with a cipher suite offering confidentiality protection and the (TLS) with a cipher suite offering confidentiality protection and the
guidance given in [RFC7525] MUST be followed to avoid attacks on guidance given in [RFC7525] MUST be followed to avoid attacks on
(D)TLS. (D)TLS.
A single DOTS signal channel between DOTS agents can be used to A single DOTS signal channel between DOTS agents can be used to
exchange multiple DOTS signal messages. To reduce DOTS client and exchange multiple DOTS signal messages. To reduce DOTS client and
skipping to change at page 63, line 7 skipping to change at page 68, line 15
network). network).
Involved functional elements in the cooperation system must establish Involved functional elements in the cooperation system must establish
exchange instructions and notification over a secure and exchange instructions and notification over a secure and
authenticated channel. Adequate filters can be enforced to avoid authenticated channel. Adequate filters can be enforced to avoid
that nodes outside a trusted domain can inject request such as that nodes outside a trusted domain can inject request such as
deleting filtering rules. Nevertheless, attacks can be initiated deleting filtering rules. Nevertheless, attacks can be initiated
from within the trusted domain if an entity has been corrupted. from within the trusted domain if an entity has been corrupted.
Adequate means to monitor trusted nodes should also be enabled. Adequate means to monitor trusted nodes should also be enabled.
13. Contributors 12. Contributors
The following individuals have contributed to this document: The following individuals have contributed to this document:
Mike Geller Cisco Systems, Inc. 3250 Florida 33309 USA Email: Mike Geller Cisco Systems, Inc. 3250 Florida 33309 USA Email:
mgeller@cisco.com mgeller@cisco.com
Robert Moskowitz HTT Consulting Oak Park, MI 42837 United States Robert Moskowitz HTT Consulting Oak Park, MI 42837 United States
Email: rgm@htt-consult.com Email: rgm@htt-consult.com
Dan Wing Email: dwing-ietf@fuggles.com Dan Wing Email: dwing-ietf@fuggles.com
14. Acknowledgements 13. Acknowledgements
Thanks to Christian Jacquenet, Roland Dobbins, Roman D. Danyliw, Thanks to Christian Jacquenet, Roland Dobbins, Roman D. Danyliw,
Michael Richardson, Ehud Doron, Kaname Nishizuka, Dave Dolson, Liang Michael Richardson, Ehud Doron, Kaname Nishizuka, Dave Dolson, Liang
Xia, Jon Shallow, Gilbert Clark, and Nesredien Suleiman for the Xia, Jon Shallow, Gilbert Clark, and Nesredien Suleiman for the
discussion and comments. discussion and comments.
15. References 14. References
15.1. Normative References 14.1. Normative References
[I-D.ietf-core-coap-tcp-tls] [I-D.ietf-core-coap-tcp-tls]
Bormann, C., Lemay, S., Tschofenig, H., Hartke, K., Bormann, C., Lemay, S., Tschofenig, H., Hartke, K.,
Silverajan, B., and B. Raymor, "CoAP (Constrained Silverajan, B., and B. Raymor, "CoAP (Constrained
Application Protocol) over TCP, TLS, and WebSockets", Application Protocol) over TCP, TLS, and WebSockets",
draft-ietf-core-coap-tcp-tls-10 (work in progress), draft-ietf-core-coap-tcp-tls-10 (work in progress),
October 2017. October 2017.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
skipping to change at page 65, line 20 skipping to change at page 70, line 31
[RFC7641] Hartke, K., "Observing Resources in the Constrained [RFC7641] Hartke, K., "Observing Resources in the Constrained
Application Protocol (CoAP)", RFC 7641, Application Protocol (CoAP)", RFC 7641,
DOI 10.17487/RFC7641, September 2015, DOI 10.17487/RFC7641, September 2015,
<https://www.rfc-editor.org/info/rfc7641>. <https://www.rfc-editor.org/info/rfc7641>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[RFC8132] van der Stok, P., Bormann, C., and A. Sehgal, "PATCH and [RFC8132] van der Stok, P., Bormann, C., and A. Sehgal, "PATCH and
FETCH Methods for the Constrained Application Protocol FETCH Methods for the Constrained Application Protocol
(CoAP)", RFC 8132, DOI 10.17487/RFC8132, April 2017, (CoAP)", RFC 8132, DOI 10.17487/RFC8132, April 2017,
<https://www.rfc-editor.org/info/rfc8132>. <https://www.rfc-editor.org/info/rfc8132>.
15.2. Informative References 14.2. Informative References
[I-D.ietf-core-comi] [I-D.ietf-core-comi]
Veillette, M., Stok, P., Pelov, A., and A. Bierman, "CoAP Veillette, M., Stok, P., Pelov, A., and A. Bierman, "CoAP
Management Interface", draft-ietf-core-comi-01 (work in Management Interface", draft-ietf-core-comi-01 (work in
progress), July 2017. progress), July 2017.
[I-D.ietf-core-yang-cbor] [I-D.ietf-core-yang-cbor]
Veillette, M., Pelov, A., Somaraju, A., Turner, R., and A. Veillette, M., Pelov, A., Somaraju, A., Turner, R., and A.
Minaburo, "CBOR Encoding of Data Modeled with YANG", Minaburo, "CBOR Encoding of Data Modeled with YANG",
draft-ietf-core-yang-cbor-05 (work in progress), August draft-ietf-core-yang-cbor-05 (work in progress), August
skipping to change at page 66, line 22 skipping to change at page 71, line 36
Dobbins, R., Migault, D., Fouant, S., Moskowitz, R., Dobbins, R., Migault, D., Fouant, S., Moskowitz, R.,
Teague, N., Xia, L., and K. Nishizuka, "Use cases for DDoS Teague, N., Xia, L., and K. Nishizuka, "Use cases for DDoS
Open Threat Signaling", draft-ietf-dots-use-cases-09 (work Open Threat Signaling", draft-ietf-dots-use-cases-09 (work
in progress), November 2017. in progress), November 2017.
[I-D.ietf-netmod-yang-tree-diagrams] [I-D.ietf-netmod-yang-tree-diagrams]
Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft- Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft-
ietf-netmod-yang-tree-diagrams-02 (work in progress), ietf-netmod-yang-tree-diagrams-02 (work in progress),
October 2017. October 2017.
[I-D.ietf-tls-dtls13]
Rescorla, E., Tschofenig, H., and N. Modadugu, "The
Datagram Transport Layer Security (DTLS) Protocol Version
1.3", draft-ietf-tls-dtls13-22 (work in progress),
November 2017.
[I-D.ietf-tls-tls13] [I-D.ietf-tls-tls13]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", draft-ietf-tls-tls13-21 (work in progress), Version 1.3", draft-ietf-tls-tls13-21 (work in progress),
July 2017. July 2017.
[I-D.rescorla-tls-dtls13]
Rescorla, E., Tschofenig, H., and N. Modadugu, "The
Datagram Transport Layer Security (DTLS) Protocol Version
1.3", draft-rescorla-tls-dtls13-01 (work in progress),
March 2017.
[proto_numbers] [proto_numbers]
"IANA, "Protocol Numbers"", 2011, "IANA, "Protocol Numbers"", 2011,
<http://www.iana.org/assignments/protocol-numbers>. <http://www.iana.org/assignments/protocol-numbers>.
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791,
DOI 10.17487/RFC0791, September 1981, DOI 10.17487/RFC0791, September 1981,
<https://www.rfc-editor.org/info/rfc791>. <https://www.rfc-editor.org/info/rfc791>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/info/rfc3986>.
[RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram
Congestion Control Protocol (DCCP)", RFC 4340, Congestion Control Protocol (DCCP)", RFC 4340,
DOI 10.17487/RFC4340, March 2006, DOI 10.17487/RFC4340, March 2006,
<https://www.rfc-editor.org/info/rfc4340>. <https://www.rfc-editor.org/info/rfc4340>.
[RFC4632] Fuller, V. and T. Li, "Classless Inter-domain Routing [RFC4632] Fuller, V. and T. Li, "Classless Inter-domain Routing
(CIDR): The Internet Address Assignment and Aggregation (CIDR): The Internet Address Assignment and Aggregation
Plan", BCP 122, RFC 4632, DOI 10.17487/RFC4632, August Plan", BCP 122, RFC 4632, DOI 10.17487/RFC4632, August
2006, <https://www.rfc-editor.org/info/rfc4632>. 2006, <https://www.rfc-editor.org/info/rfc4632>.
skipping to change at page 68, line 5 skipping to change at page 73, line 23
<https://www.rfc-editor.org/info/rfc7030>. <https://www.rfc-editor.org/info/rfc7030>.
[RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object
Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049,
October 2013, <https://www.rfc-editor.org/info/rfc7049>. October 2013, <https://www.rfc-editor.org/info/rfc7049>.
[RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP
Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014,
<https://www.rfc-editor.org/info/rfc7413>. <https://www.rfc-editor.org/info/rfc7413>.
[RFC7452] Tschofenig, H., Arkko, J., Thaler, D., and D. McPherson,
"Architectural Considerations in Smart Object Networking",
RFC 7452, DOI 10.17487/RFC7452, March 2015,
<https://www.rfc-editor.org/info/rfc7452>.
[RFC7589] Badra, M., Luchuk, A., and J. Schoenwaelder, "Using the [RFC7589] Badra, M., Luchuk, A., and J. Schoenwaelder, "Using the
NETCONF Protocol over Transport Layer Security (TLS) with NETCONF Protocol over Transport Layer Security (TLS) with
Mutual X.509 Authentication", RFC 7589, Mutual X.509 Authentication", RFC 7589,
DOI 10.17487/RFC7589, June 2015, DOI 10.17487/RFC7589, June 2015,
<https://www.rfc-editor.org/info/rfc7589>. <https://www.rfc-editor.org/info/rfc7589>.
[RFC7918] Langley, A., Modadugu, N., and B. Moeller, "Transport [RFC7918] Langley, A., Modadugu, N., and B. Moeller, "Transport
Layer Security (TLS) False Start", RFC 7918, Layer Security (TLS) False Start", RFC 7918,
DOI 10.17487/RFC7918, August 2016, DOI 10.17487/RFC7918, August 2016,
<https://www.rfc-editor.org/info/rfc7918>. <https://www.rfc-editor.org/info/rfc7918>.
 End of changes. 229 change blocks. 
883 lines changed or deleted 1015 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/