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.
As discussed in
Section 4.4.1 of
RFC 9132, 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.
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.
A filtering rule controlled by the DOTS signal channel is identified by its ACL name (
Section 4.3 of
RFC 8783). 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.
The activation or deactivation of an ACL by the DOTS signal channel overrides the 'activation-type' (defined in
Section 4.3 of
RFC 8783) a priori conveyed with the filtering rules using the DOTS data channel protocol.
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.
This specification extends the mitigation request defined in
Section 4.4.1 of
RFC 9132 to convey the intended control of configured filtering rules. Concretely, the DOTS client conveys the 'acl-list' attribute with the following sub-attributes in the Concise Binary Object Representation (CBOR) body of a mitigation request (see the YANG structure in
Section 3.2.2.1):
-
acl-name:
-
A name of an access list defined using the DOTS data channel (Section 4.3 of RFC 8783) that is associated with the DOTS client.
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 [RFC 8783]. The list of configured ACLs can be retrieved using the DOTS data channel during 'idle' time.
This is a mandatory attribute when 'acl-list' is included.
-
activation-type:
-
An attribute indicating the activation type of an ACL overriding the existing 'activation-type' installed by the DOTS client using the DOTS data channel.
As a reminder, this attribute can be set to 'deactivate', 'immediate', or 'activate-when-mitigating' as defined in [RFC 8783].
Note that both 'immediate' and 'activate-when-mitigating' have an immediate effect when a mitigation request is being processed by the DOTS server.
This is an optional attribute.
By default, ACL-related operations are achieved using the DOTS data channel protocol when no attack is ongoing. DOTS clients
MUST NOT use the filtering control over the DOTS signal channel in 'idle' time; such requests
MUST be discarded by DOTS servers with 4.00 (Bad Request).
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'
MUST be used. Nevertheless, it is
NOT RECOMMENDED 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.
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.
It is
RECOMMENDED for a DOTS client to subscribe to asynchronous notifications of the attack mitigation, as detailed in
Section 4.4.2.1 of
RFC 9132. If not, the polling mechanism in
Section 4.4.2.2 of
RFC 9132 has to be followed by the DOTS client.
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.
'acl-list', 'acl-name', and 'activation-type' are defined as comprehension-required parameters. Following the rules in
Section 6 of
RFC 9132, if 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.
If the DOTS server does not find the ACL name ('acl-name') conveyed in the mitigation request for this DOTS client, it
MUST respond with a 4.04 (Not Found) error response code.
If the DOTS server finds the ACL name for this DOTS client, and assuming the request passed the validation checks in
Section 4.4.1 of
RFC 9132, the DOTS server
MUST 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
MUST update the lifetime of the corresponding ACL similar to the update when a refresh request is received using the DOTS data channel (
Section 7.2 of
RFC 8783). If, for some reason, the DOTS server fails to apply the filter update, it
MUST 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
Figure 1). Else, the DOTS server replies with the appropriate response code defined in
Section 4.4.1 of
RFC 9132.
{
"ietf-dots-signal-channel:mitigation-scope": {
"scope": [
{
"mid": 123,
"ietf-dots-signal-control:acl-list": [
{
"acl-name": "an-accept-list",
"activation-type": "deactivate"
}
]
}
]
}
}
The JSON/YANG mappings for DOTS filter control attributes are shown in
Table 1. As a reminder, the mapping for 'acl-name' is defined in Table 5 of [
RFC 9132].
Parameter Name |
YANG Type |
CBOR Key |
CBOR Major Type & Information |
JSON Type |
activation-type |
enumeration |
52 |
0 unsigned |
String |
ietf-dots-signal-control:acl-list |
list |
53 |
4 array |
Array |
acl-name |
leafref |
23 |
3 text string |
String |
Table 1: JSON/YANG Mapping to CBOR for Filter Control Attributes
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
MUST 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).
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 (
Section 4.4.2.2 of
RFC 9132).
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
Section 3.1.
This specification does not require any modification to the efficacy update and the withdrawal procedures defined in [
RFC 9132]. In particular, ACL-related clauses are not included in a PUT request used to send an efficacy update and DELETE requests.