| < draft-ietf-dots-signal-channel-05.txt | draft-ietf-dots-signal-channel-06.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: April 15, 2018 Orange | Expires: April 30, 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. | |||
| October 12, 2017 | October 27, 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-05 | draft-ietf-dots-signal-channel-06 | |||
| 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. A companion | traffic mitigation on behalf of the requesting client. A companion | |||
| document defines the DOTS data channel, a separate reliable | document defines the DOTS data channel, a separate reliable | |||
| communication layer for DOTS management and configuration. | communication layer for DOTS management and configuration. | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| 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 April 15, 2018. | This Internet-Draft will expire on April 30, 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 | |||
| skipping to change at page 2, line 21 ¶ | skipping to change at page 2, line 21 ¶ | |||
| 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 . . . . . . . . . . . 3 | 2. Notational Conventions and Terminology . . . . . . . . . . . 3 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Happy Eyeballs for DOTS Signal Channel . . . . . . . . . . . 5 | 4. Happy Eyeballs for DOTS Signal Channel . . . . . . . . . . . 5 | |||
| 5. DOTS Signal Channel . . . . . . . . . . . . . . . . . . . . . 7 | 5. DOTS Signal Channel . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5.2. DOTS Signal YANG Module . . . . . . . . . . . . . . . . . 8 | 5.2. DOTS Signal YANG Module . . . . . . . . . . . . . . . . . 8 | |||
| 5.2.1. Mitigation Request YANG Module Tree Structure . . . . 8 | 5.2.1. Mitigation Request YANG Module Tree Structure . . . . 8 | |||
| 5.2.2. Mitigation Request YANG Module . . . . . . . . . . . 8 | 5.2.2. Mitigation Request YANG Module . . . . . . . . . . . 8 | |||
| 5.2.3. Session Configuration YANG Module Tree Structure . . 11 | 5.2.3. Session Configuration YANG Module Tree Structure . . 11 | |||
| 5.2.4. Session Configuration YANG Module . . . . . . . . . . 12 | 5.2.4. Session Configuration YANG Module . . . . . . . . . . 12 | |||
| 5.3. Mitigation Request . . . . . . . . . . . . . . . . . . . 14 | 5.3. Mitigation Request . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.3.1. Requesting mitigation . . . . . . . . . . . . . . . . 15 | 5.3.1. Requesting mitigation . . . . . . . . . . . . . . . . 15 | |||
| 5.3.2. Withdraw a DOTS Signal . . . . . . . . . . . . . . . 22 | 5.3.2. Withdraw a DOTS Signal . . . . . . . . . . . . . . . 23 | |||
| 5.3.3. Retrieving a DOTS Signal . . . . . . . . . . . . . . 23 | 5.3.3. Retrieving a DOTS Signal . . . . . . . . . . . . . . 24 | |||
| 5.3.4. Efficacy Update from DOTS Client . . . . . . . . . . 28 | 5.3.4. Efficacy Update from DOTS Client . . . . . . . . . . 29 | |||
| 5.4. DOTS Signal Channel Session Configuration . . . . . . . . 30 | 5.4. DOTS Signal Channel Session Configuration . . . . . . . . 31 | |||
| 5.4.1. Discover Configuration Parameters . . . . . . . . . . 31 | 5.4.1. Discover Configuration Parameters . . . . . . . . . . 32 | |||
| 5.4.2. Convey DOTS Signal Channel Session Configuration . . 33 | 5.4.2. Convey DOTS Signal Channel Session Configuration . . 34 | |||
| 5.4.3. Delete DOTS Signal Channel Session Configuration . . 37 | 5.4.3. Delete DOTS Signal Channel Session Configuration . . 38 | |||
| 5.4.4. Retrieving DOTS Signal Channel Session Configuration 38 | ||||
| 5.5. Redirected Signaling . . . . . . . . . . . . . . . . . . 38 | 5.5. Redirected Signaling . . . . . . . . . . . . . . . . . . 38 | |||
| 5.6. Heartbeat Mechanism . . . . . . . . . . . . . . . . . . . 39 | 5.6. Heartbeat Mechanism . . . . . . . . . . . . . . . . . . . 40 | |||
| 6. Mapping parameters to CBOR . . . . . . . . . . . . . . . . . 40 | 6. Mapping parameters to CBOR . . . . . . . . . . . . . . . . . 40 | |||
| 7. (D)TLS Protocol Profile and Performance considerations . . . 41 | 7. (D)TLS Protocol Profile and Performance considerations . . . 41 | |||
| 7.1. MTU and Fragmentation Issues . . . . . . . . . . . . . . 42 | 7.1. MTU and Fragmentation Issues . . . . . . . . . . . . . . 42 | |||
| 8. (D)TLS 1.3 considerations . . . . . . . . . . . . . . . . . . 43 | 8. (D)TLS 1.3 considerations . . . . . . . . . . . . . . . . . . 43 | |||
| 9. Mutual Authentication of DOTS Agents & Authorization of DOTS | 9. Mutual Authentication of DOTS Agents & Authorization of DOTS | |||
| Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 | Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 10.1. CoAP Response Code . . . . . . . . . . . . . . . . . . . 46 | 10.1. CoAP Response Code . . . . . . . . . . . . . . . . . . . 46 | |||
| 10.2. DOTS signal channel CBOR Mappings Registry . . . . . . . 46 | 10.2. DOTS signal channel CBOR Mappings Registry . . . . . . . 46 | |||
| 10.2.1. Registration Template . . . . . . . . . . . . . . . 46 | 10.2.1. Registration Template . . . . . . . . . . . . . . . 46 | |||
| skipping to change at page 3, line 4 ¶ | skipping to change at page 2, line 52 ¶ | |||
| 8. (D)TLS 1.3 considerations . . . . . . . . . . . . . . . . . . 43 | 8. (D)TLS 1.3 considerations . . . . . . . . . . . . . . . . . . 43 | |||
| 9. Mutual Authentication of DOTS Agents & Authorization of DOTS | 9. Mutual Authentication of DOTS Agents & Authorization of DOTS | |||
| Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 | Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 10.1. CoAP Response Code . . . . . . . . . . . . . . . . . . . 46 | 10.1. CoAP Response Code . . . . . . . . . . . . . . . . . . . 46 | |||
| 10.2. DOTS signal channel CBOR Mappings Registry . . . . . . . 46 | 10.2. DOTS signal channel CBOR Mappings Registry . . . . . . . 46 | |||
| 10.2.1. Registration Template . . . . . . . . . . . . . . . 46 | 10.2.1. Registration Template . . . . . . . . . . . . . . . 46 | |||
| 10.2.2. Initial Registry Contents . . . . . . . . . . . . . 47 | 10.2.2. Initial Registry Contents . . . . . . . . . . . . . 47 | |||
| 11. Implementation Status . . . . . . . . . . . . . . . . . . . . 51 | 11. Implementation Status . . . . . . . . . . . . . . . . . . . . 51 | |||
| 11.1. nttdots . . . . . . . . . . . . . . . . . . . . . . . . 51 | 11.1. nttdots . . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 12. Security Considerations . . . . . . . . . . . . . . . . . . . 52 | 12. Security Considerations . . . . . . . . . . . . . . . . . . . 52 | |||
| 13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 53 | 13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 53 | 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 15.1. Normative References . . . . . . . . . . . . . . . . . . 53 | 15.1. Normative References . . . . . . . . . . . . . . . . . . 53 | |||
| 15.2. Informative References . . . . . . . . . . . . . . . . . 54 | 15.2. Informative References . . . . . . . . . . . . . . . . . 54 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
| 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. | |||
| In many cases, it may not be possible for an network administrators | In many cases, it may not be possible for network administrators to | |||
| 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. | |||
| The requirements for DOTS signal channel protocol are obtained from | The document adheres to the DOTS architecture | |||
| [I-D.ietf-dots-requirements]. | [I-D.ietf-dots-architecture]. The requirements for DOTS signal | |||
| 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] except the Third-party DOTS notifications | [I-D.ietf-dots-use-cases]. | |||
| use case in Section 3.2.3 of [I-D.ietf-dots-use-cases] which is an | ||||
| optional feature and not a core use case. Third-party DOTS | ||||
| notifications are not part of the DOTS requirements document. | ||||
| Moreover, the DOTS architecture does not assess whether that use case | ||||
| may have an impact on the architecture itself and/or the DOTS trust | ||||
| model. | ||||
| This is a companion document to the DOTS data channel specification | This is a 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 | |||
| skipping to change at page 6, line 41 ¶ | skipping to change at page 6, line 38 ¶ | |||
| |--TCP ACK----------------------------------------------->| | |--TCP ACK----------------------------------------------->| | |||
| |<------------Establish TLS Session---------------------->| | |<------------Establish TLS Session---------------------->| | |||
| |----------------DOTS signal----------------------------->| | |----------------DOTS signal----------------------------->| | |||
| | | | | | | |||
| Figure 3: Happy Eyeballs | Figure 3: Happy Eyeballs | |||
| In reference to Figure 3, the DOTS client sends two TCP SYNs and two | In reference to Figure 3, the DOTS client sends two TCP SYNs and two | |||
| DTLS ClientHello messages at the same time over IPv6 and IPv4. In | DTLS ClientHello messages at the same time over IPv6 and IPv4. In | |||
| this example, it is assumed that the IPv6 path is broken and UDP is | this example, it is assumed that the IPv6 path is broken and UDP is | |||
| dropped by a middle box but has little impact to the DOTS client | dropped by a middlebox but has little impact to the DOTS client | |||
| because there is no long delay before using IPv4 and TCP. The DOTS | because there is no long delay before using IPv4 and TCP. The DOTS | |||
| client repeats the mechanism to discover if DOTS signaling with DTLS | client repeats the mechanism to discover if DOTS signaling with DTLS | |||
| 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. | |||
| 5. DOTS Signal Channel | 5. DOTS Signal Channel | |||
| 5.1. Overview | 5.1. Overview | |||
| The DOTS signal channel is built on top of the Constrained | The DOTS signal channel is built on top of the Constrained | |||
| Application Protocol (CoAP) [RFC7252], a lightweight protocol | Application Protocol (CoAP) [RFC7252], a lightweight protocol | |||
| originally designed for constrained devices and networks. CoAP's | originally designed for constrained devices and networks. CoAP's | |||
| expectation of packet loss, support for asynchronous non-confirmable | expectation of packet loss, support for asynchronous non-confirmable | |||
| messaging, congestion control, small message overhead limiting the | messaging, congestion control, small message overhead limiting the | |||
| need for fragmentation, use of minimal resources, and support for | need for fragmentation, use of minimal resources, and support for | |||
| (D)TLS make it a good foundation on which to build the DOTS signaling | (D)TLS make it a good foundation on which to build the DOTS signaling | |||
| mechanism. | mechanism. | |||
| skipping to change at page 7, line 43 ¶ | skipping to change at page 7, line 40 ¶ | |||
| | IP | | | IP | | |||
| +--------------+ | +--------------+ | |||
| Figure 4: Abstract Layering of DOTS signal channel over CoAP over | Figure 4: Abstract Layering of DOTS signal channel over CoAP over | |||
| (D)TLS | (D)TLS | |||
| The signal channel is initiated by the DOTS client. Once the signal | The signal channel is initiated by the DOTS client. Once the signal | |||
| channel is established, the DOTS agents periodically send heartbeats | channel is established, the DOTS agents periodically send heartbeats | |||
| to keep the channel active. At any time, the DOTS client may send a | to keep the channel active. At any time, the DOTS client may send a | |||
| mitigation request message to the DOTS server over the active | mitigation request message to the DOTS server over the active | |||
| channel. While mitigation is active, the DOTS server periodically | channel. While mitigation is active, due to the higher likelihood of | |||
| sends status messages to the client, including basic mitigation | packet loss during a DDoS attack, the DOTS server periodically sends | |||
| feedback details. Mitigation remains active until the DOTS client | status messages to the client, including basic mitigation feedback | |||
| explicitly terminates mitigation, or the mitigation lifetime expires. | details. Mitigation remains active until the DOTS client explicitly | |||
| terminates mitigation, or the mitigation lifetime expires. | ||||
| Messages exchanged between DOTS client and server are serialized | Messages exchanged between DOTS client and server are serialized | |||
| using Concise Binary Object Representation (CBOR) [RFC7049], CBOR is | using Concise Binary Object Representation (CBOR) [RFC7049], CBOR is | |||
| a binary encoding designed for small code and message size. CBOR | a binary encoding designed for small code and message size. CBOR | |||
| encoded payloads are used to convey signal channel specific payload | encoded payloads are used to convey signal channel specific payload | |||
| messages that convey request parameters and response information such | messages that convey request parameters and response information such | |||
| as errors. This specification uses the encoding rules defined in | as 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.2) as CBOR data. | (Section 5.2) as CBOR data. | |||
| 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 | |||
| skipping to change at page 16, line 13 ¶ | skipping to change at page 16, line 13 ¶ | |||
| 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: "version" | Uri-Path: "version" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "signal" | Uri-Path: "signal" | |||
| Content-Type: "application/cbor" | Content-Type: "application/cbor" | |||
| { | { | |||
| "mitigation-scope": { | "mitigation-scope": { | |||
| "client-identifer": "string", | "client-identifier": [ | |||
| "string" | ||||
| ], | ||||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": integer, | "mitigation-id": integer, | |||
| "target-ip": [ | "target-ip": [ | |||
| "string" | "string" | |||
| ], | ], | |||
| "target-prefix": [ | "target-prefix": [ | |||
| "string" | "string" | |||
| ], | ], | |||
| "target-port-range": [ | "target-port-range": [ | |||
| skipping to change at page 16, line 51 ¶ | skipping to change at page 17, line 5 ¶ | |||
| "lifetime": integer | "lifetime": integer | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 5: PUT to convey DOTS signals | Figure 5: PUT to convey DOTS signals | |||
| The parameters are described below. | The parameters are described below. | |||
| client-identifer: The client identifer MAY be conveyed by the DOTS | client-identifier: The client identifier MAY be conveyed by the DOTS | |||
| gateway to propagate the DOTS client identity to the DOTS server. | 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. This allows the final DOTS server | ||||
| to accept mitigation requests with scopes which the DOTS client is | ||||
| authorized to manage. | ||||
| The'client-identifier' value MUST be assigned by the DOTS gateway | The 'client-identifier' value MUST be assigned by the DOTS gateway | |||
| in a manner that ensures that there is no probability that the | in a manner that ensures that there is no probability that the | |||
| same value will be accidentally assigned to a different DOTS | same value will be assigned to a different DOTS client. The DOTS | |||
| client. The client-identifier attribute SHOULD NOT to be | gateway MUST obscure potentially sensitive DOTS client identity | |||
| advertised by the DOTS client. | information. The client-identifier attribute SHOULD NOT to be | |||
| generated and included by the DOTS client. | ||||
| 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. This is a mandatory attribute. | |||
| skipping to change at page 17, line 31 ¶ | skipping to change at page 17, line 41 ¶ | |||
| target-ip: A list of IP addresses under attack. This is an optional | target-ip: A list of IP addresses under attack. This is an optional | |||
| attribute. | attribute. | |||
| target-prefix: A list of prefixes under attack. Prefixes are | target-prefix: A list of prefixes under attack. Prefixes are | |||
| represented using CIDR notation [RFC4632]. This is an optional | represented using CIDR notation [RFC4632]. This is an optional | |||
| attribute. | attribute. | |||
| target-port-range: A list of ports under attack. The port range, | target-port-range: A list of ports under attack. The port range, | |||
| lower-port for lower port number and upper-port for upper port | lower-port for lower port number and upper-port for upper port | |||
| number. When only lower-port is present, it represents a single | number. When only lower-port is present, it represents a single | |||
| port. For TCP, UDP, SCTP, or DCCP: the range of ports (e.g., | port. For TCP, UDP, Stream Control Transmission Protocol (SCTP) | |||
| 1024-65535). This is an optional attribute. | [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 | target-protocol: A list of protocols under attack. Values are taken | |||
| from the IANA protocol registry [proto_numbers]. The value 0 has | from the IANA protocol registry [proto_numbers]. The value 0 has | |||
| a special meaning for 'all protocols'. This is an optional | a special meaning for 'all protocols'. This is an optional | |||
| attribute. | attribute. | |||
| fqdn: A list of Fully Qualified Domain Names. Fully Qualified | fqdn: A list of Fully Qualified Domain Names. Fully Qualified | |||
| Domain Name (FQDN) is the full name of a system, rather than just | Domain Name (FQDN) is the full name of a system, rather than just | |||
| its hostname. For example, "venera" is a hostname, and | its hostname. For example, "venera" is a hostname, and | |||
| "venera.isi.edu" is an FQDN. This is an optional attribute. | "venera.isi.edu" is an FQDN. This is an optional attribute. | |||
| uri: A list of Uniform Resource Identifiers (URI). This is an | uri: A list of Uniform Resource Identifiers (URI). This is an | |||
| optional attribute. | optional attribute. | |||
| alias-name: A list of aliases. Aliases can be created using the | alias-name: A list of aliases. Aliases can be created using the | |||
| DOTS data channel (Section 3.1.1 of [I-D.ietf-dots-data-channel]) | DOTS data channel (Section 3.1.1 of [I-D.ietf-dots-data-channel]) | |||
| or direct configuration, or other means and then used in | or direct configuration, or other means and then used in | |||
| subsequent signal channel exchanges to refer more efficiently to | subsequent signal channel exchanges to refer more efficiently to | |||
| the resources under attack. This is an optional attribute. | the resources under attack. This is an optional attribute. | |||
| lifetime: Lifetime of the mitigation request in seconds. Upon the | lifetime: Lifetime of the mitigation request in seconds. The | |||
| default lifetime of a mitigation request is 3600 seconds (60 | ||||
| minutes) -- this value was chosen to be long enough so that | ||||
| refreshing is not typically a burden on the DOTS client, while | ||||
| expiring the request where the client has unexpectedly quit in a | ||||
| timely manner. | ||||
| A lifetime of negative one (-1) indicates indefinite lifetime for | ||||
| the mitigation request. | ||||
| DOTS clients SHOULD include this parameter in their mitigation | ||||
| requests. If no lifetime is supplied by a DOTS client, the DOTS | ||||
| server uses the default lifetime value (3600 seconds). Upon the | ||||
| expiry of this lifetime, and if the request is not refreshed, the | expiry of this lifetime, and if the request is not refreshed, the | |||
| mitigation request is removed. The request can be refreshed by | mitigation request is removed. The request can be refreshed by | |||
| sending the same request again. The default lifetime of the | sending the same request again. The server MAY refuse indefinite | |||
| mitigation request is 3600 seconds (60 minutes) -- this value was | lifetime; the granted lifetime value is returned in the response. | |||
| chosen to be long enough so that refreshing is not typically a | The server MUST always indicate the actual lifetime in the | |||
| burden on the DOTS client, while expiring the request where the | response and the remaining lifetime in status messages sent to the | |||
| client has unexpectedly quit in a timely manner. A lifetime of | client. This is a mandatory parameter for responses. | |||
| negative one (-1) indicates indefinite lifetime for the mitigation | ||||
| request. The server MUST always indicate the actual lifetime in | ||||
| the response and the remaining lifetime in status messages sent to | ||||
| the client. This is an optional attribute in the 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 10 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 fqdn or uri or alias-name MUST be present. DOTS | 'target-prefix' or 'fqdn' or 'uri 'or 'alias-name' MUST be present. | |||
| agents can safely ignore Vendor-Specific parameters they don't | DOTS agents can safely ignore Vendor-Specific parameters they don't | |||
| understand. | 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 are overlapping if there is a common IP | value. Two mitigation-ids are overlapping if there is a common IP | |||
| address, IP prefix, FQDN, URI, or alias-name. The overlapped lower | address, IP prefix, FQDN, URI, or alias-name. The overlapped lower | |||
| numeric 'mitigation-id' MUST be automatically deleted and no longer | numeric 'mitigation-id' MUST be automatically deleted and no longer | |||
| available at the DOTS server. | available 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 EST | If the DOTS client is using the certificate provisioned by the | |||
| server in the DOTS gateway-domain to authenticate itself to the DOTS | Enrollment over Secure Transport (EST) server [RFC6234] in the DOTS | |||
| gateway, then the 'client-identifier' value will be the output of a | gateway-domain to authenticate itself to the DOTS gateway, then the | |||
| cryptographic hash algorithm whose input is the DER-encoded ASN.1 | 'client-identifier' value will be the output of a cryptographic hash | |||
| representation of the Subject Public Key Info (SPKI) of an X.509 | algorithm whose input is the DER-encoded ASN.1 representation of the | |||
| certificate. The output of the cryptographic hash algorithm is | Subject Public Key Info (SPKI) of an X.509 certificate. The output | |||
| base64url encoded. In this version of the specification, the | of the cryptographic hash algorithm is base64url encoded. In this | |||
| cryptographic hash algorithm used is SHA-256 [RFC6234]. If the | version of the specification, the cryptographic hash algorithm used | |||
| 'client-identifier' value is already present in the mitigation | is SHA-256 [RFC6234]. If the 'client-identifier' value is already | |||
| request received from the DOTS client, the DOTS gateway computes the | present in the mitigation request received from the DOTS client, the | |||
| 'client-identifier' value, as discussed above, and adds the computed | DOTS gateway computes the 'client-identifier' value, as discussed | |||
| 'client-identifier' value to the end of the 'client-identifier' list. | above, and adds 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 | In both DOTS signal and data channel sessions, the DOTS client MUST | |||
| authenticate itself to the DOTS server (Section 9). If the 'client- | authenticate itself to the DOTS server (Section 9). The DOTS server | |||
| identifier' value is not present in the mitigation request, the DOTS | may use the algorithm in Section 7 of [RFC7589] to derive the DOTS | |||
| server may use the algorithm in Section 7 of [RFC7589] to derive the | client identity or username from the client certificate. The DOTS | |||
| DOTS client identity or username from the client certificate. The | client identity allows the DOTS server to accept mitigation requests | |||
| DOTS server couples the DOTS signal and data channel sessions using | with scopes which the DOTS client is authorized to manage. The DOTS | |||
| the DOTS client identity, so the DOTS server can validate whether the | server couples the DOTS signal and data channel sessions using the | |||
| aliases conveyed in the mitigation request were indeed created by the | DOTS client identity and the 'client-identifier' parameter value, so | |||
| same DOTS client using the DOTS data channel session. If the aliases | the DOTS server can validate whether the aliases conveyed in the | |||
| were not created by the DOTS client, the DOTS server returns 4.00 | mitigation request were indeed created by the same DOTS client using | |||
| (Bad Request) in the response. | 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 | The DOTS server couples the DOTS signal channel sessions using the | |||
| DOTS client identity, and the DOTS server uses 'mitigation-id' | DOTS client identity and the 'client-identifier' parameter value, and | |||
| parameter value to detect duplicate mitigation requests. If the | the DOTS server uses 'mitigation-id' parameter value to detect | |||
| mitigation request contains both alias-name and other parameters | duplicate mitigation requests. If the mitigation request contains | |||
| identifying the target resources (such as, target-ip, target-prefix, | both alias-name and other parameters identifying the target resources | |||
| target-port-range, fqdn, or uri), then the DOTS server appends the | (such as, 'target-ip', 'target-prefix', 'target-port-range', 'fqdn', | |||
| parameter values in alias-name with the corresponding parameter | or 'uri'), then the DOTS server appends the parameter values in | |||
| values in target-ip, target-prefix, target-port-range, fqdn, or uri. | 'alias-name' with the corresponding parameter values in 'target-ip', | |||
| 'target-prefix', 'target-port-range', 'fqdn', or '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: "v1" | Uri-Path: "v1" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "signal" | Uri-Path: "signal" | |||
| Content-Format: "application/cbor" | Content-Format: "application/cbor" | |||
| { | { | |||
| "mitigation-scope": { | "mitigation-scope": { | |||
| "client-identifier": "E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=", | "client-identifier": [ | |||
| "E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=" | ||||
| ], | ||||
| "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 | |||
| skipping to change at page 20, line 27 ¶ | skipping to change at page 21, line 6 ¶ | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| The CBOR encoding format is shown below: | The CBOR encoding format is shown below: | |||
| 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) | |||
| 78 2C # text(44) | 81 # array(1) | |||
| 4539435A39494E4462642B326552516F7A59717162513279584C564B42392B786370724D462B34345531673D | 78 2C # text(44) | |||
| 4539435A39494E4462642B326552516F7A59717162513279584C564B42392B786370724D462B34345531673D | ||||
| # "E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=" | # "E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=" | |||
| 02 # unsigned(2) | 02 # unsigned(2) | |||
| 81 # array(1) | 81 # array(1) | |||
| A4 # map(4) | A4 # map(4) | |||
| 03 # unsigned(3) | 03 # unsigned(3) | |||
| 19 302C # unsigned(12332) | 19 302C # unsigned(12332) | |||
| 04 # unsigned(4) | 04 # unsigned(4) | |||
| 82 # array(2) | 82 # array(2) | |||
| 70 # text(16) | 70 # text(16) | |||
| 323030313A6462383A363430313A3A31 # "2001:db8:6401::1" | 323030313A6462383A363430313A3A31 # "2001:db8:6401::1" | |||
| skipping to change at page 21, line 4 ¶ | skipping to change at page 21, line 32 ¶ | |||
| 83 # array(3) | 83 # array(3) | |||
| A1 # map(1) | A1 # map(1) | |||
| 06 # unsigned(6) | 06 # unsigned(6) | |||
| 18 50 # unsigned(80) | 18 50 # unsigned(80) | |||
| 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 6: PUT for DOTS signal | |||
| 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. Figure 7 shows a PUT | codes are some sort of invalid requests. Figure 7 shows a PUT | |||
| response for CoAP 2.xx response codes. | response for CoAP 2.xx response codes. | |||
| { | { | |||
| "mitigation-scope": { | "mitigation-scope": { | |||
| "client-identifer": "string", | "client-identifier": [ | |||
| "string" | ||||
| ], | ||||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": integer, | "mitigation-id": integer, | |||
| "lifetime": integer | "lifetime": integer | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 7: 2.xx response body | Figure 7: 2.xx response body | |||
| skipping to change at page 22, line 12 ¶ | skipping to change at page 22, line 48 ¶ | |||
| contains invalid or unknown parameters then 4.02 (Invalid query) is | contains invalid or unknown parameters then 4.02 (Invalid query) is | |||
| returned in the response. | returned in the response. | |||
| 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 need 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. The 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 | ||||
| response to remove the 'client-identifier' value it had added in the | ||||
| corresponding request before forwarding the response to the DOTS | ||||
| client. | ||||
| 5.3.2. Withdraw a DOTS Signal | 5.3.2. Withdraw a DOTS Signal | |||
| A DELETE request is used to withdraw a DOTS signal from a DOTS server | A DELETE request is used to withdraw a DOTS signal from a DOTS server | |||
| (Figure 8). | (Figure 8). | |||
| Header: DELETE (Code=0.04) | Header: DELETE (Code=0.04) | |||
| Uri-Host: "host" | Uri-Host: "host" | |||
| Uri-Path: "version" | Uri-Path: "version" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "signal" | Uri-Path: "signal" | |||
| Content-Format: "application/cbor" | Content-Format: "application/cbor" | |||
| { | { | |||
| "mitigation-scope": { | "mitigation-scope": { | |||
| "client-identifer": "string", | "client-identifier": [ | |||
| "string" | ||||
| ], | ||||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": integer | "mitigation-id": integer | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 8: Withdraw DOTS signal | Figure 8: Withdraw DOTS signal | |||
| skipping to change at page 23, line 13 ¶ | skipping to change at page 24, line 9 ¶ | |||
| DOTS server MAY exponentially increase the active-but-terminating | DOTS server MAY exponentially increase the active-but-terminating | |||
| timeout up to a maximum of 240 seconds (4 minutes). After the | timeout up to a maximum of 240 seconds (4 minutes). After the | |||
| active-but-terminating period expires, the DOTS server MUST treat the | active-but-terminating period expires, the DOTS server MUST treat the | |||
| mitigation as terminated. That is, the DOTS client is no longer | mitigation as terminated. That is, the DOTS client is no longer | |||
| responsible for the mitigation. For example, if there is a financial | responsible for the mitigation. For example, if there is a financial | |||
| relationship between the DOTS client and server domains, the DOTS | relationship between the DOTS client and server domains, the DOTS | |||
| client ceases incurring cost at this point. | client ceases incurring cost at this point. | |||
| 5.3.3. Retrieving a DOTS Signal | 5.3.3. Retrieving a DOTS Signal | |||
| A GET request is used to retrieve information (inclduding status) of | A GET request is used to retrieve information (including status) of a | |||
| a DOTS signal from a DOTS server (Figure 9). If the DOTS server does | DOTS signal from a DOTS server (Figure 9). If the DOTS server does | |||
| not find the 'mitigation-id' parameter value conveyed in the GET | not find the 'mitigation-id' parameter value conveyed in the GET | |||
| request in its configuration data, then it responds with a 4.04 (Not | request in its configuration data, then it responds with a 4.04 (Not | |||
| Found) error response code. The 'c' (content) parameter and its | Found) error response code. The 'c' (content) parameter and its | |||
| permitted values defined in [I-D.ietf-core-comi] can be used to | permitted values defined in [I-D.ietf-core-comi] can be used to | |||
| retrieve non-configuration data or configuration data or both. | retrieve non-configuration data (attack mitigation status) or | |||
| configuration data or both. | ||||
| 1) To retrieve all DOTS signals signaled by the DOTS client. | 1) To retrieve all DOTS signals signaled by the DOTS client. | |||
| Header: GET (Code=0.01) | Header: GET (Code=0.01) | |||
| Uri-Host: "host" | Uri-Host: "host" | |||
| Uri-Path: "version" | Uri-Path: "version" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "signal" | Uri-Path: "signal" | |||
| Observe : 0 | Observe : 0 | |||
| { | { | |||
| "mitigation-scope": { | "mitigation-scope": { | |||
| "client-identifer": "string", | "client-identifier": [ | |||
| "string" | ||||
| ] | ||||
| } | } | |||
| } | } | |||
| 2) To retrieve a specific DOTS signal signaled by the DOTS client. | 2) To retrieve a specific DOTS signal signaled by the DOTS client. | |||
| The configuration data in the response will be formatted in the | The configuration data in the response will be formatted in the | |||
| same order it was processed at the DOTS server. | 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: "version" | Uri-Path: "version" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "signal" | Uri-Path: "signal" | |||
| Observe : 0 | Observe : 0 | |||
| Content-Format: "application/cbor" | Content-Format: "application/cbor" | |||
| { | { | |||
| "mitigation-scope": { | "mitigation-scope": { | |||
| "client-identifer": "string", | "client-identifier": [ | |||
| "string" | ||||
| ], | ||||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": integer | "mitigation-id": integer | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 9: GET to retrieve the rules | Figure 9: GET to retrieve the rules | |||
| skipping to change at page 26, line 8 ¶ | skipping to change at page 27, line 8 ¶ | |||
| 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. | |||
| 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 is an | request since the attack mitigation is triggered. This SHOULD be | |||
| optional attribute. | a five-minute average. This is an optional attribute. | |||
| pkts-dropped: The total dropped packet count for the mitigation | pkts-dropped: The total dropped packet count for the mitigation | |||
| request since the attack mitigation is triggered. This is an | request since the attack mitigation is triggered. This is an | |||
| optional attribute. | optional attribute. | |||
| pps-dropped: The average dropped packets per second for the | pps-dropped: The average dropped packets per second for the | |||
| mitigation request since the attack mitigation is triggered. This | mitigation request since the attack mitigation is triggered. This | |||
| is an optional attribute. | SHOULD be a five-minute average. This is an optional attribute. | |||
| status: Status of attack mitigation. The 'status' parameter is a | status: Status of attack mitigation. The 'status' parameter is a | |||
| mandatory attribute. | mandatory attribute. | |||
| The various possible values of 'status' parameter are explained | The various possible values of 'status' parameter are explained | |||
| below: | below: | |||
| /--------------------+---------------------------------------------------\ | /--------------------+---------------------------------------------------\ | |||
| | Parameter value | Description | | | Parameter value | Description | | |||
| +--------------------+---------------------------------------------------+ | +--------------------+---------------------------------------------------+ | |||
| skipping to change at page 27, line 8 ¶ | skipping to change at page 28, line 8 ¶ | |||
| The observe option defined in [RFC7641] extends the CoAP core | The observe option defined in [RFC7641] extends the CoAP core | |||
| protocol with a mechanism for a CoAP client to "observe" a resource | protocol with a mechanism for a CoAP client to "observe" a resource | |||
| on a CoAP server: the client retrieves a representation of the | on a CoAP server: the client retrieves a representation of the | |||
| resource and requests this representation be updated by the server as | resource and requests this representation be updated by the server as | |||
| long as the client is interested in the resource. A DOTS client | long as the client is interested in the resource. A DOTS client | |||
| conveys the observe option set to 0 in the GET request to receive | conveys the observe option set to 0 in the GET request to receive | |||
| unsolicited notifications of attack mitigation status from the DOTS | unsolicited notifications of attack mitigation status from the DOTS | |||
| server. Unidirectional notifications within the bidirectional signal | server. Unidirectional notifications within the bidirectional signal | |||
| channel allows unsolicited message delivery, enabling asynchronous | channel allows unsolicited message delivery, enabling asynchronous | |||
| notifications between the agents. A DOTS client that is no longer | notifications between the agents. Due to the higher likelihood of | |||
| packet loss during a DDoS attack, DOTS server periodically sends | ||||
| attack mitigation status to the DOTS client and also notifies the | ||||
| DOTS client whenever the status of the attack mitigation changes. If | ||||
| the DOTS server cannot maintain a RTT estimate then it SHOULD NOT | ||||
| send more than one unsolicited notification every 3 seconds, and | ||||
| SHOULD use an even less aggressive rate when possible (case 2 in | ||||
| Section 3.1.3 of [RFC8085]). A DOTS client that is no longer | ||||
| interested in receiving notifications from the DOTS server can simply | interested in receiving notifications from the DOTS server can simply | |||
| "forget" the observation. When the DOTS server then sends the next | "forget" the observation. When the DOTS server then sends the next | |||
| notification, the DOTS client will not recognize the token in the | notification, the DOTS client will not recognize the token in the | |||
| message and thus will return a Reset message. This causes the DOTS | message and thus will return a Reset message. This causes the DOTS | |||
| server to remove the associated entry. Alternatively, the DOTS | server to remove the associated entry. Alternatively, the DOTS | |||
| client can explicitly deregister by issuing a GET request that has | client can explicitly deregister by issuing a GET request that has | |||
| the Token field set to the token of the observation to be cancelled | the Token field set to the token of the observation to be cancelled | |||
| and includes an Observe Option with the value set to 1 (deregister). | and includes an Observe Option with the value set to 1 (deregister). | |||
| DOTS Client DOTS Server | DOTS Client DOTS Server | |||
| skipping to change at page 28, line 20 ¶ | skipping to change at page 29, line 27 ¶ | |||
| 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. | |||
| 5.3.4. Efficacy Update from DOTS Client | 5.3.4. Efficacy Update from DOTS Client | |||
| While DDoS mitigation is active, a DOTS client MAY frequently | While DDoS mitigation is active, due to the likelihood of packet | |||
| transmit DOTS mitigation efficacy updates to the relevant DOTS | loss, a DOTS client MAY periodically transmit DOTS mitigation | |||
| server. A PUT request (Figure 12) is used to convey the mitigation | efficacy updates to the relevant DOTS server. A PUT request | |||
| efficacy update to the DOTS server. | (Figure 12) is used to convey the mitigation efficacy update to the | |||
| 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 5.3.1) unchanged apart | request to convey the DOTS signal (Section 5.3.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.02 error response code. | |||
| 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 | |||
| skipping to change at page 29, line 13 ¶ | skipping to change at page 30, line 13 ¶ | |||
| silently ignored. | silently ignored. | |||
| Header: PUT (Code=0.03) | Header: PUT (Code=0.03) | |||
| Uri-Host: "host" | Uri-Host: "host" | |||
| Uri-Path: "version" | Uri-Path: "version" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "signal" | Uri-Path: "signal" | |||
| Content-Format: "application/cbor" | Content-Format: "application/cbor" | |||
| { | { | |||
| "mitigation-scope": { | "mitigation-scope": { | |||
| "client-identifer": "string", | "client-identifier": [ | |||
| "string" | ||||
| ], | ||||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": integer, | "mitigation-id": integer, | |||
| "target-ip": [ | "target-ip": [ | |||
| "string" | "string" | |||
| ], | ], | |||
| "target-port-range": [ | "target-port-range": [ | |||
| { | { | |||
| "lower-port": integer, | "lower-port": integer, | |||
| "upper-port": integer | "upper-port": integer | |||
| skipping to change at page 29, line 47 ¶ | skipping to change at page 30, line 49 ¶ | |||
| ], | ], | |||
| "lifetime": integer, | "lifetime": integer, | |||
| "attack-status": integer | "attack-status": integer | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 12: Efficacy Update | Figure 12: Efficacy Update | |||
| The 'attack-status' parameter is a mandatory attribute. The various | The 'attack-status' parameter is a mandatory attribute when doing a | |||
| possible values contained in the 'attack-status' parameter are | efficacy update. The various possible values contained in the | |||
| described below: | 'attack-status' parameter are described below: | |||
| /--------------------+------------------------------------------------------\ | /--------------------+------------------------------------------------------\ | |||
| | Parameter value | Description | | | Parameter value | Description | | |||
| +--------------------+------------------------------------------------------+ | +--------------------+------------------------------------------------------+ | |||
| | 1 | DOTS client determines that it is still under attack.| | | 1 | DOTS client determines that it is still under attack.| | |||
| +--------------------+------------------------------------------------------+ | +--------------------+------------------------------------------------------+ | |||
| | 2 | DOTS client determines that the attack is | | | 2 | DOTS client determines that the attack is | | |||
| | | successfully mitigated | | | | successfully mitigated | | |||
| | | (e.g., attack traffic is not seen). | | | | (e.g., attack traffic is not seen). | | |||
| \--------------------+------------------------------------------------------/ | \--------------------+------------------------------------------------------/ | |||
| skipping to change at page 30, line 28 ¶ | skipping to change at page 31, line 28 ¶ | |||
| 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. | |||
| 5.4. DOTS Signal Channel Session Configuration | 5.4. 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 (Ping/ | a. Heartbeat interval: DOTS agents regularly send heartbeats (CoAP | |||
| Pong) to each other after mutual authentication in order to keep | Ping/Pong) to each other after mutual authentication in order to | |||
| the DOTS signal channel open, heartbeat messages are exchanged | keep the DOTS signal channel open, heartbeat messages are | |||
| between the DOTS agents every heartbeat-interval seconds to | exchanged between the DOTS agents every heartbeat-interval | |||
| detect the current status of the DOTS signal channel session. | seconds to detect the current status of the DOTS signal channel | |||
| session. | ||||
| b. Missing heartbeats allowed: This variable indicates the maximum | b. Missing heartbeats allowed: This variable indicates the maximum | |||
| 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. | |||
| skipping to change at page 31, line 42 ¶ | skipping to change at page 32, line 43 ¶ | |||
| configuration parameters for the server. | configuration parameters for the server. | |||
| Header: GET (Code=0.01) | Header: GET (Code=0.01) | |||
| Uri-Host: "host" | Uri-Host: "host" | |||
| Uri-Path: "version" | Uri-Path: "version" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "config" | Uri-Path: "config" | |||
| Figure 13: GET to retrieve configuration | Figure 13: GET to retrieve configuration | |||
| The DOTS server in the 2.05 (Content) response conveys the minimum | The DOTS server in the 2.05 (Content) response conveys the current, | |||
| 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, | |||
| }, | }, | |||
| "missing-hb-allowed": { | "missing-hb-allowed": { | |||
| "CurrentValue": integer, | "CurrentValue": integer, | |||
| skipping to change at page 32, line 27 ¶ | skipping to change at page 33, line 27 ¶ | |||
| "max-retransmit": { | "max-retransmit": { | |||
| "CurrentValue": integer, | "CurrentValue": integer, | |||
| "MinValue": integer, | "MinValue": integer, | |||
| "MaxValue" : integer, | "MaxValue" : integer, | |||
| }, | }, | |||
| "ack-timeout": { | "ack-timeout": { | |||
| "CurrentValue": integer, | "CurrentValue": integer, | |||
| "MinValue": integer, | "MinValue": integer, | |||
| "MaxValue" : integer, | "MaxValue" : integer, | |||
| }, | }, | |||
| "ack-random-factor": { | "ack-random-factor": { | |||
| "CurrentValue": number, | "CurrentValue": number, | |||
| "MinValue": number, | "MinValue": number, | |||
| "MaxValue" : number, | "MaxValue" : number, | |||
| }, | ||||
| "trigger-mitigation": { | ||||
| "CurrentValue": boolean, | ||||
| } | } | |||
| } | } | |||
| Figure 14: GET response body | Figure 14: GET response body | |||
| Figure 15 shows an example of acceptable and current configuration | Figure 15 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" | |||
| skipping to change at page 33, line 31 ¶ | skipping to change at page 34, line 31 ¶ | |||
| }, | }, | |||
| "ack-timeout": { | "ack-timeout": { | |||
| "CurrentValue": 2, | "CurrentValue": 2, | |||
| "MinValue": 1, | "MinValue": 1, | |||
| "MaxValue" : 30, | "MaxValue" : 30, | |||
| }, | }, | |||
| "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": { | ||||
| "CurrentValue": true, | ||||
| } | } | |||
| } | } | |||
| Figure 15: configuration response body | Figure 15: configuration response body | |||
| 5.4.2. Convey DOTS Signal Channel Session Configuration | 5.4.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 | |||
| signaling channel (e.g., heartbeat interval, maximum | signaling channel (e.g., heartbeat interval, maximum | |||
| retransmissions). Message transmission parameters for CoAP are | retransmissions). Message transmission parameters for CoAP are | |||
| skipping to change at page 33, line 50 ¶ | skipping to change at page 35, line 4 ¶ | |||
| retransmissions). Message transmission parameters for CoAP are | retransmissions). Message transmission parameters for CoAP are | |||
| defined in Section 4.8 of [RFC7252]. The RECOMMENDED values of | defined in Section 4.8 of [RFC7252]. The RECOMMENDED values of | |||
| transmission parameter values are ack_timeout (2 seconds), max- | transmission parameter values are ack_timeout (2 seconds), max- | |||
| retransmit (3), ack-random-factor (1.5). In addition to those | retransmit (3), ack-random-factor (1.5). In addition to those | |||
| parameters, the RECOMMENDED specific DOTS transmission parameter | parameters, the RECOMMENDED specific DOTS transmission parameter | |||
| values are heartbeat-interval (30 seconds) and missing-hb-allowed | values are heartbeat-interval (30 seconds) and missing-hb-allowed | |||
| (5). | (5). | |||
| Note: heartbeat-interval should be tweaked to also assist DOTS | Note: heartbeat-interval should be tweaked to also assist DOTS | |||
| messages for NAT traversal (SIG-010 of | messages for NAT traversal (SIG-010 of | |||
| [I-D.ietf-dots-requirements]). According to [RFC8085], keepalive | [I-D.ietf-dots-requirements]). According to [RFC8085], keepalive | |||
| messages must not be sent more frequently than once every 15 | messages must not be sent more frequently than once every 15 | |||
| seconds and should use longer intervals when possible. | seconds and should use longer intervals when possible. | |||
| Furthermore, [RFC4787] recommends NATs to use a state timeout of 2 | Furthermore, [RFC4787] recommends NATs to use a state timeout of 2 | |||
| minutes or longer, but experience shows that sending packets every | minutes or longer, but experience shows that sending packets every | |||
| 15 to 30 seconds is necessary to prevent the majority of | 15 to 30 seconds is necessary to prevent the majority of | |||
| middleboxes from losing state for UDP flows. From that | middleboxes from losing state for UDP flows. From that | |||
| 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. | |||
| For the recommended transmission parameters, if the DOTS agent does | When a confirmable "CoAP ping" is sent, and if there is no response, | |||
| not receive any response from the peer DOTS agent for five (missing- | the "CoAP ping" will get retransmitted max-retransmit number of times | |||
| hb-allowed) consecutive "CoAP ping" confirmable messages, then it | by the CoAP layer using an initial timeout set to a random duration | |||
| concludes that the DOTS signal channel session is disconnected, and a | between ack_timeout and (ack-timeout*ack-random-factor) and | |||
| "CoAP ping" confirmable message is retransmitted three (max- | exponential back-off between retransmissions. By choosing the | |||
| retransmit) times using an initial timeout set to a random duration | recommended transmission parameters, the "CoAP ping" will timeout | |||
| between 2 (ack_timeout) and 3 seconds (ack-timeout*ack-random-factor) | after 45 seconds. If the DOTS agent does not receive any response | |||
| and exponential back-off between retransmissions. | from the peer DOTS agent for missing-hb-allowed number of consecutive | |||
| "CoAP ping" confirmable messages, then it concludes that the DOTS | ||||
| signal channel session is disconnected. A DOTS client MUST NOT | ||||
| transmit a "CoAP ping" while waiting for the previous "CoAP ping" | ||||
| response from 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 signaling channel session configuration is applicable to a single | The signaling 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 36, line 7 ¶ | skipping to change at page 37, line 7 ¶ | |||
| 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 mtigation 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]. If | |||
| the DOTS client ceases to respond to heartbeat messages, then the | the DOTS client ceases to respond to heartbeat messages, then the | |||
| DOTS server can detect that the DOTS session is lost. The default | DOTS server can detect that the DOTS session is lost. The default | |||
| value of the parameter is 'true'. This is an optional attribute. | value of the parameter is 'true'. This is an optional attribute. | |||
| In the PUT request at least one of the attributes heartbeat-interval, | In the PUT request at least one of the attributes heartbeat-interval, | |||
| missing-hb-allowed, max-retransmit, ack-timeout, ack-random-factor, | missing-hb-allowed, max-retransmit, ack-timeout, ack-random-factor, | |||
| and trigger-mitigation MUST be present. The PUT request with higher | and trigger-mitigation MUST be present. The PUT request with higher | |||
| numeric session-id value over-rides the DOTS signal channel session | numeric session-id value over-rides the DOTS signal channel session | |||
| configuration data installed by a PUT request with a lower numeric | configuration data installed by a PUT request with a lower numeric | |||
| skipping to change at page 37, line 18 ¶ | skipping to change at page 38, line 18 ¶ | |||
| 4.00 (Bad Request) is returned in the response. | 4.00 (Bad Request) is returned in the response. | |||
| o If the request contains one or more invalid or unknown parameters, | o If the request contains one or more invalid or unknown parameters, | |||
| then 4.02 (Invalid query) code is returned in the response. | 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 minumum attribute values acceptable | should request the maximum and minimum attribute values acceptable | |||
| to the DOTS server (Section 5.4.1). The DOTS client may re-try | to the DOTS server (Section 5.4.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. | |||
| 5.4.3. Delete DOTS Signal Channel Session Configuration | 5.4.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 18). | |||
| Header: DELETE (Code=0.04) | Header: DELETE (Code=0.04) | |||
| Uri-Host: "host" | Uri-Host: "host" | |||
| Uri-Path: "version" | Uri-Path: "version" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "config" | Uri-Path: "config" | |||
| Content-Format: "application/cbor" | Content-Format: "application/cbor" | |||
| { | ||||
| "signal-config": { | ||||
| "session-id": integer | ||||
| } | ||||
| } | ||||
| Figure 18: DELETE configuration | Figure 18: DELETE configuration | |||
| If the DOTS server does not find the session-id parameter value | The DOTS server resets the DOTS signal channel session configuration | |||
| conveyed in the DELETE request in its configuration data, then it | back to the default values and acknowledges a DOTS client's request | |||
| responds with a 4.04 (Not Found) error response code. The DOTS | to remove the DOTS signal channel session configuration using 2.02 | |||
| server successfully acknowledges a DOTS client's request to remove | (Deleted) response code. | |||
| the DOTS signal channel session configuration using 2.02 (Deleted) | ||||
| response code. | ||||
| 5.4.4. Retrieving DOTS Signal Channel Session Configuration | ||||
| A GET request is used to retrieve the installed DOTS signal channel | ||||
| session configuration data from a DOTS server. Figure 19 shows how | ||||
| to retrieve the DOTS signal channel session configuration data. | ||||
| Header: GET (Code=0.01) | ||||
| Uri-Host: "host" | ||||
| Uri-Path: "version" | ||||
| Uri-Path: "dots-signal" | ||||
| Uri-Path: "config" | ||||
| Content-Format: "application/cbor" | ||||
| { | ||||
| "signal-config": { | ||||
| "session-id": integer | ||||
| } | ||||
| } | ||||
| Figure 19: GET to retrieve configuration | ||||
| 5.5. Redirected Signaling | 5.5. Redirected Signaling | |||
| Redirected Signaling is discussed in detail in Section 3.2.2 of | Redirected Signaling is discussed in detail in Section 3.2.2 of | |||
| [I-D.ietf-dots-architecture]. If the DOTS server wants to redirect | [I-D.ietf-dots-architecture]. If the DOTS server wants to redirect | |||
| the DOTS client to an alternative DOTS server for a signaling session | the DOTS client to an alternative DOTS server for a signaling session | |||
| then the response code 3.00 (alternate server) will be returned in | then the response code 3.00 (alternate server) will be returned in | |||
| the response to the client. The DOTS server can return the error | the response to the client. The DOTS server can return the error | |||
| response code 3.00 in response to a PUT request from the DOTS client | response code 3.00 in response to a PUT request from the DOTS client | |||
| or convey the error response code 3.00 in a unidirectional | or convey the error response code 3.00 in a unidirectional | |||
| skipping to change at page 38, line 50 ¶ | skipping to change at page 39, line 19 ¶ | |||
| { | { | |||
| "alt-server": "string", | "alt-server": "string", | |||
| "alt-server-record": [ | "alt-server-record": [ | |||
| { | { | |||
| "addr": "string", | "addr": "string", | |||
| "ttl" : integer, | "ttl" : integer, | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| Figure 20: Error response body | Figure 19: 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 21 shows a 3.00 response example to convey the DOTS alternate | Figure 20 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 www.example-alt.com, 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": "www.example-alt.com", | "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 21: Example of error response body | Figure 20: 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 40, line 21 ¶ | skipping to change at page 40, line 39 ¶ | |||
| [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. | |||
| A DOTS client MUST NOT transmit a heartbeat message while a previous | ||||
| heartbeat message has not been responded by the remote DOTS server. | ||||
| 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 follows and are given an integer key to save | mapped to CBOR types as follows and are given an integer key to save | |||
| space. The recipient of the payload MAY reject the information if it | space. The recipient of the payload MAY reject the information if it | |||
| is not suitably mapped. | is not suitably mapped. | |||
| /--------------------+------------------------+--------------------------\ | /--------------------+------------------------+--------------------------\ | |||
| | Parameter name | CBOR key | CBOR major type of value | | | Parameter name | CBOR key | CBOR major type of value | | |||
| +--------------------+------------------------+--------------------------+ | +--------------------+------------------------+--------------------------+ | |||
| skipping to change at page 41, line 42 ¶ | skipping to change at page 41, line 42 ¶ | |||
| | pps-dropped | 25 | 0 | | | pps-dropped | 25 | 0 | | |||
| | session-id | 26 | 0 | | | session-id | 26 | 0 | | |||
| | trigger-mitigation | 27 | 7 (simple types) | | | trigger-mitigation | 27 | 7 (simple types) | | |||
| | missing-hb-allowed | 28 | 0 | | | missing-hb-allowed | 28 | 0 | | |||
| | CurrentValue | 29 | 0 | | | CurrentValue | 29 | 0 | | |||
| | mitigation-start | 30 | 7 (floating-point) | | | mitigation-start | 30 | 7 (floating-point) | | |||
| | target-prefix | 31 | 4 (array) | | | target-prefix | 31 | 4 (array) | | |||
| | client-identifier | 32 | 2 (byte string) | | | client-identifier | 32 | 2 (byte string) | | |||
| \--------------------+------------------------+--------------------------/ | \--------------------+------------------------+--------------------------/ | |||
| Figure 22: CBOR mappings used in DOTS signal channel message | Figure 21: CBOR mappings used in DOTS signal channel message | |||
| 7. (D)TLS Protocol Profile and Performance considerations | 7. (D)TLS Protocol Profile and Performance considerations | |||
| This section defines the (D)TLS protocol profile of DOTS signal | This section defines the (D)TLS protocol profile of DOTS signal | |||
| channel over (D)TLS and DOTS data channel over TLS. | channel over (D)TLS and DOTS data channel over TLS. | |||
| There are known attacks on (D)TLS, such as machine-in-the-middle and | There are known attacks on (D)TLS, such as machine-in-the-middle and | |||
| protocol downgrade. These are general attacks on (D)TLS and not | protocol downgrade. These are general attacks on (D)TLS and not | |||
| specific to DOTS over (D)TLS; please refer to the (D)TLS RFCs for | specific to DOTS over (D)TLS; please refer to the (D)TLS RFCs for | |||
| discussion of these security issues. DOTS agents MUST adhere to the | discussion of these security issues. DOTS agents MUST adhere to the | |||
| skipping to change at page 43, line 42 ¶ | skipping to change at page 43, line 42 ¶ | |||
| 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 23. | exchange is shown in Figure 22. | |||
| 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 23: TLS 1.3 handshake with 0-RTT | Figure 22: TLS 1.3 handshake with 0-RTT | |||
| 9. Mutual Authentication of DOTS Agents & Authorization of DOTS Clients | 9. 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. | |||
| +-------------------------------------------------+ | +-------------------------------------------------+ | |||
| | example.com domain +---------+ | | | example.com domain +---------+ | | |||
| | | AAA | | | | | AAA | | | |||
| | +---------------+ | Server | | | | +---------------+ | Server | | | |||
| | | Application | +------+--+ | | | | Application | +------+--+ | | |||
| | | server + ^ | | | server + ^ | |||
| | | (DOTS client) |<-----------------+ | | | | | (DOTS client) |<-----------------+ | | | |||
| | +---------------+ + | | example.net domain | | +---------------+ | | | example.net domain | |||
| | V V | | | V V | | |||
| | +-------------+ | +---------------+ | | +-------------+ | +---------------+ | |||
| | +--------------+ | | | | | | | +--------------+ | | | | | | |||
| | | Guest +<-----x----->+ +<---------------->+ DOTS | | | | Guest +<-----x----->+ +<---------------->+ DOTS | | |||
| | | (DOTS client)| | DOTS | | | Server | | | | (DOTS client)| | DOTS | | | Server | | |||
| | +--------------+ | Gateway | | | | | | +--------------+ | Gateway | | | | | |||
| | +----+--------+ | +---------------+ | | +----+--------+ | +---------------+ | |||
| | ^ | | | ^ | | |||
| | | | | | | | | |||
| | +----------------+ | | | | +----------------+ | | | |||
| | | DDOS detector | | | | | | DDOS detector | | | | |||
| | | (DOTS client) +<--------------+ | | | | (DOTS client) +<--------------+ | | |||
| | +----------------+ | | | +----------------+ | | |||
| | | | | | | |||
| +-------------------------------------------------+ | +-------------------------------------------------+ | |||
| Figure 24: Example of Authentication and Authorization of DOTS Agents | Figure 23: Example of Authentication and Authorization of DOTS Agents | |||
| In the example depicted in Figure 24, the DOTS gateway and DOTS | In the example depicted in Figure 23, 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 24, the DOTS server only allows the DOTS gateway | reference to Figure 23, 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 | 10. IANA Considerations | |||
| This specification registers new CoAP response code, new parameters | This specification registers new CoAP response code, new parameters | |||
| for DOTS signal channel and establishes registries for mappings to | for DOTS signal channel and establishes registries for mappings to | |||
| CBOR. | CBOR. | |||
| 10.1. CoAP Response Code | 10.1. CoAP Response Code | |||
| The following entry is added to the "CoAP Response Codes" sub- | The following entry is added to the "CoAP Response Codes" sub- | |||
| registry: | registry: | |||
| +------+------------------------------+-----------+ | +------+------------------------------+-----------+ | |||
| | Code | Description | Reference | | | Code | Description | Reference | | |||
| +------+------------------------------+-----------+ | +------+------------------------------+-----------+ | |||
| | 3.00 | Alternate server | [RFCXXXX] | | | 3.00 | Alternate server | [RFCXXXX] | | |||
| +------+------------------------------+-----------+ | +------+------------------------------+-----------+ | |||
| Figure 25: CoAP Response Code | Figure 24: CoAP Response Code | |||
| [Note to RFC Editor: Please replace XXXX with the RFC number of this | [Note to RFC Editor: Please replace XXXX with the RFC number of this | |||
| specification.] | specification.] | |||
| 10.2. DOTS signal channel CBOR Mappings Registry | 10.2. DOTS signal channel CBOR Mappings Registry | |||
| A new registry will be requested from IANA, entitled "DOTS signal | A new registry will be requested from IANA, entitled "DOTS signal | |||
| channel CBOR Mappings Registry". The registry is to be created as | channel CBOR Mappings Registry". The registry is to be created as | |||
| Expert Review Required. | Expert Review Required. | |||
| skipping to change at page 54, line 49 ¶ | skipping to change at page 54, line 49 ¶ | |||
| 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 | |||
| 2017. | 2017. | |||
| [I-D.ietf-dots-architecture] | [I-D.ietf-dots-architecture] | |||
| Mortensen, A., Andreasen, F., Reddy, T., | Mortensen, A., Andreasen, F., Reddy, T., | |||
| christopher_gray3@cable.comcast.com, c., Compton, R., and | christopher_gray3@cable.comcast.com, c., Compton, R., and | |||
| N. Teague, "Distributed-Denial-of-Service Open Threat | N. Teague, "Distributed-Denial-of-Service Open Threat | |||
| Signaling (DOTS) Architecture", draft-ietf-dots- | Signaling (DOTS) Architecture", draft-ietf-dots- | |||
| architecture-04 (work in progress), July 2017. | architecture-05 (work in progress), October 2017. | |||
| [I-D.ietf-dots-data-channel] | [I-D.ietf-dots-data-channel] | |||
| Reddy, T., Boucadair, M., Nishizuka, K., Xia, L., Patil, | Reddy, T., Boucadair, M., Nishizuka, K., Xia, L., Patil, | |||
| P., Mortensen, A., and N. Teague, "Distributed Denial-of- | P., Mortensen, A., and N. Teague, "Distributed Denial-of- | |||
| Service Open Threat Signaling (DOTS) Data Channel", draft- | Service Open Threat Signaling (DOTS) Data Channel", draft- | |||
| ietf-dots-data-channel-04 (work in progress), October | ietf-dots-data-channel-05 (work in progress), October | |||
| 2017. | 2017. | |||
| [I-D.ietf-dots-requirements] | [I-D.ietf-dots-requirements] | |||
| Mortensen, A., Moskowitz, R., and T. Reddy, "Distributed | Mortensen, A., Moskowitz, R., and T. Reddy, "Distributed | |||
| Denial of Service (DDoS) Open Threat Signaling | Denial of Service (DDoS) Open Threat Signaling | |||
| Requirements", draft-ietf-dots-requirements-06 (work in | Requirements", draft-ietf-dots-requirements-06 (work in | |||
| progress), July 2017. | progress), July 2017. | |||
| [I-D.ietf-dots-use-cases] | [I-D.ietf-dots-use-cases] | |||
| 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-07 (work | Open Threat Signaling", draft-ietf-dots-use-cases-08 (work | |||
| in progress), July 2017. | in progress), October 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] | [I-D.rescorla-tls-dtls13] | |||
| Rescorla, E., Tschofenig, H., and N. Modadugu, "The | Rescorla, E., Tschofenig, H., and N. Modadugu, "The | |||
| Datagram Transport Layer Security (DTLS) Protocol Version | Datagram Transport Layer Security (DTLS) Protocol Version | |||
| 1.3", draft-rescorla-tls-dtls13-01 (work in progress), | 1.3", draft-rescorla-tls-dtls13-01 (work in progress), | |||
| March 2017. | 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>. | |||
| [RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram | ||||
| Congestion Control Protocol (DCCP)", RFC 4340, | ||||
| DOI 10.17487/RFC4340, March 2006, | ||||
| <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>. | |||
| [RFC4732] Handley, M., Ed., Rescorla, E., Ed., and IAB, "Internet | [RFC4732] Handley, M., Ed., Rescorla, E., Ed., and IAB, "Internet | |||
| Denial-of-Service Considerations", RFC 4732, | Denial-of-Service Considerations", RFC 4732, | |||
| DOI 10.17487/RFC4732, December 2006, | DOI 10.17487/RFC4732, December 2006, | |||
| <https://www.rfc-editor.org/info/rfc4732>. | <https://www.rfc-editor.org/info/rfc4732>. | |||
| [RFC4787] Audet, F., Ed. and C. Jennings, "Network Address | [RFC4787] Audet, F., Ed. and C. Jennings, "Network Address | |||
| Translation (NAT) Behavioral Requirements for Unicast | Translation (NAT) Behavioral Requirements for Unicast | |||
| UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January | UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January | |||
| 2007, <https://www.rfc-editor.org/info/rfc4787>. | 2007, <https://www.rfc-editor.org/info/rfc4787>. | |||
| [RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol", | ||||
| RFC 4960, DOI 10.17487/RFC4960, September 2007, | ||||
| <https://www.rfc-editor.org/info/rfc4960>. | ||||
| [RFC4987] Eddy, W., "TCP SYN Flooding Attacks and Common | [RFC4987] Eddy, W., "TCP SYN Flooding Attacks and Common | |||
| Mitigations", RFC 4987, DOI 10.17487/RFC4987, August 2007, | Mitigations", RFC 4987, DOI 10.17487/RFC4987, August 2007, | |||
| <https://www.rfc-editor.org/info/rfc4987>. | <https://www.rfc-editor.org/info/rfc4987>. | |||
| [RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, | [RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, | |||
| "Transport Layer Security (TLS) Session Resumption without | "Transport Layer Security (TLS) Session Resumption without | |||
| Server-Side State", RFC 5077, DOI 10.17487/RFC5077, | Server-Side State", RFC 5077, DOI 10.17487/RFC5077, | |||
| January 2008, <https://www.rfc-editor.org/info/rfc5077>. | January 2008, <https://www.rfc-editor.org/info/rfc5077>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| skipping to change at page 56, line 33 ¶ | skipping to change at page 56, line 42 ¶ | |||
| [RFC6555] Wing, D. and A. Yourtchenko, "Happy Eyeballs: Success with | [RFC6555] Wing, D. and A. Yourtchenko, "Happy Eyeballs: Success with | |||
| Dual-Stack Hosts", RFC 6555, DOI 10.17487/RFC6555, April | Dual-Stack Hosts", RFC 6555, DOI 10.17487/RFC6555, April | |||
| 2012, <https://www.rfc-editor.org/info/rfc6555>. | 2012, <https://www.rfc-editor.org/info/rfc6555>. | |||
| [RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, | [RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, | |||
| "Default Address Selection for Internet Protocol Version 6 | "Default Address Selection for Internet Protocol Version 6 | |||
| (IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012, | (IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012, | |||
| <https://www.rfc-editor.org/info/rfc6724>. | <https://www.rfc-editor.org/info/rfc6724>. | |||
| [RFC7030] Pritikin, M., Ed., Yee, P., Ed., and D. Harkins, Ed., | ||||
| "Enrollment over Secure Transport", RFC 7030, | ||||
| DOI 10.17487/RFC7030, October 2013, | ||||
| <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>. | |||
| [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 | |||
| End of changes. 72 change blocks. | ||||
| 175 lines changed or deleted | 213 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||