+-----------+ +-------------+ | Mitigator | ~~~~~~~~~~ | DOTS Server | +-----------+ +-------------+ | | | +---------------+ +-------------+ | Attack Target | ~~~~~~ | DOTS Client | +---------------+ +-------------+
Scope +.-.-.-.-.-.-.-.-.-.-.-.+ +---------------+ : +-------------+ : | Alert | ~~~:~~~ | Call Home | : | | : | DOTS client | : +---------------+ : +------+------+ : : | : : | : : | : +---------------+ : +------+------+ : | Attack | ~~~:~~~ | Call Home | : | Source(s) | : | DOTS server | : +---------------+ : +-------------+ : +.-.-.-.-.-.-.-.-.-.-.-.+
+-------------+ |Attack Target| +-----+-------+ | /\ Target Network ......................|.||.................... .--------+-||-------. ( || )-. .' || ' ( Internet || ) ( || -' '-( || ) '------+-||---------' ......................|.||..................... .--------+-||-------. Network ( || )-. Provider .' Call Home || ' (DMS) ( DOTS client || ) ( || -' '-( || ) '------+-||---------' ......................|.||....................... .--------+-||-------. Source Network ( || )-. .' Call Home || ' ( DOTS server || Outbound ) ( || DDoS -' '-( || Attack ) '------+-||---------' | || +-----+-++----+ |Attack Source| +-------------+
DOTS Signal Channel Base DOTS Call Home Signal Channel +-.-.-.-.-.-.-.-.-.-++-.-.-.-.-.-.-.-.-.-+ : +------+ :: +------+ : : | DOTS | :: | DOTS | : : |client| :: |server| : : +--+---+ :: +---+--+ : : /\ | :: | : Network : || | :: | :Provider : || | :: | : (DMS) ...:.....||......|.....::.....|.............:........ Outbound || | :: | || Inbound DDoS || | :: | || DDoS Attack || | :: | \/ Attack : +--+---+ :: +---+--+ : : | DOTS | :: | DOTS | : : |server| :: |client| : : +------+ :: +------+ : +-.-.-.-.-.-.-.-.-.-++-.-.-.-.-.-.-.-.-.-+ Network #A
DOTS Signal Channel Base DOTS Call Home Signal Channel +-.-.-.-.-.-.-.-.-.-++-.-.-.-.-.-.-.-.-.-+ : Network +------+ :: +------+ Third : : Provider | DOTS | :: | DOTS | Party : : (DMS) |client| :: |server| DMS : : +--+---+ :: +---+--+ Provider : : /\ | :: | : : || | :: | : : || | :: | : ...:.....||......|.....::.....|.............:........ Outbound || | :: | || Inbound DDoS || | :: | || DDoS Attack || | :: | \/ Attack : +--+---+ :: +---+--+ : : | DOTS | :: | DOTS | : : |server| :: |client| : : +------+ :: +------+ : +-.-.-.-.-.-.-.-.-.-++-.-.-.-.-.-.-.-.-.-+ Network #B
DOTS Signal Channel Base DOTS Call Home Signal Channel +-.-.-.-.-.-.-.-.-.-++-.-.-.-.-.-.-.-.-.-+ : +----------------------+ : : | Node #i | : : | +------+ +------+ | : : | | DOTS | | DOTS | | : : | |client| |server| | : : | +--+---+ +---+--+ | : : +----|-----::-----|----+ : Network : /\ | :: | :Provider : || | :: | : (DMS) ...:.....||......|.....::.....|.............:........ Outbound || | :: | || Inbound DDoS || | :: | || DDoS Attack || | :: | \/ Attack : +--+---+ :: +---+--+ : : | DOTS | :: | DOTS | : : |server| :: |client| : : +------+ :: +------+ : +-.-.-.-.-.-.-.-.-.-++-.-.-.-.-.-.-.-.-.-+ Network #C
DOTS Signal Channel Base DOTS Call Home Signal Channel +-.-.-.-.-.-.-.-.-.-++-.-.-.-.-.-.-.-.-.-+ : +----------------------+ : : | Node #k | : : | +------+ +------+ | : : | | DOTS | | DOTS | | : : | |client| |server| | : : | +--+---+ +---+--+ | : : +----|-----::-----|----+ : Network : /\ | :: | :Provider : || | :: | : (DMS) ...:.....||......|.....::.....|.............:........ Outbound || | :: | || Inbound DDoS || | :: | || DDoS Attack || | :: | \/ Attack : +----|-----::-----|----+ : : | +--+---+ +---+--+ | : : | | DOTS | | DOTS | | : : | |server| |client| | : : | +------+ +------+ | : : | Node #j | : : +----------------------+ : +-.-.-.-.-.-.-.-.-.-++-.-.-.-.-.-.-.-.-.-+ Network #D
+-----------+ +-----------+ | Call Home | | Call Home | | DOTS | | DOTS | | server | | client | +-----+-----+ +-----+-----+ (D)TLS client (D)TLS server | | | 1. (D)TLS connection | |----------------------------------->| | 2. Mitigation request | |<-----------------------------------| | ... |
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "redirect" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "mid=123" Content-Format: "application/dots+cbor" { "ietf-dots-signal-channel:redirected-signal": { "ietf-dots-call-home:alt-ch-client": "alt-call-home-client.example", "ietf-dots-call-home:alt-ch-client-record": [ "2001:db8:6401::1", "2001:db8:6401::2" ], "ietf-dots-call-home:ttl": 600 }
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "mitigate" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "mid=56" Content-Format: "application/dots+cbor" { "ietf-dots-signal-channel:mitigation-scope": { "scope": [ { "target-prefix": [ "2001:db8:c000::/128" ], "ietf-dots-call-home:source-prefix": [ "2001:db8:123::1/128" ], "lifetime": 3600 } ] } }
N | .-------------------. E | ( )-. T | .' ' W | ( Call Home ) O | ( DOTS client -' R | '-( ) K | '-------+-----------' | | P | | R | +---+---+ O | | CGN | External Realm V |..............| |...................... I | | | Internal Realm D | +---+---+ E | | R | | --- | .---------+---------. ( )-. .' Source Network ' ( ) ( Call Home -' '-( DOTS server ) '------+------------' | +-----+-------+ |Attack Source| +-------------+
.-------------------. ( )-. .' Network Provider (DMS)' ( ) ( Call Home -' '-( DOTS client ) '-------+-----------' | --- +---+---+ S | | CPE | External Realm O |..............| |................ U | | NAT | Internal Realm R | +---+---+ C | | E | .---------+---------. | ( )-. N | .' ' E | ( Call Home ) T | ( DOTS server -' W | '-( ) O | '-------+-----------' R | | K | +------+------+ | |Attack Source| +-------------+
.-------------------. ( )-. .' Network Provider (DMS) ' ( ) ( Call Home -' '-( DOTS client ) '---------+---------' | --- +-----+-----+ S | | CPE/NAT | External Realm O |..............| |................ U | | Call Home | Internal Realm R | |DOTS server| C | +-----+-----+ E | | | .-----------+-------. | ( )-. N | .' ' E | ( Local Area Network ) T | ( -' W | '-( ) O | '--------+----------' R | | K | +------+------+ | |Attack Source| +-------------+
module: ietf-dots-call-home augment-structure /dots-signal:dots-signal/dots-signal:message-type /dots-signal:mitigation-scope/dots-signal:scope: +-- source-prefix* inet:ip-prefix +-- source-port-range* [lower-port] | +-- lower-port inet:port-number | +-- upper-port? inet:port-number +-- source-icmp-type-range* [lower-type] +-- lower-type uint8 +-- upper-type? uint8 augment-structure /dots-signal:dots-signal/dots-signal:message-type /dots-signal:redirected-signal: +-- (type)? +--:(call-home-only) +-- alt-ch-client inet:domain-name +-- alt-ch-client-record* inet:ip-address +-- ttl? uint32
Parameter Name | YANG Type | CBOR Key Value | CBOR Major Type & Information | JSON Type |
---|---|---|---|---|
ietf-dots-call-home:-source-prefix | leaf-list inet:-ip-prefix | 32768 | 4 array 3 text string |
Array String |
ietf-dots-call-home:-source-port-range | list | 32769 | 4 array | Array |
ietf-dots-call-home:-source-icmp-type-range | list | 32770 | 4 array | Array |
lower-type | uint8 | 32771 | 0 unsigned | Number |
upper-type | uint8 | 32772 | 0 unsigned | Number |
ietf-dots-call-home:-alt-ch-client | inet: domain-name | 32773 | 3 text string | String |
ietf-dots-call-home:-alt-ch-client-record | leaf-list inet:-ip-address | 32774 | 4 array 3 text string |
Array String |
ietf-dots-call-home:-ttl | uint32 | 32775 | 0 unsigned | Number |
module ietf-dots-call-home { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-dots-call-home"; prefix dots-call-home; import ietf-inet-types { prefix inet; reference "Section 4 of RFC 6991"; } import ietf-dots-signal-channel { prefix dots-signal; reference "RFC 9132: 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"; } 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: Konda, Tirumaleswar Reddy <mailto:kondtir@gmail.com>; Author: Mohamed Boucadair <mailto:mohamed.boucadair@orange.com>; Author: Jon Shallow <mailto:ietf-supjps@jpshallow.com>"; description "This module contains YANG definitions for the signaling messages exchanged between a DOTS client and a DOTS server for the Call Home deployment scenario. Copyright (c) 2021 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info). This version of this YANG module is part of RFC 9066; see the RFC itself for full legal notices."; revision 2021-12-09 { description "Initial revision."; reference "RFC 9066: Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal Channel Call Home"; } sx:augment-structure "/dots-signal:dots-signal" + "/dots-signal:message-type" + "/dots-signal:mitigation-scope" + "/dots-signal:scope" { description "Attack source details."; leaf-list source-prefix { type inet:ip-prefix; description "IPv4 or IPv6 prefix identifying the attack source(s)."; } list source-port-range { key "lower-port"; description "Port range. When only lower-port is present, it represents a single port number."; leaf lower-port { type inet:port-number; description "Lower port number of the port range."; } leaf upper-port { type inet:port-number; must '. >= ../lower-port' { error-message "The upper port number must be greater than or equal to the lower port number."; } description "Upper port number of the port range."; } } list source-icmp-type-range { key "lower-type"; description "ICMP/ICMPv6 type range. When only lower-type is present, it represents a single ICMP/ICMPv6 type. The address family of the target-prefix is used to determine whether ICMP or ICMPv6 is used."; leaf lower-type { type uint8; description "Lower ICMP/ICMPv6 type of the ICMP type range."; reference "RFC 792: Internet Control Message Protocol RFC 4443: Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification."; } leaf upper-type { type uint8; must '. >= ../lower-type' { error-message "The upper ICMP/ICMPv6 type must be greater than or equal to the lower ICMP type."; } description "Upper type of the ICMP type range."; reference "RFC 792: Internet Control Message Protocol RFC 4443: Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification."; } } } sx:augment-structure "/dots-signal:dots-signal" + "/dots-signal:message-type" + "/dots-signal:redirected-signal" { description "Augments the redirected signal to communicate an alternate Call Home DOTS client."; choice type { description "Indicates the type of the DOTS session (e.g., base DOTS signal channel, DOTS Call Home)."; case call-home-only { description "These attributes appear only in a signal Call Home channel message from a Call Home DOTS client to a Call Home DOTS server."; leaf alt-ch-client { type inet:domain-name; mandatory true; description "FQDN of an alternate Call Home DOTS client. This name is also presented as a reference identifier for authentication purposes."; } leaf-list alt-ch-client-record { type inet:ip-address; description "List of IP addresses for the alternate Call Home DOTS client. If this data node is not present, a Call Home DOTS server resolves the alt-ch-client into one or more IP addresses."; } leaf ttl { type uint32; units "seconds"; description "The Time To Live (TTL) of the alternate Call Home DOTS client."; reference "Section 4.6 of RFC 9132"; } } } } }
Parameter Name | CBOR Key Value | CBOR Major Type | Change Controller | Reference |
---|---|---|---|---|
ietf-dots-call-home:-source-prefix | 32768 | 4 | IESG | RFC 9066 |
ietf-dots-call-home:-source-port-range | 32769 | 4 | IESG | RFC 9066 |
ietf-dots-call-home:-source-icmp-type-range | 32770 | 4 | IESG | RFC 9066 |
lower-type | 32771 | 0 | IESG | RFC 9066 |
upper-type | 32772 | 0 | IESG | RFC 9066 |
ietf-dots-call-home:-alt-ch-client | 32773 | 3 | IESG | RFC 9066 |
ietf-dots-call-home:-alt-ch-client-record | 32774 | 4 | IESG | RFC 9066 |
ietf-dots-call-home:-ttl | 32775 | 0 | IESG | RFC 9066 |
Code | Label | Description | Reference |
---|---|---|---|
4 | request-rejected-legitimate-traffic | Mitigation request rejected. This code is returned by the DOTS server to indicate the attack traffic has been classified as legitimate traffic. | RFC 9066 |
augment /ietf-data:dots-data/ietf-data:capabilities: +--ro call-home-support? boolean augment /ietf-data:dots-data/ietf-data:dots-client: +--rw call-home-enable? boolean