draft-ietf-dots-signal-filter-control-07-AUTH48xml2.original.xml | draft-ietf-dots-signal-filter-control-07-AUTH48.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | ||||
consensus="true" number="8909" docName="draft-ietf-dots-signal-filter-contr | ||||
ol-07" | ||||
ipr="trust200902" obsoletes="" updates="" submissionType="IETF" | ||||
xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" | ||||
sortRefs="true" version="3"> | ||||
<!-- [rfced] This file was part way through AUTH48 when the authors added a | ||||
norm ref to draft-ietf-dots-rfc8782-bis. This file should be used as the | ||||
starting point when AUTH48 is reinitiated. --> | ||||
<front> | ||||
<title abbrev="DOTS Signal Filter Control">Controlling Filtering Rules | ||||
Using Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal | ||||
Channel</title> | ||||
<seriesInfo name="RFC" value="8909"/> | ||||
<author fullname="Kaname Nishizuka" initials="K." surname="Nishizuka"> | ||||
<organization>NTT Communications</organization> | ||||
<address> | ||||
<postal> | ||||
<street>GranPark 16F 3-4-1 Shibaura, Minato-ku</street> | ||||
<code>108-8118</code> | ||||
<region>Tokyo</region> | ||||
<country>Japan</country> | ||||
</postal> | ||||
<email>kaname@nttv6.jp</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Mohamed Boucadair" initials="M." surname="Boucadair"> | ||||
<organization>Orange</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city>Rennes</city> | ||||
<code>35000</code> | ||||
<region/> | ||||
<country>France</country> | ||||
</postal> | ||||
<email>mohamed.boucadair@orange.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K"> | ||||
<organization abbrev="McAfee">McAfee, Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Embassy Golf Link Business Park</street> | ||||
<city>Bangalore</city> | ||||
<code>560071</code> | ||||
<region>Karnataka</region> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>kondtir@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Takahiko Nagata" initials="T." surname="Nagata"> | ||||
<organization>Lepidum</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country>Japan</country> | ||||
</postal> | ||||
<email>nagata@lepidum.co.jp</email> | ||||
</address> | ||||
</author> | ||||
<date month="September" year="2020"/> | ||||
<workgroup>DOTS</workgroup> | ||||
<keyword>Mitigation</keyword> | ||||
<keyword>Automation</keyword> | ||||
<keyword>Filtering</keyword> | ||||
<keyword>Protective Networking</keyword> | ||||
<keyword>Protected Networks</keyword> | ||||
<keyword>Security</keyword> | ||||
<keyword>Anti-DDoS</keyword> | ||||
<keyword>Reactive</keyword> | ||||
<keyword>Collaborative Networking</keyword> | ||||
<keyword>Collaborative Security</keyword> | ||||
<abstract> | ||||
<t>This document specifies an extension to the Distributed | ||||
Denial-of-Service Open Threat Signaling (DOTS) signal channel protocol | ||||
so that DOTS clients can control their filtering rules when an attack | ||||
mitigation is active.</t> | ||||
<t>Particularly, this extension allows a DOTS client to activate or | ||||
deactivate existing filtering rules during a Distributed | ||||
Denial-of-Service (DDoS) attack. The | ||||
characterization of these filtering rules is conveyed by a DOTS client | ||||
during an 'idle' time (i.e., no mitigation is active) by means of the DOTS | ||||
data channel protocol.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section anchor="introduction" numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<section anchor="problem" numbered="true" toc="default"> | ||||
<name>The Problem</name> | ||||
<t>In the Distributed Denial-of-Service Open Threat Signaling (DOTS) | ||||
architecture <xref target="RFC8811" format="default"/>, DOTS | ||||
clients and servers communicate using both a signal channel protocol | ||||
<xref target="I-D.ietf-dots-rfc8782-bis" format="default"/> and a data c | ||||
hannel protocol <xref target="RFC8783" format="default"/>.</t> | ||||
<t>The DOTS data channel protocol <xref target="RFC8783" | ||||
format="default"/> is used for bulk data exchange between DOTS agents | ||||
to improve the coordination of parties involved in the response to a | ||||
Distributed Denial-of-Service (DDoS) attack. Filter management, which | ||||
is one of the tasks of the DOTS data channel protocol, enables a DOTS | ||||
client to retrieve the filtering capabilities of a DOTS server and to | ||||
manage filtering rules. Typically, these filtering rules are used for | ||||
dropping or rate-limiting unwanted traffic, and permitting | ||||
accept-listed traffic.</t> | ||||
<t>The DOTS signal channel protocol <xref target="I-D.ietf-dots-rfc8782- | ||||
bis" format="default"/> is | ||||
designed to be resilient under extremely hostile network conditions | ||||
and provides continued contact between DOTS agents even as DDoS attack | ||||
traffic saturates the link. The DOTS signal channel can be established | ||||
between two DOTS agents prior to or during an attack. At any time, the | ||||
DOTS client may send mitigation requests (as per <xref | ||||
target="I-D.ietf-dots-rfc8782-bis" sectionFormat="of" section="4.4"/>) to | ||||
a DOTS server over the active signal | ||||
channel. While mitigation is active, the DOTS server periodically | ||||
sends status messages to the DOTS client, including basic mitigation | ||||
feedback details. In case of a massive DDoS attack that saturates the | ||||
incoming link(s) to the DOTS client, all traffic from the DOTS server | ||||
to the DOTS client will likely be dropped. However, the DOTS server | ||||
may still receive DOTS messages sent from the DOTS client over the | ||||
signaling channel thanks to the heartbeat requests keeping the | ||||
channel active (as described in <xref target="I-D.ietf-dots-rfc8782-bis" | ||||
sectionFormat="of" section="4.7"/>).</t> | ||||
<t>Unlike the DOTS signal channel protocol, the DOTS data channel | ||||
protocol is not expected to deal with attack conditions. As such, an | ||||
issue that might be encountered in some deployments is when filters | ||||
installed by means of the DOTS data channel protocol may not function | ||||
as expected during DDoS attacks or, worse, exacerbate an ongoing DDoS | ||||
attack. In such conditions, the DOTS data channel protocol cannot be | ||||
used to change these filters, which may complicate DDoS mitigation | ||||
operations <xref target="INTEROP" format="default"/>.</t> | ||||
<t>A typical case is a conflict between filtering rules installed by a | ||||
DOTS client and the mitigation actions of a DDoS mitigator. Consider, | ||||
for instance, a DOTS client that configures during 'idle' time (i.e., | ||||
no mitigation is active) some filtering rules using the DOTS data | ||||
channel protocol to permit traffic from accept-listed sources. | ||||
However, during a volumetric DDoS attack, the DDoS mitigator identifies | ||||
the source addresses/prefixes in the accept-listed filtering rules are | ||||
attacking the target. For example, an attacker can spoof the IP | ||||
addresses of accept-listed sources to generate attack traffic, or the | ||||
attacker can compromise the accept-listed sources and program them to | ||||
launch a DDoS attack.</t> | ||||
<t><xref target="I-D.ietf-dots-rfc8782-bis" format="default"/> is design | ||||
ed so that the | ||||
DDoS server notifies the above conflict to the DOTS client (that is, | ||||
the 'conflict-cause' parameter is set to 2 (conflict-with-acceptlist)), | ||||
but the DOTS client may not be able to withdraw the accept-list rules | ||||
during the attack period due to the high-volume attack traffic | ||||
saturating the inbound link to the DOTS client domain. In other | ||||
words, the DOTS client cannot use the DOTS data channel protocol to | ||||
withdraw the accept-list filters when a DDoS attack is in | ||||
progress.</t> | ||||
</section> | ||||
<section anchor="sol" numbered="true" toc="default"> | ||||
<name>Controlling Filtering Rules Using DOTS Signal Channel</name> | ||||
<t>This specification addresses the problems discussed in <xref target=" | ||||
problem" format="default"/> by adding a capability for managing filtering | ||||
rules using the DOTS signal channel protocol, which enables a DOTS | ||||
client to request the activation (or deactivation) of filtering rules | ||||
during a DDoS attack. Note that creating these filtering rules is | ||||
still the responsibility of the DOTS data channel <xref target="RFC8783" | ||||
format="default"/>.</t> | ||||
<t>The DOTS signal channel protocol is designed to enable a DOTS | ||||
client to contact a DOTS server for help even under severe network | ||||
congestion conditions. Therefore, extending the DOTS signal channel | ||||
protocol to manage the filtering rules during an attack will enhance | ||||
the protection capability offered by DOTS protocols.</t> | ||||
<aside> | ||||
<t>Note: The experiment at the IETF 103 hackathon <xref | ||||
target="INTEROP" format="default"/> showed that even when the | ||||
inbound link is saturated by DDoS attack traffic, the DOTS client | ||||
can signal mitigation requests using the DOTS signal channel over | ||||
the saturated link.</t> | ||||
</aside> | ||||
<t>Conflicts that are induced by filters installed by other DOTS | ||||
clients of the same domain are not discussed in this | ||||
specification.</t> | ||||
<t>An augmentation to the DOTS signal channel YANG module is defined | ||||
in <xref target="YANG" format="default"/>.</t> | ||||
<t>Sample examples are provided in <xref target="sample" format="default | ||||
"/>, in | ||||
particular: </t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<xref target="sample1" format="default"/> illustrates how the filter | ||||
control extension is used when conflicts with Access Control Lists | ||||
(ACLs) are detected and reported by a DOTS server.</li> | ||||
<li> | ||||
<xref target="sample2" format="default"/> shows how a DOTS client ca | ||||
n | ||||
instruct a DOTS server to safely forward some specific traffic in | ||||
'attack' time.</li> | ||||
<li> | ||||
<xref target="sample3" format="default"/> shows how a DOTS client ca | ||||
n | ||||
react if the DDoS traffic is still being forwarded to the DOTS | ||||
client domain even if mitigation requests were sent to a DOTS | ||||
server.</li> | ||||
</ul> | ||||
<t>The JavaScript Object Notation (JSON) encoding of YANG-modeled data | ||||
<xref target="RFC7951" format="default"/> is used to illustrate the exam | ||||
ples.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="notation" numbered="true" toc="default"> | ||||
<name>Terminology</name> | ||||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
to be interpreted as described in BCP 14 <xref target="RFC2119" | ||||
format="default"/> <xref target="RFC8174" format="default"/> when, and | ||||
only when, they appear in all capitals, as shown here.</t> | ||||
<t>The reader should be familiar with the terms defined in <xref | ||||
target="RFC8612" format="default"/>.</t> | ||||
<t>The terminology for describing YANG modules is defined in <xref | ||||
target="RFC7950" format="default"/>. The meaning of the symbols in the | ||||
tree diagram is defined in <xref target="RFC8340"/> and <xref target="RFC8 | ||||
791" | ||||
format="default"/>.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Controlling Filtering Rules of a DOTS Client</name> | ||||
<section anchor="bind" numbered="true" toc="default"> | ||||
<name>Binding DOTS Data and Signal Channels</name> | ||||
<t>The filtering rules eventually managed using the DOTS signal | ||||
channel protocol are created a priori by the same DOTS client using | ||||
the DOTS data channel protocol. Managing conflicts with filters | ||||
installed by other DOTS clients of the same domain is out of | ||||
scope.</t> | ||||
<t>As discussed in <xref target="I-D.ietf-dots-rfc8782-bis" sectionForma | ||||
t="of" | ||||
section="4.4.1"/>, a DOTS client must use the same 'cuid' for both the | ||||
DOTS signal and data channels. This requirement is meant to facilitate | ||||
binding DOTS channels used by the same DOTS client.</t> | ||||
<t>The DOTS signal and data channels from a DOTS client may or may not | ||||
use the same DOTS server. Nevertheless, the scope of the mitigation | ||||
request, alias, and filtering rules are not restricted to the DOTS | ||||
server but to the DOTS server domain. To that aim, DOTS servers within | ||||
a domain are assumed to have a mechanism to coordinate the mitigation | ||||
requests, aliases, and filtering rules to coordinate their decisions | ||||
for better mitigation operation efficiency. The exact details about | ||||
such a mechanism is out of the scope of this document.</t> | ||||
<t>A filtering rule controlled by the DOTS signal channel is | ||||
identified by its ACL name (<xref target="I-D.ietf-dots-rfc8782-bis" | ||||
sectionFormat="of" section="4.3"/>). Note that an ACL name unambiguously | ||||
identifies an ACL bound to a DOTS client, but the same name may be | ||||
used by distinct DOTS clients.</t> | ||||
<t>The activation or deactivation of an ACL by the DOTS signal channel | ||||
overrides the 'activation-type' (defined in <xref target="RFC8783" | ||||
sectionFormat="of" section="4.3"/>) a priori conveyed with the | ||||
filtering rules using the DOTS data channel protocol.</t> | ||||
<t>Once the attack is mitigated, the DOTS client may use the data | ||||
channel to control the 'activation-type' (e.g., revert to a default | ||||
value) of some of the filtering rules controlled by the DOTS signal | ||||
channel or delete some of these filters. This behavior is deployment | ||||
specific.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>DOTS Signal Channel Extension</name> | ||||
<section anchor="filtering" numbered="true" toc="default"> | ||||
<name>Parameters and Behaviors</name> | ||||
<t>This specification extends the mitigation request defined in | ||||
<xref target="I-D.ietf-dots-rfc8782-bis" sectionFormat="of" section="4 | ||||
.4.1"/> to | ||||
convey the intended control of configured filtering | ||||
rules. Concretely, the DOTS client conveys the 'acl-list' attribute wi | ||||
th | ||||
the following sub-attributes in the Concise Binary Object | ||||
Representation (CBOR) body of a mitigation | ||||
request (see the YANG structure in <xref target="tree" | ||||
format="default"/>):</t> | ||||
<dl newline="false" spacing="normal"> | ||||
<dt>acl-name:</dt> | ||||
<dd> | ||||
<t>A name of an access list defined using | ||||
the DOTS data channel (<xref target="RFC8783" | ||||
sectionFormat="of" section="4.3"/>) that is associated with the DOT | ||||
S | ||||
client.</t> | ||||
<t>As a reminder, an ACL is an ordered list of Access Control | ||||
Entries (ACEs). Each ACE has a list of match criteria and a list | ||||
of actions <xref target="RFC8783" format="default"/>. The list | ||||
of configured ACLs can be retrieved using the DOTS data channel | ||||
during 'idle' time.</t> | ||||
<t>This is a mandatory attribute when 'acl-list' | ||||
is included.</t> | ||||
</dd> | ||||
<dt>activation-type:</dt> | ||||
<dd> | ||||
<t>An attribute indicating the activation type of | ||||
an ACL overriding the existing 'activation-type' installed by | ||||
the DOTS client using the DOTS data channel. </t> | ||||
<t>As a reminder, this attribute can be set to | ||||
'deactivate', 'immediate', or 'activate-when-mitigating' as | ||||
defined in <xref target="RFC8783" format="default"/>. </t> | ||||
<t>Note that both 'immediate' and | ||||
'activate-when-mitigating' have an immediate effect when a | ||||
mitigation request is being processed by the DOTS server. | ||||
</t> | ||||
<t>This is an optional attribute.</t> | ||||
</dd> | ||||
</dl> | ||||
<t>By default, ACL-related operations are achieved using the DOTS | ||||
data channel protocol when no attack is ongoing. DOTS clients <bcp14>M | ||||
UST | ||||
NOT</bcp14> use the filtering control over the DOTS signal channel in | ||||
'idle' | ||||
time; such requests <bcp14>MUST</bcp14> be discarded by DOTS servers w | ||||
ith 4.00 (Bad | ||||
Request).</t> | ||||
<t>During an attack time, DOTS clients may include 'acl-list', | ||||
'acl-name', and 'activation-type' attributes in a mitigation | ||||
request. This request may be the initial mitigation request for a | ||||
given mitigation scope or a new one overriding an existing request. | ||||
In both cases, a new 'mid' <bcp14>MUST</bcp14> be used. Nevertheless, | ||||
it is <bcp14>NOT | ||||
RECOMMENDED</bcp14> to include ACL attributes in an initial mitigation | ||||
request for a given mitigation scope or in a mitigation request | ||||
adjusting the mitigation scope. This recommendation is meant to | ||||
avoid delaying attack mitigations because of failures to process ACL | ||||
attributes.</t> | ||||
<t>As the attack evolves, DOTS clients can adjust the | ||||
'activation-type' of an ACL conveyed in a mitigation request or | ||||
control other filters as necessary. This can be achieved by sending | ||||
a PUT request with a new 'mid' value.</t> | ||||
<t>It is <bcp14>RECOMMENDED</bcp14> for a DOTS client to subscribe | ||||
to asynchronous notifications of the attack mitigation, as detailed | ||||
in <xref target="I-D.ietf-dots-rfc8782-bis" sectionFormat="of" section | ||||
="4.4.2.1"/>. If | ||||
not, the polling mechanism in <xref target="I-D.ietf-dots-rfc8782-bis" | ||||
sectionFormat="of" section="4.4.2.2"/> has to be followed by the | ||||
DOTS client.</t> | ||||
<t>A DOTS client relies on the information received from the DOTS | ||||
server and/or local information to the DOTS client domain to trigger | ||||
a filter control request. Only filters that are pertinent for an | ||||
ongoing mitigation should be controlled by a DOTS client using the | ||||
DOTS signal channel.</t> | ||||
<t>'acl-list', 'acl-name', and 'activation-type' are defined as | ||||
comprehension-required parameters. Following the rules in <xref | ||||
target="I-D.ietf-dots-rfc8782-bis" sectionFormat="of" section="6"/>, i | ||||
f the DOTS | ||||
server does not understand the 'acl-list', 'acl-name', or | ||||
'activation-type' attributes, it responds with a 4.00 (Bad | ||||
Request) error response code.</t> | ||||
<t>If the DOTS server does not find the ACL name ('acl-name') | ||||
conveyed in the mitigation request for this DOTS client, it <bcp14>MUS | ||||
T</bcp14> | ||||
respond with a 4.04 (Not Found) error response code.</t> | ||||
<t>If the DOTS server finds the ACL name for this DOTS client, and | ||||
assuming the request passed the validation checks in <xref | ||||
target="I-D.ietf-dots-rfc8782-bis" sectionFormat="of" section="4.4.1"/ | ||||
>, the DOTS | ||||
server <bcp14>MUST</bcp14> proceed with the 'activation-type' | ||||
update. The update is immediately enforced by the DOTS server and | ||||
will be maintained as the new activation type for the ACL name even | ||||
after the termination of the mitigation request. In addition, the | ||||
DOTS server <bcp14>MUST</bcp14> update the lifetime of the | ||||
corresponding ACL similar to the update when a refresh request is | ||||
received using the DOTS data channel (<xref target="RFC8783" | ||||
sectionFormat="of" section="7.2"/>). If, for some reason, the DOTS | ||||
server fails to apply the filter update, it <bcp14>MUST</bcp14> | ||||
respond with a 5.03 (Service Unavailable) error response code and | ||||
include the failed ACL update in the diagnostic payload of the | ||||
response (an example is shown in <xref target="diag" | ||||
format="default"/>). Else, the DOTS server replies with the | ||||
appropriate response code defined in <xref target="I-D.ietf-dots-rfc87 | ||||
82-bis" | ||||
sectionFormat="of" section="4.4.1"/>.</t> | ||||
<figure anchor="diag"> | ||||
<name>Example of a Diagnostic Payload Including Failed ACL Update</n | ||||
ame> | ||||
<sourcecode> | ||||
{ | ||||
"ietf-dots-signal-channel:mitigation-scope": { | ||||
"scope": [ | ||||
{ | ||||
"mid": 123, | ||||
"ietf-dots-signal-control:acl-list": [ | ||||
{ | ||||
"acl-name": "an-accept-list", | ||||
"activation-type": "deactivate" | ||||
} | ||||
] | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>The JSON/YANG mappings for DOTS filter control attributes are | ||||
shown in <xref target="table1"/>. As a reminder, the mapping for 'acl- | ||||
name' is | ||||
defined in Table 5 of <xref target="I-D.ietf-dots-rfc8782-bis"/>.</t> | ||||
<table anchor="table1"> | ||||
<name>JSON/YANG Mapping to CBOR for Filter Control Attributes</name> | ||||
<thead> | ||||
<tr> | ||||
<th>Parameter Name</th> | ||||
<th>YANG Type</th> | ||||
<th>CBOR Type</th> | ||||
<th>CBOR Major Type & Information</th> | ||||
<th>JSON Type</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>activation-type</td> | ||||
<td>enumeration</td> | ||||
<td>52</td> | ||||
<td>0 unsigned</td> | ||||
<td>String</td> | ||||
</tr> | ||||
<tr> | ||||
<td>ietf-dots-signal-control:acl-list</td> | ||||
<td>list</td> | ||||
<td>53</td> | ||||
<td>4 array</td> | ||||
<td>Array</td> | ||||
</tr> | ||||
<tr> | ||||
<td>acl-name</td> | ||||
<td>leafref</td> | ||||
<td>23</td> | ||||
<td>3 text string</td> | ||||
<td>String</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>If the DOTS client receives a 5.03 (Service Unavailable) with a | ||||
diagnostic payload indicating a failed ACL update as a response to | ||||
an initial mitigation or a mitigation with adjusted scope, the DOTS | ||||
client <bcp14>MUST</bcp14> immediately send a new request that | ||||
repeats all the parameters as sent in the failed mitigation request | ||||
but without including the ACL attributes. After the expiry of | ||||
Max-Age returned in the 5.03 (Service Unavailable) response, the | ||||
DOTS client retries with a new mitigation request (i.e., a new | ||||
'mid') that repeats all the parameters as sent in the failed | ||||
mitigation request (i.e., the one including the ACL attributes).</t> | ||||
<t>If, during an active mitigation, the 'activation-type' is changed | ||||
at the DOTS server (e.g., as a result of an external action) for an | ||||
ACL bound to a DOTS client, the DOTS server notifies that DOTS | ||||
client of the change by including the corresponding ACL parameters | ||||
in an asynchronous notification (the DOTS client is observing the | ||||
active mitigation) or in a response to a polling request (<xref | ||||
target="I-D.ietf-dots-rfc8782-bis" sectionFormat="of" section="4.4.2.2 | ||||
"/>).</t> | ||||
<t>If the DOTS signal and data channels of a DOTS client are not | ||||
established with the same DOTS server of a DOTS server domain, the | ||||
above request processing operations are undertaken using the | ||||
coordination mechanism discussed in <xref target="bind" format="defaul | ||||
t"/>.</t> | ||||
<t>This specification does not require any modification to the | ||||
efficacy update and the withdrawal procedures defined in <xref target= | ||||
"I-D.ietf-dots-rfc8782-bis" format="default"/>. In particular, ACL-related claus | ||||
es are not | ||||
included in a PUT request used to send an efficacy update and DELETE | ||||
requests.</t> | ||||
</section> | ||||
<section anchor="YANG" numbered="true" toc="default"> | ||||
<name>DOTS Signal Filtering Control Module</name> | ||||
<section anchor="tree" numbered="true" toc="default"> | ||||
<name>Tree Structure</name> | ||||
<t>This document augments the "ietf-dots-signal-channel" YANG | ||||
module defined in <xref target="I-D.ietf-dots-rfc8782-bis" format="d | ||||
efault"/> for managing | ||||
filtering rules.</t> | ||||
<t>This document defines the YANG module | ||||
"ietf-dots-signal-control", which has the following tree | ||||
structure:</t> | ||||
<sourcecode type="yangtree"> | ||||
module: ietf-dots-signal-control | ||||
augment-structure /dots-signal:dots-signal/dots-signal:message-type | ||||
/dots-signal:mitigation-scope/dots-signal:scope: | ||||
+-- acl-list* [acl-name] | ||||
+-- acl-name | ||||
| -> /data-channel:dots-data/dots-client/acls/acl/name | ||||
+-- activation-type? data-channel:activation-type | ||||
</sourcecode > | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>YANG Module</name> | ||||
<t>This YANG module is not intended to be used via | ||||
NETCONF/RESTCONF for DOTS server management purposes; such a module | ||||
is out of the scope of this document. It serves only to provide a | ||||
data model and encoding, but not a management data model.</t> | ||||
<t>This module uses types defined in <xref target="RFC8783" format=" | ||||
default"/>.</t> | ||||
<!-- rfc XXXX below to be replaced per author with whatever RFC # | ||||
assigned to I-D.ietf-dots-rfc8782-bis--> | ||||
<sourcecode name="ietf-dots-signal-control@2020-09-10.yang" type="yang" markers | ||||
="true"><![CDATA[ | ||||
module ietf-dots-signal-control { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-dots-signal-control"; | ||||
prefix dots-control; | ||||
import ietf-dots-signal-channel { | ||||
prefix dots-signal; | ||||
reference | ||||
"RFC XXXX: Distributed Denial-of-Service Open Threat | ||||
Signaling (DOTS) Signal Channel Specification"; | ||||
} | ||||
import ietf-yang-structure-ext { | ||||
prefix sx; | ||||
reference | ||||
"RFC 8791: YANG Data Structure Extensions"; | ||||
} | ||||
import ietf-dots-data-channel { | ||||
prefix data-channel; | ||||
reference | ||||
"RFC 8783: Distributed Denial-of-Service Open Threat | ||||
Signaling (DOTS) Data Channel Specification"; | ||||
} | ||||
organization | ||||
"IETF DDoS Open Threat Signaling (DOTS) Working Group"; | ||||
contact | ||||
"WG Web: <https://datatracker.ietf.org/wg/dots/> | ||||
WG List: <mailto:dots@ietf.org> | ||||
Author: Kaname Nishizuka | ||||
<mailto:kaname@nttv6.jp> | ||||
Author: Mohamed Boucadair | ||||
<mailto:mohamed.boucadair@orange.com> | ||||
Author: Tirumaleswar Reddy.K | ||||
<mailto:TirumaleswarReddy_Konda@McAfee.com> | ||||
Author: Takahiko Nagata | ||||
<mailto:nagata@lepidum.co.jp>"; | ||||
description | ||||
"This module contains YANG definition for the signaling | ||||
messages exchanged between a DOTS client and a DOTS server | ||||
to control, by means of the DOTS signal channel, filtering | ||||
rules configured using the DOTS data channel. | ||||
Copyright (c) 2020 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 | ||||
(https://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC 8909; see | ||||
the RFC itself for full legal notices."; | ||||
revision 2020-09-10 { | ||||
description | ||||
"Initial revision."; | ||||
reference | ||||
"RFC 8909: Controlling Filtering Rules Using Distributed | ||||
Denial-of-Service Open Threat Signaling (DOTS) | ||||
Signal Channel"; | ||||
} | ||||
sx:augment-structure "/dots-signal:dots-signal" | ||||
+ "/dots-signal:message-type" | ||||
+ "/dots-signal:mitigation-scope" | ||||
+ "/dots-signal:scope" { | ||||
description | ||||
"ACL name and activation type."; | ||||
list acl-list { | ||||
key "acl-name"; | ||||
description | ||||
"List of ACLs as defined using the DOTS data | ||||
channel. ACLs bound to a DOTS client are uniquely | ||||
identified by a name."; | ||||
leaf acl-name { | ||||
type leafref { | ||||
path "/data-channel:dots-data/data-channel:dots-client" | ||||
+ "/data-channel:acls/data-channel:acl/data-channel:name"; | ||||
} | ||||
description | ||||
"Reference to the ACL name bound to a DOTS client."; | ||||
} | ||||
leaf activation-type { | ||||
type data-channel:activation-type; | ||||
default "activate-when-mitigating"; | ||||
description | ||||
"Sets the activation type of an ACL."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
]]></sourcecode> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
<section anchor="sample" numbered="true" toc="default"> | ||||
<name>Some Examples</name> | ||||
<t>This section provides some examples to illustrate the behavior | ||||
specified in <xref target="filtering" format="default"/>. These examples a | ||||
re | ||||
provided for illustration purposes; they should not be considered as | ||||
deployment recommendations.</t> | ||||
<section anchor="sample1" numbered="true" toc="default"> | ||||
<name>Conflict Handling</name> | ||||
<t>Let's consider a DOTS client that contacts its DOTS server during | ||||
'idle' time to install an accept-list allowing for UDP traffic issued | ||||
from 2001:db8:1234::/48 with a destination port number 443 to be | ||||
forwarded to 2001:db8:6401::2/127. It does so by sending, for example, | ||||
a PUT request as shown in <xref target="PUT" format="default"/>.</t> | ||||
<figure anchor="PUT"> | ||||
<name>DOTS Data Channel Request to Create a Filter</name> | ||||
<sourcecode> | ||||
PUT /restconf/data/ietf-dots-data-channel:dots-data\ | ||||
/dots-client=paL8p4Zqo4SLv64TLPXrxA/acls\ | ||||
/acl=an-accept-list HTTP/1.1 | ||||
Host: example.com | ||||
Content-Type: application/yang-data+json | ||||
{ | ||||
"ietf-dots-data-channel:acls": { | ||||
"acl": [ | ||||
{ | ||||
"name": "an-accept-list", | ||||
"type": "ipv6-acl-type", | ||||
"activation-type": "activate-when-mitigating", | ||||
"aces": { | ||||
"ace": [ | ||||
{ | ||||
"name": "test-ace-ipv6-udp", | ||||
"matches": { | ||||
"ipv6": { | ||||
"destination-ipv6-network": "2001:db8:6401::2/127", | ||||
"source-ipv6-network": "2001:db8:1234::/48" | ||||
}, | ||||
"udp": { | ||||
"destination-port-range-or-operator": { | ||||
"operator": "eq", | ||||
"port": 443 | ||||
} | ||||
} | ||||
}, | ||||
"actions": { | ||||
"forwarding": "accept" | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>Sometime later, consider that a DDoS attack is detected by the DOTS | ||||
client on 2001:db8:6401::2/127. Consequently, the DOTS client sends a | ||||
mitigation request to its DOTS server as shown in <xref target="mitigate | ||||
" format="default"/>.</t> | ||||
<figure anchor="mitigate"> | ||||
<name>DOTS Signal Channel Mitigation Request</name> | ||||
<sourcecode> | ||||
Header: PUT (Code=0.03) | ||||
Uri-Path: ".well-known" | ||||
Uri-Path: "dots" | ||||
Uri-Path: "mitigate" | ||||
Uri-Path: "cuid=paL8p4Zqo4SLv64TLPXrxA" | ||||
Uri-Path: "mid=123" | ||||
Content-Format: "application/dots+cbor" | ||||
{ | ||||
"ietf-dots-signal-channel:mitigation-scope": { | ||||
"scope": [ | ||||
{ | ||||
"target-prefix": [ | ||||
"2001:db8:6401::2/127" | ||||
], | ||||
"target-protocol": [ | ||||
17 | ||||
], | ||||
"lifetime": 3600 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>The DOTS server immediately accepts the request by replying with | ||||
2.01 (Created) (<xref target="response" format="default"/> depicts the m | ||||
essage | ||||
body of the response).</t> | ||||
<figure anchor="response"> | ||||
<name>Status Response (Message Body)</name> | ||||
<sourcecode> | ||||
{ | ||||
"ietf-dots-signal-channel:mitigation-scope": { | ||||
"scope": [ | ||||
{ | ||||
"mid": 123, | ||||
"lifetime": 3600 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>Assuming the DOTS client subscribed to asynchronous notifications, | ||||
when the DOTS server concludes that some of the attack sources belong | ||||
to 2001:db8:1234::/48, it sends a notification message with 'status' | ||||
code set to 1 (attack-mitigation-in-progress) and 'conflict-cause' set | ||||
to 2 (conflict-with-acceptlist) to the DOTS client to indicate that | ||||
this mitigation request is in progress, but a conflict is | ||||
detected.</t> | ||||
<t>Upon receipt of the notification message from the DOTS server, the | ||||
DOTS client sends a PUT request to deactivate the "an-accept-list" ACL | ||||
as shown in <xref target="control" format="default"/>.</t> | ||||
<t>The DOTS client can also decide to send a PUT request to deactivate | ||||
the "an-accept-list" ACL if suspect traffic is received from an | ||||
accept-listed source (2001:db8:1234::/48). The structure of that PUT | ||||
is the same as the one shown in <xref target="control" format="default"/ | ||||
>.</t> | ||||
<figure anchor="control"> | ||||
<name>PUT for Deactivating a Conflicting Filter</name> | ||||
<sourcecode> | ||||
Header: PUT (Code=0.03) | ||||
Uri-Path: ".well-known" | ||||
Uri-Path: "dots" | ||||
Uri-Path: "mitigate" | ||||
Uri-Path: "cuid=paL8p4Zqo4SLv64TLPXrxA" | ||||
Uri-Path: "mid=124" | ||||
Content-Format: "application/dots+cbor" | ||||
{ | ||||
"ietf-dots-signal-channel:mitigation-scope": { | ||||
"scope": [ | ||||
{ | ||||
"target-prefix": [ | ||||
"2001:db8:6401::2/127" | ||||
], | ||||
"target-protocol": [ | ||||
17 | ||||
], | ||||
"ietf-dots-signal-control:acl-list": [ | ||||
{ | ||||
"acl-name": "an-accept-list", | ||||
"activation-type": "deactivate" | ||||
} | ||||
], | ||||
"lifetime": 3600 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>Then, the DOTS server deactivates the "an-accept-list" ACL and replie | ||||
s | ||||
with a 2.04 (Changed) response to the DOTS client to confirm the | ||||
successful operation. The message body is similar to the one depicted | ||||
in <xref target="response" format="default"/>.</t> | ||||
<t>Once the attack is mitigated, the DOTS client may use the data | ||||
channel to retrieve its ACLs maintained by the DOTS server. As shown | ||||
in <xref target="GET-2" format="default"/>, the activation type is set t | ||||
o | ||||
'deactivate' as set by the DOTS signal channel (<xref target="control" f | ||||
ormat="default"/>) instead of the type initially set using the | ||||
DOTS data channel (<xref target="PUT" format="default"/>).</t> | ||||
<figure anchor="GET-2"> | ||||
<name>DOTS Data Channel GET Response after Mitigation (Message Body)</ | ||||
name> | ||||
<sourcecode> | ||||
{ | ||||
"ietf-dots-data-channel:acls": { | ||||
"acl": [ | ||||
{ | ||||
"name": "an-accept-list", | ||||
"type": "ipv6-acl-type", | ||||
"activation-type": "deactivate", | ||||
"pending-lifetime": 10021, | ||||
"aces": { | ||||
"ace": [ | ||||
{ | ||||
"name": "test-ace-ipv6-udp", | ||||
"matches": { | ||||
"ipv6": { | ||||
"destination-ipv6-network": "2001:db8:6401::2/127", | ||||
"source-ipv6-network": "2001:db8:1234::/48" | ||||
}, | ||||
"udp": { | ||||
"destination-port-range-or-operator": { | ||||
"operator": "eq", | ||||
"port": 443 | ||||
} | ||||
} | ||||
}, | ||||
"actions": { | ||||
"forwarding": "accept" | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
</section> | ||||
<section anchor="sample2" numbered="true" toc="default"> | ||||
<name>On-Demand Activation of an Accept-List Filter</name> | ||||
<t>Let's consider a DOTS client that contacts its DOTS server during | ||||
'idle' time to install an accept-list allowing for UDP traffic issued | ||||
from 2001:db8:1234::/48 to be forwarded to 2001:db8:6401::2/127. It | ||||
does so by sending, for example, a PUT request shown in <xref | ||||
target="PUT1" format="default"/>. The DOTS server installs this filter | ||||
with a "deactivated" state.</t> | ||||
<figure anchor="PUT1"> | ||||
<name>DOTS Data Channel Request to Create an Accept-List Filter</name> | ||||
<sourcecode> | ||||
PUT /restconf/data/ietf-dots-data-channel:dots-data\ | ||||
/dots-client=ioiuLoZqo4SLv64TLPXrxA/acls\ | ||||
/acl=my-accept-list HTTP/1.1 | ||||
Host: example.com | ||||
Content-Type: application/yang-data+json | ||||
{ | ||||
"ietf-dots-data-channel:acls": { | ||||
"acl": [ | ||||
{ | ||||
"name": "my-accept-list", | ||||
"type": "ipv6-acl-type", | ||||
"activation-type": "deactivate", | ||||
"aces": { | ||||
"ace": [ | ||||
{ | ||||
"name": "an-ace", | ||||
"matches": { | ||||
"ipv6": { | ||||
"destination-ipv6-network": "2001:db8:6401::2/127", | ||||
"source-ipv6-network": "2001:db8:1234::/48", | ||||
"protocol": 17 | ||||
} | ||||
}, | ||||
"actions": { | ||||
"forwarding": "accept" | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>Sometime later, consider that a UDP DDoS attack is detected by the | ||||
DOTS client on 2001:db8:6401::2/127 but the DOTS client wants to let | ||||
the traffic from 2001:db8:1234::/48 be accept-listed to the DOTS | ||||
client domain. Consequently, the DOTS client sends a mitigation | ||||
request to its DOTS server as shown in <xref target="mitigate1" format=" | ||||
default"/>.</t> | ||||
<figure anchor="mitigate1"> | ||||
<name>DOTS Signal Channel Mitigation Request with a Filter Control</na | ||||
me> | ||||
<sourcecode> | ||||
Header: PUT (Code=0.03) | ||||
Uri-Path: ".well-known" | ||||
Uri-Path: "dots" | ||||
Uri-Path: "mitigate" | ||||
Uri-Path: "cuid=ioiuLoZqo4SLv64TLPXrxA" | ||||
Uri-Path: "mid=4879" | ||||
Content-Format: "application/dots+cbor" | ||||
{ | ||||
"ietf-dots-signal-channel:mitigation-scope": { | ||||
"scope": [ | ||||
{ | ||||
"target-prefix": [ | ||||
"2001:db8:6401::2/127" | ||||
], | ||||
"target-protocol": [ | ||||
17 | ||||
], | ||||
"ietf-dots-signal-control:acl-list": [ | ||||
{ | ||||
"acl-name": "my-accept-list", | ||||
"activation-type": "immediate" | ||||
} | ||||
], | ||||
"lifetime": 3600 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>The DOTS server activates the "my-accept-list" ACL and replies with | ||||
a 2.01 (Created) response to the DOTS client to confirm the successful | ||||
operation.</t> | ||||
</section> | ||||
<section anchor="sample3" numbered="true" toc="default"> | ||||
<name>DOTS Servers/Mitigators Lacking Capacity</name> | ||||
<t>This section describes a scenario in which a DOTS client activates | ||||
a drop-list or a rate-limit filter during an attack.</t> | ||||
<t>Consider a DOTS client that contacts its DOTS server during 'idle' | ||||
time to install an accept-list that rate-limits all (or a part | ||||
thereof) traffic to be forwarded to 2001:db8:123::/48 as a last resort | ||||
countermeasure whenever required. Installing the accept-list can be | ||||
done by sending, for example, the PUT request shown in <xref | ||||
target="rate" format="default"/>. The DOTS server installs this filter | ||||
with a "deactivated" state.</t> | ||||
<figure anchor="rate"> | ||||
<name>DOTS Data Channel Request to Create a Rate-Limit Filter</name> | ||||
<sourcecode> | ||||
PUT /restconf/data/ietf-dots-data-channel:dots-data\ | ||||
/dots-client=OopPisZqo4SLv64TLPXrxA/acls\ | ||||
/acl=my-ratelimit-list HTTP/1.1 | ||||
Host: example.com | ||||
Content-Type: application/yang-data+json | ||||
{ | ||||
"ietf-dots-data-channel:acls": { | ||||
"acl": [ | ||||
{ | ||||
"name": "my-ratelimit-list", | ||||
"type": "ipv6-acl-type", | ||||
"activation-type": "deactivate", | ||||
"aces": { | ||||
"ace": [ | ||||
{ | ||||
"name": "my-ace", | ||||
"matches": { | ||||
"ipv6": { | ||||
"destination-ipv6-network": "2001:db8:123::/48" | ||||
} | ||||
}, | ||||
"actions": { | ||||
"forwarding": "accept", | ||||
"rate-limit": "20000.00" | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>Consider now that a DDoS attack is detected by the DOTS client on | ||||
2001:db8:123::/48. Consequently, the DOTS client sends a mitigation | ||||
request to its DOTS server (<xref target="ratel" format="default"/>).</t | ||||
> | ||||
<figure anchor="ratel"> | ||||
<name>DOTS Signal Channel Mitigation Request</name> | ||||
<sourcecode> | ||||
Header: PUT (Code=0.03) | ||||
Uri-Path: ".well-known" | ||||
Uri-Path: "dots" | ||||
Uri-Path: "mitigate" | ||||
Uri-Path: "cuid=OopPisZqo4SLv64TLPXrxA" | ||||
Uri-Path: "mid=85" | ||||
Content-Format: "application/dots+cbor" | ||||
{ | ||||
"ietf-dots-signal-channel:mitigation-scope": { | ||||
"scope": [ | ||||
{ | ||||
"target-prefix": [ | ||||
"2001:db8:123::/48" | ||||
], | ||||
"lifetime": 3600 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>For some reason (e.g., the DOTS server, or the mitigator, is | ||||
lacking a capability or capacity), the DOTS client is still receiving | ||||
attack traffic, which saturates available links. To soften the | ||||
problem, the DOTS client decides to activate the filter that | ||||
rate-limits the traffic destined to the DOTS client domain. To that | ||||
aim, the DOTS client sends the mitigation request to its DOTS server | ||||
shown in <xref target="rateres" format="default"/>.</t> | ||||
<figure anchor="rateres"> | ||||
<name>DOTS Signal Channel Mitigation Request to Activate a Rate-Limit | ||||
Filter</name> | ||||
<sourcecode> | ||||
Header: PUT (Code=0.03) | ||||
Uri-Path: ".well-known" | ||||
Uri-Path: "dots" | ||||
Uri-Path: "mitigate" | ||||
Uri-Path: "cuid=OopPisZqo4SLv64TLPXrxA" | ||||
Uri-Path: "mid=86" | ||||
Content-Format: "application/dots+cbor" | ||||
{ | ||||
"ietf-dots-signal-channel:mitigation-scope": { | ||||
"scope": [ | ||||
{ | ||||
"target-prefix": [ | ||||
"2001:db8:123::/48" | ||||
], | ||||
"ietf-dots-signal-control:acl-list": [ | ||||
{ | ||||
"acl-name": "my-ratelimit-list", | ||||
"activation-type": "immediate" | ||||
} | ||||
], | ||||
"lifetime": 3600 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
<t>Then, the DOTS server activates the "my-ratelimit-list" ACL and repli | ||||
es | ||||
with a 2.04 (Changed) response to the DOTS client to confirm the | ||||
successful operation.</t> | ||||
<t>As the attack mitigation evolves, the DOTS client may decide to | ||||
deactivate the rate-limit policy (e.g., upon receipt of a notification | ||||
status change from 'attack-exceeded-capability' to | ||||
'attack-mitigation-in-progress'). Based on the mitigation status | ||||
conveyed by the DOTS server, the DOTS client can deactivate the | ||||
rate-limit action. It does so by sending the request shown in <xref targ | ||||
et="rateres2" format="default"/>.</t> | ||||
<figure anchor="rateres2"> | ||||
<name>DOTS Signal Channel Mitigation Request to Deactivate a Rate-Limi | ||||
t Filter</name> | ||||
<sourcecode type="cbor"> | ||||
Header: PUT (Code=0.03) | ||||
Uri-Path: ".well-known" | ||||
Uri-Path: "dots" | ||||
Uri-Path: "mitigate" | ||||
Uri-Path: "cuid=OopPisZqo4SLv64TLPXrxA" | ||||
Uri-Path: "mid=87" | ||||
Content-Format: "application/dots+cbor" | ||||
{ | ||||
"ietf-dots-signal-channel:mitigation-scope": { | ||||
"scope": [ | ||||
{ | ||||
"target-prefix": [ | ||||
"2001:db8:123::/48" | ||||
], | ||||
"ietf-dots-signal-control:acl-list": [ | ||||
{ | ||||
"acl-name": "my-ratelimit-list", | ||||
"activation-type": "deactivate" | ||||
} | ||||
], | ||||
"lifetime": 3600 | ||||
} | ||||
] | ||||
} | ||||
} | ||||
</sourcecode> | ||||
</figure> | ||||
</section> | ||||
</section> | ||||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<section anchor="map" numbered="true" toc="default"> | ||||
<name>DOTS Signal Channel CBOR Key Values Subregistry</name> | ||||
<t>Per this specification, IANA has registered the following parameters | ||||
in the | ||||
"DOTS Signal Channel CBOR Key Values" subregistry within the | ||||
"Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal | ||||
Channel" registry <xref target="Key-Map" format="default"/>.</t> | ||||
<table anchor="table2"> | ||||
<thead> | ||||
<tr> | ||||
<th>Parameter Name</th> | ||||
<th>CBOR Key Value</th> | ||||
<th>CBOR Major Type</th> | ||||
<th>Change Controller</th> | ||||
<th>Specification Document(s)</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>activation-type</td> | ||||
<td>52</td> | ||||
<td>0</td> | ||||
<td>IESG</td> | ||||
<td>RFC 8909</td> | ||||
</tr> | ||||
<tr> | ||||
<td>ietf-dots-signal-control:acl-list</td> | ||||
<td>53</td> | ||||
<td>4</td> | ||||
<td>IESG</td> | ||||
<td>RFC 8909</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section anchor="yang-iana" numbered="true" toc="default"> | ||||
<name>A New YANG Module</name> | ||||
<t>IANA has registered the following URI in the | ||||
"ns" subregistry within the "IETF XML Registry" <xref target="RFC3688" f | ||||
ormat="default"/>:</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-dots-signal-control</dd> | ||||
<dt>Registrant Contact:</dt><dd>The IESG.</dd> | ||||
<dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | ||||
</dl> | ||||
<t>IANA has registered the following YANG module | ||||
in the "YANG Module Names" subregistry <xref target="RFC6020" format="de | ||||
fault"/> | ||||
within the "YANG Parameters" registry.</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>Name:</dt><dd>ietf-dots-signal-control</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-dots-signal-control</dd> | ||||
<dt>Maintained by IANA:</dt><dd>N</dd> | ||||
<dt>Prefix:</dt><dd>dots-control</dd> | ||||
<dt>Reference:</dt><dd>RFC 8909</dd> | ||||
</dl> | ||||
</section> | ||||
</section> | ||||
<section anchor="security" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t>The security considerations for the DOTS signal channel protocol are | ||||
discussed in <xref target="I-D.ietf-dots-rfc8782-bis" sectionFormat="of" s | ||||
ection="11"/>, | ||||
while those for the DOTS data channel protocol are discussed in <xref | ||||
target="RFC8783" sectionFormat="of" section="10"/>. The following | ||||
discusses the security considerations that are specific to the DOTS | ||||
signal channel extension defined in this document.</t> | ||||
<t>This specification does not allow the creation of new filtering rules, | ||||
which is the responsibility of the DOTS data channel. DOTS client | ||||
domains should be adequately prepared prior to an attack, e.g., by | ||||
creating filters that will be activated on demand when an attack is | ||||
detected.</t> | ||||
<t>A DOTS client is entitled to access only the resources it creates. In | ||||
particular, a DOTS client can not tweak filtering rules created by other | ||||
DOTS clients of the same DOTS client domain. As a reminder, DOTS servers | ||||
must associate filtering rules with the DOTS client that created these | ||||
resources. Failure to ensure such association by a DOTS server will have | ||||
severe impact on DOTS client domains.</t> | ||||
<t>A compromised DOTS client can use the filtering control capability to | ||||
exacerbate an ongoing attack. Likewise, such a compromised DOTS client | ||||
may abstain from reacting to an ACL conflict notification received from | ||||
the DOTS server during attacks. These are not new attack vectors, but | ||||
variations of threats discussed in <xref target="I-D.ietf-dots-rfc8782-bis | ||||
" | ||||
format="default"/> and <xref target="RFC8783" format="default"/>. DOTS | ||||
operators should carefully monitor and audit DOTS agents to detect | ||||
misbehaviors and deter misuses.</t> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<!-- I-D.ietf-dots-rfc8782-bis temporarily set to RFCXXXX waiting on that doc | ||||
to continue. | ||||
--> | ||||
<displayreference target="I-D.ietf-dots-rfc8782-bis" to="RFCXXXX"/> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7950.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3688.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6020.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8791.xml"/> | ||||
<!-- <xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8782.xml | ||||
"/>--> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I- | ||||
D.ietf-dots-rfc8782-bis.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8783.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8612.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7951.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8340.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8811.xml"/> | ||||
<reference anchor="INTEROP" target="https://datatracker.ietf.org/meeting | ||||
/103/materials/slides-103-dots-interop-report-from-ietf-103-hackathon-00"> | ||||
<front> | ||||
<title>DOTS Interop test report, IETF 103 Hackathon</title> | ||||
<author fullname="Kaname Nishizuka" initials="K." surname="Nishizuka | ||||
"> | ||||
<organization>NTT Communications</organization> | ||||
<address> | ||||
<postal> | ||||
<street>GranPark 16F 3-4-1 Shibaura, Minato-ku</street> | ||||
<city>Tokyo</city> | ||||
<region/> | ||||
<code>108-8118</code> | ||||
<country>Japan</country> | ||||
</postal> | ||||
<email>kaname@nttv6.jp</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Jon Shallow" initials="J." surname=" Shallow"> | ||||
<organization>J.NCC Group</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | ||||
<author fullname="Liang Xia" initials="L." surname="Xia "> | ||||
<organization>Huawei</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city/> | ||||
<region/> | ||||
<code/> | ||||
<country/> | ||||
</postal> | ||||
<phone/> | ||||
<email/> | ||||
<uri/> | ||||
</address> | ||||
</author> | ||||
<date month="November" year="2018"/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="Key-Map" target="https://www.iana.org/assignments/dot | ||||
s"> | ||||
<front> | ||||
<title>Distributed Denial-of-Service Open Threat Signaling (DOTS) | ||||
Signal Channel</title> | ||||
<author fullname="IANA"> | ||||
<organization/> | ||||
</author> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="ack" numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t>Many thanks to <contact fullname="Wei Pan"/>, <contact fullname="Xia | ||||
Liang"/>, <contact fullname="Jon Shallow"/>, <contact fullname="Dan | ||||
Wing"/>, <contact fullname="Christer | ||||
Holmberg"/>, <contact fullname="Shawn Emery"/>, <contact fullname="Tim | ||||
Chown"/>, <contact fullname="Murray Kucherawy"/>, <contact | ||||
fullname="Roman Danyliw"/>, <contact fullname="Erik | ||||
Kline"/>, and <contact fullname="Éric Vyncke"/> for the comments.</t> | ||||
<t>Thanks to <contact fullname="Benjamin Kaduk"/> for the AD review.</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | ||||
End of changes. 1 change blocks. | ||||
lines changed or deleted | 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/ |