{ "id":"/axapi/v3/ddos/template/tcp/{name}", "type":"object", "node-type":"list", "title":"tcp", "partition-visibility":"shared", "description":"TCP template Configuration", "properties":{ "name":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "optional":false }, "action-cfg":{ "type":"object", "properties":{ "action-on-ack":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Monitor tcp ack for age-out session" }, "reset":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Send RST to client" }, "timeout":{ "type":"number", "format":"number", "minimum":1, "maximum":31, "partition-visibility":"shared", "description":"ACK retry timeout in sec" }, "min-retry-gap":{ "type":"number", "format":"number", "minimum":1, "maximum":80, "partition-visibility":"shared", "description":"Min gap between 2 ACKs for action-on-ack pass in 100ms interval" }, "authenticate-only":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Apply action-on-ack once per source address for authentication purpose" }, "rto-authentication":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Estimate the RTO and apply the exponential back-off for authentication" } } }, "action-on-syn-rto-retry-count":{ "type":"number", "format":"number", "minimum":2, "maximum":10, "partition-visibility":"shared", "description":"Take action if action-on-syn RTO-authentication fail over retry time(default:5)", "optional":true }, "action-on-ack-rto-retry-count":{ "type":"number", "format":"number", "minimum":2, "maximum":10, "partition-visibility":"shared", "description":"Take action if action-on-ack RTO-authentication fail over retry time(default:5)", "optional":true }, "age":{ "type":"number", "format":"number", "minimum":1, "maximum":63, "partition-visibility":"shared", "description":"Session age in minutes", "optional":true }, "syn-cookie":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable SYN Cookie", "optional":true }, "create-conn-on-syn-only":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable connection establishment on SYN only", "optional":true }, "black-list-out-of-seq":{ "type":"number", "format":"number", "minimum":1, "maximum":64000, "partition-visibility":"shared", "not":"per-conn-out-of-seq-rate-limit", "description":"Black list Src IP if out of seq pkts exceed configured threshold", "optional":true }, "black-list-retransmit":{ "type":"number", "format":"number", "minimum":1, "maximum":64000, "partition-visibility":"shared", "not":"per-conn-retransmit-rate-limit", "description":"Black list Src IP if retransmit pkts exceed configured threshold", "optional":true }, "black-list-zero-win":{ "type":"number", "format":"number", "minimum":1, "maximum":250, "partition-visibility":"shared", "not":"per-conn-zero-win-rate-limit", "description":"Black list Src IP if zero window pkts exceed configured threshold", "optional":true }, "syn-auth":{ "type":"string", "format":"enum", "default":"send-rst", "partition-visibility":"shared", "description":"'send-rst': Send RST to all client's concurrent auth attempts; 'force-rst-by-ack': Force client RST via the use of ACK; 'force-rst-by-synack': Force client RST via the use of bad SYN|ACK; 'disable': Disable TCP SYN Authentication; 'send-rst-once': Send RST to one client's concurrent auth attempts; ", "enum":[ "send-rst", "force-rst-by-ack", "force-rst-by-synack", "disable", "send-rst-once" ], "optional":true }, "conn-rate-limit-on-syn-only":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Only count SYN-initiated connections towards connection-rate tracking", "optional":true }, "per-conn-rate-interval":{ "type":"string", "format":"enum", "default":"1sec", "partition-visibility":"shared", "description":"'100ms': 100ms; '1sec': 1sec; '10sec': 10sec; ", "enum":[ "100ms", "1sec", "10sec" ], "optional":true }, "per-conn-pkt-rate-limit":{ "type":"number", "format":"number", "minimum":1, "maximum":16000000, "partition-visibility":"shared", "description":"Packet rate limit per connection per rate-interval", "optional":true }, "per-conn-pkt-rate-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "description":"'drop': Drop packets for per-conn-pkt-rate exceed (Default); 'blacklist-src': help Blacklist-src for per-conn-pkt-rate exceed; 'ignore': Ignore per-conn-pkt-rate-exceed; ", "enum":[ "drop", "blacklist-src", "ignore" ], "optional":true }, "per-conn-out-of-seq-rate-limit":{ "type":"number", "format":"number", "minimum":1, "maximum":16000000, "partition-visibility":"shared", "not":"black-list-out-of-seq", "description":"Take action if out-of-seq pkt rate exceed configured threshold", "optional":true }, "per-conn-out-of-seq-rate-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "description":"'drop': Drop packets for out-of-seq rate exceed (Default); 'blacklist-src': help Blacklist-src for out-of-seq rate exceed; 'ignore': help Ignore out-of-seq rate exceed; ", "enum":[ "drop", "blacklist-src", "ignore" ], "optional":true }, "per-conn-retransmit-rate-limit":{ "type":"number", "format":"number", "minimum":1, "maximum":16000000, "partition-visibility":"shared", "not":"black-list-retransmit", "description":"Take action if retransmit pkt rate exceed configured threshold", "optional":true }, "per-conn-retransmit-rate-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "description":"'drop': Drop packets for retransmit rate exceed (Default); 'blacklist-src': help Blacklist-src for retransmit rate exceed; 'ignore': help Ignore retransmit rate exceed; ", "enum":[ "drop", "blacklist-src", "ignore" ], "optional":true }, "per-conn-zero-win-rate-limit":{ "type":"number", "format":"number", "minimum":1, "maximum":16000000, "partition-visibility":"shared", "not":"black-list-zero-win", "description":"Take action if zero window pkt rate exceed configured threshold", "optional":true }, "per-conn-zero-win-rate-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "description":"'drop': Drop packets for zero-win rate exceed (Default); 'blacklist-src': help Blacklist-src for zero-win rate exceed; 'ignore': help Ignore zero-win rate exceed; ", "enum":[ "drop", "blacklist-src", "ignore" ], "optional":true }, "allow-ra":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Allow RA packets to be used for auth", "optional":true }, "dst":{ "type":"object", "properties":{ "rate-limit":{ "type":"object", "properties":{ "syn-rate-limit":{ "type":"object", "properties":{ "dst-syn-rate-limit":{ "type":"number", "format":"number", "minimum":1, "maximum":16000000, "partition-visibility":"shared" }, "dst-syn-rate-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "description":"'drop': Drop packets for syn-rate exceed (Default); 'ignore': Ignore syn-rate-exceed; ", "enum":[ "drop", "ignore" ] } } } } } } }, "src":{ "type":"object", "properties":{ "rate-limit":{ "type":"object", "properties":{ "syn-rate-limit":{ "type":"object", "properties":{ "src-syn-rate-limit":{ "type":"number", "format":"number", "minimum":1, "maximum":16000000, "partition-visibility":"shared" }, "src-syn-rate-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "description":"'drop': Drop packets for syn-rate exceed (Default); 'blacklist-src': Blacklist-src for syn-rate exceed; 'ignore': Ignore syn-rate-exceed; ", "enum":[ "drop", "blacklist-src", "ignore" ] } } } } } } }, "allow-synack-skip-authentications":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Allow create sessions on SYNACK without syn-auth and ack-auth (ASYM Mode only)", "optional":true }, "synack-rate-limit":{ "type":"number", "format":"number", "minimum":1, "maximum":16000000, "partition-visibility":"shared", "not":"track-together-with-syn", "description":"Config SYNACK rate limit", "optional":true }, "track-together-with-syn":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "not":"synack-rate-limit", "description":"SYNACK will be counted in Dst Syn-rate limit", "optional":true }, "action-syn-cfg":{ "type":"object", "properties":{ "action-on-syn":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Monitor tcp syn for age-out session" }, "action-on-syn-reset":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Send RST to client" }, "action-on-syn-timeout":{ "type":"number", "format":"number", "minimum":1, "maximum":31, "partition-visibility":"shared", "description":"SYN retry timeout in sec" }, "action-on-syn-gap":{ "type":"number", "format":"number", "minimum":1, "maximum":80, "partition-visibility":"shared", "description":"Min gap between 2 SYNs for action-on-syn pass in 100ms interval" }, "action-on-syn-rto":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Estimate the RTO and apply the exponential back-off for authentication" } } }, "allow-syn-otherflags":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Treat TCP SYN+PSH as a TCP SYN (DST tcp ports support only)", "optional":true }, "allow-tcp-tfo":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Allow TCP Fast Open", "optional":true }, "ack-authentication-synack-reset":{ "type":"number", "format":"flag", "plat-neg-list":["soft-ax"], "default":0, "partition-visibility":"shared", "description":"Enable Reset client TCP SYN+ACK for authentication (DST support only)", "optional":true }, "drop-known-resp-src-port-cfg":{ "type":"object", "properties":{ "drop-known-resp-src-port":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Drop well-known if src-port is less than 1024" }, "exclude-src-resp-port":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"excluding src port equal destination port" } } }, "tunnel-encap":{ "type":"object", "properties":{ "ip-cfg":{ "type":"object", "properties":{ "ip-encap":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable Tunnel encapsulation using IP in IP" }, "always":{ "type":"object", "properties":{ "ipv4-addr":{ "type":"string", "format":"ipv4-address", "partition-visibility":"shared", "description":"IPv4 address (IPv6-over-IPv4 / IPv4-over-IPv6 are not supported.)" }, "preserve-src-ipv4":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Use original source ip for encapsulation" }, "ipv6-addr":{ "type":"string", "format":"ipv6-address", "partition-visibility":"shared", "description":"IPv6 address (IPv6-over-IPv4 / IPv4-over-IPv6 are not supported.)" }, "preserve-src-ipv6":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Use original source ip for encapsulation" } } } } }, "gre-cfg":{ "type":"object", "properties":{ "gre-encap":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable Tunnel encapsulation using GRE" }, "gre-always":{ "type":"object", "properties":{ "gre-ipv4":{ "type":"string", "format":"ipv4-address", "partition-visibility":"shared", "description":"IPv4 address (IPv6-over-IPv4 / IPv4-over-IPv6 are not supported.)" }, "key-ipv4":{ "type":"string", "format":"string", "minLength":1, "maxLength":10, "partition-visibility":"shared", "description":"Encapsulate with key (Hexadecimal 0x0-0xFFFFFFFF,decimal 0-4294967295)" }, "preserve-src-ipv4-gre":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Use original source ip for encapsulation" }, "gre-ipv6":{ "type":"string", "format":"ipv6-address", "partition-visibility":"shared", "description":"IPv6 address (IPv6-over-IPv4 / IPv4-over-IPv6 are not supported.)" }, "key-ipv6":{ "type":"string", "format":"string", "minLength":1, "maxLength":10, "partition-visibility":"shared", "description":"Encapsulate with key (Hexadecimal 0x0-0xFFFFFFFF,decimal 0-4294967295)" }, "preserve-src-ipv6-gre":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Use original source ip for encapsulation" } } } } } } }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object", "optional":true }, "user-tag":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"Customized tag", "optional":true }, "progression-tracking":{ "type":"object", "$ref":"/axapi/v3/ddos/template/tcp/{name}/progression-tracking", "properties":{ "progression-tracking-enabled":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'enable-check': Enable Progression Tracking Check; ", "enum":[ "enable-check" ] }, "request-response-model":{ "type":"string", "format":"enum", "default":"enable", "partition-visibility":"shared", "description":"'enable': Enable Request Response Model; 'disable': Disable Request Response Model; ", "enum":[ "enable", "disable" ] }, "violation":{ "type":"number", "format":"number", "minimum":1, "maximum":255, "partition-visibility":"shared", "description":"Set the violation threshold" }, "response-length-max":{ "type":"number", "format":"number", "minimum":1, "maximum":4294967295, "partition-visibility":"shared", "description":"Set the maximum response length" }, "response-length-min":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum response length" }, "request-length-min":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum request length" }, "request-length-max":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum request length" }, "response-request-min-ratio":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum response to request ratio (in unit of 0.1% [1:1000])" }, "response-request-max-ratio":{ "type":"number", "format":"number", "minimum":1, "maximum":4294967295, "partition-visibility":"shared", "description":"Set the maximum response to request ratio (in unit of 0.1% [1:1000])" }, "first-request-max-time":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum wait time from connection creation until the first data is transmitted over the connection (100 ms)" }, "request-to-response-max-time":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum request to response time (100 ms)" }, "response-to-request-max-time":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum response to request time (100 ms)" }, "profiling-request-response-model":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable auto-config progression tracking learning for request response model" }, "profiling-connection-life-model":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable auto-config progression tracking learning for connection model" }, "profiling-time-window-model":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Enable auto-config progression tracking learning for time window model" }, "progression-tracking-action-list-name":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "$ref":"/axapi/v3/ddos/action-list", "not":"progression-tracking-action", "description":"Configure action-list to take when progression tracking violation exceed" }, "progression-tracking-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "not":"progression-tracking-action-list-name", "description":"'drop': Drop packets for progression tracking violation exceed (Default); 'blacklist-src': Blacklist-src for progression tracking violation exceed; ", "enum":[ "drop", "blacklist-src" ] }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object" }, "connection-tracking":{ "type":"object", "$ref":"/axapi/v3/ddos/template/tcp/{name}/progression-tracking/connection-tracking", "properties":{ "progression-tracking-conn-enabled":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'enable-check': Enable General Progression Tracking per Connection; ", "enum":[ "enable-check" ] }, "conn-sent-max":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum total sent byte" }, "conn-sent-min":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum total sent byte" }, "conn-rcvd-max":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum total received byte" }, "conn-rcvd-min":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum total received byte" }, "conn-rcvd-sent-ratio-min":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum received to sent ratio (in unit of 0.1% [1:1000])" }, "conn-rcvd-sent-ratio-max":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum received to sent ratio (in unit of 0.1% [1:1000])" }, "conn-duration-max":{ "type":"number", "format":"number", "minimum":1, "maximum":864000, "partition-visibility":"shared", "description":"Set the maximum duration time (in unit of 100ms, up to 24 hours)" }, "conn-duration-min":{ "type":"number", "format":"number", "minimum":1, "maximum":864000, "partition-visibility":"shared", "description":"Set the minimum duration time (in unit of 100ms, up to 24 hours)" }, "conn-violation":{ "type":"number", "format":"number", "minimum":1, "maximum":255, "partition-visibility":"shared", "description":"Set the violation threshold" }, "progression-tracking-conn-action-list-name":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "$ref":"/axapi/v3/ddos/action-list", "not":"progression-tracking-conn-action", "description":"Configure action-list to take when progression tracking violation exceed" }, "progression-tracking-conn-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "not":"progression-tracking-conn-action-list-name", "description":"'drop': Drop packets for progression tracking violation exceed (Default); 'blacklist-src': Blacklist-src for progression tracking violation exceed; ", "enum":[ "drop", "blacklist-src" ] }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object" } } }, "time-window-tracking":{ "type":"object", "$ref":"/axapi/v3/ddos/template/tcp/{name}/progression-tracking/time-window-tracking", "properties":{ "progression-tracking-win-enabled":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'enable-check': Enable Progression Tracking per Time Window; ", "enum":[ "enable-check" ] }, "window-sent-max":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum total sent byte" }, "window-sent-min":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum total sent byte" }, "window-rcvd-max":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum total received byte" }, "window-rcvd-min":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum total received byte" }, "window-rcvd-sent-ratio-min":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the minimum received to sent ratio (in unit of 0.1% [1:1000])" }, "window-rcvd-sent-ratio-max":{ "type":"number", "format":"number", "minimum":1, "maximum":65535, "partition-visibility":"shared", "description":"Set the maximum received to sent ratio (in unit of 0.1% [1:1000])" }, "window-violation":{ "type":"number", "format":"number", "minimum":1, "maximum":255, "partition-visibility":"shared", "description":"Set the violation threshold" }, "progression-tracking-windows-action-list-name":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "$ref":"/axapi/v3/ddos/action-list", "not":"progression-tracking-windows-action", "description":"Configure action-list to take when progression tracking violation exceed" }, "progression-tracking-windows-action":{ "type":"string", "format":"enum", "default":"drop", "partition-visibility":"shared", "not":"progression-tracking-windows-action-list-name", "description":"'drop': Drop packets for progression tracking violation exceed (Default); 'blacklist-src': Blacklist-src for progression tracking violation exceed; ", "enum":[ "drop", "blacklist-src" ] }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object" } } } } }, "filter-list":{ "type":"array", "minItems":1, "items":{ "type":"filter" }, "uniqueItems":true, "$ref":"/axapi/v3/ddos/template/tcp/{name}/filter/{tcp-filter-seq}", "array":[ { "properties":{ "tcp-filter-seq":{ "type":"number", "format":"number", "minimum":1, "maximum":5, "partition-visibility":"shared", "description":"Sequence number", "optional":false }, "tcp-filter-regex":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":1275, "partition-visibility":"shared", "description":"Regex Expression", "optional":true }, "byte-offset-filter":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":1275, "partition-visibility":"shared", "description":"Filter Expression using Berkeley Packet Filter syntax", "optional":true }, "tcp-filter-unmatched":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"action taken when it does not match", "optional":true }, "tcp-filter-action":{ "type":"string", "format":"enum", "partition-visibility":"shared", "description":"'blacklist-src': Also blacklist the source when action is taken; 'whitelist-src': Whitelist the source after filter passes, packets are dropped until then; 'count-only': Take no action and continue processing the next filter; ", "enum":[ "blacklist-src", "whitelist-src", "count-only" ], "optional":true }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object", "optional":true }, "user-tag":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"Customized tag", "optional":true } }, "required":[ "tcp-filter-seq" ] } ] } }, "object-keys":[ "name" ], "required":[ "name" ] }