Suffix | YANG Type | Example |
---|---|---|
-g | yang:gauge64 | low-percentile-g |
-c | container | connection-c |
-ps | per second | connection-ps |
structure dots-telemetry: +-- (telemetry-message-type)? +--:(telemetry-setup) | ... | +-- telemetry* [] | ... | +-- (setup-type)? | +--:(telemetry-config) | | ... | +--:(pipe) | | ... | +--:(baseline) | ... +--:(telemetry) ...
Header: GET (Code=0.01) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw"
structure dots-telemetry: +-- (telemetry-message-type)? +--:(telemetry-setup) | +-- (direction)? | | +--:(server-to-client-only) | | +-- max-config-values | | | +-- measurement-interval? interval | | | +-- measurement-sample? sample | | | +-- low-percentile? percentile | | | +-- mid-percentile? percentile | | | +-- high-percentile? percentile | | | +-- server-originated-telemetry? boolean | | | +-- telemetry-notify-interval? uint16 | | +-- min-config-values | | | +-- measurement-interval? interval | | | +-- measurement-sample? sample | | | +-- low-percentile? percentile | | | +-- mid-percentile? percentile | | | +-- high-percentile? percentile | | | +-- telemetry-notify-interval? uint16 | | +-- supported-unit-classes | | | +-- unit-config* [unit] | | | +-- unit unit-class | | | +-- unit-status boolean | | +-- supported-query-type* query-type | +-- telemetry* [] | +-- (direction)? | | +--:(server-to-client-only) | | +-- tsid? uint32 | +-- (setup-type)? | +--:(telemetry-config) | | +-- current-config | | +-- measurement-interval? interval | | +-- measurement-sample? sample | | +-- low-percentile? percentile | | +-- mid-percentile? percentile | | +-- high-percentile? percentile | | +-- unit-config* [unit] | | | +-- unit unit-class | | | +-- unit-status boolean | | +-- server-originated-telemetry? boolean | | +-- telemetry-notify-interval? uint16 | +--:(pipe) | | ... | +--:(baseline) | ... +--:(telemetry) ...
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=123" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "current-config": { "low-percentile": "5.00", "mid-percentile": "65.00", "high-percentile": "95.00" } } ] } }
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=124" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "current-config": { "low-percentile": "0.00", "mid-percentile": "0.00", "high-percentile": "95.00" } } ] } }
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=125" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "current-config": { "server-originated-telemetry": true } } ] } }
Header: GET (Code=0.01) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=123"
Header: DELETE (Code=0.04) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=123"
structure dots-telemetry: +-- (telemetry-message-type)? +--:(telemetry-setup) | ... | +-- telemetry* [] | +-- (direction)? | | +--:(server-to-client-only) | | +-- tsid? uint32 | +-- (setup-type)? | +--:(telemetry-config) | | ... | +--:(pipe) | | +-- total-pipe-capacity* [link-id unit] | | +-- link-id nt:link-id | | +-- capacity uint64 | | +-- unit unit | +--:(baseline) | ... +--:(telemetry) ...
,--,--,--. ,--,--,--. ,-' `-. ,-' `-. ( DOTS Client )=====( ISP#A ) `-. Domain ,-' link1 `-. ,-' `--'--'--' `--'--'--'
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=126" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "total-pipe-capacity": [ { "link-id": "link1", "capacity": "500", "unit": "megabit-ps" } ] } ] } }
,--,--,--. ,--,--,--. ,-' `-.===== ,-' `-. ( DOTS Client ) ( ISP#C ) `-. Domain ,-'====== `-. ,-' `--'--'--' `--'--'--'
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=hmcpH87lmPGsSTjkhXCbin" Uri-Path: "tsid=896" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "total-pipe-capacity": [ { "link-id": "aggregate", "capacity": "700", "unit": "megabit-ps" } ] } ] } }
,--,--,--. ,-' `-. ( ISP#B ) `-. ,-' `--'--'--' || || link2 ,--,--,--. ,--,--,--. ,-' `-. ,-' `-. ( DOTS Client )=====( ISP#A ) `-. Domain ,-' link1 `-. ,-' `--'--'--' `--'--'--'
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=127" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "total-pipe-capacity": [ { "link-id": "link1", "capacity": "500", "unit": "megabit-ps" }, { "link-id": "link2", "capacity": "500", "unit": "megabit-ps" } ] } ] } }
,--,--,--. ,-' `-. ( ISP#B ) `-. ,-' `--'--'--' || || link2 ,--,--,--. ,-' `-. ( DOTS Client ) `-. Domain ,-' `--'--'--'
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=128" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "total-pipe-capacity": [ { "link-id": "link1", "capacity": "0", "unit": "megabit-ps" }, { "link-id": "link2", "capacity": "500", "unit": "megabit-ps" } ] } ] } }
structure dots-telemetry: +-- (telemetry-message-type)? +--:(telemetry-setup) | ... | +-- telemetry* [] | +-- (direction)? | | +--:(server-to-client-only) | | +-- tsid? uint32 | +-- (setup-type)? | +--:(telemetry-config) | | ... | +--:(pipe) | | ... | +--:(baseline) | +-- baseline* [id] | +-- id uint32 | +-- target-prefix* | | inet:ip-prefix | +-- target-port-range* [lower-port] | | +-- lower-port inet:port-number | | +-- upper-port? inet:port-number | +-- target-protocol* uint8 | +-- target-fqdn* | | inet:domain-name | +-- target-uri* | | inet:uri | +-- alias-name* | | string | +-- total-traffic-normal* [unit] | | +-- unit unit | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | +-- total-traffic-normal-per-protocol* | | [unit protocol] | | +-- protocol uint8 | | +-- unit unit | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | +-- total-traffic-normal-per-port* [unit port] | | +-- port inet:port-number | | +-- unit unit | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | +-- total-connection-capacity* [protocol] | | +-- protocol uint8 | | +-- connection? uint64 | | +-- connection-client? uint64 | | +-- embryonic? uint64 | | +-- embryonic-client? uint64 | | +-- connection-ps? uint64 | | +-- connection-client-ps? uint64 | | +-- request-ps? uint64 | | +-- request-client-ps? uint64 | | +-- partial-request-max? uint64 | | +-- partial-request-client-max? uint64 | +-- total-connection-capacity-per-port* | [protocol port] | +-- port | | inet:port-number | +-- protocol uint8 | +-- connection? uint64 | +-- connection-client? uint64 | +-- embryonic? uint64 | +-- embryonic-client? uint64 | +-- connection-ps? uint64 | +-- connection-client-ps? uint64 | +-- request-ps? uint64 | +-- request-client-ps? uint64 | +-- partial-request-max? uint64 | +-- partial-request-client-max? uint64 +--:(telemetry) ...
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=129" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "baseline": [ { "id": 1, "target-prefix": [ "2001:db8:6401::1/128", "2001:db8:6401::2/128" ], "total-traffic-normal": [ { "unit": "megabit-ps", "peak-g": "60" } ] } ] } ] } }
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tsid=130" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry-setup": { "telemetry": [ { "baseline": [ { "id": 1, "target-prefix": [ "2001:db8:6401::1/128", "2001:db8:6401::2/128" ], "total-traffic-normal-per-protocol": [ { "unit": "megabit-ps", "protocol": 6, "peak-g": "50" }, { "unit": "megabit-ps", "protocol": 17, "peak-g": "10" } ] } ] } ] } }
Header: DELETE (Code=0.04) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm-setup" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw"
structure dots-telemetry: +-- (telemetry-message-type)? +--:(telemetry-setup) | ... | +-- telemetry* [] | +-- (direction)? | | +--:(server-to-client-only) | | +-- tsid? uint32 | +-- (setup-type)? | +--:(telemetry-config) | | ... | +--:(pipe) | | ... | +--:(baseline) | ... +--:(telemetry) +-- pre-or-ongoing-mitigation* [] +-- (direction)? | +--:(server-to-client-only) | +-- tmid? uint32 +-- target | ... +-- total-traffic* [unit] | ... +-- total-traffic-protocol* [unit protocol] | ... +-- total-traffic-port* [unit port] | ... +-- total-attack-traffic* [unit] | ... +-- total-attack-traffic-protocol* [unit protocol] | ... +-- total-attack-traffic-port* [unit port] | ... +-- total-attack-connection-protocol* [protocol] | ... +-- total-attack-connection-port* [protocol port] | ... +-- attack-detail* [vendor-id attack-id] ...
+-----------+ +-----------+ |DOTS client| |DOTS server| +-----------+ +-----------+ | | |==============Mitigation Request (mid)==============>| | | |==============Telemetry (mid-list{mid})=============>| | |
+-----------+ +-----------+ |DOTS client| |DOTS server| +-----------+ +-----------+ | | |<===============Telemetry (target-prefix)============| | | |========Mitigation Request (target-prefix)==========>| | |
+--:(telemetry) +-- pre-or-ongoing-mitigation* [] +-- (direction)? | +--:(server-to-client-only) | +-- tmid? uint32 +-- target | +-- target-prefix* inet:ip-prefix | +-- target-port-range* [lower-port] | | +-- lower-port inet:port-number | | +-- upper-port? inet:port-number | +-- target-protocol* uint8 | +-- target-fqdn* inet:domain-name | +-- target-uri* inet:uri | +-- alias-name* string | +-- mid-list* uint32 +-- total-traffic* [unit] | ... +-- total-traffic-protocol* [unit protocol] | ... +-- total-traffic-port* [unit port] | ... +-- total-attack-traffic* [unit] | ... +-- total-attack-traffic-protocol* [unit protocol] | ... +-- total-attack-traffic-port* [unit port] | ... +-- total-attack-connection-protocol* [protocol] | ... +-- total-attack-connection-port* [protocol port] | ... +-- attack-detail* [vendor-id attack-id] ...
+--:(telemetry) +-- pre-or-ongoing-mitigation* [] +-- (direction)? | +--:(server-to-client-only) | +-- tmid? uint32 +-- target | ... +-- total-traffic* [unit] | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-traffic-protocol* [unit protocol] | +-- protocol uint8 | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-traffic-port* [unit port] | +-- port inet:port-number | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-attack-traffic* [unit] | ... +-- total-attack-traffic-protocol* [unit protocol] | ... +-- total-attack-traffic-port* [unit port] | ... +-- total-attack-connection-protocol* [protocol] | ... +-- total-attack-connection-port* [protocol port] | ... +-- attack-detail* [vendor-id attack-id] ...
+--:(telemetry) +-- pre-or-ongoing-mitigation* [] +-- (direction)? | +--:(server-to-client-only) | +-- tmid? uint32 +-- target | ... +-- total-traffic* [unit] | ... +-- total-traffic-protocol* [unit protocol] | ... +-- total-traffic-port* [unit port] | ... +-- total-attack-traffic* [unit] | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-attack-traffic-protocol* [unit protocol] | +-- protocol uint8 | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-attack-traffic-port* [unit port] | +-- port inet:port-number | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-attack-connection-protocol* [protocol] | ... +-- total-attack-connection-port* [protocol port] | ... +-- attack-detail* [vendor-id attack-id] ...
+--:(telemetry) +-- pre-or-ongoing-mitigation* [] +-- (direction)? | +--:(server-to-client-only) | +-- tmid? uint32 +-- target | ... +-- total-traffic* [unit] | ... +-- total-traffic-protocol* [unit protocol] | ... +-- total-traffic-port* [unit port] | ... +-- total-attack-traffic* [unit] | ... +-- total-attack-traffic-protocol* [unit protocol] | ... +-- total-attack-traffic-port* [unit port] | ... +-- total-attack-connection-protocol* [protocol] | +-- protocol uint8 | +-- connection-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- embryonic-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- connection-ps-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- request-ps-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- partial-request-c | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-attack-connection-port* [protocol port] | +-- protocol uint8 | +-- port inet:port-number | +-- connection-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- embryonic-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- connection-ps-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- request-ps-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- partial-request-c | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- attack-detail* [vendor-id attack-id] ...
+--:(telemetry) +-- pre-or-ongoing-mitigation* [] +-- (direction)? | +--:(server-to-client-only) | +-- tmid? uint32 +-- target | ... +-- total-traffic* [unit] | ... +-- total-traffic-protocol* [unit protocol] | ... +-- total-traffic-port* [unit port] | ... +-- total-attack-traffic* [unit] | ... +-- total-attack-traffic-protocol* [unit protocol] | ... +-- total-attack-traffic-port* [unit port] | ... +-- total-attack-connection-protocol* [protocol] | ... +-- total-attack-connection-port* [protocol port] | ... +-- attack-detail* [vendor-id attack-id] +-- vendor-id uint32 +-- attack-id uint32 +-- description-lang? string +-- attack-description? string +-- attack-severity? attack-severity +-- start-time? uint64 +-- end-time? uint64 +-- source-count | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- top-talker +-- talker* [source-prefix] +-- spoofed-status? boolean +-- 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 +-- total-attack-traffic* [unit] | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-attack-connection-protocol* [protocol] +-- protocol uint8 +-- connection-c | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- embryonic-c | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- connection-ps-c | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- request-ps-c | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- partial-request-c +-- low-percentile-g? yang:gauge64 +-- mid-percentile-g? yang:gauge64 +-- high-percentile-g? yang:gauge64 +-- peak-g? yang:gauge64 +-- current-g? yang:gauge64
POST /restconf/data/ietf-dots-data-channel:dots-data\ /dots-client=dz6pHjaADkaFTbjr0JGBpw HTTP/1.1 Host: example.com Content-Type: application/yang-data+json { "ietf-dots-mapping:vendor-mapping": { "vendor": [ { "vendor-id": 345, "vendor-name": "mitigator-c", "last-updated": "1629898958", "attack-mapping": [ { "attack-id": 1, "attack-description": "Include a description of this attack" }, { "attack-id": 2, "attack-description": "Again, include a description of the attack" } ] } ] } }
module: ietf-dots-mapping augment /data-channel:dots-data/data-channel:dots-client: +--rw vendor-mapping {dots-telemetry}? +--rw vendor* [vendor-id] +--rw vendor-id uint32 +--rw vendor-name? string +--rw description-lang? string +--rw last-updated uint64 +--rw attack-mapping* [attack-id] +--rw attack-id uint32 +--rw attack-description string augment /data-channel:dots-data/data-channel:capabilities: +--ro vendor-mapping-enabled? boolean {dots-telemetry}? augment /data-channel:dots-data: +--ro vendor-mapping {dots-telemetry}? +--ro vendor* [vendor-id] +--ro vendor-id uint32 +--ro vendor-name? string +--ro description-lang? string +--ro last-updated uint64 +--ro attack-mapping* [attack-id] +--ro attack-id uint32 +--ro attack-description string
GET /restconf/data/ietf-dots-data-channel:dots-data\ /ietf-dots-mapping:vendor-mapping HTTP/1.1 Host: example.com Accept: application/yang-data+json
GET /restconf/data/ietf-dots-data-channel:dots-data\ /ietf-dots-mapping:vendor-mapping?depth=3 HTTP/1.1 Host: example.com Accept: application/yang-data+json
{ "ietf-dots-mapping:vendor-mapping": { "vendor": [ { "vendor-id": 32473, "vendor-name": "mitigator-s", "last-updated": "1629898758", "attack-mapping": [] } ] } }
GET /restconf/data/ietf-dots-data-channel:dots-data\ /dots-client=dz6pHjaADkaFTbjr0JGBpw\ /ietf-dots-mapping:vendor-mapping?\ content=all HTTP/1.1 Host: example.com Accept: application/yang-data+json
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tmid=123" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry": { "pre-or-ongoing-mitigation": [ { "target": { "target-prefix": [ "2001:db8::1/128" ] }, "total-attack-traffic-protocol": [ { "protocol": 17, "unit": "megabit-ps", "mid-percentile-g": "900" } ], "attack-detail": [ { "vendor-id": 32473, "attack-id": 77, "start-time": "1608336568", "attack-severity": "high" } ] } ] } }
Header: DELETE (Code=0.04) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tmid=123"
Header: DELETE (Code=0.04) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw"
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tmid=567" Content-Format: "application/dots+cbor" { "ietf-dots-telemetry:telemetry": { "pre-or-ongoing-mitigation": [ { "target": { "target-prefix": [ "2001:db8::/32" ] } } ] } }
Header: GET (Code=0.01) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "tmid=567" Observe: 0
Header: GET (Code=0.01) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Observe: 0
Header: GET (Code=0.01) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "tm" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Query: "target-protocol=17" Observe: 0
{ "ietf-dots-telemetry:telemetry": { "pre-or-ongoing-mitigation": [ { "tmid": 567, "target": { "target-prefix": [ "2001:db8::1/128" ] }, "target-protocol": [ 17 ], "total-attack-traffic": [ { "unit": "megabit-ps", "mid-percentile-g": "900" } ], "attack-detail": [ { "vendor-id": 32473, "attack-id": 77, "start-time": "1618339785", "attack-severity": "high" } ] } ] } }
augment-structure /dots-signal:dots-signal/dots-signal:message-type /dots-signal:mitigation-scope/dots-signal:scope: +-- total-attack-traffic* [unit] | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- attack-detail* [vendor-id attack-id] +-- vendor-id uint32 +-- attack-id uint32 +-- attack-description? string +-- attack-severity? attack-severity +-- start-time? uint64 +-- end-time? uint64 +-- source-count | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- top-talker +-- talker* [source-prefix] +-- spoofed-status? boolean +-- 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 +-- total-attack-traffic* [unit] | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-attack-connection +-- connection-c | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- embryonic-c | ... +-- connection-ps-c | ... +-- request-ps-c | ... +-- partial-request-c ...
Header: PUT (Code=0.03) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "mitigate" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "mid=123" If-Match: Content-Format: "application/dots+cbor" { "ietf-dots-signal-channel:mitigation-scope": { "scope": [ { "alias-name": [ "https1", "https2" ], "attack-status": "under-attack", "ietf-dots-telemetry:total-attack-traffic": [ { "unit": "megabit-ps", "mid-percentile-g": "900" } ] } ] } }
augment-structure /dots-signal:dots-signal/dots-signal:message-type /dots-signal:mitigation-scope/dots-signal:scope: +-- (direction)? | +--:(server-to-client-only) | +-- total-traffic* [unit] | | +-- unit unit | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- total-attack-connection | +-- connection-c | | +-- low-percentile-g? yang:gauge64 | | +-- mid-percentile-g? yang:gauge64 | | +-- high-percentile-g? yang:gauge64 | | +-- peak-g? yang:gauge64 | | +-- current-g? yang:gauge64 | +-- embryonic-c | | ... | +-- connection-ps-c | | ... | +-- request-ps-c | | ... | +-- partial-request-c | ... +-- total-attack-traffic* [unit] | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- attack-detail* [vendor-id attack-id] +-- vendor-id uint32 +-- attack-id uint32 +-- attack-description? string +-- attack-severity? attack-severity +-- start-time? uint64 +-- end-time? uint64 +-- source-count | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- top-talker +-- talker* [source-prefix] +-- spoofed-status? boolean +-- 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 +-- total-attack-traffic* [unit] | +-- unit unit | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- total-attack-connection +-- connection-c | +-- low-percentile-g? yang:gauge64 | +-- mid-percentile-g? yang:gauge64 | +-- high-percentile-g? yang:gauge64 | +-- peak-g? yang:gauge64 | +-- current-g? yang:gauge64 +-- embryonic-c | ... +-- connection-ps-c | ... +-- request-ps-c | ... +-- partial-request-c ...
{ "ietf-dots-signal-channel:mitigation-scope": { "scope": [ { "mid": 12332, "mitigation-start": "1507818434", "alias-name": [ "https1", "https2" ], "lifetime": 1600, "status": "attack-successfully-mitigated", "bytes-dropped": "134334555", "bps-dropped": "43344", "pkts-dropped": "333334444", "pps-dropped": "432432", "ietf-dots-telemetry:total-attack-traffic": [ { "unit": "megabit-ps", "mid-percentile-g": "752" } ], "ietf-dots-telemetry:attack-detail": [ { "vendor-id": 32473, "attack-id": 77, "source-count": { "peak-g": "12683" } } ] } ] } }
Header: GET (Code=0.01) Uri-Path: ".well-known" Uri-Path: "dots" Uri-Path: "mitigate" Uri-Path: "cuid=dz6pHjaADkaFTbjr0JGBpw" Uri-Path: "mid=12332" Uri-Query: "target-alias=https1" Observe: 0
module ietf-dots-telemetry { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-dots-telemetry"; prefix dots-telemetry; import ietf-dots-signal-channel { prefix dots-signal; reference "RFC 9132: Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal Channel Specification"; } import ietf-dots-data-channel { prefix data-channel; reference "RFC 8783: Distributed Denial-of-Service Open Threat Signaling (DOTS) Data Channel Specification"; } import ietf-yang-types { prefix yang; reference "RFC 6991: Common YANG Data Types, Section 3"; } import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Data Types, Section 4"; } import ietf-network-topology { prefix nt; reference "RFC 8345: A YANG Data Model for Network Topologies, Section 6.2"; } 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: Mohamed Boucadair <mailto:mohamed.boucadair@orange.com> Author: Konda, Tirumaleswar Reddy.K <mailto:kondtir@gmail.com>"; description "This module contains YANG definitions for the signaling of DOTS telemetry data exchanged between a DOTS client and a DOTS server by means of the DOTS signal channel. Copyright (c) 2022 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 Revised 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 9244; see the RFC itself for full legal notices."; revision 2022-06-20 { description "Initial revision."; reference "RFC 9244: Distributed Denial-of-Service Open Threat Signaling (DOTS) Telemetry"; } typedef attack-severity { type enumeration { enum none { value 1; description "No effect on the DOTS client domain."; } enum low { value 2; description "Minimal effect on the DOTS client domain."; } enum medium { value 3; description "A subset of DOTS client domain resources is out of service."; } enum high { value 4; description "The DOTS client domain is under extremely severe conditions."; } enum unknown { value 5; description "The impact of the attack is not known."; } } description "Enumeration for attack severity."; reference "RFC 7970: The Incident Object Description Exchange Format Version 2, Section 3.12.2"; } typedef unit-class { type enumeration { enum packet-ps { value 1; description "Packets per second (pps)."; } enum bit-ps { value 2; description "Bits per second (bps)."; } enum byte-ps { value 3; description "Bytes per second (Bps)."; } } description "Enumeration to indicate which unit class is used. These classes are supported: pps, bps, and Bps."; } typedef unit { type enumeration { enum packet-ps { value 1; description "Packets per second (pps)."; } enum bit-ps { value 2; description "Bits per second (bps)."; } enum byte-ps { value 3; description "Bytes per second (Bps)."; } enum kilopacket-ps { value 4; description "Kilo packets per second (kpps)."; } enum kilobit-ps { value 5; description "Kilobits per second (kbps)."; } enum kilobyte-ps { value 6; description "Kilobytes per second (kBps)."; } enum megapacket-ps { value 7; description "Mega packets per second (Mpps)."; } enum megabit-ps { value 8; description "Megabits per second (Mbps)."; } enum megabyte-ps { value 9; description "Megabytes per second (MBps)."; } enum gigapacket-ps { value 10; description "Giga packets per second (Gpps)."; } enum gigabit-ps { value 11; description "Gigabits per second (Gbps)."; } enum gigabyte-ps { value 12; description "Gigabytes per second (GBps)."; } enum terapacket-ps { value 13; description "Tera packets per second (Tpps)."; } enum terabit-ps { value 14; description "Terabits per second (Tbps)."; } enum terabyte-ps { value 15; description "Terabytes per second (TBps)."; } enum petapacket-ps { value 16; description "Peta packets per second (Ppps)."; } enum petabit-ps { value 17; description "Petabits per second (Pbps)."; } enum petabyte-ps { value 18; description "Petabytes per second (PBps)."; } enum exapacket-ps { value 19; description "Exa packets per second (Epps)."; } enum exabit-ps { value 20; description "Exabits per second (Ebps)."; } enum exabyte-ps { value 21; description "Exabytes per second (EBps)."; } enum zettapacket-ps { value 22; description "Zetta packets per second (Zpps)."; } enum zettabit-ps { value 23; description "Zettabits per second (Zbps)."; } enum zettabyte-ps { value 24; description "Zettabytes per second (ZBps)."; } } description "Enumeration to indicate which unit is used. Only one unit per unit class is used owing to unit auto-scaling."; } typedef interval { type enumeration { enum 5-minutes { value 1; description "5 minutes."; } enum 10-minutes { value 2; description "10 minutes."; } enum 30-minutes { value 3; description "30 minutes."; } enum hour { value 4; description "Hour."; } enum day { value 5; description "Day."; } enum week { value 6; description "Week."; } enum month { value 7; description "Month."; } } description "Enumeration to indicate the overall measurement period."; } typedef sample { type enumeration { enum second { value 1; description "One-second measurement period."; } enum 5-seconds { value 2; description "5-second measurement period."; } enum 30-seconds { value 3; description "30-second measurement period."; } enum minute { value 4; description "One-minute measurement period."; } enum 5-minutes { value 5; description "5-minute measurement period."; } enum 10-minutes { value 6; description "10-minute measurement period."; } enum 30-minutes { value 7; description "30-minute measurement period."; } enum hour { value 8; description "One-hour measurement period."; } } description "Enumeration to indicate the sampling period."; } typedef percentile { type decimal64 { fraction-digits 2; } description "The nth percentile of a set of data is the value at which n percent of the data is below it."; } typedef query-type { type enumeration { enum target-prefix { value 1; description "Query based on target prefix."; } enum target-port { value 2; description "Query based on target port number."; } enum target-protocol { value 3; description "Query based on target protocol."; } enum target-fqdn { value 4; description "Query based on target FQDN."; } enum target-uri { value 5; description "Query based on target URI."; } enum target-alias { value 6; description "Query based on target alias."; } enum mid { value 7; description "Query based on mitigation identifier (mid)."; } enum source-prefix { value 8; description "Query based on source prefix."; } enum source-port { value 9; description "Query based on source port number."; } enum source-icmp-type { value 10; description "Query based on ICMP type."; } enum content { value 11; description "Query based on the 'c' (content) Uri-Query option, which is used to control the selection of configuration and non-configuration data nodes."; reference "RFC 9132: Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal Channel Specification, Section 4.4.2"; } } description "Enumeration of support for query types that can be used in a GET request to filter out data. Requests with invalid query types (e.g., not supported, malformed) received by the DOTS server are rejected with a 4.00 (Bad Request) Response Code."; } grouping telemetry-parameters { description "A grouping that includes a set of parameters that are used to prepare the reported telemetry data. The grouping indicates a measurement interval, a measurement sample period, and low-percentile/mid-percentile/high-percentile values."; leaf measurement-interval { type interval; description "Defines the period during which percentiles are computed."; } leaf measurement-sample { type sample; description "Defines the time distribution for measuring values that are used to compute percentiles. The measurement sample value must be less than the measurement interval value."; } leaf low-percentile { type percentile; default "10.00"; description "Low-percentile. If set to '0', this means that the use of low-percentile values is disabled."; } leaf mid-percentile { type percentile; must '. >= ../low-percentile' { error-message "The mid-percentile must be greater than or equal to the low-percentile."; } default "50.00"; description "Mid-percentile. If set to the same value as 'low-percentile', this means that the use of mid-percentile values is disabled."; } leaf high-percentile { type percentile; must '. >= ../mid-percentile' { error-message "The high-percentile must be greater than or equal to the mid-percentile."; } default "90.00"; description "High-percentile. If set to the same value as 'mid-percentile', this means that the use of high-percentile values is disabled."; } } grouping percentile-and-peak { description "Generic grouping for percentile and peak values."; leaf low-percentile-g { type yang:gauge64; description "Low-percentile value."; } leaf mid-percentile-g { type yang:gauge64; description "Mid-percentile value."; } leaf high-percentile-g { type yang:gauge64; description "High-percentile value."; } leaf peak-g { type yang:gauge64; description "Peak value."; } } grouping percentile-peak-and-current { description "Generic grouping for percentile and peak values."; uses percentile-and-peak; leaf current-g { type yang:gauge64; description "Current value."; } } grouping unit-config { description "Generic grouping for unit configuration."; list unit-config { key "unit"; description "Controls which unit classes are allowed when sharing telemetry data."; leaf unit { type unit-class; description "Can be 'packet-ps', 'bit-ps', or 'byte-ps'."; } leaf unit-status { type boolean; mandatory true; description "Enable/disable the use of the measurement unit class."; } } } grouping traffic-unit { description "Grouping of traffic as a function of the measurement unit."; leaf unit { type unit; description "The traffic can be measured using unit classes: 'packet-ps', 'bit-ps', or 'byte-ps'. DOTS agents auto-scale to the appropriate units (e.g., 'megabit-ps', 'kilobit-ps')."; } uses percentile-and-peak; } grouping traffic-unit-all { description "Grouping of traffic as a function of the measurement unit, including current values."; uses traffic-unit; leaf current-g { type yang:gauge64; description "Current observed value."; } } grouping traffic-unit-protocol { description "Grouping of traffic of a given transport protocol as a function of the measurement unit."; leaf protocol { type uint8; description "The transport protocol. Values are taken from the IANA 'Protocol Numbers' registry: <https://www.iana.org/assignments/protocol-numbers/>. For example, this parameter contains 6 for TCP, 17 for UDP, 33 for the Datagram Congestion Control Protocol (DCCP), or 132 for the Stream Control Transmission Protocol (SCTP)."; } uses traffic-unit; } grouping traffic-unit-protocol-all { description "Grouping of traffic of a given transport protocol as a function of the measurement unit, including current values."; uses traffic-unit-protocol; leaf current-g { type yang:gauge64; description "Current observed value."; } } grouping traffic-unit-port { description "Grouping of traffic bound to a port number as a function of the measurement unit."; leaf port { type inet:port-number; description "Port number used by a transport protocol."; } uses traffic-unit; } grouping traffic-unit-port-all { description "Grouping of traffic bound to a port number as a function of the measurement unit, including current values."; uses traffic-unit-port; leaf current-g { type yang:gauge64; description "Current observed value."; } } grouping total-connection-capacity { description "Total connection capacities for various types of connections, as well as overall capacity. These data nodes are useful for detecting resource-consuming DDoS attacks."; leaf connection { type uint64; description "The maximum number of simultaneous connections that are allowed to the target server."; } leaf connection-client { type uint64; description "The maximum number of simultaneous connections that are allowed to the target server per client."; } leaf embryonic { type uint64; description "The maximum number of simultaneous embryonic connections that are allowed to the target server. The term 'embryonic connection' refers to a connection whose connection handshake is not finished. Embryonic connections are only possible in connection-oriented transport protocols like TCP or SCTP."; } leaf embryonic-client { type uint64; description "The maximum number of simultaneous embryonic connections that are allowed to the target server per client."; } leaf connection-ps { type uint64; description "The maximum number of new connections allowed per second to the target server."; } leaf connection-client-ps { type uint64; description "The maximum number of new connections allowed per second to the target server per client."; } leaf request-ps { type uint64; description "The maximum number of requests allowed per second to the target server."; } leaf request-client-ps { type uint64; description "The maximum number of requests allowed per second to the target server per client."; } leaf partial-request-max { type uint64; description "The maximum number of outstanding partial requests that are allowed to the target server."; } leaf partial-request-client-max { type uint64; description "The maximum number of outstanding partial requests that are allowed to the target server per client."; } } grouping total-connection-capacity-protocol { description "Total connection capacity per protocol. These data nodes are useful for detecting resource-consuming DDoS attacks."; leaf protocol { type uint8; description "The transport protocol. Values are taken from the IANA 'Protocol Numbers' registry: <https://www.iana.org/assignments/protocol-numbers/>."; } uses total-connection-capacity; } grouping connection-percentile-and-peak { description "A set of data nodes that represent the attack characteristics."; container connection-c { uses percentile-and-peak; description "The number of simultaneous attack connections to the target server."; } container embryonic-c { uses percentile-and-peak; description "The number of simultaneous embryonic connections to the target server."; } container connection-ps-c { uses percentile-and-peak; description "The number of attack connections per second to the target server."; } container request-ps-c { uses percentile-and-peak; description "The number of attack requests per second to the target server."; } container partial-request-c { uses percentile-and-peak; description "The number of attack partial requests to the target server."; } } grouping connection-all { description "Total attack connections, including current values."; container connection-c { uses percentile-peak-and-current; description "The number of simultaneous attack connections to the target server."; } container embryonic-c { uses percentile-peak-and-current; description "The number of simultaneous embryonic connections to the target server."; } container connection-ps-c { uses percentile-peak-and-current; description "The number of attack connections per second to the target server."; } container request-ps-c { uses percentile-peak-and-current; description "The number of attack requests per second to the target server."; } container partial-request-c { uses percentile-peak-and-current; description "The number of attack partial requests to the target server."; } } grouping connection-protocol { description "Total attack connections."; leaf protocol { type uint8; description "The transport protocol. Values are taken from the IANA 'Protocol Numbers' registry: <https://www.iana.org/assignments/protocol-numbers/>."; } uses connection-percentile-and-peak; } grouping connection-port { description "Total attack connections per port number."; leaf protocol { type uint8; description "The transport protocol. Values are taken from the IANA 'Protocol Numbers' registry: <https://www.iana.org/assignments/protocol-numbers/>."; } leaf port { type inet:port-number; description "Port number."; } uses connection-percentile-and-peak; } grouping connection-protocol-all { description "Total attack connections per protocol, including current values."; leaf protocol { type uint8; description "The transport protocol. Values are taken from the IANA 'Protocol Numbers' registry: <https://www.iana.org/assignments/protocol-numbers/>."; } uses connection-all; } grouping connection-protocol-port-all { description "Total attack connections per port number, including current values."; leaf protocol { type uint8; description "The transport protocol. Values are taken from the IANA 'Protocol Numbers' registry: <https://www.iana.org/assignments/protocol-numbers/>."; } leaf port { type inet:port-number; description "Port number."; } uses connection-all; } grouping attack-detail { description "Various details that describe the ongoing attacks that need to be mitigated by the DOTS server. The attack details need to cover well-known and common attacks (such as a SYN flood) along with new emerging or vendor-specific attacks."; leaf vendor-id { type uint32; description "The Vendor ID is a security vendor's Private Enterprise Number as registered with IANA."; reference "IANA: Private Enterprise Numbers (https://www.iana.org/assignments/enterprise-numbers/)"; } leaf attack-id { type uint32; description "Unique identifier assigned by the vendor for the attack."; } leaf description-lang { type string { pattern '((([A-Za-z]{2,3}(-[A-Za-z]{3}(-[A-Za-z]{3})' + '{0,2})?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-[A-Za-z]{4})' + '?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}' + '|([0-9][A-Za-z0-9]{3})))*(-[0-9A-WYZa-wyz]' + '(-([A-Za-z0-9]{2,8}))+)*(-[Xx](-([A-Za-z0-9]' + '{1,8}))+)?|[Xx](-([A-Za-z0-9]{1,8}))+|' + '(([Ee][Nn]-[Gg][Bb]-[Oo][Ee][Dd]|[Ii]-' + '[Aa][Mm][Ii]|[Ii]-[Bb][Nn][Nn]|[Ii]-' + '[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Ii]-' + '[Ee][Nn][Oo][Cc][Hh][Ii][Aa][Nn]' + '|[Ii]-[Hh][Aa][Kk]|' + '[Ii]-[Kk][Ll][Ii][Nn][Gg][Oo][Nn]|' + '[Ii]-[Ll][Uu][Xx]|[Ii]-[Mm][Ii][Nn][Gg][Oo]|' + '[Ii]-[Nn][Aa][Vv][Aa][Jj][Oo]|[Ii]-[Pp][Ww][Nn]|' + '[Ii]-[Tt][Aa][Oo]|[Ii]-[Tt][Aa][Yy]|' + '[Ii]-[Tt][Ss][Uu]|[Ss][Gg][Nn]-[Bb][Ee]-[Ff][Rr]|' + '[Ss][Gg][Nn]-[Bb][Ee]-[Nn][Ll]|[Ss][Gg][Nn]-' + '[Cc][Hh]-[Dd][Ee])|([Aa][Rr][Tt]-' + '[Ll][Oo][Jj][Bb][Aa][Nn]|[Cc][Ee][Ll]-' + '[Gg][Aa][Uu][Ll][Ii][Ss][Hh]|' + '[Nn][Oo]-[Bb][Oo][Kk]|[Nn][Oo]-' + '[Nn][Yy][Nn]|[Zz][Hh]-[Gg][Uu][Oo][Yy][Uu]|' + '[Zz][Hh]-[Hh][Aa][Kk][Kk][Aa]|[Zz][Hh]-' + '[Mm][Ii][Nn]|[Zz][Hh]-[Mm][Ii][Nn]-' + '[Nn][Aa][Nn]|[Zz][Hh]-[Xx][Ii][Aa][Nn][Gg])))'; } default "en-US"; description "Indicates the language tag that is used for 'attack-description'."; reference "RFC 5646: Tags for Identifying Languages, Section 2.1"; } leaf attack-description { type string; description "Textual representation of the attack description. Natural Language Processing techniques (e.g., word embedding) might provide some utility in mapping the attack description to an attack type."; } leaf attack-severity { type attack-severity; description "Severity level of an attack. How this level is determined is implementation specific."; } leaf start-time { type uint64; description "The time the attack started. The start time is represented in seconds relative to 1970-01-01T00:00:00Z."; } leaf end-time { type uint64; description "The time the attack ended. The end time is represented in seconds relative to 1970-01-01T00:00:00Z."; } container source-count { description "Indicates the count of unique sources involved in the attack."; uses percentile-and-peak; leaf current-g { type yang:gauge64; description "Current observed value."; } } } grouping talker { description "Defines generic data related to top talkers."; leaf spoofed-status { type boolean; description "When set to 'true', it indicates whether this address is spoofed."; } leaf source-prefix { type inet:ip-prefix; description "IPv4 or IPv6 prefix identifying the attacker(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 type range. When only 'lower-type' is present, it represents a single ICMP type."; leaf lower-type { type uint8; description "Lower ICMP type of the ICMP type range."; } leaf upper-type { type uint8; must '. >= ../lower-type' { error-message "The upper ICMP type must be greater than or equal to the lower ICMP type."; } description "Upper type of the ICMP type range."; } } list total-attack-traffic { key "unit"; description "Total attack traffic issued from this source."; uses traffic-unit-all; } } grouping top-talker-aggregate { description "An aggregate of top attack sources. This aggregate is typically used when included in a mitigation request."; list talker { key "source-prefix"; description "Refers to a top talker that is identified by an IPv4 or IPv6 prefix identifying the attacker(s)."; uses talker; container total-attack-connection { description "Total attack connections issued from this source."; uses connection-all; } } } grouping top-talker { description "Top attack sources with detailed per-protocol structure."; list talker { key "source-prefix"; description "Refers to a top talker that is identified by an IPv4 or IPv6 prefix identifying the attacker(s)."; uses talker; list total-attack-connection-protocol { key "protocol"; description "Total attack connections issued from this source."; uses connection-protocol-all; } } } grouping baseline { description "Grouping for the telemetry baseline."; uses data-channel:target; leaf-list alias-name { type string; description "An alias name that points to an IP resource. An IP resource can be a router, a host, an Internet of Things (IoT) object, a server, etc."; } list total-traffic-normal { key "unit"; description "Total traffic normal baselines."; uses traffic-unit; } list total-traffic-normal-per-protocol { key "unit protocol"; description "Total traffic normal baselines per protocol."; uses traffic-unit-protocol; } list total-traffic-normal-per-port { key "unit port"; description "Total traffic normal baselines per port number."; uses traffic-unit-port; } list total-connection-capacity { key "protocol"; description "Total connection capacity."; uses total-connection-capacity-protocol; } list total-connection-capacity-per-port { key "protocol port"; description "Total connection capacity per port number."; leaf port { type inet:port-number; description "The target port number."; } uses total-connection-capacity-protocol; } } grouping pre-or-ongoing-mitigation { description "Grouping for the telemetry data."; list total-traffic { key "unit"; description "Total traffic."; uses traffic-unit-all; } list total-traffic-protocol { key "unit protocol"; description "Total traffic per protocol."; uses traffic-unit-protocol-all; } list total-traffic-port { key "unit port"; description "Total traffic per port number."; uses traffic-unit-port-all; } list total-attack-traffic { key "unit"; description "Total attack traffic."; uses traffic-unit-all; } list total-attack-traffic-protocol { key "unit protocol"; description "Total attack traffic per protocol."; uses traffic-unit-protocol-all; } list total-attack-traffic-port { key "unit port"; description "Total attack traffic per port number."; uses traffic-unit-port-all; } list total-attack-connection-protocol { key "protocol"; description "Total attack connections."; uses connection-protocol-all; } list total-attack-connection-port { key "protocol port"; description "Total attack connections per target port number."; uses connection-protocol-port-all; } list attack-detail { key "vendor-id attack-id"; description "Provides a set of attack details."; uses attack-detail; container top-talker { description "Lists the top attack sources."; uses top-talker; } } } sx:augment-structure "/dots-signal:dots-signal" + "/dots-signal:message-type" + "/dots-signal:mitigation-scope" + "/dots-signal:scope" { description "Extends mitigation scope with telemetry update data."; choice direction { description "Indicates the communication direction in which the data nodes can be included."; case server-to-client-only { description "These data nodes appear only in a mitigation message sent from the server to the client."; list total-traffic { key "unit"; description "Total traffic."; uses traffic-unit-all; } container total-attack-connection { description "Total attack connections."; uses connection-all; } } } list total-attack-traffic { key "unit"; description "Total attack traffic."; uses traffic-unit-all; } list attack-detail { key "vendor-id attack-id"; description "Attack details."; uses attack-detail; container top-talker { description "Top attack sources."; uses top-talker-aggregate; } } } sx:structure dots-telemetry { description "Main structure for DOTS telemetry messages."; choice telemetry-message-type { description "Can be 'telemetry-setup' or telemetry data."; case telemetry-setup { description "Indicates that the message is about telemetry setup."; choice direction { description "Indicates the communication direction in which the data nodes can be included."; case server-to-client-only { description "These data nodes appear only in a telemetry message sent from the server to the client."; container max-config-values { description "Maximum acceptable configuration values."; uses telemetry-parameters; leaf server-originated-telemetry { type boolean; default "false"; description "Indicates whether the DOTS server can be instructed to send pre-or-ongoing-mitigation telemetry. If set to 'false' or the data node is not present, this is an indication that the server does not support this capability."; } leaf telemetry-notify-interval { type uint16 { range "1 .. 3600"; } units "seconds"; must '. >= ../../min-config-values' + '/telemetry-notify-interval' { error-message "The value must be greater than or equal to the 'telemetry-notify-interval' value in the 'min-config-values' attribute"; } description "Minimum number of seconds between successive telemetry notifications."; } } container min-config-values { description "Minimum acceptable configuration values."; uses telemetry-parameters; leaf telemetry-notify-interval { type uint16 { range "1 .. 3600"; } units "seconds"; description "Minimum number of seconds between successive telemetry notifications."; } } container supported-unit-classes { description "Supported unit classes and default activation status."; uses unit-config; } leaf-list supported-query-type { type query-type; description "Indicates which query types are supported by the server. If the server does not announce the query types it supports, the client will be unable to use any of the potential 'query-type' values to reduce the returned data content from the server."; } } } list telemetry { description "The telemetry data per DOTS client. The keys of the list are 'cuid' and 'tsid', but these keys are not represented here because these keys are conveyed as mandatory Uri-Paths in requests. Omitting keys is compliant with RFC 8791."; reference "RFC 8791: YANG Data Structure Extensions"; choice direction { description "Indicates the communication direction in which the data nodes can be included."; case server-to-client-only { description "These data nodes appear only in a telemetry message sent from the server to the client."; leaf tsid { type uint32; description "A client-assigned identifier for the DOTS telemetry setup data."; } } } choice setup-type { description "Can be a mitigation configuration, a pipe capacity, or a baseline message."; case telemetry-config { description "Used to set telemetry parameters such as setting low-, mid-, and high-percentile values."; container current-config { description "Current telemetry configuration values."; uses telemetry-parameters; uses unit-config; leaf server-originated-telemetry { type boolean; description "Used by a DOTS client to enable/disable whether it requests pre-or-ongoing-mitigation telemetry from the DOTS server."; } leaf telemetry-notify-interval { type uint16 { range "1 .. 3600"; } units "seconds"; description "Minimum number of seconds between successive telemetry notifications."; } } } case pipe { description "Total pipe capacity of a DOTS client domain."; list total-pipe-capacity { key "link-id unit"; description "Total pipe capacity of a DOTS client domain."; leaf link-id { type nt:link-id; description "Identifier of an interconnection link of the DOTS client domain."; } leaf capacity { type uint64; mandatory true; description "Pipe capacity. This attribute is mandatory when 'total-pipe-capacity' is included in a message."; } leaf unit { type unit; description "The traffic can be measured using unit classes: packets per second (pps), bits per second (bps), and/or bytes per second (Bps). For a given unit class, the DOTS agents auto-scale to the appropriate units (e.g., 'megabit-ps', 'kilobit-ps')."; } } } case baseline { description "Traffic baseline information related to a DOTS client domain."; list baseline { key "id"; description "Traffic baseline information related to a DOTS client domain."; leaf id { type uint32; must '. >= 1'; description "An identifier that uniquely identifies a baseline entry communicated by a DOTS client."; } uses baseline; } } } } } case telemetry { description "Telemetry information."; list pre-or-ongoing-mitigation { description "Pre-or-ongoing-mitigation telemetry per DOTS client. The keys of the list are 'cuid' and 'tmid', but these keys are not represented here because these keys are conveyed as mandatory Uri-Paths in requests. Omitting keys is compliant with RFC 8791."; reference "RFC 8791: YANG Data Structure Extensions"; choice direction { description "Indicates the communication direction in which the data nodes can be included."; case server-to-client-only { description "These data nodes appear only in a telemetry message sent from the server to the client."; leaf tmid { type uint32; description "A client-assigned identifier for the DOTS telemetry data."; } } } container target { description "Indicates the target. At least one of the attributes 'target-prefix', 'target-fqdn', 'target-uri', 'alias-name', or 'mid-list' must be present in the target definition."; uses data-channel:target; leaf-list alias-name { type string; description "An alias name that points to a resource."; } leaf-list mid-list { type uint32; description "Reference to a list of associated mitigation requests."; reference "RFC 9132: Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal Channel Specification, Section 4.4.1"; } } uses pre-or-ongoing-mitigation; } } } } }
module ietf-dots-mapping { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-dots-mapping"; prefix dots-mapping; 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: Mohamed Boucadair <mailto:mohamed.boucadair@orange.com> Author: Jon Shallow <mailto:supjps-ietf@jpshallow.com>"; description "This module contains YANG definitions for the sharing of DDoS attack mapping details between a DOTS client and a DOTS server by means of the DOTS data channel. Copyright (c) 2022 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 Revised 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 9244; see the RFC itself for full legal notices."; revision 2022-06-20 { description "Initial revision."; reference "RFC 9244: Distributed Denial-of-Service Open Threat Signaling (DOTS) Telemetry"; } feature dots-telemetry { description "This feature indicates that DOTS telemetry data can be shared between DOTS clients and servers."; } grouping attack-mapping { description "A set of information used for sharing vendor attack mapping information with a peer."; list vendor { key "vendor-id"; description "Vendor attack mapping information related to the client/server."; leaf vendor-id { type uint32; description "The Vendor ID is a security vendor's Private Enterprise Number as registered with IANA."; reference "IANA: Private Enterprise Numbers (https://www.iana.org/assignments/enterprise-numbers/)"; } leaf vendor-name { type string; description "The name of the vendor (e.g., company A)."; } leaf description-lang { type string { pattern '((([A-Za-z]{2,3}(-[A-Za-z]{3}(-[A-Za-z]{3})' + '{0,2})?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-[A-Za-z]{4})' + '?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}' + '|([0-9][A-Za-z0-9]{3})))*(-[0-9A-WYZa-wyz]' + '(-([A-Za-z0-9]{2,8}))+)*(-[Xx](-([A-Za-z0-9]' + '{1,8}))+)?|[Xx](-([A-Za-z0-9]{1,8}))+|' + '(([Ee][Nn]-[Gg][Bb]-[Oo][Ee][Dd]|[Ii]-' + '[Aa][Mm][Ii]|[Ii]-[Bb][Nn][Nn]|[Ii]-' + '[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Ii]-' + '[Ee][Nn][Oo][Cc][Hh][Ii][Aa][Nn]' + '|[Ii]-[Hh][Aa][Kk]|' + '[Ii]-[Kk][Ll][Ii][Nn][Gg][Oo][Nn]|' + '[Ii]-[Ll][Uu][Xx]|[Ii]-[Mm][Ii][Nn][Gg][Oo]|' + '[Ii]-[Nn][Aa][Vv][Aa][Jj][Oo]|[Ii]-[Pp][Ww][Nn]|' + '[Ii]-[Tt][Aa][Oo]|[Ii]-[Tt][Aa][Yy]|' + '[Ii]-[Tt][Ss][Uu]|[Ss][Gg][Nn]-[Bb][Ee]-[Ff][Rr]|' + '[Ss][Gg][Nn]-[Bb][Ee]-[Nn][Ll]|[Ss][Gg][Nn]-' + '[Cc][Hh]-[Dd][Ee])|([Aa][Rr][Tt]-' + '[Ll][Oo][Jj][Bb][Aa][Nn]|[Cc][Ee][Ll]-' + '[Gg][Aa][Uu][Ll][Ii][Ss][Hh]|' + '[Nn][Oo]-[Bb][Oo][Kk]|[Nn][Oo]-' + '[Nn][Yy][Nn]|[Zz][Hh]-[Gg][Uu][Oo][Yy][Uu]|' + '[Zz][Hh]-[Hh][Aa][Kk][Kk][Aa]|[Zz][Hh]-' + '[Mm][Ii][Nn]|[Zz][Hh]-[Mm][Ii][Nn]-' + '[Nn][Aa][Nn]|[Zz][Hh]-[Xx][Ii][Aa][Nn][Gg])))'; } default "en-US"; description "Indicates the language tag that is used for 'attack-description'."; reference "RFC 5646: Tags for Identifying Languages, Section 2.1"; } leaf last-updated { type uint64; mandatory true; description "The time the mapping table was updated. It is represented in seconds relative to 1970-01-01T00:00:00Z."; } list attack-mapping { key "attack-id"; description "Attack mapping details."; leaf attack-id { type uint32; description "Unique identifier assigned by the vendor for the attack."; } leaf attack-description { type string; mandatory true; description "Textual representation of the attack description. Natural Language Processing techniques (e.g., word embedding) might provide some utility in mapping the attack description to an attack type."; } } } } augment "/data-channel:dots-data/data-channel:dots-client" { if-feature "dots-telemetry"; description "Augments the data channel with a vendor attack mapping table of the DOTS client."; container vendor-mapping { description "Used by DOTS clients to share their vendor attack mapping information with DOTS servers."; uses attack-mapping; } } augment "/data-channel:dots-data/data-channel:capabilities" { if-feature "dots-telemetry"; description "Augments the DOTS server capabilities with a parameter to indicate whether they can share attack mapping details."; leaf vendor-mapping-enabled { type boolean; config false; description "Indicates that the DOTS server supports sharing attack vendor mapping details with DOTS clients."; } } augment "/data-channel:dots-data" { if-feature "dots-telemetry"; description "Augments the data channel with a vendor attack mapping table of the DOTS server."; container vendor-mapping { config false; description "Includes the list of vendor attack mapping details that will be shared with DOTS clients upon request."; uses attack-mapping; } } }
Parameter Name | YANG Type | CBOR Key | CBOR Major Type & Information | JSON Type |
---|---|---|---|---|
tsid | uint32 | 128 | 0 unsigned | Number |
telemetry | list | 129 | 4 array | Array |
low-percentile | decimal64 | 130 | 6 tag 4 [-2, integer] | String |
mid-percentile | decimal64 | 131 | 6 tag 4 [-2, integer] | String |
high-percentile | decimal64 | 132 | 6 tag 4 [-2, integer] | String |
unit-config | list | 133 | 4 array | Array |
unit | enumeration | 134 | 0 unsigned | String |
unit-status | boolean | 135 | 7 bits 20 | False |
7 bits 21 | True | |||
total-pipe-capacity | list | 136 | 4 array | Array |
link-id | string | 137 | 3 text string | String |
pre-or-ongoing-mitigation | list | 138 | 4 array | Array |
total-traffic-normal | list | 139 | 4 array | Array |
low-percentile-g | yang:gauge64 | 140 | 0 unsigned | String |
mid-percentile-g | yang:gauge64 | 141 | 0 unsigned | String |
high-percentile-g | yang:gauge64 | 142 | 0 unsigned | String |
peak-g | yang:gauge64 | 143 | 0 unsigned | String |
total-attack-traffic | list | 144 | 4 array | Array |
total-traffic | list | 145 | 4 array | Array |
total-connection-capacity | list | 146 | 4 array | Array |
connection | uint64 | 147 | 0 unsigned | String |
connection-client | uint64 | 148 | 0 unsigned | String |
embryonic | uint64 | 149 | 0 unsigned | String |
embryonic-client | uint64 | 150 | 0 unsigned | String |
connection-ps | uint64 | 151 | 0 unsigned | String |
connection-client-ps | uint64 | 152 | 0 unsigned | String |
request-ps | uint64 | 153 | 0 unsigned | String |
request-client-ps | uint64 | 154 | 0 unsigned | String |
partial-request-max | uint64 | 155 | 0 unsigned | String |
partial-request-client-max | uint64 | 156 | 0 unsigned | String |
total-attack-connection | container | 157 | 5 map | Object |
connection-c | container | 158 | 5 map | Object |
embryonic-c | container | 159 | 5 map | Object |
connection-ps-c | container | 160 | 5 map | Object |
request-ps-c | container | 161 | 5 map | Object |
attack-detail | list | 162 | 4 array | Array |
id | uint32 | 163 | 0 unsigned | Number |
attack-id | uint32 | 164 | 0 unsigned | Number |
attack-description | string | 165 | 3 text string | String |
attack-severity | enumeration | 166 | 0 unsigned | String |
start-time | uint64 | 167 | 0 unsigned | String |
end-time | uint64 | 168 | 0 unsigned | String |
source-count | container | 169 | 5 map | Object |
top-talker | container | 170 | 5 map | Object |
spoofed-status | boolean | 171 | 7 bits 20 | False |
7 bits 21 | True | |||
partial-request-c | container | 172 | 5 map | Object |
total-attack-connection-protocol | list | 173 | 4 array | Array |
baseline | list | 174 | 4 array | Array |
current-config | container | 175 | 5 map | Object |
max-config-values | container | 176 | 5 map | Object |
min-config-values | container | 177 | 5 map | Object |
supported-unit-classes | container | 178 | 5 map | Object |
server-originated-telemetry | boolean | 179 | 7 bits 20 | False |
7 bits 21 | True | |||
telemetry-notify-interval | uint16 | 180 | 0 unsigned | Number |
tmid | uint32 | 181 | 0 unsigned | Number |
measurement-interval | enumeration | 182 | 0 unsigned | String |
measurement-sample | enumeration | 183 | 0 unsigned | String |
talker | list | 184 | 4 array | Array |
source-prefix | inet:ip-prefix | 185 | 3 text string | String |
mid-list | leaf-list | 186 | 4 array | Array |
uint32 | 0 unsigned | Number | ||
source-port-range | list | 187 | 4 array | Array |
source-icmp-type-range | list | 188 | 4 array | Array |
target | container | 189 | 5 map | Object |
capacity | uint64 | 190 | 0 unsigned | String |
protocol | uint8 | 191 | 0 unsigned | Number |
total-traffic-normal-per-protocol | list | 192 | 4 array | Array |
total-traffic-normal-per-port | list | 193 | 4 array | Array |
total-connection-capacity-per-port | list | 194 | 4 array | Array |
total-traffic-protocol | list | 195 | 4 array | Array |
total-traffic-port | list | 196 | 4 array | Array |
total-attack-traffic-protocol | list | 197 | 4 array | Array |
total-attack-traffic-port | list | 198 | 4 array | Array |
total-attack-connection-port | list | 199 | 4 array | Array |
port | inet:port-number | 200 | 0 unsigned | Number |
supported-query-type | leaf-list | 201 | 4 array | Array |
0 unsigned | String | |||
vendor-id | uint32 | 202 | 0 unsigned | Number |
ietf-dots-telemetry:telemetry-setup | container | 203 | 5 map | Object |
ietf-dots-telemetry:total-traffic | list | 204 | 4 array | Array |
ietf-dots-telemetry:total-attack-traffic | list | 205 | 4 array | Array |
ietf-dots-telemetry:total-attack-connection | container | 206 | 5 map | Object |
ietf-dots-telemetry:attack-detail | list | 207 | 4 array | Array |
ietf-dots-telemetry:telemetry | container | 208 | 5 map | Object |
current-g | yang:gauge64 | 209 | 0 unsigned | String |
description-lang | string | 210 | 3 text string | String |
lower-type | uint8 | 32771 | 0 unsigned | Number |
upper-type | uint8 | 32772 | 0 unsigned | Number |
Parameter Name | CBOR Key Value | CBOR Major Type | Change Controller | Reference |
---|---|---|---|---|
tsid | 128 | 0 | IESG | RFC 9244 |
telemetry | 129 | 4 | IESG | RFC 9244 |
low-percentile | 130 | 6tag4 | IESG | RFC 9244 |
mid-percentile | 131 | 6tag4 | IESG | RFC 9244 |
high-percentile | 132 | 6tag4 | IESG | RFC 9244 |
unit-config | 133 | 4 | IESG | RFC 9244 |
unit | 134 | 0 | IESG | RFC 9244 |
unit-status | 135 | 7 | IESG | RFC 9244 |
total-pipe-capacity | 136 | 4 | IESG | RFC 9244 |
link-id | 137 | 3 | IESG | RFC 9244 |
pre-or-ongoing-mitigation | 138 | 4 | IESG | RFC 9244 |
total-traffic-normal | 139 | 4 | IESG | RFC 9244 |
low-percentile-g | 140 | 0 | IESG | RFC 9244 |
mid-percentile-g | 141 | 0 | IESG | RFC 9244 |
high-percentile-g | 142 | 0 | IESG | RFC 9244 |
peak-g | 143 | 0 | IESG | RFC 9244 |
total-attack-traffic | 144 | 4 | IESG | RFC 9244 |
total-traffic | 145 | 4 | IESG | RFC 9244 |
total-connection-capacity | 146 | 4 | IESG | RFC 9244 |
connection | 147 | 0 | IESG | RFC 9244 |
connection-client | 148 | 0 | IESG | RFC 9244 |
embryonic | 149 | 0 | IESG | RFC 9244 |
embryonic-client | 150 | 0 | IESG | RFC 9244 |
connection-ps | 151 | 0 | IESG | RFC 9244 |
connection-client-ps | 152 | 0 | IESG | RFC 9244 |
request-ps | 153 | 0 | IESG | RFC 9244 |
request-client-ps | 154 | 0 | IESG | RFC 9244 |
partial-request-max | 155 | 0 | IESG | RFC 9244 |
partial-request-client-max | 156 | 0 | IESG | RFC 9244 |
total-attack-connection | 157 | 5 | IESG | RFC 9244 |
connection-c | 158 | 5 | IESG | RFC 9244 |
embryonic-c | 159 | 5 | IESG | RFC 9244 |
connection-ps-c | 160 | 5 | IESG | RFC 9244 |
request-ps-c | 161 | 5 | IESG | RFC 9244 |
attack-detail | 162 | 4 | IESG | RFC 9244 |
id | 163 | 0 | IESG | RFC 9244 |
attack-id | 164 | 0 | IESG | RFC 9244 |
attack-description | 165 | 3 | IESG | RFC 9244 |
attack-severity | 166 | 0 | IESG | RFC 9244 |
start-time | 167 | 0 | IESG | RFC 9244 |
end-time | 168 | 0 | IESG | RFC 9244 |
source-count | 169 | 5 | IESG | RFC 9244 |
top-talker | 170 | 5 | IESG | RFC 9244 |
spoofed-status | 171 | 7 | IESG | RFC 9244 |
partial-request-c | 172 | 5 | IESG | RFC 9244 |
total-attack-connection-protocol | 173 | 4 | IESG | RFC 9244 |
baseline | 174 | 4 | IESG | RFC 9244 |
current-config | 175 | 5 | IESG | RFC 9244 |
max-config-values | 176 | 5 | IESG | RFC 9244 |
min-config-values | 177 | 5 | IESG | RFC 9244 |
supported-unit-classes | 178 | 5 | IESG | RFC 9244 |
server-originated-telemetry | 179 | 7 | IESG | RFC 9244 |
telemetry-notify-interval | 180 | 0 | IESG | RFC 9244 |
tmid | 181 | 0 | IESG | RFC 9244 |
measurement-interval | 182 | 0 | IESG | RFC 9244 |
measurement-sample | 183 | 0 | IESG | RFC 9244 |
talker | 184 | 4 | IESG | RFC 9244 |
source-prefix | 185 | 3 | IESG | RFC 9244 |
mid-list | 186 | 4 | IESG | RFC 9244 |
source-port-range | 187 | 4 | IESG | RFC 9244 |
source-icmp-type-range | 188 | 4 | IESG | RFC 9244 |
target | 189 | 5 | IESG | RFC 9244 |
capacity | 190 | 0 | IESG | RFC 9244 |
protocol | 191 | 0 | IESG | RFC 9244 |
total-traffic-normal-per-protocol | 192 | 4 | IESG | RFC 9244 |
total-traffic-normal-per-port | 193 | 4 | IESG | RFC 9244 |
total-connection-capacity-per-port | 194 | 4 | IESG | RFC 9244 |
total-traffic-protocol | 195 | 4 | IESG | RFC 9244 |
total-traffic-port | 196 | 4 | IESG | RFC 9244 |
total-attack-traffic-protocol | 197 | 4 | IESG | RFC 9244 |
total-attack-traffic-port | 198 | 4 | IESG | RFC 9244 |
total-attack-connection-port | 199 | 4 | IESG | RFC 9244 |
port | 200 | 0 | IESG | RFC 9244 |
supported-query-type | 201 | 4 | IESG | RFC 9244 |
vendor-id | 202 | 0 | IESG | RFC 9244 |
ietf-dots-telemetry:telemetry-setup | 203 | 5 | IESG | RFC 9244 |
ietf-dots-telemetry:total-traffic | 204 | 4 | IESG | RFC 9244 |
ietf-dots-telemetry:total-attack-traffic | 205 | 4 | IESG | RFC 9244 |
ietf-dots-telemetry:total-attack-connection | 206 | 5 | IESG | RFC 9244 |
ietf-dots-telemetry:attack-detail | 207 | 4 | IESG | RFC 9244 |
ietf-dots-telemetry:telemetry | 208 | 5 | IESG | RFC 9244 |
current-g | 209 | 0 | IESG | RFC 9244 |
description-lang | 210 | 3 | IESG | RFC 9244 |
Code | Label | Description | Reference |
---|---|---|---|
5 | overlapping-pipes | Overlapping pipe scope | RFC 9244 |