| < draft-ietf-dots-signal-channel-04.txt | draft-ietf-dots-signal-channel-05.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 5, 2018 Orange | Expires: April 15, 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 2, 2017 | October 12, 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-04 | draft-ietf-dots-signal-channel-05 | |||
| 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 5, 2018. | This Internet-Draft will expire on April 15, 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 26 ¶ | skipping to change at page 2, line 26 ¶ | |||
| 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 . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 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 . . 10 | 5.2.3. Session Configuration YANG Module Tree Structure . . 11 | |||
| 5.2.4. Session Configuration YANG Module . . . . . . . . . . 11 | 5.2.4. Session Configuration YANG Module . . . . . . . . . . 12 | |||
| 5.3. Mitigation Request . . . . . . . . . . . . . . . . . . . 12 | 5.3. Mitigation Request . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.3.1. Requesting mitigation . . . . . . . . . . . . . . . . 13 | 5.3.1. Requesting mitigation . . . . . . . . . . . . . . . . 15 | |||
| 5.3.2. Withdraw a DOTS Signal . . . . . . . . . . . . . . . 19 | 5.3.2. Withdraw a DOTS Signal . . . . . . . . . . . . . . . 22 | |||
| 5.3.3. Retrieving a DOTS Signal . . . . . . . . . . . . . . 20 | 5.3.3. Retrieving a DOTS Signal . . . . . . . . . . . . . . 23 | |||
| 5.3.4. Efficacy Update from DOTS Client . . . . . . . . . . 25 | 5.3.4. Efficacy Update from DOTS Client . . . . . . . . . . 28 | |||
| 5.4. DOTS Signal Channel Session Configuration . . . . . . . . 27 | 5.4. DOTS Signal Channel Session Configuration . . . . . . . . 30 | |||
| 5.4.1. Discover Configuration Parameters . . . . . . . . . . 28 | 5.4.1. Discover Configuration Parameters . . . . . . . . . . 31 | |||
| 5.4.2. Convey DOTS Signal Channel Session Configuration . . 30 | 5.4.2. Convey DOTS Signal Channel Session Configuration . . 33 | |||
| 5.4.3. Delete DOTS Signal Channel Session Configuration . . 33 | 5.4.3. Delete DOTS Signal Channel Session Configuration . . 37 | |||
| 5.4.4. Retrieving DOTS Signal Channel Session Configuration 34 | 5.4.4. Retrieving DOTS Signal Channel Session Configuration 38 | |||
| 5.5. Redirected Signaling . . . . . . . . . . . . . . . . . . 34 | 5.5. Redirected Signaling . . . . . . . . . . . . . . . . . . 38 | |||
| 5.6. Heartbeat Mechanism . . . . . . . . . . . . . . . . . . . 36 | 5.6. Heartbeat Mechanism . . . . . . . . . . . . . . . . . . . 39 | |||
| 6. Mapping parameters to CBOR . . . . . . . . . . . . . . . . . 36 | 6. Mapping parameters to CBOR . . . . . . . . . . . . . . . . . 40 | |||
| 7. (D)TLS Protocol Profile and Performance considerations . . . 37 | 7. (D)TLS Protocol Profile and Performance considerations . . . 41 | |||
| 7.1. MTU and Fragmentation Issues . . . . . . . . . . . . . . 38 | 7.1. MTU and Fragmentation Issues . . . . . . . . . . . . . . 42 | |||
| 8. (D)TLS 1.3 considerations . . . . . . . . . . . . . . . . . . 39 | 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 10.1. CoAP Response Code . . . . . . . . . . . . . . . . . . . 42 | 10.1. CoAP Response Code . . . . . . . . . . . . . . . . . . . 46 | |||
| 10.2. DOTS signal channel CBOR Mappings Registry . . . . . . . 42 | 10.2. DOTS signal channel CBOR Mappings Registry . . . . . . . 46 | |||
| 10.2.1. Registration Template . . . . . . . . . . . . . . . 42 | 10.2.1. Registration Template . . . . . . . . . . . . . . . 46 | |||
| 10.2.2. Initial Registry Contents . . . . . . . . . . . . . 43 | 10.2.2. Initial Registry Contents . . . . . . . . . . . . . 47 | |||
| 11. Implementation Status . . . . . . . . . . . . . . . . . . . . 46 | 11. Implementation Status . . . . . . . . . . . . . . . . . . . . 51 | |||
| 11.1. nttdots . . . . . . . . . . . . . . . . . . . . . . . . 47 | 11.1. nttdots . . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 12. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | 12. Security Considerations . . . . . . . . . . . . . . . . . . . 52 | |||
| 13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 48 | 13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 | 14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 | 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 15.1. Normative References . . . . . . . . . . . . . . . . . . 49 | 15.1. Normative References . . . . . . . . . . . . . . . . . . 53 | |||
| 15.2. Informative References . . . . . . . . . . . . . . . . . 50 | 15.2. Informative References . . . . . . . . . . . . . . . . . 54 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 | 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. | |||
| skipping to change at page 7, line 20 ¶ | skipping to change at page 7, line 20 ¶ | |||
| 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. | |||
| The DOTS signal channel is layered on existing standards (Figure 4). | The DOTS signal channel is layered on existing standards (Figure 4). | |||
| TBD: The default port number for DOTS signal channel is 5684 | TBD: The default port number for DOTS signal channel is 5684 | |||
| (Section 12.7 of [RFC7252] and Section 10.4 of | (Section 12.7 of [RFC7252] and Section 10.4 of | |||
| [I-D.ietf-core-coap-tcp-tls]), for both UDP and TCP. | [I-D.ietf-core-coap-tcp-tls]), for both UDP and TCP. | |||
| +--------------+ | +--------------+ | |||
| | DOTS | | | DOTS | | |||
| +--------------+ | +--------------+ | |||
| | CoAP | | | CoAP | | |||
| +--------------+ | +--------------+ | |||
| | TLS | DTLS | | | TLS | DTLS | | |||
| +--------------+ | +--------------+ | |||
| | TCP | UDP | | | TCP | UDP | | |||
| +--------------+ | +--------------+ | |||
| skipping to change at page 8, line 29 ¶ | skipping to change at page 8, line 29 ¶ | |||
| This document defines a YANG [RFC6020] module for mitigation scope | This document defines a YANG [RFC6020] module for mitigation scope | |||
| and DOTS signal channel session configuration data. | and DOTS signal channel session configuration data. | |||
| 5.2.1. Mitigation Request YANG Module Tree Structure | 5.2.1. Mitigation Request YANG Module Tree Structure | |||
| This document defines the YANG module "ietf-dots-signal", which has | This document defines the YANG module "ietf-dots-signal", which has | |||
| the following tree structure: | the following tree structure: | |||
| module: ietf-dots-signal | module: ietf-dots-signal | |||
| +--rw mitigation-scope | +--rw mitigation-scope | |||
| +--rw client-identifier* binary | ||||
| +--rw scope* [mitigation-id] | +--rw scope* [mitigation-id] | |||
| +--rw mitigation-id int32 | +--rw mitigation-id int32 | |||
| +--rw target-ip* inet:ip-address | +--rw target-ip* inet:ip-address | |||
| +--rw target-prefix* inet:ip-prefix | +--rw target-prefix* inet:ip-prefix | |||
| +--rw target-port-range* [lower-port upper-port] | +--rw target-port-range* [lower-port upper-port] | |||
| | +--rw lower-port inet:port-number | | +--rw lower-port inet:port-number | |||
| | +--rw upper-port inet:port-number | | +--rw upper-port inet:port-number | |||
| +--rw target-protocol* uint8 | +--rw target-protocol* uint8 | |||
| +--rw fqdn* inet:domain-name | +--rw fqdn* inet:domain-name | |||
| +--rw uri* inet:uri | +--rw uri* inet:uri | |||
| +--rw alias-name* string | +--rw alias-name* string | |||
| +--rw lifetime? int32 | +--rw lifetime? int32 | |||
| 5.2.2. Mitigation Request YANG Module | 5.2.2. Mitigation Request YANG Module | |||
| <CODE BEGINS> file "ietf-dots-signal@2017-08-03.yang" | <CODE BEGINS> file "ietf-dots-signal@2017-10-04.yang" | |||
| module ietf-dots-signal { | module ietf-dots-signal { | |||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-dots-signal"; | namespace "urn:ietf:params:xml:ns:yang:ietf-dots-signal"; | |||
| prefix "signal"; | prefix "signal"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| } | } | |||
| organization "McAfee, Inc."; | organization "IETF DOTS Working Group"; | |||
| contact "Konda, Tirumaleswar Reddy <TirumaleswarReddy_Konda@McAfee.com>"; | ||||
| contact | ||||
| "Konda, Tirumaleswar Reddy <TirumaleswarReddy_Konda@McAfee.com> | ||||
| Mohamed Boucadair <mohamed.boucadair@orange.com> | ||||
| Prashanth Patil <praspati@cisco.com> | ||||
| Andrew Mortensen <amortensen@arbor.net> | ||||
| Nik Teague <nteague@verisign.com>"; | ||||
| description | description | |||
| "This module contains YANG definition for DOTS | "This module contains YANG definition for DOTS | |||
| signal sent by the DOTS client to the DOTS server."; | signal sent by the DOTS client to the DOTS server. | |||
| Copyright (c) 2017 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject | ||||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; see | ||||
| the RFC itself for full legal notices."; | ||||
| revision 2017-10-04 { | ||||
| description | ||||
| "Add units and fix some nits."; | ||||
| reference | ||||
| "-05"; | ||||
| } | ||||
| revision 2017-08-03 { | revision 2017-08-03 { | |||
| reference | reference | |||
| "https://tools.ietf.org/html/draft-reddy-dots-signal-channel"; | "https://tools.ietf.org/html/draft-reddy-dots-signal-channel"; | |||
| } | } | |||
| container mitigation-scope { | container mitigation-scope { | |||
| description | description | |||
| "Top level container for a mitigation request."; | "Top level container for a mitigation request."; | |||
| leaf-list client-identifier { | ||||
| type binary; | ||||
| description | ||||
| "A client identifier conveyed by a DOTS gateway | ||||
| to a remote DOTS server."; | ||||
| } | ||||
| list scope { | list scope { | |||
| key mitigation-id; | key mitigation-id; | |||
| description "Identifier for the mitigation request."; | description "Identifier for the mitigation request."; | |||
| leaf mitigation-id { | leaf mitigation-id { | |||
| type int32; | type int32; | |||
| description "Mitigation request identifier."; | description "Mitigation request identifier."; | |||
| } | } | |||
| leaf-list target-ip { | leaf-list target-ip { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "IPv4 or IPv6 address identifyting the target."; | "IPv4 or IPv6 address identifying the target."; | |||
| } | } | |||
| leaf-list target-prefix { | leaf-list target-prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "IPv4 or IPv6 prefix identifyting the target."; | "IPv4 or IPv6 prefix identifying the target."; | |||
| } | } | |||
| list target-port-range { | list target-port-range { | |||
| key "lower-port upper-port"; | key "lower-port upper-port"; | |||
| description "Port range. When only lower-port is present, | description "Port range. When only lower-port is present, | |||
| it represents a single port."; | it represents a single port."; | |||
| leaf lower-port { | leaf lower-port { | |||
| type inet:port-number; | type inet:port-number; | |||
| mandatory true; | mandatory true; | |||
| description "Lower port number."; | description "Lower port number."; | |||
| } | } | |||
| leaf upper-port { | leaf upper-port { | |||
| skipping to change at page 10, line 35 ¶ | skipping to change at page 11, line 26 ¶ | |||
| description "URI"; | description "URI"; | |||
| } | } | |||
| leaf-list alias-name { | leaf-list alias-name { | |||
| type string; | type string; | |||
| description "alias name"; | description "alias name"; | |||
| } | } | |||
| leaf lifetime { | leaf lifetime { | |||
| type int32; | type int32; | |||
| units "seconds"; | ||||
| default 3600; | ||||
| description | description | |||
| "Indicates the lifetime of the mitigation request."; | "Indicates the lifetime of the mitigation request."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 5.2.3. Session Configuration YANG Module Tree Structure | 5.2.3. Session Configuration YANG Module Tree Structure | |||
| skipping to change at page 11, line 17 ¶ | skipping to change at page 12, line 7 ¶ | |||
| +--rw session-id? int32 | +--rw session-id? int32 | |||
| +--rw heartbeat-interval? int16 | +--rw heartbeat-interval? int16 | |||
| +--rw missing-hb-allowed? int16 | +--rw missing-hb-allowed? int16 | |||
| +--rw max-retransmit? int16 | +--rw max-retransmit? int16 | |||
| +--rw ack-timeout? int16 | +--rw ack-timeout? int16 | |||
| +--rw ack-random-factor? decimal64 | +--rw ack-random-factor? decimal64 | |||
| +--rw trigger-mitigation? boolean | +--rw trigger-mitigation? boolean | |||
| 5.2.4. Session Configuration YANG Module | 5.2.4. Session Configuration YANG Module | |||
| <CODE BEGINS> file "ietf-dots-signal-config@2016-11-28.yang" | <CODE BEGINS> file "ietf-dots-signal-config@2017-10-04.yang" | |||
| module ietf-dots-signal-config { | module ietf-dots-signal-config { | |||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-dots-signal-config"; | namespace "urn:ietf:params:xml:ns:yang:ietf-dots-signal-config"; | |||
| prefix "config"; | prefix "config"; | |||
| organization "McAfee, Inc."; | organization "IETF DOTS Working Group"; | |||
| contact "Konda, Tirumaleswar Reddy <TirumaleswarReddy_Konda@McAfee.com>"; | ||||
| contact | ||||
| "Konda, Tirumaleswar Reddy <TirumaleswarReddy_Konda@McAfee.com> | ||||
| Mohamed Boucadair <mohamed.boucadair@orange.com> | ||||
| Prashanth Patil <praspati@cisco.com> | ||||
| Andrew Mortensen <amortensen@arbor.net> | ||||
| Nik Teague <nteague@verisign.com>"; | ||||
| description | description | |||
| "This module contains YANG definition for DOTS | "This module contains YANG definition for DOTS | |||
| signal channel session configuration."; | signal channel session configuration. | |||
| Copyright (c) 2017 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject | ||||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; see | ||||
| the RFC itself for full legal notices."; | ||||
| revision 2017-10-04 { | ||||
| description | ||||
| "Add units/defaults and fix some nits."; | ||||
| reference | ||||
| "-05"; | ||||
| } | ||||
| revision 2016-11-28 { | revision 2016-11-28 { | |||
| reference | reference | |||
| "https://tools.ietf.org/html/draft-reddy-dots-signal-channel"; | "https://tools.ietf.org/html/draft-reddy-dots-signal-channel"; | |||
| } | } | |||
| container signal-config { | container signal-config { | |||
| description "Top level container for DOTS signal channel session | description "Top level container for DOTS signal channel session | |||
| configuration."; | configuration."; | |||
| leaf session-id { | leaf session-id { | |||
| type int32; | type int32; | |||
| description "An identifier for the DOTS signal channel | description "An identifier for the DOTS signal channel | |||
| session configuration data."; | session configuration data."; | |||
| } | } | |||
| leaf heartbeat-interval { | leaf heartbeat-interval { | |||
| type int16; | type int16; | |||
| units "seconds"; | ||||
| default 30; | ||||
| description | description | |||
| "DOTS agents regularly send heartbeats to each other | "DOTS agents regularly send heartbeats to each other | |||
| after mutual authentication in order to keep | after mutual authentication in order to keep | |||
| the DOTS signal channel open."; | the DOTS signal channel open."; | |||
| } | } | |||
| leaf missing-hb-allowed { | leaf missing-hb-allowed { | |||
| type int16; | type int16; | |||
| default 5; | ||||
| description | description | |||
| "Maximum number of missing heartbeats allowed"; | "Maximum number of missing heartbeats allowed."; | |||
| } | } | |||
| leaf max-retransmit { | leaf max-retransmit { | |||
| type int16; | type int16; | |||
| default 3; | ||||
| description | description | |||
| "Maximum number of retransmissions of a | "Maximum number of retransmissions of a | |||
| Confirmable message."; | Confirmable message."; | |||
| } | } | |||
| leaf ack-timeout { | leaf ack-timeout { | |||
| type int16; | type int16; | |||
| units "seconds"; | ||||
| default 2; | ||||
| description | description | |||
| "Initial retransmission timeout value."; | "Initial retransmission timeout value."; | |||
| } | } | |||
| leaf ack-random-factor { | leaf ack-random-factor { | |||
| type decimal64 { | type decimal64 { | |||
| fraction-digits 2; | fraction-digits 2; | |||
| } | } | |||
| default 1.5; | ||||
| description | description | |||
| "Random factor used to influence the timing of | "Random factor used to influence the timing of | |||
| retransmissions"; | retransmissions"; | |||
| } | } | |||
| leaf trigger-mitigation { | leaf trigger-mitigation { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "If false, then mitigation is triggered | "If false, then mitigation is triggered | |||
| only when the DOTS server channel session is lost"; | only when the DOTS server channel session is lost"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 5.3. Mitigation Request | 5.3. Mitigation Request | |||
| The following methods are used to request or withdraw mitigation | The following methods are used to request or withdraw mitigation | |||
| requests: | requests: | |||
| PUT: DOTS clients use the PUT method to request mitigation | PUT: DOTS clients use the PUT method to request mitigation | |||
| (Section 5.3.1). During active mitigation, DOTS clients may use | (Section 5.3.1). During active mitigation, DOTS clients may use | |||
| PUT requests to convey mitigation efficacy updates to the DOTS | PUT requests to convey mitigation efficacy updates to the DOTS | |||
| server (Section 5.3.4). | server (Section 5.3.4). | |||
| DELETE: DOTS clients use the DELETE method to withdraw a request for | DELETE: DOTS clients use the DELETE method to withdraw a request for | |||
| mitigation from the DOTS server (Section 5.3.2). | mitigation from the DOTS server (Section 5.3.2). | |||
| GET: DOTS clients may use the GET method to subscribe to DOTS server | GET: DOTS clients may use the GET method to subscribe to DOTS server | |||
| status messages, or to retrieve the list of existing mitigations | status messages, or to retrieve the list of existing mitigations | |||
| (Section 5.3.3). | (Section 5.3.3). | |||
| Mitigation request and response messages are marked as Non- | Mitigation request and response messages are marked as Non- | |||
| confirmable messages. DOTS agents should follow the data | confirmable messages. DOTS agents SHOULD follow the data | |||
| transmission guidelines discussed in Section 3.1.3 of [RFC8085] and | transmission guidelines discussed in Section 3.1.3 of [RFC8085] and | |||
| control transmission behavior by not sending on average more than one | control transmission behavior by not sending on average more than one | |||
| UDP datagram per RTT to the peer DOTS agent. Requests marked by the | UDP datagram per RTT to the peer DOTS agent. | |||
| DOTS client as Non-confirmable messages are sent at regular intervals | ||||
| until a response is received from the DOTS server and if the DOTS | Requests marked by the DOTS client as Non-confirmable messages are | |||
| client cannot maintain a RTT estimate then it SHOULD NOT send more | sent at regular intervals until a response is received from the DOTS | |||
| than one Non-confirmable request every 3 seconds, and SHOULD use an | server and if the DOTS client cannot maintain a RTT estimate then it | |||
| even less aggressive rate when possible (case 2 in Section 3.1.3 of | SHOULD NOT send more than one Non-confirmable request every 3 | |||
| [RFC8085]). | seconds, and SHOULD use an even less aggressive rate when possible | |||
| (case 2 in Section 3.1.3 of [RFC8085]). | ||||
| 5.3.1. Requesting mitigation | 5.3.1. Requesting mitigation | |||
| When a DOTS client requires mitigation for any reason, the DOTS | When a DOTS client requires mitigation for any reason, the DOTS | |||
| client uses CoAP PUT method to send a mitigation request to the DOTS | client uses CoAP PUT method to send a mitigation request to the DOTS | |||
| server (Figure 5, illustrated in JSON diagnostic notation). The DOTS | server (Figure 5, illustrated in JSON diagnostic notation). The DOTS | |||
| server can enable mitigation on behalf of the DOTS client by | server can enable mitigation on behalf of the DOTS client by | |||
| communicating the DOTS client's request to the mitigator and relaying | communicating the DOTS client's request to the mitigator and relaying | |||
| selected mitigator feedback to the requesting DOTS client. | selected mitigator feedback to the requesting DOTS client. | |||
| Header: PUT (Code=0.03) | Header: PUT (Code=0.03) | |||
| Uri-Host: "host" | Uri-Host: "host" | |||
| Uri-Path: "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", | ||||
| "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 14, line 50 ¶ | skipping to change at page 16, line 51 ¶ | |||
| "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 | ||||
| gateway to propagate the DOTS client identity to the DOTS server. | ||||
| The'client-identifier' value MUST be assigned by the DOTS gateway | ||||
| in a manner that ensures that there is no probability that the | ||||
| same value will be accidentally assigned to a different DOTS | ||||
| client. The client-identifier attribute SHOULD NOT to be | ||||
| advertised by the DOTS client. | ||||
| 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 16, line 8 ¶ | skipping to change at page 18, line 18 ¶ | |||
| sending the same request again. The default lifetime of the | sending the same request again. The default lifetime of the | |||
| mitigation request is 3600 seconds (60 minutes) -- this value was | mitigation request is 3600 seconds (60 minutes) -- this value was | |||
| chosen to be long enough so that refreshing is not typically a | chosen to be long enough so that refreshing is not typically a | |||
| burden on the DOTS client, while expiring the request where the | burden on the DOTS client, while expiring the request where the | |||
| client has unexpectedly quit in a timely manner. A lifetime of | client has unexpectedly quit in a timely manner. A lifetime of | |||
| negative one (-1) indicates indefinite lifetime for the mitigation | negative one (-1) indicates indefinite lifetime for the mitigation | |||
| request. The server MUST always indicate the actual lifetime in | request. The server MUST always indicate the actual lifetime in | |||
| the response and the remaining lifetime in status messages sent to | the response and the remaining lifetime in status messages sent to | |||
| the client. This is an optional attribute in the request. | the client. This is an optional attribute in the request. | |||
| The CBOR key values for the parameters are defined in Section 6. The | The CBOR key values for the parameters are defined in Section 6. | |||
| IANA Considerations section defines how the CBOR key values can be | Section 10 defines how the CBOR key values can be allocated to | |||
| allocated to standards bodies and vendors. FQDN and URI mitigation | standards bodies and vendors. | |||
| scopes may be thought of as a form of scope alias, in which the | ||||
| addresses to which the domain name or URI resolve represent the full | FQDN and URI mitigation scopes may be thought of as a form of scope | |||
| scope of the mitigation. In the PUT request at least one of the | alias, in which the addresses to which the domain name or URI resolve | |||
| attributes target-ip or target-prefix or fqdn or uri or alias-name | represent the full scope of the mitigation. | |||
| MUST be present. DOTS agents can safely ignore Vendor-Specific | ||||
| parameters they don't understand. The relative order of two | In the PUT request at least one of the attributes target-ip or | |||
| mitigation requests from a DOTS client is determined by comparing | target-prefix or fqdn or uri or alias-name MUST be present. DOTS | |||
| their respective mitigation-id values. If two mitigation requests | agents can safely ignore Vendor-Specific parameters they don't | |||
| have overlapping mitigation scopes the mitigation request with higher | understand. | |||
| numeric mitigation-id value will override the mitigation request with | ||||
| a lower numeric mitigation-id value. Two mitigation-ids are | The relative order of two mitigation requests from a DOTS client is | |||
| overlapping if there is a common IP, IP Prefix, FQDN, URI or alias- | determined by comparing their respective 'mitigation-id' values. If | |||
| name. The overlapped lower numeric mitigation-id is automatically | two mitigation requests have overlapping mitigation scopes, the | |||
| deleted and no longer available at the DOTS server. The Uri-Path | mitigation request with higher numeric 'mitigation-id' value will | |||
| option carries a major and minor version nomenclature to manage | override the mitigation request with a lower numeric 'mitigation-id' | |||
| versioning and DOTS signal channel in this specification uses v1 | value. Two mitigation-ids are overlapping if there is a common IP | |||
| major version. | address, IP prefix, FQDN, URI, or alias-name. The overlapped lower | |||
| numeric 'mitigation-id' MUST be automatically deleted and no longer | ||||
| available at the DOTS server. | ||||
| The Uri-Path option carries a major and minor version nomenclature to | ||||
| manage versioning and DOTS signal channel in this specification uses | ||||
| v1 major version. | ||||
| If the DOTS client is using the certificate provisioned by the EST | ||||
| server in the DOTS gateway-domain to authenticate itself to the DOTS | ||||
| gateway, then the 'client-identifier' value will be the output of a | ||||
| cryptographic hash algorithm whose input is the DER-encoded ASN.1 | ||||
| representation of the Subject Public Key Info (SPKI) of an X.509 | ||||
| certificate. The output of the cryptographic hash algorithm is | ||||
| base64url encoded. In this version of the specification, the | ||||
| cryptographic hash algorithm used is SHA-256 [RFC6234]. If the | ||||
| 'client-identifier' value is already present in the mitigation | ||||
| request received from the DOTS client, the DOTS gateway computes the | ||||
| 'client-identifier' value, as discussed above, and adds the computed | ||||
| 'client-identifier' value to the end of the 'client-identifier' list. | ||||
| 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). The DOTS server | authenticate itself to the DOTS server (Section 9). If the 'client- | |||
| can use the algorithm discussed in Section 7 of [RFC7589] to derive | identifier' value is not present in the mitigation request, the DOTS | |||
| the DOTS client identity or username from the client certificate. | server may use the algorithm in Section 7 of [RFC7589] to derive the | |||
| The DOTS server couples the DOTS signal and data channel sessions | DOTS client identity or username from the client certificate. The | |||
| using the DOTS client identity, so the DOTS server can validate | DOTS server couples the DOTS signal and data channel sessions using | |||
| whether the aliases conveyed in the mitigation request were indeed | the DOTS client identity, so the DOTS server can validate whether the | |||
| created by the same DOTS client using the DOTS data channel session. | aliases conveyed in the mitigation request were indeed created by the | |||
| If the aliases were not created by the DOTS client then the DOTS | same DOTS client using the DOTS data channel session. If the aliases | |||
| server returns 4.00 (Bad Request) in the response. The DOTS server | were not created by the DOTS client, the DOTS server returns 4.00 | |||
| couples the DOTS signal channel sessions using the DOTS client | (Bad Request) in the response. | |||
| identity, and the DOTS server uses mitigation-id parameter value to | ||||
| detect duplicate mitigation requests. If the mitigation request | ||||
| contains both alias-name and other parameters identifying the target | ||||
| resources (such as, target-ip, target-prefix, target-port-range, | ||||
| fqdn, or uri) then the DOTS server appends the parameter values in | ||||
| alias-name with the corresponding parameter values in target-ip, | ||||
| target-prefix, target-port-range, fqdn, or uri. | ||||
| Figure 6 shows an PUT request example to signal that ports 80, 8080, | The DOTS server couples the DOTS signal channel sessions using the | |||
| DOTS client identity, and the DOTS server uses 'mitigation-id' | ||||
| parameter value to detect duplicate mitigation requests. If the | ||||
| mitigation request contains both alias-name and other parameters | ||||
| identifying the target resources (such as, target-ip, target-prefix, | ||||
| target-port-range, fqdn, or uri), then the DOTS server appends the | ||||
| parameter values in alias-name with the corresponding parameter | ||||
| values in target-ip, target-prefix, target-port-range, fqdn, or uri. | ||||
| 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": { | |||
| "scope": [ | "client-identifier": "E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=", | |||
| { | "scope": [ | |||
| "mitigation-id": 12332, | { | |||
| "target-ip": [ | "mitigation-id": 12332, | |||
| "2001:db8:6401::1", | "target-ip": [ | |||
| "2001:db8:6401::2" | "2001:db8:6401::1", | |||
| ], | "2001:db8:6401::2" | |||
| "target-port-range": [ | ], | |||
| { | "target-port-range": [ | |||
| "lower-port": 80 | { | |||
| }, | "lower-port": 80 | |||
| { | }, | |||
| "lower-port": 443 | { | |||
| }, | "lower-port": 443 | |||
| { | }, | |||
| "lower-port": 8080 | { | |||
| } | "lower-port": 8080 | |||
| ], | } | |||
| "target-protocol": [ | ], | |||
| 6 | "target-protocol": [ | |||
| ] | 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) | |||
| a1 # map(1) | A2 # map(2) | |||
| 02 # unsigned(2) | 18 20 # unsigned(32) | |||
| 81 # array(1) | 78 2C # text(44) | |||
| a4 # map(4) | 4539435A39494E4462642B326552516F7A59717162513279584C564B42392B786370724D462B34345531673D | |||
| 03 # unsigned(3) | # "E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=" | |||
| 19 302c # unsigned(12332) | 02 # unsigned(2) | |||
| 04 # unsigned(4) | 81 # array(1) | |||
| 82 # array(2) | A4 # map(4) | |||
| 70 # text(16) | 03 # unsigned(3) | |||
| 323030313A6462383A363430313A3A31 # "2001:db8:6401::1" | 19 302C # unsigned(12332) | |||
| 04 # unsigned(4) | ||||
| 82 # array(2) | ||||
| 70 # text(16) | ||||
| 323030313A6462383A363430313A3A31 # "2001:db8:6401::1" | ||||
| 70 # text(16) | ||||
| 323030313A6462383A363430313A3A32 # "2001:db8:6401::2" | ||||
| 05 # unsigned(5) | ||||
| 83 # array(3) | ||||
| A1 # map(1) | ||||
| 06 # unsigned(6) | ||||
| 18 50 # unsigned(80) | ||||
| A1 # map(1) | ||||
| 06 # unsigned(6) | ||||
| 19 01BB # unsigned(443) | ||||
| A1 # map(1) | ||||
| 06 # unsigned(6) | ||||
| 19 1F90 # unsigned(8080) | ||||
| 70 # text(16) | 08 # unsigned(8) | |||
| 323030313A6462383A363430313A3A32 # "2001:db8:6401::2" | 81 # array(1) | |||
| 05 # unsigned(5) | 06 # unsigned(6) | |||
| 83 # array(3) | ||||
| a1 # map(1) | ||||
| 06 # unsigned(6) | ||||
| 18 50 # unsigned(80) | ||||
| a1 # map(1) | ||||
| 06 # unsigned(6) | ||||
| 19 01bb # unsigned(443) | ||||
| a1 # map(1) | ||||
| 06 # unsigned(6) | ||||
| 19 1f90 # unsigned(8080) | ||||
| 08 # unsigned(8) | ||||
| 81 # array(1) | ||||
| 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 an 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", | ||||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": integer, | "mitigation-id": integer, | |||
| "lifetime": integer | "lifetime": integer | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 7: 2.xx response body | Figure 7: 2.xx response body | |||
| COAP 5.xx codes are returned if the DOTS server has erred or is | COAP 5.xx codes are returned if the DOTS server has erred or is | |||
| currently unavailable to provide mitigation in response to the | currently unavailable to provide mitigation in response to the | |||
| mitigation request from the DOTS client. If the DOTS server does not | mitigation request from the DOTS client. | |||
| find the mitigation-id parameter value conveyed in the PUT request in | ||||
| its configuration data then the server MAY accept the mitigation | If the DOTS server does not find the 'mitigation-id' parameter value | |||
| request, and a 2.01 (Created) response is returned to the DOTS | conveyed in the PUT request in its configuration data, then the | |||
| client, and the DOTS server will try to mitigate the attack. If the | server MAY accept the mitigation request by sending back a 2.01 | |||
| DOTS server finds the mitigation-id parameter value conveyed in the | (Created) response to the DOTS client; the DOTS server will | |||
| PUT request in its configuration data then the server MAY update the | consequently try to mitigate the attack. | |||
| mitigation request, and a 2.04 (Changed) response is returned to | ||||
| indicate a successful update of the mitigation request. If the | If the DOTS server finds the 'mitigation-id' parameter value conveyed | |||
| request is missing one or more mandatory attributes, then 4.00 (Bad | in the PUT request in its configuration data, then the server MAY | |||
| Request) will be returned in the response or if the request contains | update the mitigation request, and a 2.04 (Changed) response is | |||
| invalid or unknown parameters then 4.02 (Invalid query) will be | returned to indicate a successful update of the mitigation request. | |||
| If the request is missing one or more mandatory attributes, then 4.00 | ||||
| (Bad Request) will be returned in the response or if the request | ||||
| contains invalid or unknown parameters then 4.02 (Invalid query) is | ||||
| returned in the response. | returned in the response. | |||
| For the mitigation request to continue beyond the initial negotiated | For a mitigation request to continue beyond the initial negotiated | |||
| lifetime, the DOTS client will 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 as | same 'mitigation-id' value, and MUST repeat all the other parameters | |||
| sent in the original mitigation request apart from a possible change | as sent in the original mitigation request apart from a possible | |||
| to the lifetime parameter value. | change to the lifetime parameter value. | |||
| 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", | ||||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": integer | "mitigation-id": integer | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 8: Withdraw DOTS signal | Figure 8: Withdraw DOTS signal | |||
| The DOTS server immediately acknowledges a DOTS client's request to | The DOTS server immediately acknowledges a DOTS client's request to | |||
| withdraw the DOTS signal using 2.02 (Deleted) response code with no | withdraw the DOTS signal using 2.02 (Deleted) response code with no | |||
| response payload. A 2.02 (Deleted) Response Code is returned even if | response payload. A 2.02 (Deleted) Response Code is returned even if | |||
| the mitigation-id parameter value conveyed in the DELETE request does | the 'mitigation-id' parameter value conveyed in the DELETE request | |||
| not exist in its configuration data before the request. If the DOTS | does not exist in its configuration data before the request. | |||
| server finds the mitigation-id parameter value conveyed in the DELETE | ||||
| request in its configuration data, then to protect against route or | If the DOTS server finds the 'mitigation-id' parameter value conveyed | |||
| DNS flapping caused by a client rapidly toggling mitigation, and to | in the DELETE request in its configuration data, then to protect | |||
| dampen the effect of oscillating attacks, DOTS servers MAY allow | against route or DNS flapping caused by a client rapidly toggling | |||
| mitigation to continue for a limited period after acknowledging a | mitigation, and to dampen the effect of oscillating attacks, DOTS | |||
| DOTS client's withdrawal of a mitigation request. During this | servers MAY allow mitigation to continue for a limited period after | |||
| period, DOTS server status messages SHOULD indicate that mitigation | acknowledging a DOTS client's withdrawal of a mitigation request. | |||
| is active but terminating. The active-but-terminating period is | During this period, the DOTS server status messages SHOULD indicate | |||
| initially 30 seconds. If the client requests mitigation again before | that mitigation is active but terminating. The active-but- | |||
| that 30 second window elapses, the DOTS server MAY exponentially | terminating period MUST be set by default to 30 seconds. If the DOTS | |||
| increase the active- but-terminating period up to a maximum of 240 | client requests mitigation again before that 30 second expires, the | |||
| seconds (4 minutes). After the active-but-terminating period | DOTS server MAY exponentially increase the active-but-terminating | |||
| elapses, the DOTS server MUST treat the mitigation as terminated, as | timeout up to a maximum of 240 seconds (4 minutes). After the | |||
| the DOTS client is no longer responsible for the mitigation. For | active-but-terminating period expires, the DOTS server MUST treat the | |||
| example, if there is a financial relationship between the DOTS client | mitigation as terminated. That is, the DOTS client is no longer | |||
| and server domains, the DOTS client ceases incurring cost at this | responsible for the mitigation. For example, if there is a financial | |||
| point. | relationship between the DOTS client and server domains, the DOTS | |||
| 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 and status of a DOTS | A GET request is used to retrieve information (inclduding status) of | |||
| signal from a DOTS server (Figure 9). If the DOTS server does not | a DOTS signal from a DOTS server (Figure 9). If the DOTS server does | |||
| find the mitigation-id parameter value conveyed in the GET request in | not find the 'mitigation-id' parameter value conveyed in the GET | |||
| its configuration data, then it responds with a 4.04 (Not Found) | request in its configuration data, then it responds with a 4.04 (Not | |||
| error response code. The 'c' (content) parameter and its permitted | Found) error response code. The 'c' (content) parameter and its | |||
| values defined in [I-D.ietf-core-comi] can be used to retrieve non- | permitted values defined in [I-D.ietf-core-comi] can be used to | |||
| configuration data or configuration data or both. | retrieve non-configuration data 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": { | ||||
| "client-identifer": "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", | ||||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": integer | "mitigation-id": integer | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 9: GET to retrieve the rules | Figure 9: GET to retrieve the rules | |||
| Figure 10 shows a response example of all the active mitigation | Figure 10 shows a response example of all the active mitigation | |||
| requests associated with the DOTS client on the DOTS server and the | requests associated with the DOTS client on the DOTS server and the | |||
| mitigation status of each mitigation request. | mitigation status of each mitigation request. | |||
| { | { | |||
| "mitigation-scope": { | "mitigation-scope": { | |||
| "scope": [ | "scope": [ | |||
| { | { | |||
| "mitigation-id": 12332, | "mitigation-id": 12332, | |||
| "mitigation-start": 1507818434.00, | ||||
| "target-protocol": [ | "target-protocol": [ | |||
| 17 | 17 | |||
| ], | ], | |||
| "lifetime":1800, | "lifetime":1800, | |||
| "status":2, | "status":2, | |||
| "bytes-dropped": 134334555, | "bytes-dropped": 134334555, | |||
| "bps-dropped": 43344, | "bps-dropped": 43344, | |||
| "pkts-dropped": 333334444, | "pkts-dropped": 333334444, | |||
| "pps-dropped": 432432 | "pps-dropped": 432432 | |||
| }, | }, | |||
| { | { | |||
| "mitigation-id": 12333, | "mitigation-id": 12333, | |||
| "mitigation-start": 1507818393.00, | ||||
| "target-protocol": [ | "target-protocol": [ | |||
| 6 | 6 | |||
| ], | ], | |||
| "lifetime":1800, | "lifetime":1800, | |||
| "status":3 | "status":3 | |||
| "bytes-dropped": 0, | "bytes-dropped": 0, | |||
| "bps-dropped": 0, | "bps-dropped": 0, | |||
| "pkts-dropped": 0, | "pkts-dropped": 0, | |||
| "pps-dropped": 0 | "pps-dropped": 0 | |||
| } | } | |||
| skipping to change at page 22, line 45 ¶ | skipping to change at page 25, line 47 ¶ | |||
| Figure 10: Response body | Figure 10: Response body | |||
| The mitigation status parameters are described below. | The mitigation status parameters are described below. | |||
| lifetime: The remaining lifetime of the mitigation request in | lifetime: The remaining lifetime of the mitigation request in | |||
| seconds. | seconds. | |||
| mitigation-start: Mitigation start time is represented in seconds | mitigation-start: Mitigation start time is represented in seconds | |||
| relative to 1970-01-01T00:00Z in UTC time (Section 2.4.1 of | relative to 1970-01-01T00:00Z in UTC time (Section 2.4.1 of | |||
| [RFC7049]). | [RFC7049]). The encoding is modified so that the leading tag 1 | |||
| (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 is an | |||
| optional attribute. | optional attribute. | |||
| skipping to change at page 23, line 24 ¶ | skipping to change at page 26, line 26 ¶ | |||
| mitigation request since the attack mitigation is triggered. This | mitigation request since the attack mitigation is triggered. This | |||
| is an optional attribute. | 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 | | |||
| |--------------------+---------------------------------------------------| | +--------------------+---------------------------------------------------+ | |||
| | 1 | Attack mitigation is in progress | | | 1 | Attack mitigation is in progress | | |||
| | | (e.g., changing the network path to re-route the | | | | (e.g., changing the network path to re-route the | | |||
| | | inbound traffic to DOTS mitigator). | | | | inbound traffic to DOTS mitigator). | | |||
| +------------------------------------------------------------------------+ | +--------------------+---------------------------------------------------+ | |||
| | 2 | Attack is successfully mitigated | | | 2 | Attack is successfully mitigated | | |||
| | | (e.g., traffic is redirected to a DDOS mitigator | | | | (e.g., traffic is redirected to a DDOS mitigator | | |||
| | | and attack traffic is dropped). | | | | and attack traffic is dropped). | | |||
| +------------------------------------------------------------------------+ | +--------------------+---------------------------------------------------+ | |||
| | 3 | Attack has stopped and the DOTS client | | | 3 | Attack has stopped and the DOTS client | | |||
| | | can withdraw the mitigation request. | | | | can withdraw the mitigation request. | | |||
| +------------------------------------------------------------------------+ | +--------------------+---------------------------------------------------+ | |||
| | 4 | Attack has exceeded the mitigation provider | | | 4 | Attack has exceeded the mitigation provider | | |||
| | | capability. | | | | capability. | | |||
| +------------------------------------------------------------------------+ | +--------------------+---------------------------------------------------+ | |||
| | 5 | DOTS client has withdrawn the mitigation request | | | 5 | DOTS client has withdrawn the mitigation request | | |||
| and the mitigation is active but terminating. | | | | and the mitigation is active but terminating. | | |||
| | | | | ||||
| \--------------------+---------------------------------------------------/ | \--------------------+---------------------------------------------------/ | |||
| 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 | |||
| skipping to change at page 25, line 20 ¶ | skipping to change at page 28, line 22 ¶ | |||
| 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, a DOTS client MAY frequently | |||
| transmit DOTS mitigation efficacy updates to the relevant DOTS | transmit DOTS mitigation efficacy updates to the relevant DOTS | |||
| server. An PUT request (Figure 12) is used to convey the mitigation | server. A PUT request (Figure 12) is used to convey the mitigation | |||
| efficacy update to the DOTS server. The PUT request MUST include all | efficacy update to the DOTS server. | |||
| the parameters used in the PUT request to convey the DOTS signal | ||||
| (Section 5.3.1) unchanged apart from the lifetime parameter value. | The PUT request MUST include all the parameters used in the PUT | |||
| If this is not the case, the DOTS server MUST reject the request with | request to convey the DOTS signal (Section 5.3.1) unchanged apart | |||
| a 4.02 error response code. The If-Match Option (Section 5.10.8.1 of | from the lifetime parameter value. If this is not the case, the DOTS | |||
| [RFC7252]) with an empty value is used to make the PUT request | server MUST reject the request with a 4.02 error response code. | |||
| conditional on the current existence of the mitigation request. If | ||||
| UDP is used as transport, CoAP requests may arrive out-of-order. For | The If-Match Option (Section 5.10.8.1 of [RFC7252]) with an empty | |||
| example, the DOTS client may send a PUT request to convey efficacy | value is used to make the PUT request conditional on the current | |||
| update to the DOTS server followed by a DELETE request to withdraw | existence of the mitigation request. If UDP is used as transport, | |||
| the mitigation request, but DELETE request arrives at the DOTS server | CoAP requests may arrive out-of-order. For example, the DOTS client | |||
| before the PUT request. To handle out-of-order delivery of requests, | may send a PUT request to convey an efficacy update to the DOTS | |||
| if an If-Match option is present in the PUT request and the | server followed by a DELETE request to withdraw the mitigation | |||
| mitigation-id in the request matches a mitigation request from the | request, but the DELETE request arrives at the DOTS server before the | |||
| DOTS client then the request is processed, and if no match is found | PUT request. To handle out-of-order delivery of requests, if an If- | |||
| then the PUT request is silently ignored. | Match option is present in the PUT request and the 'mitigation-id' in | |||
| the request matches a mitigation request from that DOTS client, then | ||||
| the request is processed. If no match is found, the PUT request is | ||||
| 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", | ||||
| "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 26, line 48 ¶ | skipping to change at page 29, line 49 ¶ | |||
| "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. The various | |||
| possible values contained in the 'attack-status' parameter are | possible values contained in the 'attack-status' parameter are | |||
| explained below: | 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). | | |||
| \--------------------+------------------------------------------------------/ | \--------------------+------------------------------------------------------/ | |||
| The DOTS server indicates the result of processing the PUT request | The DOTS server indicates the result of processing a PUT request | |||
| using CoAP response codes. The response code 2.04 (Changed) will be | using CoAP response codes. The response code 2.04 (Changed) is | |||
| returned in the response if the DOTS server has accepted the | returned if the DOTS server has accepted the mitigation efficacy | |||
| mitigation efficacy update. The error response code 5.03 (Service | update. The error response code 5.03 (Service Unavailable) is | |||
| Unavailable) is returned if the DOTS server has erred or is incapable | returned if the DOTS server has erred or is incapable of performing | |||
| 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 signal | The DOTS client can negotiate, configure, and retrieve the DOTS | |||
| channel session behavior. The DOTS signal channel can be used, for | signal channel session behavior. The DOTS signal channel can be | |||
| 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 (Ping/ | |||
| Pong) to each other after mutual authentication in order to keep | Pong) to each other after mutual authentication in order to keep | |||
| the DOTS signal channel open, heartbeat messages are exchanged | the DOTS signal channel open, heartbeat messages are exchanged | |||
| between the DOTS agents every heartbeat-interval seconds to | between the DOTS agents every heartbeat-interval seconds to | |||
| detect the current status of the DOTS signal channel session. | 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 | |||
| skipping to change at page 30, line 8 ¶ | skipping to change at page 33, line 8 ¶ | |||
| 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" | |||
| { | { | |||
| "heartbeat-interval": { | "heartbeat-interval": { | |||
| "CurrentValue": 91, | "CurrentValue": 30, | |||
| "MinValue": 60, | "MinValue": 15, | |||
| "MaxValue" : 240, | "MaxValue" : 240, | |||
| }, | }, | |||
| "missing-hb-allowed": { | "missing-hb-allowed": { | |||
| "CurrentValue": 3, | "CurrentValue": 5, | |||
| "MinValue": 1, | "MinValue": 3, | |||
| "MaxValue" : 7, | "MaxValue" : 9, | |||
| }, | }, | |||
| "max-retransmit": { | "max-retransmit": { | |||
| "CurrentValue": 4, | "CurrentValue": 3, | |||
| "MinValue": 3, | "MinValue": 2, | |||
| "MaxValue" : 15, | "MaxValue" : 15, | |||
| }, | }, | |||
| "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.0, | "MinValue": 1.1, | |||
| "MaxValue" : 4.0, | "MaxValue" : 4.0, | |||
| } | } | |||
| } | } | |||
| 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 retransmissions | signaling channel (e.g., heartbeat interval, maximum | |||
| etc). Message transmission parameters for CoAP are defined in | retransmissions). Message transmission parameters for CoAP are | |||
| Section 4.8 of [RFC7252]. The RECOMMENDED values of transmission | defined in Section 4.8 of [RFC7252]. The RECOMMENDED values of | |||
| parameter values are ack_timeout (2 seconds), max-retransmit (4), | transmission parameter values are ack_timeout (2 seconds), max- | |||
| ack-random-factor (1.5), heartbeat-interval (93 seconds) and missing- | retransmit (3), ack-random-factor (1.5). In addition to those | |||
| hb-allowed (3). The heartbeat-interval value is equal to the | parameters, the RECOMMENDED specific DOTS transmission parameter | |||
| MAX_TRANSMIT_WAIT counter (Section 4.8.2 of [RFC7252]) whose value is | values are heartbeat-interval (30 seconds) and missing-hb-allowed | |||
| derived from transmission parameters. For the default transmission | (5). | |||
| parameters, if the DOTS agent does not receive any response from the | ||||
| peer DOTS agent for three (missing-hb-allowed) consecutive "CoAP | Note: heartbeat-interval should be tweaked to also assist DOTS | |||
| ping" confirmable messages then it concludes that the DOTS signal | messages for NAT traversal (SIG-010 of | |||
| channel session is disconnected, and a "CoAP ping" confirmable | [I-D.ietf-dots-requirements]). According to [RFC8085], keepalive | |||
| message is retransmitted four (max-retransmit) times using a initial | messages must not be sent more frequently than once every 15 | |||
| timeout set to random duration between 2 (ack_timeout) and 3 seconds | seconds and should use longer intervals when possible. | |||
| (ack-timeout*ack-random-factor) and exponential back-off between | ||||
| retransmissions. | Furthermore, [RFC4787] recommends NATs to use a state timeout of 2 | |||
| minutes or longer, but experience shows that sending packets every | ||||
| 15 to 30 seconds is necessary to prevent the majority of | ||||
| middleboxes from losing state for UDP flows. From that | ||||
| standpoint, this specification recommends a minimum heartbeat- | ||||
| interval of 15 seconds and a maximum heartbeat-interval of 240 | ||||
| seconds. The recommended value of 30 seconds is selected to | ||||
| anticipate the expiry of NAT state. | ||||
| A heartbeat-interval of 30 second may be seen as too chatty in | ||||
| some deployments. For such deployments, DOTS agents may negotiate | ||||
| longer heartbeat-interval values to avoid overloading the network | ||||
| with too frequent keepalives. | ||||
| For the recommended transmission parameters, if the DOTS agent does | ||||
| not receive any response from the peer DOTS agent for five (missing- | ||||
| hb-allowed) consecutive "CoAP ping" confirmable messages, then it | ||||
| concludes that the DOTS signal channel session is disconnected, and a | ||||
| "CoAP ping" confirmable message is retransmitted three (max- | ||||
| retransmit) times using an initial timeout set to a random duration | ||||
| between 2 (ack_timeout) and 3 seconds (ack-timeout*ack-random-factor) | ||||
| and exponential back-off between retransmissions. | ||||
| 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. The signaling | non-negotiated message transmission parameters. | |||
| channel session configuration is applicable to a single DOTS signal | ||||
| channel session between the DOTS agents. | The signaling channel session configuration is applicable to a single | |||
| DOTS signal channel session between the DOTS agents. | ||||
| 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: "config" | Uri-Path: "config" | |||
| Content-Format: "application/cbor" | Content-Format: "application/cbor" | |||
| { | { | |||
| "signal-config": { | "signal-config": { | |||
| "session-id": integer, | "session-id": integer, | |||
| skipping to change at page 32, line 32 ¶ | skipping to change at page 36, line 20 ¶ | |||
| 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 | |||
| session-id value. | session-id value. | |||
| Figure 17 shows an PUT request example to convey the configuration | Figure 17 shows a PUT request example to convey the configuration | |||
| parameters for the DOTS signal channel. | parameters for the DOTS signal channel. | |||
| Header: PUT (Code=0.03) | Header: PUT (Code=0.03) | |||
| Uri-Host: "www.example.com" | Uri-Host: "www.example.com" | |||
| Uri-Path: "v1" | Uri-Path: "v1" | |||
| Uri-Path: "dots-signal" | Uri-Path: "dots-signal" | |||
| Uri-Path: "config" | Uri-Path: "config" | |||
| Content-Format: "application/cbor" | Content-Format: "application/cbor" | |||
| { | { | |||
| "signal-config": { | "signal-config": { | |||
| skipping to change at page 33, line 26 ¶ | skipping to change at page 36, line 44 ¶ | |||
| "max-retransmit": 7, | "max-retransmit": 7, | |||
| "ack-timeout": 5, | "ack-timeout": 5, | |||
| "ack-random-factor": 1.5, | "ack-random-factor": 1.5, | |||
| "trigger-mitigation": false | "trigger-mitigation": false | |||
| } | } | |||
| } | } | |||
| Figure 17: PUT to convey the configuration parameters | Figure 17: PUT to convey the configuration parameters | |||
| The DOTS server indicates the result of processing the PUT request | The DOTS server indicates the result of processing the PUT request | |||
| using CoAP response codes. If the DOTS server finds the session-id | using CoAP response codes: | |||
| parameter value conveyed in the PUT request in its configuration data | ||||
| and if the DOTS server has accepted the updated configuration | o If the DOTS server finds the 'session-id' parameter value conveyed | |||
| parameters then the a 2.04 (Changed) response will be returned in the | in the PUT request in its configuration data and if the DOTS | |||
| response. If the DOTS server does not find the session-id parameter | server has accepted the updated configuration parameters, then | |||
| value conveyed in the PUT request in its configuration data and if | 2.04 (Changed) code is returned in the response. | |||
| the DOTS server has accepted the configuration parameters then a | ||||
| response code 2.01 (Created) will be returned in the response. If | o If the DOTS server does not find the 'session-id' parameter value | |||
| the request is missing one or more mandatory attributes then 4.00 | conveyed in the PUT request in its configuration data and if the | |||
| (Bad Request) will be returned in the response or if the request | DOTS server has accepted the configuration parameters, then a | |||
| contains invalid or unknown parameters then 4.02 (Invalid query) will | response code 2.01 (Created) is returned in the response. | |||
| be returned in the response. Response code 4.22 (Unprocessable | ||||
| Entity) will be returned in the response if any of the heartbeat- | o If the request is missing one or more mandatory attributes, then | |||
| interval, missing-hb-allowed, max-retransmit, target-protocol, ack- | 4.00 (Bad Request) is returned in the response. | |||
| timeout and ack-random-factor attribute values are not acceptable to | ||||
| the DOTS server. On receipt of the 4.22 error response code, the | o If the request contains one or more invalid or unknown parameters, | |||
| DOTS client should request the maximum and minumum attribute values | then 4.02 (Invalid query) code is returned in the response. | |||
| acceptable to the DOTS server (Section 5.4.1). The DOTS client can | ||||
| re-try and send the PUT request with updated attribute values | o Response code 4.22 (Unprocessable Entity) is returned in the | |||
| acceptable to the DOTS server. | response, if any of the heartbeat-interval, missing-hb-allowed, | |||
| max-retransmit, target-protocol, ack-timeout, and ack-random- | ||||
| factor attribute values are not acceptable to the DOTS server. | ||||
| Upon receipt of the 4.22 error response code, the DOTS client | ||||
| should request the maximum and minumum attribute values acceptable | ||||
| to the DOTS server (Section 5.4.1). The DOTS client may re-try | ||||
| and send the PUT request with updated attribute values acceptable | ||||
| 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" | |||
| skipping to change at page 36, line 43 ¶ | skipping to change at page 40, line 21 ¶ | |||
| [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 | | |||
| |--------------------+------------------------+--------------------------| | +--------------------+------------------------+--------------------------+ | |||
| | mitigation-scope | 1 | 5 (map) | | | mitigation-scope | 1 | 5 (map) | | |||
| | scope | 2 | 5 (map) | | | scope | 2 | 5 (map) | | |||
| | mitigation-id | 3 | 0 (unsigned) | | | mitigation-id | 3 | 0 (unsigned) | | |||
| | target-ip | 4 | 4 (array) | | | target-ip | 4 | 4 (array) | | |||
| | target-port-range | 5 | 4 | | | target-port-range | 5 | 4 | | |||
| | lower-port | 6 | 0 | | | lower-port | 6 | 0 | | |||
| | upper-port | 7 | 0 | | | upper-port | 7 | 0 | | |||
| | target-protocol | 8 | 4 | | | target-protocol | 8 | 4 | | |||
| | fqdn | 9 | 4 | | | fqdn | 9 | 4 | | |||
| | uri | 10 | 4 | | | uri | 10 | 4 | | |||
| skipping to change at page 37, line 38 ¶ | skipping to change at page 41, line 38 ¶ | |||
| | status | 21 | 0 | | | status | 21 | 0 | | |||
| | bytes-dropped | 22 | 0 | | | bytes-dropped | 22 | 0 | | |||
| | bps-dropped | 23 | 0 | | | bps-dropped | 23 | 0 | | |||
| | pkts-dropped | 24 | 0 | | | pkts-dropped | 24 | 0 | | |||
| | 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) | | ||||
| | client-identifier | 32 | 2 (byte string) | | ||||
| \--------------------+------------------------+--------------------------/ | \--------------------+------------------------+--------------------------/ | |||
| Figure 22: CBOR mappings used in DOTS signal channel message | Figure 22: 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 | |||
| skipping to change at page 41, line 43 ¶ | skipping to change at page 45, line 43 ¶ | |||
| 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 using certificates. A DOTS server will | perform mutual authentication (e.g., using certificates). A DOTS | |||
| only allow a DOTS gateway with a certificate for a particular domain | server will only allow a DOTS gateway with a certificate for a | |||
| to request mitigation for that domain. In reference to Figure 24, | particular domain to request mitigation for that domain. In | |||
| the DOTS server only allows the DOTS gateway to request mitigation | reference to Figure 24, the DOTS server only allows the DOTS gateway | |||
| for 'example.com' domain and not for other domains. | to request mitigation for 'example.com' domain and not for other | |||
| 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- | |||
| skipping to change at page 46, line 40 ¶ | skipping to change at page 50, line 40 ¶ | |||
| o CBOR Major Type: 0 | o CBOR Major Type: 0 | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): this document | o Specification Document(s): this document | |||
| o Parameter Name: CurrentValue | o Parameter Name: CurrentValue | |||
| o CBOR Key Value: 29 | o CBOR Key Value: 29 | |||
| o CBOR Major Type: 0 | o CBOR Major Type: 0 | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): this document | o Specification Document(s): this document | |||
| o Parameter Name:mitigation-start | ||||
| o CBOR Key Value: 30 | ||||
| o CBOR Major Type: 7 | ||||
| o Change Controller: IESG | ||||
| o Specification Document(s): this document | ||||
| o Parameter Name:target-prefix | ||||
| o CBOR Key Value: 31 | ||||
| o CBOR Major Type: 4 | ||||
| o Change Controller: IESG | ||||
| o Specification Document(s): this document | ||||
| o Parameter Name:client-identifier | ||||
| o CBOR Key Value: 32 | ||||
| o CBOR Major Type: 2 | ||||
| o Change Controller: IESG | ||||
| o Specification Document(s): this document | ||||
| 11. Implementation Status | 11. Implementation Status | |||
| [Note to RFC Editor: Please remove this section and reference to | [Note to RFC Editor: Please remove this section and reference to | |||
| [RFC7942] prior to publication.] | [RFC7942] prior to publication.] | |||
| This section records the status of known implementations of the | This section records the status of known implementations of the | |||
| protocol defined by this specification at the time of posting of this | protocol defined by this specification at the time of posting of this | |||
| Internet-Draft, and is based on a proposal described in [RFC7942]. | Internet-Draft, and is based on a proposal described in [RFC7942]. | |||
| The description of implementations in this section is intended to | The description of implementations in this section is intended to | |||
| assist the IETF in its decision processes in progressing drafts to | assist the IETF in its decision processes in progressing drafts to | |||
| skipping to change at page 48, line 18 ¶ | skipping to change at page 52, line 35 ¶ | |||
| If TCP is used between DOTS agents, an attacker may be able to inject | If TCP is used between DOTS agents, an attacker may be able to inject | |||
| RST packets, bogus application segments, etc., regardless of whether | RST packets, bogus application segments, etc., regardless of whether | |||
| TLS authentication is used. Because the application data is TLS | TLS authentication is used. Because the application data is TLS | |||
| protected, this will not result in the application receiving bogus | protected, this will not result in the application receiving bogus | |||
| data, but it will constitute a DoS on the connection. This attack | data, but it will constitute a DoS on the connection. This attack | |||
| can be countered by using TCP-AO [RFC5925]. If TCP-AO is used, then | can be countered by using TCP-AO [RFC5925]. If TCP-AO is used, then | |||
| any bogus packets injected by an attacker will be rejected by the | any bogus packets injected by an attacker will be rejected by the | |||
| TCP-AO integrity check and therefore will never reach the TLS layer. | TCP-AO integrity check and therefore will never reach the TLS layer. | |||
| In order to prevent leaking internal information outside a client- | ||||
| domain, DOTS gateways located in the client-domain SHOULD NOT reveal | ||||
| the identity of internal DOTS clients (client-identifier) unless | ||||
| explicitly configured to do so. | ||||
| Special care should be taken in order to ensure that the activation | Special care should be taken in order to ensure that the activation | |||
| of the proposed mechanism won't have an impact on the stability of | of the proposed mechanism won't have an impact on the stability of | |||
| the network (including connectivity and services delivered over that | the network (including connectivity and services delivered over that | |||
| network). | network). | |||
| Involved functional elements in the cooperation system must establish | Involved functional elements in the cooperation system must establish | |||
| exchange instructions and notification over a secure and | exchange instructions and notification over a secure and | |||
| authenticated channel. Adequate filters can be enforced to avoid | authenticated channel. Adequate filters can be enforced to avoid | |||
| that nodes outside a trusted domain can inject request such as | that nodes outside a trusted domain can inject request such as | |||
| deleting filtering rules. Nevertheless, attacks can be initiated | deleting filtering rules. Nevertheless, attacks can be initiated | |||
| skipping to change at page 48, line 45 ¶ | skipping to change at page 53, line 19 ¶ | |||
| Mike Geller Cisco Systems, Inc. 3250 Florida 33309 USA Email: | Mike Geller Cisco Systems, Inc. 3250 Florida 33309 USA Email: | |||
| mgeller@cisco.com | mgeller@cisco.com | |||
| Robert Moskowitz HTT Consulting Oak Park, MI 42837 United States | Robert Moskowitz HTT Consulting Oak Park, MI 42837 United States | |||
| Email: rgm@htt-consult.com | Email: rgm@htt-consult.com | |||
| Dan Wing Email: dwing-ietf@fuggles.com | Dan Wing Email: dwing-ietf@fuggles.com | |||
| 14. Acknowledgements | 14. Acknowledgements | |||
| Thanks to Christian Jacquenet, Roland Dobbins, Andrew Mortensen, | Thanks to Christian Jacquenet, Roland Dobbins, Roman D. Danyliw, | |||
| Roman D. Danyliw, Michael Richardson, Ehud Doron, Kaname Nishizuka, | Michael Richardson, Ehud Doron, Kaname Nishizuka, Dave Dolson, Liang | |||
| Dave Dolson, Liang Xia, Jon Shallow, and Gilbert Clark for the | Xia, Jon Shallow, and Gilbert Clark for the discussion and comments. | |||
| discussion and comments. | ||||
| 15. References | 15. References | |||
| 15.1. Normative References | 15.1. Normative References | |||
| [I-D.ietf-core-coap-tcp-tls] | [I-D.ietf-core-coap-tcp-tls] | |||
| Bormann, C., Lemay, S., Tschofenig, H., Hartke, K., | Bormann, C., Lemay, S., Tschofenig, H., Hartke, K., | |||
| Silverajan, B., and B. Raymor, "CoAP (Constrained | Silverajan, B., and B. Raymor, "CoAP (Constrained | |||
| Application Protocol) over TCP, TLS, and WebSockets", | Application Protocol) over TCP, TLS, and WebSockets", | |||
| draft-ietf-core-coap-tcp-tls-09 (work in progress), May | draft-ietf-core-coap-tcp-tls-09 (work in progress), May | |||
| skipping to change at page 49, line 30 ¶ | skipping to change at page 53, line 48 ¶ | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
| <https://www.rfc-editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
| [RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP | [RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP | |||
| Authentication Option", RFC 5925, DOI 10.17487/RFC5925, | Authentication Option", RFC 5925, DOI 10.17487/RFC5925, | |||
| June 2010, <https://www.rfc-editor.org/info/rfc5925>. | June 2010, <https://www.rfc-editor.org/info/rfc5925>. | |||
| [RFC6234] Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms | ||||
| (SHA and SHA-based HMAC and HKDF)", RFC 6234, | ||||
| DOI 10.17487/RFC6234, May 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6234>. | ||||
| [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
| Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, | |||
| January 2012, <https://www.rfc-editor.org/info/rfc6347>. | January 2012, <https://www.rfc-editor.org/info/rfc6347>. | |||
| [RFC7250] Wouters, P., Ed., Tschofenig, H., Ed., Gilmore, J., | [RFC7250] Wouters, P., Ed., Tschofenig, H., Ed., Gilmore, J., | |||
| Weiler, S., and T. Kivinen, "Using Raw Public Keys in | Weiler, S., and T. Kivinen, "Using Raw Public Keys in | |||
| Transport Layer Security (TLS) and Datagram Transport | Transport Layer Security (TLS) and Datagram Transport | |||
| Layer Security (DTLS)", RFC 7250, DOI 10.17487/RFC7250, | Layer Security (DTLS)", RFC 7250, DOI 10.17487/RFC7250, | |||
| June 2014, <https://www.rfc-editor.org/info/rfc7250>. | June 2014, <https://www.rfc-editor.org/info/rfc7250>. | |||
| skipping to change at page 50, line 34 ¶ | skipping to change at page 55, line 9 ¶ | |||
| 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-04 (work in progress), July 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-03 (work in progress), August 2017. | ietf-dots-data-channel-04 (work in progress), October | |||
| 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 | |||
| skipping to change at page 51, line 29 ¶ | skipping to change at page 56, line 5 ¶ | |||
| [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 | ||||
| Translation (NAT) Behavioral Requirements for Unicast | ||||
| UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January | ||||
| 2007, <https://www.rfc-editor.org/info/rfc4787>. | ||||
| [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 | |||
| End of changes. 90 change blocks. | ||||
| 311 lines changed or deleted | 515 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/ | ||||