| < draft-reddy-dots-transport-05.txt | draft-reddy-dots-transport-06.txt > | |||
|---|---|---|---|---|
| DOTS T. Reddy | DOTS T. Reddy | |||
| Internet-Draft D. Wing | Internet-Draft D. Wing | |||
| Intended status: Standards Track P. Patil | Intended status: Standards Track P. Patil | |||
| Expires: January 7, 2017 M. Geller | Expires: February 9, 2017 M. Geller | |||
| Cisco | Cisco | |||
| M. Boucadair | M. Boucadair | |||
| Orange | Orange | |||
| R. Moskowitz | August 8, 2016 | |||
| HTT Consulting | ||||
| July 6, 2016 | ||||
| Co-operative DDoS Mitigation | Co-operative DDoS Mitigation | |||
| draft-reddy-dots-transport-05 | draft-reddy-dots-transport-06 | |||
| Abstract | Abstract | |||
| This document specifies a mechanism that a DOTS client can use to | This document specifies a mechanism that a DOTS client can use to | |||
| signal that a network is under a Distributed Denial-of-Service (DDoS) | signal that a network is under a Distributed Denial-of-Service (DDoS) | |||
| attack to an upstream DOTS server so that appropriate mitigation | attack to an upstream DOTS server so that appropriate mitigation | |||
| actions are undertaken (including, blackhole, drop, rate-limit, or | actions are undertaken (including, blackhole, drop, rate-limit, or | |||
| add to watch list) on the suspect traffic. The document specifies | add to watch list) on the suspect traffic. The document specifies | |||
| both DOTS signal and data channels. Happy Eyeballs considerations | both DOTS signal and data channels. Happy Eyeballs considerations | |||
| for the DOTS signal channel are also elaborated. | for the DOTS signal channel are also elaborated. | |||
| skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 40 ¶ | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 January 7, 2017. | This Internet-Draft will expire on February 9, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 3 | 2. Notational Conventions and Terminology . . . . . . . . . . . 3 | |||
| 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Solution Overview . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Happy Eyeballs for DOTS Signal Channel . . . . . . . . . . . 6 | 4. Happy Eyeballs for DOTS Signal Channel . . . . . . . . . . . 5 | |||
| 5. DOTS Signal Channel . . . . . . . . . . . . . . . . . . . . . 7 | 5. DOTS Signal Channel . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5.2. Mitigation Service Requests . . . . . . . . . . . . . . . 8 | 5.2. Mitigation Service Requests . . . . . . . . . . . . . . . 7 | |||
| 5.2.1. Convey DOTS Signals . . . . . . . . . . . . . . . . . 9 | 5.2.1. Convey DOTS Signals . . . . . . . . . . . . . . . . . 8 | |||
| 5.2.2. Withdraw a DOTS Signal . . . . . . . . . . . . . . . 11 | 5.2.2. Withdraw a DOTS Signal . . . . . . . . . . . . . . . 11 | |||
| 5.2.3. Retrieving a DOTS Signal . . . . . . . . . . . . . . 12 | 5.2.3. Retrieving a DOTS Signal . . . . . . . . . . . . . . 12 | |||
| 5.2.4. Efficacy Update from DOTS Client . . . . . . . . . . 15 | 5.2.4. Efficacy Update from DOTS Client . . . . . . . . . . 16 | |||
| 6. DOTS Data Channel . . . . . . . . . . . . . . . . . . . . . . 15 | 6. DOTS Data Channel . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6.1. Filtering Rules . . . . . . . . . . . . . . . . . . . . . 16 | 6.1. Filtering Rules . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 6.1.1. Install Filtering Rules . . . . . . . . . . . . . . . 16 | 6.1.1. Install Filtering Rules . . . . . . . . . . . . . . . 18 | |||
| 6.1.2. Remove Filtering Rules . . . . . . . . . . . . . . . 18 | 6.1.2. Remove Filtering Rules . . . . . . . . . . . . . . . 20 | |||
| 6.1.3. Retrieving Installed Filtering Rules . . . . . . . . 18 | 6.1.3. Retrieving Installed Filtering Rules . . . . . . . . 20 | |||
| 7. (D)TLS Protocol Profile and Performance considerations . . . 19 | 7. (D)TLS Protocol Profile and Performance considerations . . . 22 | |||
| 8. Mutual Authentication of DOTS Agents & Authorization of DOTS | 8. Mutual Authentication of DOTS Agents & Authorization of DOTS | |||
| Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 23 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 26 | |||
| Appendix A. BGP . . . . . . . . . . . . . . . . . . . . . . . . 25 | 13.2. Informative References . . . . . . . . . . . . . . . . . 27 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 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 client, a router, a firewall, or an entire network, etc. | server, a client, a router, a firewall, or an entire network, etc. | |||
| skipping to change at page 3, line 28 ¶ | skipping to change at page 3, line 25 ¶ | |||
| various vendors that are deployed within the same network, some of | various vendors that are deployed within the same network, some of | |||
| them are responsible for monitoring and detecting attacks while | them are responsible for monitoring and detecting attacks while | |||
| others are responsible for enforcing policies on appropriate network | others are responsible for enforcing policies on appropriate network | |||
| elements. This cooperations contributes to a ensure a highly | elements. This cooperations contributes to a ensure a highly | |||
| automated network that is also robust, reliable and secure. The | automated network that is also robust, reliable and secure. The | |||
| advantage of this mechanism is that the DOTS server can provide | advantage of this mechanism is that the DOTS server can provide | |||
| protection to the DOTS client from bandwidth-saturating DDoS traffic. | protection to the DOTS client from bandwidth-saturating DDoS traffic. | |||
| How a Mitigator determines which network elements should be modified | How a Mitigator determines which network elements should be modified | |||
| to install appropriate filtering rules is out of scope. A variety of | to install appropriate filtering rules is out of scope. A variety of | |||
| mechanisms and protocols (including NETCONF) may be considered to | mechanisms and protocols (including NETCONF [RFC6241]) may be | |||
| exchange information through a communication interface between the | considered to exchange information through a communication interface | |||
| server and these underlying elements; the selection of appropriate | between the server and these underlying elements; the selection of | |||
| mechanisms and protocols to be invoked for that interfaces is | appropriate mechanisms and protocols to be invoked for that | |||
| deployment-specific. | interfaces is deployment-specific. | |||
| Terminology and protocol requirements for co-operative DDoS | Terminology and protocol requirements for co-operative DDoS | |||
| mitigation are obtained from [I-D.ietf-dots-requirements]. | mitigation are obtained from DOTS requirements | |||
| [I-D.ietf-dots-requirements]. This document satisfies all the use | ||||
| cases discussed in [I-D.ietf-dots-use-cases] except the Third-party | ||||
| DOTS notifications use case in Section 3.2.3 of | ||||
| [I-D.ietf-dots-use-cases] which is an optional feature and not a core | ||||
| use case. Third-party DOTS notifications are not part of the DOTS | ||||
| requirements document and the DOTS architecture | ||||
| [I-D.ietf-dots-architecture] does not assess whether that use case | ||||
| may have an impact on the architecture itself and/or trust model. | ||||
| 2. Notational Conventions | 2. Notational Conventions and Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| (D)TLS: For brevity this term is used for statements that apply to | ||||
| both Transport Layer Security [RFC5246] and Datagram Transport Layer | ||||
| Security [RFC6347]. Specific terms will be used for any statement | ||||
| that applies to either protocol alone. | ||||
| 3. Solution Overview | 3. Solution Overview | |||
| Network applications have finite resources like CPU cycles, number of | Network applications have finite resources like CPU cycles, number of | |||
| processes or threads they can create and use, maximum number of | processes or threads they can create and use, maximum number of | |||
| simultaneous connections it can handle, limited resources of the | simultaneous connections it can handle, limited resources of the | |||
| control plane, etc. When processing network traffic, such an | control plane, etc. When processing network traffic, such an | |||
| application uses these resources to offer its intended task in the | application uses these resources to offer its intended task in the | |||
| most efficient fashion. However, an attacker may be able to prevent | most efficient fashion. However, an attacker may be able to prevent | |||
| the application from performing its intended task by causing the | the application from performing its intended task by causing the | |||
| application to exhaust the finite supply of a specific resource. | application to exhaust the finite supply of a specific resource. | |||
| skipping to change at page 4, line 15 ¶ | skipping to change at page 4, line 26 ¶ | |||
| TCP DDoS SYN-flood, for example, is a memory-exhaustion attack on the | TCP DDoS SYN-flood, for example, is a memory-exhaustion attack on the | |||
| victim and ACK-flood is a CPU exhaustion attack on the victim | victim and ACK-flood is a CPU exhaustion attack on the victim | |||
| ([RFC4987]). Attacks on the link are carried out by sending enough | ([RFC4987]). Attacks on the link are carried out by sending enough | |||
| traffic such that the link becomes excessively congested, and | traffic such that the link becomes excessively congested, and | |||
| legitimate traffic suffers high packet loss. Stateful firewalls can | legitimate traffic suffers high packet loss. Stateful firewalls can | |||
| also be attacked by sending traffic that causes the firewall to hold | also be attacked by sending traffic that causes the firewall to hold | |||
| excessive state and the firewall runs out of memory, and can no | excessive state and the firewall runs out of memory, and can no | |||
| longer instantiate the state required to pass legitimate flows. | longer instantiate the state required to pass legitimate flows. | |||
| Other possible DDoS attacks are discussed in [RFC4732]. | Other possible DDoS attacks are discussed in [RFC4732]. | |||
| In each of the cases described above, some of the possible | In each of the cases described above, the possible arrangements | |||
| arrangements to mitigate the attack are: | between the DOTS client and DOTS server to mitigate the attack are | |||
| discussed in [I-D.ietf-dots-use-cases]. An example of network | ||||
| o If a DOTS client determines it is under an attack, the DOTS client | diagram showing a deployment of these elements is shown in Figure 1. | |||
| can notify the DOTS server using the DOTS signal that it is under | Architectural relationship between DOTS agents is explained in | |||
| a potential attack and request that the DOTS server take | [I-D.ietf-dots-architecture]. In this example, the DOTS server is | |||
| precautionary measures to mitigate the attack. The DOTS server | operating on the access network. | |||
| can enable mitigation on behalf of the DOTS client by | ||||
| communicating the DOTS client's request to the mitigator and | ||||
| relaying any mitigator feedback to the requesting DOTS client. | ||||
| o If a DOTS client determines it is under an attack, the DOTS client | ||||
| can notify its servicing router (DOTS gateway) using the DOTS | ||||
| signal that it is under a potential attack and request that the | ||||
| DOTS gateway take precautionary measures to mitigate the attack. | ||||
| The DOTS gateway propagates the DOTS signal to a DOTS server. | ||||
| The DOTS server can enable mitigation on behalf of the DOTS | ||||
| gateway by communicating the DOTS gateway's request to the | ||||
| mitigator and relaying any mitigator feedback to the DOTS gateway | ||||
| which in turn propagates the feedback to the requesting DOTS | ||||
| client. | ||||
| The DOTS client must authenticate itself to the DOTS gateway, | ||||
| which in turn authenticates itself to a DOTS server, creating a | ||||
| two-link chain of transitive authentication between the DOTS | ||||
| client and the DOTS server (Section 8). | ||||
| o If a network resource detects a potential DDoS attack from a set | ||||
| of IP addresses, the network resource (DOTS client) informs its | ||||
| servicing router (DOTS gateway) of all suspect IP addresses that | ||||
| need to be blocked or black-listed for further investigation. | ||||
| The DOTS client could also specify a list of protocols and ports | ||||
| in the black-list rule. That DOTS gateway in-turn propagates the | ||||
| black-listed IP addresses to the DOTS server and the DOTS server | ||||
| blocks traffic from these IP addresses to the DOTS client thus | ||||
| reducing the effectiveness of the attack. | ||||
| The DOTS client periodically queries the DOTS server to check the | ||||
| counters mitigating the attack. If the DOTS client receives a | ||||
| response that the counters have not incremented then it can | ||||
| instruct the black-list rules to be removed. If a blacklisted | ||||
| IPv4 address is shared by multiple subscribers, then the side | ||||
| effect of applying the black-list rule will be that traffic from | ||||
| non-attackers will also be blocked by the access network | ||||
| [RFC6269]. | ||||
| An example of network diagram showing a deployment of these elements | ||||
| is shown in Figure 1. In this example, the DOTS server operating on | ||||
| the access network. | ||||
| Network | Network | |||
| Resource CPE router Access network __________ | Resource CPE router Access network __________ | |||
| +-----------+ +--------------+ +-------------+ / \ | +-----------+ +--------------+ +-------------+ / \ | |||
| | |____| |_______| |___ | Internet | | | |____| |_______| |___ | Internet | | |||
| |DOTS client| | DOTS gateway | | DOTS server | | | | |DOTS client| | DOTS gateway | | DOTS server | | | | |||
| | | | | | | | | | | | | | | | | | | |||
| +-----------+ +--------------+ +-------------+ \__________/ | +-----------+ +--------------+ +-------------+ \__________/ | |||
| Figure 1 | Figure 1 | |||
| skipping to change at page 6, line 10 ¶ | skipping to change at page 5, line 32 ¶ | |||
| The DOTS server may (not) be co-located with the DOTS mitigator. In | The DOTS server may (not) be co-located with the DOTS mitigator. In | |||
| typical deployments, the DOTS server belongs to the same | typical deployments, the DOTS server belongs to the same | |||
| administrative domain as the mitigator. | administrative domain as the mitigator. | |||
| The DOTS client can communicate directly with the DOTS server or | The DOTS client can communicate directly with the DOTS server or | |||
| indirectly with the DOTS server via a DOTS gateway. | indirectly with the DOTS server via a DOTS gateway. | |||
| 4. Happy Eyeballs for DOTS Signal Channel | 4. Happy Eyeballs for DOTS Signal Channel | |||
| DOTS signaling can happen with DTLS over UDP and TLS over TCP. A | DOTS signaling can happen with DTLS [RFC6347] over UDP and TLS | |||
| DOTS client can use DNS to determine the IP address(es) of a DOTS | [RFC5246] over TCP. A DOTS client can use DNS to determine the IP | |||
| server or a DOTS client may be provided with the list of DOTS server | address(es) of a DOTS server or a DOTS client may be provided with | |||
| IP addresses. The DOTS client must know a DOTS server's domain name; | the list of DOTS server IP addresses. The DOTS client MUST know a | |||
| hard-coding the domain name of the DOTS server into software is NOT | DOTS server's domain name; hard-coding the domain name of the DOTS | |||
| RECOMMENDED in case the domain name is not valid or needs to change | server into software is NOT RECOMMENDED in case the domain name is | |||
| for legal or other reasons. The DOTS client performs A and/or AAAA | not valid or needs to change for legal or other reasons. The DOTS | |||
| record lookup of the domain name and the result will be a list of IP | client performs A and/or AAAA record lookup of the domain name and | |||
| addresses, each of which can be used to contact the DOTS server using | the result will be a list of IP addresses, each of which can be used | |||
| UDP and TCP. | to contact the DOTS server using UDP and TCP. | |||
| If an IPv4 path to reach a DOTS server is found, but the DOTS | If an IPv4 path to reach a DOTS server is found, but the DOTS | |||
| server's IPv6 path is not working, a dual-stack DOTS client can | server's IPv6 path is not working, a dual-stack DOTS client can | |||
| experience a significant connection delay compared to an IPv4-only | experience a significant connection delay compared to an IPv4-only | |||
| DOTS client. The other problem is that if a middlebox between the | DOTS client. The other problem is that if a middlebox between the | |||
| DOTS client and DOTS server is configured to block UDP, the DOTS | DOTS client and DOTS server is configured to block UDP, the DOTS | |||
| client will fail to establish a DTLS session [RFC6347] with the DOTS | client will fail to establish a DTLS session with the DOTS server and | |||
| server and will, then, have to fall back to TLS over TCP [RFC5246] | will, then, have to fall back to TLS over TCP incurring significant | |||
| incurring significant connection delays. | connection delays. [I-D.ietf-dots-requirements] discusses that DOTS | |||
| [I-D.ietf-dots-requirements] discusses that DOTS client and server | client and server will have to support both connectionless and | |||
| will have to support both connectionless and connection-oriented | connection-oriented protocols. | |||
| protocols. | ||||
| To overcome these connection setup problems, the DOTS client can try | To overcome these connection setup problems, the DOTS client can try | |||
| connecting to the DOTS server using both IPv6 and IPv4, and try both | connecting to the DOTS server using both IPv6 and IPv4, and try both | |||
| DTLS over UDP and TLS over TCP in a fashion similar to the Happy | DTLS over UDP and TLS over TCP in a fashion similar to the Happy | |||
| Eyeballs mechanism [RFC6555]. These connection attempts are | Eyeballs mechanism [RFC6555]. These connection attempts are | |||
| performed by the DOTS client when its initializes, and the client | performed by the DOTS client when its initializes, and the client | |||
| uses that information for its subsequent alert to the DOTS server. | uses that information for its subsequent alert to the DOTS server. | |||
| In order of preference (most preferred first), it is UDP over IPv6, | In order of preference (most preferred first), it is UDP over IPv6, | |||
| UDP over IPv4, TCP over IPv6, and finally TCP over IPv4, which | UDP over IPv4, TCP over IPv6, and finally TCP over IPv4, which | |||
| adheres to address preference order [RFC6724] and the DOTS preference | adheres to address preference order [RFC6724] and the DOTS preference | |||
| skipping to change at page 8, line 20 ¶ | skipping to change at page 7, line 22 ¶ | |||
| | TLS | DTLS | | | TLS | DTLS | | |||
| +--------------+ | +--------------+ | |||
| | TCP | UDP | | | TCP | UDP | | |||
| +--------------+ | +--------------+ | |||
| | IP | | | IP | | |||
| +--------------+ | +--------------+ | |||
| Figure 4: Abstract Layering of DOTS signal channel over CoAP over | Figure 4: Abstract Layering of DOTS signal channel over CoAP over | |||
| (D)TLS | (D)TLS | |||
| JSON [RFC7159] payloads is used to convey signal channel specific | JSON [RFC7159] payloads are used to convey signal channel specific | |||
| payload messages that convey request parameters and response | payload messages that convey request parameters and response | |||
| information such as errors. | information such as errors. | |||
| TBD: Do we want to use CBOR [RFC7049] instead of JSON? | TBD: Do we want to use CBOR [RFC7049] instead of JSON? | |||
| 5.2. Mitigation Service Requests | 5.2. Mitigation Service Requests | |||
| The following APIs define the means to convey a DOTS signal from a | The following APIs define the means to convey a DOTS signal from a | |||
| DOTS client to a DOTS server: | DOTS client to a DOTS server: | |||
| skipping to change at page 9, line 4 ¶ | skipping to change at page 8, line 6 ¶ | |||
| PUT requests: are used by the DOTS client to convey mitigation | PUT requests: are used by the DOTS client to convey mitigation | |||
| efficacy updates to the DOTS server (Section 5.2.4). | efficacy updates to the DOTS server (Section 5.2.4). | |||
| Reliability is provided to the POST, DELETE, GET, and PUT requests by | Reliability is provided to the POST, DELETE, GET, and PUT requests by | |||
| marking them as Confirmable (CON) messages. As explained in | marking them as Confirmable (CON) messages. As explained in | |||
| Section 2.1 of [RFC7252], a Confirmable message is retransmitted | Section 2.1 of [RFC7252], a Confirmable message is retransmitted | |||
| using a default timeout and exponential back-off between | using a default timeout and exponential back-off between | |||
| retransmissions, until the DOTS server sends an Acknowledgement | retransmissions, until the DOTS server sends an Acknowledgement | |||
| message (ACK) with the same Message ID conveyed from the DOTS client. | message (ACK) with the same Message ID conveyed from the DOTS client. | |||
| Message transmission parameters are defined in Section 4.8 of | ||||
| [RFC7252]. Reliablity is provided to the responses by marking them | ||||
| as Confirmable (CON) messages. The DOTS server can either piggback | ||||
| the response in the acknowledgement message or if the DOTS server is | ||||
| not able to respond immediately to a request carried in a Confirmable | ||||
| message, it simply responds with an Empty Acknowledgement message so | ||||
| that the DOTS client can stop retransmitting the request. Empty | ||||
| Acknowledgement message is explained in Section 2.2 of [RFC7252]. | ||||
| When the response is ready, the server sends it in a new Confirmable | ||||
| message which then in turn needs to be acknowledged by the DOTS | ||||
| client (see Sections 5.2.1 and Sections 5.2.2 in [RFC7252]). | ||||
| TBD: Do we want any of the above requests to be Non-confirmable ? | Implementation Note: A DOTS client that receives a response in a CON | |||
| message may want to clean up the message state right after sending | ||||
| the ACK. If that ACK is lost and the DOTS server retransmits the | ||||
| CON, the DOTS client may no longer have any state to which to | ||||
| correlate this response, making the retransmission an unexpected | ||||
| message; the DOTS client will send a Reset message so it does not | ||||
| receive any more retransmissions. This behavior is normal and not an | ||||
| indication of an error (see Section 5.3.2 in [RFC7252] for more | ||||
| details). | ||||
| 5.2.1. Convey DOTS Signals | 5.2.1. Convey DOTS Signals | |||
| A POST request is used to convey a DOTS signal to the DOTS server | When suffering an attack and desiring DoS/DDoS mitigation, a DOTS | |||
| (Figure 5). | signal is sent by the DOTS client to the DOTS server. A POST request | |||
| is used to convey a DOTS signal to the DOTS server (Figure 5). The | ||||
| DOTS server can enable mitigation on behalf of the DOTS client by | ||||
| communicating the DOTS client's request to the mitigator and relaying | ||||
| any mitigator feedback to the requesting DOTS client. | ||||
| POST {scheme}://{host}:{port}/.well-known/{version}/{URI suffix for DOTS signal} | Header: POST (Code=0.02) | |||
| Accept: application/json | Uri-Host: "host" | |||
| Content-Format: application/json | Uri-Path: ".well-known" | |||
| { | Uri-Path: "DOTS-signal" | |||
| "policy-id": "number", | Uri-Path: "version" | |||
| "target-ip": "string", | Content-Type: "application/json" | |||
| "target-port": "string", | { | |||
| "target-protocol": "string", | "policy-id": "integer", | |||
| "lifetime": "number" | "target-ip": "string", | |||
| } | "target-port": "string", | |||
| "target-protocol": "string", | ||||
| "lifetime": "number" | ||||
| } | ||||
| Figure 5: POST to convey DOTS signals | Figure 5: POST to convey DOTS signals | |||
| The header fields are described below. | The header fields are described below. | |||
| policy-id: Identifier of the policy represented using a number. | policy-id: Identifier of the policy represented using a integer. | |||
| This identifier MUST be unique for each policy bound to the DOTS | This identifier MUST be unique for each policy bound to the DOTS | |||
| client, i.e. ,the policy-id needs to be unique relative to the | client, i.e. ,the policy-id needs to be unique relative to the | |||
| active policies with the DOTS server. This identifier must be | active policies with the DOTS server. This identifier must be | |||
| generated by the DOTS client. This document does not make any | generated by the DOTS client. This document does not make any | |||
| assumption about how this identifier is generated. This is a | assumption about how this identifier is generated. This is a | |||
| mandatory attribute. | mandatory attribute. | |||
| target-ip: A list of IP addresses or prefixes under attack. This is | target-ip: A list of IP addresses or prefixes under attack. IP | |||
| an optional attribute. | addresses and prefixes are separated by commas. Prefixes are | |||
| represented using CIDR notation [RFC4632]. This is an optional | ||||
| attribute. | ||||
| target-port: A list of ports under attack. This is an optional | target-port: A list of ports under attack. Ports are seperated by | |||
| commas and port number range (using "-"). For TCP, UDP, SCTP, or | ||||
| DCCP: the range of ports (e.g., 1024-65535). This is an optional | ||||
| attribute. | attribute. | |||
| target-protocol: A list of protocols under attack. Valid protocol | target-protocol: A list of protocols under attack. Valid protocol | |||
| values include tcp, udp, sctp, and dccp. This is an optional | values include tcp, udp, sctp, and dccp. Protocol values are | |||
| attribute. | seperated by commas. This is an optional attribute. | |||
| lifetime: Lifetime of the mitigation request policy in seconds. | lifetime: Lifetime of the mitigation request policy in seconds. | |||
| Upon the expiry of this lifetime, and if the request is not | Upon the expiry of this lifetime, and if the request is not | |||
| refreshed, the mitigation request is removed. The request can be | refreshed, the mitigation request is removed. The request can be | |||
| refreshed by sending the same request again. The default lifetime | refreshed by sending the same request again. The default lifetime | |||
| of the policy is 60 minutes -- this value was chosen to be long | of the policy is 60 minutes -- this value was chosen to be long | |||
| enough so that refreshing is not typically a burden on the DOTS | enough so that refreshing is not typically a burden on the DOTS | |||
| client, while expiring the policy where the client has | client, while expiring the policy where the client has | |||
| unexpectedly quit in a timely manner. A lifetime of zero | unexpectedly quit in a timely manner. A lifetime of zero | |||
| indicates indefinite lifetime for the mitigation request. The | indicates indefinite lifetime for the mitigation request. The | |||
| server MUST always indicate the actual lifetime in the response. | server MUST always indicate the actual lifetime in the response. | |||
| This is an optional attribute in the request. | This is an optional attribute in the request. | |||
| The relative order of two rules is determined by comparing their | The relative order of two rules is determined by comparing their | |||
| respective policy identifiers. The rule with lower numeric policy | respective policy identifiers. The rule with lower numeric policy | |||
| identifier value has higher precedence (and thus will match before) | identifier value has higher precedence (and thus will match before) | |||
| than the rule with higher numeric policy identifier value. | than the rule with higher numeric policy identifier value. | |||
| If the DOTS server is not able to respond immediately to a POST | ||||
| request carried in a Confirmable message, it simply responds with an | ||||
| Empty Acknowledgement message so that the DOTS client can stop | ||||
| retransmitting the request. When the response is ready, the server | ||||
| sends it in a new Confirmable message which then in turn needs to be | ||||
| acknowledged by the DOTS client (see Sections 5.2.1 and Sections | ||||
| 5.2.2 in [RFC7252]). | ||||
| To avoid DOTS signal message fragmentation and the consequently | To avoid DOTS signal message fragmentation and the consequently | |||
| decreased probability of message delivery, DOTS agents MUST ensure | decreased probability of message delivery, DOTS agents MUST ensure | |||
| that the DTLS record MUST fit within a single datagram. If the Path | that the DTLS record MUST fit within a single datagram. If the Path | |||
| MTU is not known to the DOTS server, an IP MTU of 1280 bytes SHOULD | MTU is not known to the DOTS server, an IP MTU of 1280 bytes SHOULD | |||
| be assumed. The length of the URL MUST NOT exceed 256 bytes. If UDP | be assumed. The length of the URL MUST NOT exceed 256 bytes. If UDP | |||
| is used to convey the DOTS signal and the request size exceeds the | is used to convey the DOTS signal and the request size exceeds the | |||
| Path MTU then the DOTS client MUST split the DOTS signal into | Path MTU then the DOTS client MUST split the DOTS signal into | |||
| separate messages, for example the list of addresses in the 'target- | separate messages, for example the list of addresses in the 'target- | |||
| ip' field could be split into multiple lists and each list conveyed | ip' field could be split into multiple lists and each list conveyed | |||
| in a new POST request. | in a new POST request. | |||
| skipping to change at page 11, line 5 ¶ | skipping to change at page 11, line 5 ¶ | |||
| consideration and path MTU is unknown, implementations may want to | consideration and path MTU is unknown, implementations may want to | |||
| limit themselves to more conservative IPv4 datagram sizes such as 576 | limit themselves to more conservative IPv4 datagram sizes such as 576 | |||
| bytes, as per [RFC0791] IP packets up to 576 bytes should never need | bytes, as per [RFC0791] IP packets up to 576 bytes should never need | |||
| to be fragmented, thus sending a maximum of 500 bytes of DOTS signal | to be fragmented, thus sending a maximum of 500 bytes of DOTS signal | |||
| over a UDP datagram will generally avoid IP fragmentation. | over a UDP datagram will generally avoid IP fragmentation. | |||
| Figure 6 shows a POST request to signal that ports 80, 8080, and 443 | Figure 6 shows a POST request to signal that ports 80, 8080, and 443 | |||
| on the servers 2002:db8:6401::1 and 2002:db8:6401::2 are being | on the servers 2002:db8:6401::1 and 2002:db8:6401::2 are being | |||
| attacked. | attacked. | |||
| POST coaps://www.example.com/.well-known/v1/DOTS signal | Header: POST (Code=0.02) | |||
| Accept: application/json | Uri-Host: "www.example.com" | |||
| Content-Format: application/json | Uri-Path: ".well-known" | |||
| Uri-Path: "v1" | ||||
| Uri-Path: "DOTS-signal" | ||||
| Content-Type: "application/json" | ||||
| { | { | |||
| "policy-id":123321333242, | "policy-id":123321333242, | |||
| "target-ip":[ | "target-ip":[ | |||
| "2002:db8:6401::1", | "2002:db8:6401::1", | |||
| "2002:db8:6401::2" | "2002:db8:6401::2" | |||
| ], | ], | |||
| "target-port":[ | "target-port":[ | |||
| "80", | "80", | |||
| "8080", | "8080", | |||
| "443" | "443" | |||
| ], | ], | |||
| "target-protocol":"tcp" | "target-protocol":"tcp" | |||
| } | } | |||
| Figure 6: POST for DOTS signal | Figure 6: POST for DOTS signal | |||
| The DOTS server indicates the result of processing the POST request | The DOTS server indicates the result of processing the POST request | |||
| using CoAP response codes. CoAP 2xx codes are success, CoAP 4xx | using CoAP response codes. CoAP 2xx codes are success, CoAP 4xx | |||
| codes are some sort of invalid request and 5xx codes are returned if | codes are some sort of invalid request and 5xx codes are returned if | |||
| the DOTS server has erred or is incapable of performing the | the DOTS server has erred or is incapable of performing the | |||
| mitigation. Response code 2.01 (Created) will be returned in the | mitigation. Response code 2.01 (Created) will be returned in the | |||
| response if the DOTS server has accepted the mitigation request and | response if the DOTS server has accepted the mitigation request and | |||
| will try to mitigate the attack. If the request is missing one or | will try to mitigate the attack. If the request is missing one or | |||
| more mandatory attributes then 4.00 (Bad Request) will be returned in | more mandatory attributes then 4.00 (Bad Request) will be returned in | |||
| the response or if the request contains invalid or unknown parameters | the response or if the request contains invalid or unknown parameters | |||
| then 4.02 (Invalid query) will be returned in the response. The CoAP | then 4.02 (Invalid query) will be returned in the response. The CoAP | |||
| response will include the JSON body received in the request. | response will include the JSON body received in the request. | |||
| 5.2.2. Withdraw a DOTS Signal | 5.2.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 7). | (Figure 7). | |||
| DELETE {scheme}://{host}:{port}/.well-known/{URI suffix for DOTS signal} | Header: DELETE (Code=0.04) | |||
| Accept: application/json | Uri-Host: "host" | |||
| Content-Format: application/json | Uri-Path: ".well-known" | |||
| { | Uri-Path: "version" | |||
| "policy-id": "number" | Uri-Path: "DOTS-signal" | |||
| } | Content-Type: "application/json" | |||
| { | ||||
| "policy-id": "number" | ||||
| } | ||||
| Figure 7: Withdraw DOTS signal | Figure 7: Withdraw DOTS signal | |||
| If the DOTS server does not find the policy number conveyed in the | If the DOTS server does not find the policy number conveyed in the | |||
| DELETE request in its policy state data, then it responds with a 4.04 | DELETE request in its policy state data, then it responds with a 4.04 | |||
| (Not Found) error response code. The DOTS server successfully | (Not Found) error response code. The DOTS server successfully | |||
| acknowledges a DOTS client's request to withdraw the DOTS signal | acknowledges a DOTS client's request to withdraw the DOTS signal | |||
| using 2.02 (Deleted) response code, and ceases mitigation activity as | using 2.02 (Deleted) response code, and ceases mitigation activity as | |||
| quickly as possible. | quickly as possible. | |||
| 5.2.3. Retrieving a DOTS Signal | 5.2.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 and status of a DOTS | |||
| signal from a DOTS server (Figure 8). If the DOTS server does not | signal from a DOTS server (Figure 8). If the DOTS server does not | |||
| find the policy number conveyed in the GET request in its policy | find the policy number conveyed in the GET request in its policy | |||
| state data, then it responds with a 4.04 (Not Found) error response | state data, then it responds with a 4.04 (Not Found) error response | |||
| code. | code. | |||
| 1) To retrieve all DOTS signals signaled by the DOTS client. | 1) To retrieve all DOTS signals signaled by the DOTS client. | |||
| GET {scheme}://{host}:{port}/.well-known/{URI suffix for DOTS signal}/list | Header: GET (Code=0.01) | |||
| Observe : 0 | Uri-Host: "host" | |||
| Uri-Path: ".well-known" | ||||
| Uri-Path: "version" | ||||
| Uri-Path: "DOTS-signal" | ||||
| Uri-Path: "list" | ||||
| Observe : 0 | ||||
| 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 policy information in the response will be formatted in the | The policy information 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. | |||
| GET {scheme}://{host}:{port}/.well-known/{URI suffix for DOTS signal}/<policy-id number> | Header: GET (Code=0.01) | |||
| Observe : 0 | Uri-Host: "host" | |||
| Uri-Path: ".well-known" | ||||
| Uri-Path: "version" | ||||
| Uri-Path: "DOTS-signal" | ||||
| Uri-Path: "policy-id value" | ||||
| Observe : 0 | ||||
| Figure 8: GET to retrieve the rules | Figure 8: GET to retrieve the rules | |||
| Figure 9 shows the response of all the active policies on the DOTS | Figure 9 shows the response of all the active policies on the DOTS | |||
| server. | server. | |||
| { | { | |||
| "policy-data":[ | "policy-data":[ | |||
| { | { | |||
| "policy-id":123321333242, | "policy-id":123321333242, | |||
| "target-prtoocol":"tcp", | "target-protocol":"tcp", | |||
| "lifetime":3600, | "lifetime":3600, | |||
| "status":"mitigation in progress" | "status":"mitigation in progress" | |||
| }, | }, | |||
| { | { | |||
| "policy-id":123321333244, | "policy-id":123321333244, | |||
| "target-protocol":"udp", | "target-protocol":"udp", | |||
| "lifetime":1800, | "lifetime":1800, | |||
| "status":"mitigation complete" | "status":"mitigation complete" | |||
| }, | }, | |||
| { | { | |||
| skipping to change at page 13, line 51 ¶ | skipping to change at page 14, line 51 ¶ | |||
| The observe option defined in [RFC7641] extends the CoAP core | The observe option defined in [RFC7641] extends the CoAP core | |||
| protocol with a mechanism for a CoAP client to "observe" a resource | protocol with a mechanism for a CoAP client to "observe" a resource | |||
| on a CoAP server: the client retrieves a representation of the | on a CoAP server: the client retrieves a representation of the | |||
| resource and requests this representation be updated by the server as | resource and requests this representation be updated by the server as | |||
| long as the client is interested in the resource. A DOTS client | long as the client is interested in the resource. A DOTS client | |||
| conveys the observe option set to 0 in the GET request to receive | conveys the observe option set to 0 in the GET request to receive | |||
| unsolicited notifications of attack mitigation status from the DOTS | unsolicited notifications of attack mitigation status from the DOTS | |||
| server. Unidirectional notifications within the bidirectional signal | server. Unidirectional notifications within the bidirectional signal | |||
| channel allows unsolicited message delivery, enabling asynchronous | channel allows unsolicited message delivery, enabling asynchronous | |||
| notifications between the agents. | notifications between the agents. A DOTS client that is no longer | |||
| interested in receiving notifications from the DOTS server can simply | ||||
| "forget" the observation. When the DOTS server then sends the next | ||||
| notification, the DOTS client will not recognize the token in the | ||||
| message and thus will return a Reset message. This causes the DOTS | ||||
| server to remove the associated entry. | ||||
| DOTS Client DOTS Server | DOTS Client DOTS Server | |||
| | | | | | | |||
| | GET /<policy-id number> | | | GET /<policy-id number> | | |||
| | Token: 0x4a | Registration | | Token: 0x4a | Registration | |||
| | Observe: 0 | | | Observe: 0 | | |||
| +-------------------------->| | +-------------------------->| | |||
| | | | | | | |||
| | 2.05 Content | | | 2.05 Content | | |||
| | Token: 0x4a | Notification of | | Token: 0x4a | Notification of | |||
| skipping to change at page 15, line 16 ¶ | skipping to change at page 16, line 16 ¶ | |||
| 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 11) is used to convey the mitigation | server. An PUT request (Figure 11) 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 PUT request MUST include all | |||
| the header fields used in the POST request to convey the DOTS signal | the header fields used in the POST request to convey the DOTS signal | |||
| (Section 5.2.1). If the DOTS server does not find the policy number | (Section 5.2.1). If the DOTS server does not find the policy number | |||
| conveyed in the PUT request in its policy state data, it responds | conveyed in the PUT request in its policy state data, it responds | |||
| with a 4.04 (Not Found) error response code. | with a 4.04 (Not Found) error response code. | |||
| PUT {scheme}://{host}:{port}/.well-known/{URI suffix for DOTS signal}/<policy-id number> | Header: PUT (Code=0.03) | |||
| Accept: application/json | Uri-Host: "host" | |||
| Content-Format: application/json | Uri-Path: ".well-known" | |||
| { | Uri-Path: "version" | |||
| "target-ip": "string", | Uri-Path: "DOTS-signal" | |||
| "target-port": "string", | Uri-Path: "policy-id value" | |||
| "target-protocol": "string", | Content-Type: "application/json" | |||
| "lifetime": "number", | { | |||
| "attack-status": "string" | "target-ip": "string", | |||
| } | "target-port": "string", | |||
| "target-protocol": "string", | ||||
| "lifetime": "number", | ||||
| "attack-status": "string" | ||||
| } | ||||
| Figure 11: Efficacy Update | Figure 11: Efficacy Update | |||
| The 'attack-status' field is a mandatory attribute. The various | The 'attack-status' field is a mandatory attribute. The various | |||
| possible values contained in the 'attack-status' field are explained | possible values contained in the 'attack-status' field are explained | |||
| below: | below: | |||
| in-progress: DOTS client determines that it is still under attack. | in-progress: DOTS client determines that it is still under attack. | |||
| terminated: Attack is successfully mitigated (e.g., attack traffic | terminated: Attack is successfully mitigated (e.g., attack traffic | |||
| is dropped). | is dropped). | |||
| 6. DOTS Data Channel | 6. DOTS Data Channel | |||
| The data channel is intended to be used for bulk data exchanges and | Note: Based on discussions at IETF-96 DOTS implementers meeting, in | |||
| requires a reliable transport, CoAP over TLS over TCP is used for | later revision this section becomes its own stand-alone specification | |||
| data channel. | and will include https://tools.ietf.org/html/draft-nishizuka-dots- | |||
| inter-domain-mechanism-01. | ||||
| The DOTS data channel is intended to be used for bulk data exchanges | ||||
| between DOTS agents. Unlike the signal channel, which must operate | ||||
| nominally even when confronted with despite signal degradation due to | ||||
| packet loss, the data channel is not expected to be constructed to | ||||
| deal with attack conditions. As the primary function of the data | ||||
| channel is data exchange, a reliable transport is required in order | ||||
| for DOTS agents to detect data delivery success or failure. CoAP | ||||
| over TLS over TCP is used for DOTS data channel. | ||||
| +--------------+ | ||||
| | DOTS | | ||||
| +--------------+ | ||||
| | CoAP | | ||||
| +--------------+ | ||||
| | TLS | | ||||
| +--------------+ | ||||
| | TCP | | ||||
| +--------------+ | ||||
| | IP | | ||||
| +--------------+ | ||||
| Figure 12: Abstract Layering of DOTS data channel over CoAP over TLS | ||||
| JSON payloads is used to convey both filtering rules as well as data | JSON payloads is used to convey both filtering rules as well as data | |||
| channel specific payload messages that convey request parameters and | channel specific payload messages that convey request parameters and | |||
| response information such as errors. All data channel URIs defined | response information such as errors. All data channel URIs defined | |||
| in this document, and in subsequent documents, MUST NOT have a URI | in this document, and in subsequent documents, MUST NOT have a URI | |||
| containing "/DOTS signal". | containing "/DOTS-signal". | |||
| One of the possible arrangements for DOTS client to signal filtering | One of the possible arrangements for DOTS client to signal filtering | |||
| rules to a DOTS server via the DOTS gateway is discussed below: | rules to a DOTS server via the DOTS gateway is discussed below: | |||
| The DOTS conveys the black-list rules to the DOTS gateway. The DOTS | The DOTS data channel conveys the filtering rules to the DOTS | |||
| gateway validates if the DOTS client is authorized to signal the | gateway. The DOTS gateway validates if the DOTS client is authorized | |||
| black-list rules and if the client is authorized propagates the rules | to signal the filtering rules and if the client is authorized | |||
| to the DOTS server. Likewise, the DOTS server validates if the DOTS | propagates the rules to the DOTS server. Likewise, the DOTS server | |||
| gateway is authorized to signal the black-list rules. To create or | validates if the DOTS gateway is authorized to signal the filtering | |||
| purge filters, the DOTS client sends CoAP requests to the DOTS | rules. To create or purge filters, the DOTS client sends CoAP | |||
| gateway. The DOTS gateway acts as a proxy, validates the rules and | requests to the DOTS gateway. The DOTS gateway acts as a proxy, | |||
| proxies the requests containing the black-listed IP addresses to a | validates the rules and proxies the requests containing the filtering | |||
| DOTS server. When the DOTS gateway receives the associated CoAP | rules to a DOTS server. When the DOTS gateway receives the | |||
| response from the DOTS server, it propagates the response back to the | associated CoAP response from the DOTS server, it propagates the | |||
| DOTS client. If an attack is detected by the DOTS gateway then it | response back to the DOTS client. | |||
| can act as a DOTS client and signal the black-list rules to the DOTS | ||||
| server. The DOTS gateway plays the role of both client and server. | ||||
| 6.1. Filtering Rules | 6.1. Filtering Rules | |||
| The following APIs define means for a DOTS client to configure | The following APIs define means for a DOTS client to configure | |||
| filtering rules on a DOTS server. | filtering rules on a DOTS server. | |||
| 6.1.1. Install Filtering Rules | 6.1.1. Install Filtering Rules | |||
| An POST request is used to push filtering rules to a DOTS server | An POST request is used to push filtering rules to a DOTS server | |||
| (Figure 12). | (Figure 13). | |||
| POST {scheme}://{host}:{port}/.well-known/{version}/{URI suffix for filtering} | Header: POST (Code=0.02) | |||
| Accept: application/json | Uri-Host: "host" | |||
| Content-Format: application/json | Uri-Path: ".well-known" | |||
| { | Uri-Path: "version" | |||
| "policy-id": "number", | Uri-Path: "DOTS-data-channel" | |||
| "traffic-protocol": "string", | Content-Type: "application/json" | |||
| "source-protocol-port": "string", | { | |||
| "destination-protocol-port": "string", | "policy-id": "integer", | |||
| "destination-ip": "string", | "traffic-protocol": "string", | |||
| "source-ip": "string", | "source-protocol-port": "string", | |||
| "lifetime": "number", | "destination-protocol-port": "string", | |||
| "traffic-rate" : "number" | "destination-ip": "string", | |||
| } | "source-ip": "string", | |||
| "lifetime": "number", | ||||
| "traffic-rate" : "number" | ||||
| } | ||||
| Figure 12: POST to install filtering rules | Figure 13: POST to install filtering rules | |||
| The header fields are described below: | The header fields are described below: | |||
| policy-id: Identifier of the policy represented using a number. | policy-id: Identifier of the policy represented using a integer. | |||
| This identifier MUST be unique for each policy bound to the DOTS | This identifier MUST be unique for each policy bound to the DOTS | |||
| client, i.e., the policy-id needs to be unique relative to the | client, i.e., the policy-id needs to be unique relative to the | |||
| active policies with the DOTS server. This identifier must be | active policies with the DOTS server. This identifier must be | |||
| generated by the client. This document does not make any | generated by the client. This document does not make any | |||
| assumption about how this identifier is generated. This is an | assumption about how this identifier is generated. This is an | |||
| mandatory attribute. | mandatory attribute. | |||
| traffic-protocol: Valid protocol values include tcp, udp, sctp, and | traffic-protocol: Valid protocol values include tcp, udp, sctp, and | |||
| dccp. This is an mandatory attribute. | dccp. Protocol values are seperated by commas (e.g. "tcp, udp"). | |||
| This is an mandatory attribute. | ||||
| source-protocol-port: The source port number, port number range | source-protocol-port: The source port number. Ports are seperated | |||
| (using "-"). For TCP, UDP, SCTP, or DCCP: the source range of | by commas and port number range (using "-"). For TCP, UDP, SCTP, | |||
| ports (e.g., 1024-65535). This is an optional attribute. | or DCCP: the source range of ports (e.g., 1024-65535). This is an | |||
| optional attribute. | ||||
| destination-protocol-port: The destination port number, port number | destination-protocol-port: The destination port number. Ports are | |||
| range (using "-"). For TCP, UDP, SCTP, or DCCP: the destination | seperated by commas and port number range (using "-"). For TCP, | |||
| range of ports (e.g., 443-443). This information is useful to | UDP, SCTP, or DCCP: the destination range of ports (e.g., | |||
| avoid disturbing a group of customers when address sharing is in | 443-443). This information is useful to avoid disturbing a group | |||
| use [RFC6269]. This is an optional attribute. | of customers when address sharing is in use [RFC6269]. This is an | |||
| optional attribute. | ||||
| destination-ip: The destination IP address, IP addresses separated | destination-ip: The destination IP address or prefix. IP addresses | |||
| by commas, or prefixes using "/" notation. This is an optional | and prefixes are separated by commas. Prefixes are represented | |||
| attribute. | using CIDR notation. This is an optional attribute. | |||
| source-ip: The source IP addresses, IP addresses separated by | source-ip: The source IP addresses or prefix. IP addresses and | |||
| commas, or prefixes using "/" notation. This is an optional | prefixes are separated by commas. Prefixes are represented using | |||
| attribute. | CIDR notation. This is an optional attribute. | |||
| lifetime: Lifetime of the rule in seconds. Upon the expiry of this | lifetime: Lifetime of the rule in seconds. Upon the expiry of this | |||
| lifetime, and if the request is not refreshed, this particular | lifetime, and if the request is not refreshed, this particular | |||
| rule is removed. The rule can be refreshed by sending the same | rule is removed. The rule can be refreshed by sending the same | |||
| message again. The default lifetime of the rule is 60 minutes -- | message again. The default lifetime of the rule is 60 minutes -- | |||
| this value was chosen to be long enough so that refreshing is not | this value was chosen to be long enough so that refreshing is not | |||
| typically a burden on the DOTS client, while expiring the rule | typically a burden on the DOTS client, while expiring the rule | |||
| where the client has unexpectedly quit in a timely manner. A | where the client has unexpectedly quit in a timely manner. A | |||
| lifetime of zero indicates indefinite lifetime for the rule. The | lifetime of zero indicates indefinite lifetime for the rule. The | |||
| server MUST always indicate the actual lifetime in the response. | server MUST always indicate the actual lifetime in the response. | |||
| skipping to change at page 17, line 49 ¶ | skipping to change at page 19, line 36 ¶ | |||
| traffic-rate: This is the allowed traffic rate in bytes per second | traffic-rate: This is the allowed traffic rate in bytes per second | |||
| indicated in IEEE floating point [IEEE.754.1985] format. The | indicated in IEEE floating point [IEEE.754.1985] format. The | |||
| value 0 indicates all traffic for the particular flow to be | value 0 indicates all traffic for the particular flow to be | |||
| discarded. This is a mandatory attribute. | discarded. This is a mandatory attribute. | |||
| The relative order of two rules is determined by comparing their | The relative order of two rules is determined by comparing their | |||
| respective policy identifiers. The rule with lower numeric policy | respective policy identifiers. The rule with lower numeric policy | |||
| identifier value has higher precedence (and thus will match before) | identifier value has higher precedence (and thus will match before) | |||
| than the rule with higher numeric policy identifier value. | than the rule with higher numeric policy identifier value. | |||
| Figure 13 shows a POST request to block traffic from attacker IPv6 | Figure 14 shows a POST request to block traffic from attacker IPv6 | |||
| prefix 2001:db8:abcd:3f01::/64 to network resource using IPv6 address | prefix 2001:db8:abcd:3f01::/64 to network resource using IPv6 address | |||
| 2002:db8:6401::1 to operate a server on TCP port 443. | 2002:db8:6401::1 to operate a server on TCP port 443. | |||
| POST coaps://www.example.com/.well-known/v1/filter | Header: POST (Code=0.02) | |||
| Accept: application/json | Uri-Host: "www.example.com" | |||
| Content-Format: application/json | Uri-Path: ".well-known" | |||
| Uri-Path: "v1" | ||||
| Uri-Path: "DOTS-data-channel" | ||||
| Content-Type: "application/json" | ||||
| { | { | |||
| "policy-id": 123321333242, | "policy-id": 123321333242, | |||
| "traffic-protocol": "tcp", | "traffic-protocol": "tcp", | |||
| "source-protocol-port": "0-65535", | "source-protocol-port": "0-65535", | |||
| "destination-protocol-port": "443", | "destination-protocol-port": "443", | |||
| "destination-ip": "2001:db8:abcd:3f01::/64", | "destination-ip": "2001:db8:abcd:3f01::/64", | |||
| "source-ip": "2002:db8:6401::1", | "source-ip": "2002:db8:6401::1", | |||
| "lifetime": 1800, | "lifetime": 1800, | |||
| "traffic-rate": 0 | "traffic-rate": 0 | |||
| } | } | |||
| Figure 13: POST to Install Black-list Rules | Figure 14: POST to Install Black-list Rules | |||
| 6.1.2. Remove Filtering Rules | 6.1.2. Remove Filtering Rules | |||
| A DELETE request is used to delete filtering rules from a DOTS server | A DELETE request is used to delete filtering rules from a DOTS server | |||
| (Figure 14). | (Figure 15). | |||
| DELETE {scheme}://{host}:{port}/.well-known/{URI suffix for filtering} | Header: DELETE (Code=0.04) | |||
| Accept: application/json | Uri-Host: "host" | |||
| Content-Format: application/json | Uri-Path: ".well-known" | |||
| { | Uri-Path: "version" | |||
| "policy-id": "number" | Uri-Path: "DOTS-data-channel" | |||
| } | Content-Type: "application/json" | |||
| { | ||||
| "policy-id": "number" | ||||
| } | ||||
| Figure 14: DELETE to remove the rules | Figure 15: DELETE to remove the rules | |||
| 6.1.3. Retrieving Installed Filtering Rules | 6.1.3. Retrieving Installed Filtering Rules | |||
| A GET request is used to retrieve filtering rules from a DOTS server. | The DOTS client periodically queries the DOTS server to check the | |||
| counters for installed filtering rules. A GET request is used to | ||||
| retrieve filtering rules from a DOTS server. | ||||
| Figure 15 shows an example to retrieve all the black-lists rules | Figure 16 shows an example to retrieve all the filtering rules | |||
| programmed by the DOTS client while Figure 16 shows an example to | programmed by the DOTS client while Figure 17 shows an example to | |||
| retrieve specific black-list rules programmed by the DOTS client. | retrieve specific filtering rules programmed by the DOTS client. | |||
| GET {scheme}://{host}:{port}/.well-known/{URI suffix for filtering} | Header: GET (Code=0.01) | |||
| Uri-Host: "host" | ||||
| Uri-Path: ".well-known" | ||||
| Uri-Path: "version" | ||||
| Uri-Path: "DOTS-data-channel" | ||||
| Uri-Path: "list" | ||||
| Figure 15: GET to retrieve the rules (1) | Figure 16: GET to retrieve the rules (1) | |||
| Header: GET (Code=0.01) | ||||
| Uri-Host: "host" | ||||
| Uri-Path: ".well-known" | ||||
| Uri-Path: "version" | ||||
| Uri-Path: "DOTS-data-channel" | ||||
| Uri-Path: "policy-id value" | ||||
| Figure 17: GET to retrieve the rules (2) | ||||
| Figure 18 shows response for all active policies on the DOTS server. | ||||
| GET {scheme}://{host}:{port}/.well-known/{URI suffix for filtering} | ||||
| Accept: application/json | ||||
| Content-Format: application/json | ||||
| { | { | |||
| "policy-id": "number" | "policy-data":[ | |||
| { | ||||
| "policy-id":123321333242, | ||||
| "traffic-protocol": "tcp", | ||||
| "source-protocol-port": "0-65535", | ||||
| "destination-protocol-port": "443", | ||||
| "destination-ip": "2001:db8:abcd:3f01::/64", | ||||
| "source-ip": "2002:db8:6401::1", | ||||
| "lifetime": 1800, | ||||
| "traffic-rate": 0, | ||||
| "match-count": 689324, | ||||
| }, | ||||
| { | ||||
| "policy-id":123321333242, | ||||
| "traffic-protocol": "udp", | ||||
| "source-protocol-port": "0-65535", | ||||
| "destination-protocol-port": "53", | ||||
| "destination-ip": "2001:db8:abcd:3f01::/64", | ||||
| "source-ip": "2002:db8:6401::2", | ||||
| "lifetime": 1800, | ||||
| "traffic-rate": 0, | ||||
| "match-count": 6666, | ||||
| } | ||||
| ] | ||||
| } | } | |||
| Figure 16: GET to retrieve the rules (2) | Figure 18: Response body | |||
| TODO: show response | ||||
| 7. (D)TLS Protocol Profile and Performance considerations | 7. (D)TLS Protocol Profile and Performance considerations | |||
| This section defines the (D)TLS protocol profile of DOTS signal | This section defines the (D)TLS protocol profile of DOTS signal | |||
| channel over (D)TLS and DOTS data channel over TLS. | channel over (D)TLS and DOTS data channel over TLS. | |||
| There are known attacks on (D)TLS, such as machine-in-the-middle and | There are known attacks on (D)TLS, such as machine-in-the-middle and | |||
| protocol downgrade. These are general attacks on (D)TLS and not | protocol downgrade. These are general attacks on (D)TLS and not | |||
| specific to DOTS over (D)TLS; please refer to the (D)TLS RFCs for | specific to DOTS over (D)TLS; please refer to the (D)TLS RFCs for | |||
| discussion of these security issues. DOTS agents MUST adhere to the | discussion of these security issues. DOTS agents MUST adhere to the | |||
| skipping to change at page 19, line 37 ¶ | skipping to change at page 22, line 26 ¶ | |||
| DOTS using (D)TLS is virtually a green-field deployment DOTS agents | DOTS using (D)TLS is virtually a green-field deployment DOTS agents | |||
| MUST implement only (D)TLS 1.2 or later. | MUST implement only (D)TLS 1.2 or later. | |||
| Implementations compliant with this profile MUST implement all of the | Implementations compliant with this profile MUST implement all of the | |||
| following items: | following items: | |||
| o DOTS client can use (D)TLS session resumption without server-side | o DOTS client can use (D)TLS session resumption without server-side | |||
| state [RFC5077] to resume session and convey the DOTS signal. | state [RFC5077] to resume session and convey the DOTS signal. | |||
| o While the communication to the DOTS server is quiescent, the DOTS | o While the communication to the DOTS server is quiescent, the DOTS | |||
| client may want to probe the server to ensure it has maintained | client MAY probe the server to ensure it has maintained | |||
| cryptographic state. Such probes can also keep alive firewall or | cryptographic state. Such probes can also keep alive firewall or | |||
| NAT bindings. This probing reduces the frequency of needing a new | NAT bindings. This probing reduces the frequency of needing a new | |||
| handshake when a DOTS signal needs to be conveyed to the DOTS | handshake when a DOTS signal needs to be conveyed to the DOTS | |||
| server. | server. | |||
| * A (D)TLS heartbeat [RFC6520] verifies the DOTS server still has | * A (D)TLS heartbeat [RFC6520] verifies the DOTS server still has | |||
| DTLS state by returning a DTLS message. If the server has lost | DTLS state by returning a DTLS message. If the server has lost | |||
| state, it returns a DTLS Alert. Upon receipt of an | state, it returns a DTLS Alert. Upon receipt of an | |||
| unauthenticated DTLS Alert, the DTLS client validates the Alert | unauthenticated DTLS Alert, the DTLS client validates the Alert | |||
| is within the replay window (Section 4.1.2.6 of [RFC6347]). It | is within the replay window (Section 4.1.2.6 of [RFC6347]). It | |||
| skipping to change at page 20, line 40 ¶ | skipping to change at page 23, line 31 ¶ | |||
| o TCP Fast Open [RFC7413] can reduce the number of round-trips to | o TCP Fast Open [RFC7413] can reduce the number of round-trips to | |||
| convey DOTS signal. | convey DOTS signal. | |||
| 8. Mutual Authentication of DOTS Agents & Authorization of DOTS Clients | 8. Mutual Authentication of DOTS Agents & Authorization of DOTS Clients | |||
| (D)TLS based on client certificate can be used for mutual | (D)TLS based on client certificate can be used for mutual | |||
| authentication between DOTS agents. If a DOTS gateway is involved, | authentication between DOTS agents. If a DOTS gateway is involved, | |||
| DOTS clients and DOTS gateway MUST perform mutual authentication; | DOTS clients and DOTS gateway MUST perform mutual authentication; | |||
| only authorized DOTS clients are allowed to send DOTS signals to a | only authorized DOTS clients are allowed to send DOTS signals to a | |||
| DOTS server. | DOTS gateway. DOTS gateway and DOTS server MUST perform mutual | |||
| authentication; DOTS server only allows DOTS signals from authorized | ||||
| DOTS gateway, creating a two-link chain of transitive authentication | ||||
| between the DOTS client and the DOTS server. | ||||
| +-------------------------------------------------+ | +-------------------------------------------------+ | |||
| | example.com domain +---------+ | | | example.com domain +---------+ | | |||
| | | AAA | | | | | AAA | | | |||
| | +---------------+ | Server | | | | +---------------+ | Server | | | |||
| | | Application | +------+--+ | | | | Application | +------+--+ | | |||
| | | server + ^ | | | server + ^ | |||
| | | (DOTS client) |<-----------------+ | | | | | (DOTS client) |<-----------------+ | | | |||
| | +---------------+ + | | example.net domain | | +---------------+ + | | example.net domain | |||
| | V V | | | V V | | |||
| skipping to change at page 21, line 29 ¶ | skipping to change at page 24, line 29 ¶ | |||
| | +----+--------+ | +---------------+ | | +----+--------+ | +---------------+ | |||
| | ^ | | | ^ | | |||
| | | | | | | | | |||
| | +----------------+ | | | | +----------------+ | | | |||
| | | DDOS detector | | | | | | DDOS detector | | | | |||
| | | (DOTS client) +<--------------+ | | | | (DOTS client) +<--------------+ | | |||
| | +----------------+ | | | +----------------+ | | |||
| | | | | | | |||
| +-------------------------------------------------+ | +-------------------------------------------------+ | |||
| Figure 17: Example of Authentication and Authorization of DOTS Agents | Figure 19: Example of Authentication and Authorization of DOTS Agents | |||
| In the example depicted in Figure 17, the DOTS gateway and DOTS | In the example depicted in Figure 19, the DOTS gateway and DOTS | |||
| clients within the 'example.com' domain mutually authenticate with | clients within the 'example.com' domain mutually authenticate with | |||
| each other. After the DOTS gateway validates the identity of a DOTS | each other. After the DOTS gateway validates the identity of a DOTS | |||
| client, it communicates with the AAA server in the 'example.com' | client, it communicates with the AAA server in the 'example.com' | |||
| domain to determine if the DOTS client is authorized to request DDOS | domain to determine if the DOTS client is authorized to request DDOS | |||
| mitigation. If the DOTS client is not authorized, a 4.01 | mitigation. If the DOTS client is not authorized, a 4.01 | |||
| (Unauthorized) is returned in the response to the DOTS client. In | (Unauthorized) is returned in the response to the DOTS client. In | |||
| this example, the DOTS gateway only allows the application server and | this example, the DOTS gateway only allows the application server and | |||
| DDOS detector to request DDOS mitigation, but does not permit the | DDOS detector to request DDOS mitigation, but does not permit the | |||
| user of type 'guest' to request DDOS mitigation. | user of type 'guest' to request DDOS mitigation. | |||
| Also, DOTS gateway and DOTS server MUST perform mutual authentication | Also, DOTS gateway and DOTS server MUST perform mutual authentication | |||
| using certificates. A DOTS server will only allow a DOTS gateway | using certificates. A DOTS server will only allow a DOTS gateway | |||
| with a certificate for a particular domain to request mitigation for | with a certificate for a particular domain to request mitigation for | |||
| that domain. In reference to Figure 17, the DOTS server only allows | that domain. In reference to Figure 19, the DOTS server only allows | |||
| the DOTS gateway to request mitigation for 'example.com' domain and | the DOTS gateway to request mitigation for 'example.com' domain and | |||
| not for other domains. | not for other domains. | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| TODO | TODO | |||
| [TBD: DOTS WG will probably have to do something similar to | ||||
| https://tools.ietf.org/html/rfc7519#section-10, create JSON DOTS | ||||
| claim registry and register the JSON attributes defined in this | ||||
| specification]. | ||||
| 10. Security Considerations | 10. Security Considerations | |||
| Authenticated encryption MUST be used for data confidentiality and | Authenticated encryption MUST be used for data confidentiality and | |||
| message integrity. (D)TLS based on client certificate MUST be used | message integrity. (D)TLS based on client certificate MUST be used | |||
| for mutual authentication. The interaction between the DOTS agents | for mutual authentication. The interaction between the DOTS agents | |||
| requires Datagram Transport Layer Security (DTLS) and Transport Layer | requires Datagram Transport Layer Security (DTLS) and Transport Layer | |||
| Security (TLS) with a ciphersuite offering confidentiality protection | Security (TLS) with a ciphersuite offering confidentiality protection | |||
| and the guidance given in [RFC7525] MUST be followed to avoid attacks | and the guidance given in [RFC7525] MUST be followed to avoid attacks | |||
| on (D)TLS. | on (D)TLS. | |||
| skipping to change at page 22, line 41 ¶ | skipping to change at page 25, line 46 ¶ | |||
| network). | network). | |||
| Involved functional elements in the cooperation system must establish | Involved functional elements in the cooperation system must establish | |||
| exchange instructions and notification over a secure and | exchange instructions and notification over a secure and | |||
| authenticated channel. Adequate filters can be enforced to avoid | authenticated channel. Adequate filters can be enforced to avoid | |||
| that nodes outside a trusted domain can inject request such as | that nodes outside a trusted domain can inject request such as | |||
| deleting filtering rules. Nevertheless, attacks can be initiated | deleting filtering rules. Nevertheless, attacks can be initiated | |||
| from within the trusted domain if an entity has been corrupted. | from within the trusted domain if an entity has been corrupted. | |||
| Adequate means to monitor trusted nodes should also be enabled. | Adequate means to monitor trusted nodes should also be enabled. | |||
| 11. Acknowledgements | 11. Contributors | |||
| Robert Moskowitz | ||||
| 12. Acknowledgements | ||||
| Thanks to Christian Jacquenet, Roland Dobbins, Andrew Mortensen, | Thanks to Christian Jacquenet, Roland Dobbins, Andrew Mortensen, | |||
| Roman D. Danyliw, and Gilbert Clark for the discussion and comments. | Roman D. Danyliw, and Gilbert Clark for the discussion and comments. | |||
| 12. References | 13. References | |||
| 12.1. Normative References | 13.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [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, | |||
| <http://www.rfc-editor.org/info/rfc5246>. | <http://www.rfc-editor.org/info/rfc5246>. | |||
| skipping to change at page 23, line 45 ¶ | skipping to change at page 27, line 5 ¶ | |||
| "Recommendations for Secure Use of Transport Layer | "Recommendations for Secure Use of Transport Layer | |||
| Security (TLS) and Datagram Transport Layer Security | Security (TLS) and Datagram Transport Layer Security | |||
| (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | |||
| 2015, <http://www.rfc-editor.org/info/rfc7525>. | 2015, <http://www.rfc-editor.org/info/rfc7525>. | |||
| [RFC7641] Hartke, K., "Observing Resources in the Constrained | [RFC7641] Hartke, K., "Observing Resources in the Constrained | |||
| Application Protocol (CoAP)", RFC 7641, | Application Protocol (CoAP)", RFC 7641, | |||
| DOI 10.17487/RFC7641, September 2015, | DOI 10.17487/RFC7641, September 2015, | |||
| <http://www.rfc-editor.org/info/rfc7641>. | <http://www.rfc-editor.org/info/rfc7641>. | |||
| 12.2. Informative References | 13.2. Informative References | |||
| [I-D.ietf-dots-architecture] | ||||
| Mortensen, A., Andreasen, F., Reddy, T., | ||||
| christopher_gray3@cable.comcast.com, c., Compton, R., and | ||||
| N. Teague, "Distributed-Denial-of-Service Open Threat | ||||
| Signaling (DOTS) Architecture", draft-ietf-dots- | ||||
| architecture-00 (work in progress), July 2016. | ||||
| [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-01 (work in | Requirements", draft-ietf-dots-requirements-02 (work in | |||
| progress), July 2016. | ||||
| [I-D.ietf-dots-use-cases] | ||||
| Dobbins, R., Fouant, S., Migault, D., Moskowitz, R., | ||||
| Teague, N., and L. Xia, "Use cases for DDoS Open Threat | ||||
| Signaling", draft-ietf-dots-use-cases-01 (work in | ||||
| progress), March 2016. | progress), March 2016. | |||
| [I-D.ietf-tls-cached-info] | [I-D.ietf-tls-cached-info] | |||
| Santesson, S. and H. Tschofenig, "Transport Layer Security | Santesson, S. and H. Tschofenig, "Transport Layer Security | |||
| (TLS) Cached Information Extension", draft-ietf-tls- | (TLS) Cached Information Extension", draft-ietf-tls- | |||
| cached-info-23 (work in progress), May 2016. | cached-info-23 (work in progress), May 2016. | |||
| [I-D.ietf-tls-falsestart] | [I-D.ietf-tls-falsestart] | |||
| Langley, A., Modadugu, N., and B. Moeller, "Transport | Langley, A., Modadugu, N., and B. Moeller, "Transport | |||
| Layer Security (TLS) False Start", draft-ietf-tls- | Layer Security (TLS) False Start", draft-ietf-tls- | |||
| skipping to change at page 24, line 24 ¶ | skipping to change at page 27, line 45 ¶ | |||
| [IEEE.754.1985] | [IEEE.754.1985] | |||
| Institute of Electrical and Electronics Engineers, | Institute of Electrical and Electronics Engineers, | |||
| "Standard for Binary Floating-Point Arithmetic", August | "Standard for Binary Floating-Point Arithmetic", August | |||
| 1985. | 1985. | |||
| [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
| DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
| <http://www.rfc-editor.org/info/rfc791>. | <http://www.rfc-editor.org/info/rfc791>. | |||
| [RFC4632] Fuller, V. and T. Li, "Classless Inter-domain Routing | ||||
| (CIDR): The Internet Address Assignment and Aggregation | ||||
| Plan", BCP 122, RFC 4632, DOI 10.17487/RFC4632, August | ||||
| 2006, <http://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, | |||
| <http://www.rfc-editor.org/info/rfc4732>. | <http://www.rfc-editor.org/info/rfc4732>. | |||
| [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, | |||
| <http://www.rfc-editor.org/info/rfc4987>. | <http://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, <http://www.rfc-editor.org/info/rfc5077>. | January 2008, <http://www.rfc-editor.org/info/rfc5077>. | |||
| [RFC5575] Marques, P., Sheth, N., Raszuk, R., Greene, B., Mauch, J., | [RFC5575] Marques, P., Sheth, N., Raszuk, R., Greene, B., Mauch, J., | |||
| and D. McPherson, "Dissemination of Flow Specification | and D. McPherson, "Dissemination of Flow Specification | |||
| Rules", RFC 5575, DOI 10.17487/RFC5575, August 2009, | Rules", RFC 5575, DOI 10.17487/RFC5575, August 2009, | |||
| <http://www.rfc-editor.org/info/rfc5575>. | <http://www.rfc-editor.org/info/rfc5575>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
| and A. Bierman, Ed., "Network Configuration Protocol | ||||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
| <http://www.rfc-editor.org/info/rfc6241>. | ||||
| [RFC6269] Ford, M., Ed., Boucadair, M., Durand, A., Levis, P., and | [RFC6269] Ford, M., Ed., Boucadair, M., Durand, A., Levis, P., and | |||
| P. Roberts, "Issues with IP Address Sharing", RFC 6269, | P. Roberts, "Issues with IP Address Sharing", RFC 6269, | |||
| DOI 10.17487/RFC6269, June 2011, | DOI 10.17487/RFC6269, June 2011, | |||
| <http://www.rfc-editor.org/info/rfc6269>. | <http://www.rfc-editor.org/info/rfc6269>. | |||
| [RFC6520] Seggelmann, R., Tuexen, M., and M. Williams, "Transport | [RFC6520] Seggelmann, R., Tuexen, M., and M. Williams, "Transport | |||
| Layer Security (TLS) and Datagram Transport Layer Security | Layer Security (TLS) and Datagram Transport Layer Security | |||
| (DTLS) Heartbeat Extension", RFC 6520, | (DTLS) Heartbeat Extension", RFC 6520, | |||
| DOI 10.17487/RFC6520, February 2012, | DOI 10.17487/RFC6520, February 2012, | |||
| <http://www.rfc-editor.org/info/rfc6520>. | <http://www.rfc-editor.org/info/rfc6520>. | |||
| skipping to change at page 25, line 22 ¶ | skipping to change at page 29, line 9 ¶ | |||
| <http://www.rfc-editor.org/info/rfc6724>. | <http://www.rfc-editor.org/info/rfc6724>. | |||
| [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
| Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March | Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March | |||
| 2014, <http://www.rfc-editor.org/info/rfc7159>. | 2014, <http://www.rfc-editor.org/info/rfc7159>. | |||
| [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | [RFC7413] Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP | |||
| Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, | Fast Open", RFC 7413, DOI 10.17487/RFC7413, December 2014, | |||
| <http://www.rfc-editor.org/info/rfc7413>. | <http://www.rfc-editor.org/info/rfc7413>. | |||
| Appendix A. BGP | ||||
| BGP defines a mechanism as described in [RFC5575] that can be used to | ||||
| automate inter-domain coordination of traffic filtering, such as what | ||||
| is required in order to mitigate DDoS attacks. However, support for | ||||
| BGP in an access network does not guarantee that traffic filtering | ||||
| will always be honored. Since a DOTS client will not receive an | ||||
| acknowledgment for the filtering request, the DOTS client should | ||||
| monitor and apply similar rules in its own network in cases where the | ||||
| DOTS server is unable to enforce the filtering rules. In addition, | ||||
| enforcement of filtering rules of BGP on Internet routers are usually | ||||
| governed by the maximum number of data elements the routers can hold | ||||
| as well as the number of events they are able to process in a given | ||||
| unit of time. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Tirumaleswar Reddy | Tirumaleswar Reddy | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Cessna Business Park, Varthur Hobli | Cessna Business Park, Varthur Hobli | |||
| Sarjapur Marathalli Outer Ring Road | Sarjapur Marathalli Outer Ring Road | |||
| Bangalore, Karnataka 560103 | Bangalore, Karnataka 560103 | |||
| India | India | |||
| Email: tireddy@cisco.com | Email: tireddy@cisco.com | |||
| skipping to change at page 26, line 31 ¶ | skipping to change at line 1259 ¶ | |||
| USA | USA | |||
| Email: mgeller@cisco.com | Email: mgeller@cisco.com | |||
| Mohamed Boucadair | Mohamed Boucadair | |||
| Orange | Orange | |||
| Rennes 35000 | Rennes 35000 | |||
| France | France | |||
| Email: mohamed.boucadair@orange.com | Email: mohamed.boucadair@orange.com | |||
| Robert Moskowitz | ||||
| HTT Consulting | ||||
| Oak Park, MI 42837 | ||||
| United States | ||||
| Email: rgm@htt-consult.com | ||||
| End of changes. 74 change blocks. | ||||
| 260 lines changed or deleted | 363 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/ | ||||