F5BigDdosGlobal¶
Overview¶
Function¶
Declares the global DDoS protection configuration for a CNE instance, defining global options, attack vectors, Behavioral DoS signatures, and an allow list that apply across all TMM instances.
This resource configures the Traffic Management Microkernel (TMM) proxy pod to protect applications and the TMM pod from Denial of Service and Distributed Denial of Service (DoS/DDoS) attacks. Using custom packet signatures, this resource inspects all application traffic that the TMM proxy pod processes, and detects, reports, or mitigates DoS/DDoS events.
Names¶
Singular name |
Plural name |
Short name |
|---|---|---|
f5-big-ddos-global |
f5-big-ddos-globals |
ddos |
API group and version¶
k8s.f5net.com/v1
Scope¶
Namespace
Specification¶
spec¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Global DDoS options. |
|
No |
|
Asymmetric DoS (ADoS) global options. These apply only in ADoS mode. |
|
No |
|
Behavioral DoS (BDoS) global options. |
|
No |
|
Reference to the HSL publisher name, the endpoint logging server that receives the log messages. Maximum length is 255 characters. |
|
No |
|
Flood and error attack vectors for advanced DDoS protection. See spec.vectors. |
|
No |
|
Behavioral DoS configuration for dynamic and custom signatures. |
|
No |
|
Allow list configuration to exclude traffic sources from DDoS detection or mitigation. |
spec.dosGlobalOptions¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Common DoS system database variables. |
spec.dosGlobalOptions.common¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Forces software DoS instead of hardware offload on hardware-capable systems. Accepted values: |
spec.adosGlobalOptions¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Global packet metering rate, as the percentage of total ingress packets replicated to the CPU for processing. Accepted values: |
|
No |
|
Advanced ADoS options. Change these only after careful consideration. |
spec.adosGlobalOptions.advancedOptions¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Anomaly threshold percentage. Defines the upper limit for each predicate considered for signature generation. Accepted values: 1 to 100. |
|
No |
|
Minimum number of predicates to form a signature. Change this only after consultation. Accepted values: 3 to 8. |
|
No |
|
Least required throughput percent to qualify a signature for hardware mitigation when the mitigation sensitivity is high. Accepted values: 1 to 50. |
|
No |
|
Mitigation threshold limit applied to a valid signature when the mitigation sensitivity is high. Accepted values: 50 to 100. |
|
No |
|
Least required throughput percent to qualify a signature for hardware mitigation when the mitigation sensitivity is medium. Accepted values: 1 to 50. |
|
No |
|
Mitigation threshold limit applied to a valid signature when the mitigation sensitivity is medium. Accepted values: 50 to 100. |
|
No |
|
Least required throughput percent to qualify a signature for hardware mitigation when the mitigation sensitivity is low. Accepted values: 1 to 50. |
|
No |
|
Mitigation threshold limit applied to a valid signature when the mitigation sensitivity is low. Accepted values: 50 to 100. |
spec.bdosGlobalOptions¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Deprecated. Log level for the BDoS pod. Use dynamic logging instead. Accepted values: |
|
No |
|
Advanced BDoS options. Change these only after careful consideration. |
Note
logLevel is deprecated. Use dynamic logging instead.
spec.bdosGlobalOptions.advancedOptions¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Anomaly detection frequency, in seconds. Accepted values: 10 to 256. |
|
No |
|
Learning period for network traffic, in minutes. Doesn’t apply in ADoS mode. Accepted values: 15 to 7200. |
|
No |
|
Floor threshold used when attack thresholds become very low after anomaly detection. Accepted values: 100 to 4294967295. |
|
No |
|
Number of merge (correlation) periods before which a signature is considered transient. Accepted values: 0 to 1000. |
|
No |
|
Number of no-stats periods before an active signature is turned off. Accepted values: 1 to 30. |
spec.vectors¶
The vectors object defines flood and error attack vectors. Most vectors share a common set of fields, described in Common flood vector fields and Common error vector fields. The tables that follow list each vector, its category, and any fields it adds beyond the common set.
Common flood vector fields¶
Flood vectors (for example, ipv4IcmpFlood, synFlood, udpFlood, dnsAQuery) share these fields.
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Enforcement for the attack type. |
|
No |
|
Packets per second the system must find in traffic to detect this attack. Accepted values: 0 to 4294967295. |
|
No |
|
Threshold percent the system must find in traffic to detect this attack. Accepted values: 0 to 4294967295. |
|
No |
|
Maximum packets per second allowed for the vector. The system drops excess traffic beyond the limit. Accepted values: 0 to 4294967295. |
|
No |
|
Packets per second used to identify a source IP address as a bad actor. Accepted values: 0 to 4294967295. |
|
No |
|
Rate limit applied to a source IP address identified as a bad actor. Accepted values: 0 to 4294967295. |
|
No |
|
Events per second used to identify a destination IP address as under attack. Accepted values: 0 to 4294967295. |
|
No |
|
Rate limit applied to a destination IP address identified as under attack. Accepted values: 0 to 4294967295. |
Common error vector fields¶
Error vectors (for example, ipv4BadTtl, badTcpChecksum, dnsMalformed) share these fields. When you turn on an error vector, the system detects and drops the attack based on the threshold configuration.
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Packets per second the system must find in traffic to detect this attack. Accepted values: 0 to 4294967295. |
|
No |
|
Threshold percent the system must find in traffic to detect this attack. Accepted values: 0 to 4294967295. |
Flood vectors¶
Each of these vectors uses the common flood vector fields. Vectors with extra fields are noted. The Hardware acceleration column shows whether the platform can offload the vector to hardware.
Vector |
Category |
Hardware acceleration |
Extra fields |
|---|---|---|---|
|
IPv4 flood |
Yes |
— |
|
IPv4 flood |
Yes |
— |
|
IPv4 flood |
No |
— |
|
IPv4 flood |
No |
— |
|
IPv4 flood |
Yes |
— |
|
IPv4 flood |
Yes |
— |
|
IPv4 flood |
No |
— |
|
IPv6 flood |
Yes |
— |
|
IPv6 flood |
No |
No per-source or per-destination fields. |
|
IPv6 flood |
No |
— |
|
IPv6 flood |
Yes |
— |
|
IPv6 flood |
No |
— |
|
IPv6 flood |
No |
No per-source or per-destination fields. |
|
IPv6 flood |
No |
— |
|
IPv6 flood |
Yes |
|
|
IPv6 flood |
No |
|
|
IPv6 flood |
No |
|
|
IPv6 flood |
No |
|
|
TCP flood |
— |
— |
|
TCP flood |
Yes |
— |
|
TCP flood |
No |
— |
|
TCP flood |
No |
— |
|
TCP flood |
Yes |
— |
|
TCP flood |
No |
— |
|
TCP flood |
No |
— |
|
TCP flood |
No |
— |
|
TCP flood |
No |
— |
|
TCP flood |
Yes |
|
|
TCP flood |
Yes |
|
|
TCP flood |
Yes |
— |
|
TCP flood |
No |
|
|
UDP flood |
Yes |
|
|
Common flood |
— |
— |
|
IP flood |
— |
|
|
IP flood |
— |
No per-source or per-destination fields. |
|
IP flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
— |
|
DNS flood |
— |
|
|
DNS flood |
— |
|
|
Layer 2 flood |
Yes |
No per-source or per-destination fields. |
|
Layer 2 flood |
Yes |
No per-source or per-destination fields. |
|
Layer 2 flood |
Yes |
No per-source or per-destination fields. |
|
Layer 2 flood |
No |
No per-source or per-destination fields. |
|
Single endpoint |
No |
|
|
Single endpoint |
No |
|
|
ICMP flood |
Yes |
— |
|
ICMP flood |
No |
No per-source or per-destination fields. |
|
ICMP flood |
Yes |
— |
|
IGMP flood |
Yes |
— |
|
IGMP flood |
No |
— |
Error vectors¶
Each of these vectors uses the common error vector fields. The Hardware acceleration column shows whether the platform can offload the vector to hardware.
Vector |
Category |
Hardware acceleration |
|---|---|---|
|
IPv4 error |
Yes |
|
IPv4 error |
Yes |
|
IPv4 error |
Yes |
|
IPv4 error |
Yes |
|
IPv4 error |
Yes |
|
IPv4 error |
No |
|
IPv4 error |
No |
|
IPv4 error |
No |
|
IPv4 error |
No |
|
IPv4 error |
No |
|
IPv6 error |
No |
|
IPv6 error |
Yes |
|
IPv6 error |
No |
|
IPv6 error |
No |
|
IPv6 error |
No |
|
IPv6 error |
No |
|
IPv6 error |
Yes |
|
IPv6 error |
No |
|
IPv6 error |
No |
|
TCP error |
— |
|
TCP error |
— |
|
TCP error |
— |
|
TCP error |
— |
|
UDP error |
Yes |
|
UDP error |
Yes |
|
Layer 4 error |
— |
|
Layer 4 error |
— |
|
DNS error |
— |
|
DNS error |
— |
|
DNS error |
— |
|
Layer 2 error |
No |
|
ICMP error |
No |
|
ICMP error |
No |
|
IGMP error |
Yes |
spec.vectors.ipv6LowHopCount extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Minimum value for the hop count. Accepted values: 1 to 4. |
spec.vectors.ipv6ExtHdrTooLarge extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Maximum allowed size, in bytes, of the IPv6 extension header field. Accepted values: 0 to 1024. |
spec.vectors.ipv6WithExtHdrFrames extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
IPv6 extension header types to match. Accepted values: |
spec.vectors.ipv6TooManyExtHdrs extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Number of IPv6 extension headers allowed. Accepted values: 0 to 15. |
spec.vectors.synFlood.synCookie¶
When SYN cookie is on, the system sends a cookie in the SYN-ACK response during a SYN flood. It creates the TCP flow only when the client responds with the SYN cookie.
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Status of the SYN cookie. Accepted values: |
|
No |
|
Adds valid client entries that respond to the SYN cookie to the verified list. In ADoS mode, the verified list is always on and this setting has no effect. Accepted values: |
|
No |
|
Threshold value. Accepted values: 0 to 4294967295. |
|
No |
|
Scrub time, in minutes, for flushing verified list entries from hardware. Supported in ADoS mode only. Accepted values: 1 to 450. |
|
No |
|
When |
spec.vectors.synAckFlood extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
When |
spec.vectors.ackTimestampFlood extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
When |
spec.vectors.udpFlood.udpPortList¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Whether to exclude or include the listed ports when detecting the UDP flood. Accepted values: |
|
No |
|
UDP port entries used for detection. Must contain no more than four items. |
spec.vectors.udpFlood.udpPortList.entries[]¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
Yes |
— |
UDP port number, as a string. Accepted values: 0 to 65535. |
|
No |
|
Direction of the match for the port. Accepted values: |
spec.vectors.uncommonIpProtocols extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
See description |
IP protocols to treat as common and exclude from this vector’s detection and mitigation thresholds. When empty, the system excludes the default protocol list. Accepts IANA protocol names, or |
spec.vectors.oversizedDns extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Maximum allowed size for DNS. Accepted values: 256 to 8192. |
spec.vectors.dnsNxdomainQuery extra fields¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Domains that the vector treats as valid. Each domain is up to 253 characters. |
|
No |
|
Configuration for DNS proxies. Use this when a mitigation drop for queries from an intermediate DNS proxy isn’t tolerated. |
spec.vectors.dnsNxdomainQuery.wellKnownProxies¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Maximum packets per second response rate. The system sends no responses once the limit is exceeded. Accepted values: 0 to 4294967295. |
|
No |
|
Soft reference to a |
spec.vectors.singleEndpointSweep and spec.vectors.singleEndpointFlood extra fields¶
singleEndpointSweep tracks packets by source address. singleEndpointFlood tracks packets by destination address. The system drops packets that match a packet type and exceed the rate limit.
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
See description |
Packet types considered for detection. Must contain at least one item. Accepted values include |
spec.behavioralDos¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Dynamic signature configuration. Dynamic signatures in the global context aren’t supported in ADoS mode. |
|
No |
|
Custom Behavioral DoS signatures for traffic the default signatures don’t match. Must contain no more than 32 items. |
spec.behavioralDos.dynamicSignatures¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Detection mode for traffic anomalies used to generate dynamic signatures. |
|
No |
|
Sensitivity level for dropping packets when mitigating attacks with dynamic signatures. Applies only when |
|
No |
|
Uses only L3/L4 network predicates for dynamic signature generation. Valid only when |
|
No |
|
Uses DNS predicates with L3/L4 predicates for dynamic signature generation. Valid only when |
spec.behavioralDos.customSignatures[]¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Name of the custom Behavioral DoS signature. Maximum length is 255 characters. |
|
No |
|
Enforcement for the attack type. Accepted values: |
|
No |
|
Packets per second the system must find in traffic to detect this attack. Accepted values: 0 to 4294967295. |
|
No |
|
Maximum packets per second allowed. The system drops excess traffic. Accepted values: 0 to 4294967295. |
spec.allowList¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
No |
|
Soft reference to a |
|
No |
|
Individual allow list entries. Must contain no more than eight items. |
spec.allowList.entries[]¶
Field |
Required |
Default |
Description |
|---|---|---|---|
|
Yes |
— |
Name of the allow list entry. Must be 1 to 256 characters. |
|
Yes |
— |
Type of entry for the matching logic. Accepted values: |
|
No |
|
IP protocol for the entry. Accepted values: |
|
No |
|
Matching address. Set this only for the |
|
No |
|
Destination port. Set this only when |
|
No |
|
Incoming traffic from a VLAN that the rule applies to. |
Prerequisites¶
Before you configure this resource, make sure that:
The
F5SPKVlanresource is configured.The
GatewayClassresource is configured.
Example manifests¶
F5BigLogHslpub¶
apiVersion: k8s.f5net.com/v1
kind: F5BigLogHslpub
metadata:
name: hsl-publisher
namespace: f5-bnk
spec:
pool:
- name: hsl-pool
endpoint:
- 192.0.2.100:514
syslog:
- name: syslog
format: rfc5424
protocol: tcp
pool: hsl-pool
F5BigDdosGlobal¶
apiVersion: "k8s.f5net.com/v1"
kind: F5BigDdosGlobal
metadata:
name: gateway-global-ddos
namespace: f5-bnk
spec:
dosGlobalOptions:
common:
forceSwDos: true
hslPublisher: hsl-publisher
vectors:
ipv4IcmpFlood:
state: mitigation
perSrcIpDetectionEps: 4000
rateLimit: 5000
SecPolicy¶
Attach the F5BigDdosGlobal resource to the GatewayClass resource with a SecPolicy resource.
apiVersion: "gateway.k8s.f5.com/v1alpha1"
kind: SecPolicy
metadata:
name: secpolicy-gatewayclass
namespace: f5-bnk
spec:
extensionRefs:
- name: gateway-global-ddos
group: k8s.f5net.com
kind: F5BigDdosGlobal
targetRefs:
- name: f5-gateway-class-1
kind: GatewayClass
group: gateway.networking.k8s.io
Note
To turn on DDoS hardware offload, set spec.dosGlobalOptions.common.forceSwDos to false.