ON THIS PAGE
Configuring How Flow Detection Operates at Each Flow Aggregation Level
Configuring How Traffic in a Culprit Flow Is Controlled at Each Flow Aggregation Level
Enabling Flow Detection for All Protocol Groups and Packet Types
Configuring the Culprit Flow Reporting Rate for All Protocol Groups and Packet Types
Configuring the Violation Reporting Rate for All Protocol Groups and Packet Types
Disabling Automatic Logging of Culprit Flow Events for a Packet Type
Configuring the Maximum Flow Bandwidth at Each Flow Aggregation Level
Setting Up and Using Flow Detection
Flow detection monitors the flows of control traffic for violation of the bandwidth allowed for each flow and manages traffic identified as a culprit flow. Suppression of the traffic is the default management option. Flow detection is typically implemented as part of an overall control plane DDoS protection strategy, but it is also useful for troubleshooting and understanding traffic flow in new configurations. Flow detection is disabled by default.
Enhanced Subscriber Management supports flow detection for control plane DDoS protection as of Junos OS Release 17.3R1.
Before you begin, ensure you have configured control plane DDoS protection appropriately for you network. See Configuring Control Plane DDoS Protection for detailed information about DDoS protection.
Configuring the Detection Period for Suspicious Flows
DDoS protection flow detection considers a monitored flow to
be a suspicious flow whenever the flow exceeds its allowed bandwidth,
based on a crude test that eliminates obviously good flows from consideration.
A closer examination of a suspicious flow requires the flow to remain
in violation of the bandwidth for a period of time before flow detection
considers it to be a culprit flow against which it must take action.
You can include the flow-detect-time
statement to configure
the duration of this detection period or you can rely on the default
period of three seconds.
Enhanced Subscriber Management supports flow detection for DDoS protection as of Junos OS Release 17.3R1.
We recommend that you use the default value for the detection period.
To specify how long a flow must be in violation before flow detection declares it to be a culprit flow:
Set the detection period.
[edit system ddos-protection protocols protocol-group packet-type] user@host# set flow-detect-time seconds
For example, include the following statement to require the DHCPv4 discover packet flow to be in violation of its allowed bandwidth for 30 seconds before it is considered to be a culprit flow:
[edit system ddos-protection protocols dhcpv4 discover] user@host# set flow-detect-time 30
Configuring the Recovery Period for a Culprit Flow
After DDoS protection flow detection has identified a suspicious
flow as a culprit flow, it has to determine when that flow no longer
represents a threat to the router. When the traffic flow rate drops
back to within the allowed bandwidth, the rate must remain within
the bandwidth for a recovery period. Only then does flow detection
consider the flow to be normal and stop the traffic handling action
enacted against the culprit flow. You can include the flow-recover-time
statement to configure the duration of this recovery period or you
can rely on the default period of 60 seconds.
To specify how long a flow must be within its allowed bandwidth after a violation before flow detection declares it to be a normal flow:
Set the recovery period.
[edit system ddos-protection protocols protocol-group packet-type] user@host# set flow-recover-time seconds
For example, include the following statement to require the DHCPv4 discover packet flow to be in recovery for five minutes (300 seconds):
[edit system ddos-protection protocols dhcpv4 discover] user@host# set flow-recover-time 300
Configuring the Timeout Period for a Culprit Flow
When DDoS protection flow detection identifies a suspicious flow as a culprit flow, by default it suppresses traffic for that flow for as long as the traffic flow exceeds the bandwidth limit. Suppression stops and the flow is removed from the flow table when the time since the last violation by the flow is greater than the recovery period.
Alternatively, you can include the timeout-active-flows
statement to enable flow detection to suppress a culprit flow for
a configurable timeout period. When the timeout period expires, suppression
stops and the flow is removed from the flow table. You can either
include the flow-timeout-time
statement to configure the
duration of the timeout period or rely on the default timeout of 300
seconds.
To enable flow detection to suppress a culprit flow for a timeout period:
For example, include the following statements to suppress the DHCPv4 discover packet flow for 10 minutes (600 seconds):
[edit system ddos-protection protocols dhcpv4 discover] user@host# set timeout-active-flows user@host# setflow-timeout-time 600
Configuring How Flow Detection Operates at Each Flow Aggregation Level
When flow detection is turned on, traffic flows are monitored
by default for all protocol groups and packet types. When a policer
violation occurs, each suspicious flow is examined to determine whether
it is the culprit flow that caused the violation. You can include
the flow-level-detection
statement to configure how flow
detection works at each flow aggregation level for a packet type:
subscriber, logical interface, or physical interface.
The flow detection mode at the packet level must be either automatic
or on
for flow detection to operate at
individual flow aggregation levels.
Like flow detection at the protocol group and packet level, flow detection at the flow aggregation level supports three modes:
automatic—When a control plane DDoS protection policer is violated, traffic flows at this flow aggregation level are monitored for suspicious behavior only until flow detection determines that the suspect flow is not at this aggregation level and instead must be at a coarser level of aggregation. Flows at this level are subsequently not searched again until the policer is no longer violated at the coarser level.
off—Traffic flows are never monitored at this flow aggregation level.
on—Traffic flows at this flow aggregation level are monitored for suspicious flows even when no DDoS protection policer is currently being violated, if flow detection at the packet level is configured to
on
. Monitoring continues at this level regardless of whether a suspect flow is identified at this level. However, If the packet level mode isautomatic
, then the policer must be in violation for traffic flows to be checked at this level.
Flows are examined first at the finest-grained (lowest bandwidth) flow aggregation level, subscriber. If the suspect flow is not found at the subscriber level, then flows are checked at the logical interface level. Finally, if the suspect is not found there, then flows are checked at the physical interface level; barring some misconfiguration, the culprit flow must be found at this level.
To configure how flow detection operates at each flow aggregation level:
For example, include the following statements to configure flow detection to check for suspicious flows at the subscriber level only when the policer is being violated, to never check at the logical interface level, and to always check at the physical interface level:
[edit system ddos-protection protocols dhcpv4 discover] user@host# edit flow-level-detection user@host# set subscriber automatic user@host# set logical-interface off user@host# set physical-interface on
Configuring How Traffic in a Culprit Flow Is Controlled at Each Flow Aggregation Level
When flow detection is enabled, all traffic in a culprit flow
is dropped by default for all protocol groups and packet types and
at all flow aggregation levels. You can include the flow-level-control
statement to configure flow detection to control traffic differently
for individual packet types. You have to specify the control behavior
at a particular flow aggregation level: subscriber, logical interface,
or physical interface.
You can configure flow detection flow control to employ one of the following modes for a packet type:
Drop all traffic—Configure flow control to drop all traffic when you think the flow that is violating a bandwidth limit is malicious. This behavior is the default at all flow aggregation levels.
Police traffic—Configure flow control to police a flow that is violating bandwidth, forcing the rate below the bandwidth limit. Flow control acts as a simple policer in this case.
Keep all traffic—Configure flow control to keep all traffic whether the flow is in violation or below the bandwidth limit. This mode is helpful when you need to debug traffic flow for your network.
Flow control mode enables great flexibility in how you manage control traffic in your network. For example, if you only want to ensure that control flows for a packet type at all aggregation levels are within their limits, you can configure flow control to police the traffic at each level. Or if you want to detect culprit flows and suppress them at one level but only restrain traffic to the allowed bandwidth at another level, you can configure one level to drop all traffic and the other to police traffic.
To configure how flow detection controls traffic in a culprit flow:
For example, to configure flow detection to keep all traffic for a physical interface under the configured bandwidth, but detect and suppress culprit flows at the subscriber level:
[edit system ddos-protection protocols dhcpv4 discover] user@host# edit flow-level-control user@host# set subscriber drop user@host# set physical-interface police user@host# edit flow-level-detection user@host# set logical-interface off
In this example, you do not care about the logical interface, so flow detection is turned off for that level. Because flow detection is disabled, the state of flow control for that level does not matter.
Enabling Flow Detection for All Protocol Groups and Packet Types
By default, flow detection is disabled for all protocol groups
and packet types. You must enable flow detection globally by including
the flow-detection
statement. If you subsequently disable
flow detection for individual packet types, you cannot use this global
statement to override all such individual configurations; you must
re-enable detection at the packet configuration level.
To enable flow detection globally:
Set flow detection.
[edit system ddos-protection global] user@host# set flow-detection
You cannot enable flow detection globally for the following groups and packet type because they do not have typical Ethernet, IP, or IPv6 headers:
Protocol groups:
fab-probe
,frame-relay
,inline-ka
,isis
,jfm
,mlp
,pfe-alive
,pos
, andservices
.Packet type:
unclassified
in theip-options
protocol group.
Configuring the Culprit Flow Reporting Rate for All Protocol Groups and Packet Types
When flow detection confirms that a suspicious flow it is tracking
on a line card is indeed a culprit flow, it sends a report to the
Routing Engine. Flow detection also reports each culprit flow that
subsequently recovers to within the allowed bandwidth or is cleared.
You can include the flow-report-rate
statement to limit
how many flows per second on each line card can be reported. Culprit
flow events are reported for all protocol groups and packet types
by default. When too many flows are reported, congestion can occur
on the host path to the Routing Engine flow.
To globally configure the maximum report rate for culprit flows:
Set the reporting rate.
[edit system ddos-protection global] user@host# set flow-report-rate rate
Configuring the Violation Reporting Rate for All Protocol Groups and Packet Types
By default, flow detection reports to the Routing Engine all
violations of bandwidth at the FPC for all protocol groups and packet
types. You can include the violation-report-rate
statement
to limit how many violations per second flow detection reports from
the line cards, thus reducing the load on the router. We recommend
that you configure a report rate that is suitable for your network
rather than rely on the default value.
To globally configure the maximum bandwidth violation reporting rate:
Set the reporting rate.
[edit system ddos-protection global] user@host# set violation-report-rate rate
Disabling Automatic Logging of Culprit Flow Events for a Packet Type
By default, flow detection automatically logs policer violation
events associated with suspicious flows (violation reports) and culprit
flow events (flow reports) for all protocol groups and packet types.
You can include the no-flow-logging
statement to prevent
automatic logging of culprit flow events for individual packet types.
Automatic logging of suspicious flow violation events is disabled
with the disable-logging
statement at the [edit system
ddos-protection global
hierarchy level.
To disable automatic culprit flow event logging for a packet type:
Disable logging.
[edit system ddos-protection protocols protocol-group packet-type] user@host# set no-flow-logging
To disable automatic suspicious flow violation event logging for a packet type:
Disable logging.
[edit system ddos-protection protocols protocol-group packet-type] user@host# set disable-logging
For example, include the following statement to disable automatic logging for DHCPv4 DISCOVER packet flows:
[edit system ddos-protection protocols dhcpv4 discover] user@host# set no-flow-logging
Configuring the Maximum Flow Bandwidth at Each Flow Aggregation Level
You can include the flow-level-bandwidth
statement
to configure the maximum acceptable bandwidth for traffic flows for
individual packet types. You have to specify the bandwidth behavior
at a particular flow aggregation level: subscriber, logical interface,
or physical interface. We recommend that you tune the bandwidth values
for your network rather than rely on the defaults.
To configure the maximum bandwidth for traffic flows each flow aggregation level:
For example, to configure the flow bandwidth to 1000 pps at the subscriber level, 5000 pps at the logical interface level, and 30,000 at the physical interface level:
[edit system ddos-protection protocols dhcpv4 discover] user@host# edit flow-level-bandwidth user@host# set subscriber 1000 user@host# set logical-interface 5000 user@host# set physical-interface 30000
Verifying and Managing Flow Detection
Purpose
View or clear information about flow detection as part of a control plane DDoS protection configuration.
Enhanced Subscriber Management supports flow detection for control plane DDoS protection as of Junos OS Release 17.3R1.
Action
To display configuration information for flow detection:
user@host> show ddos-protection protocols flow-detection
To display information about culprit flows identified by flow detection, including number of flows detected and tracked, source address of the flow, arriving interface, and rates:
user@host> show ddos-protection protocols culprit-flows
To clear culprit flows for all packet types in all protocol groups:
user@host> clear ddos-protection protocols culprit-flows
To clear culprit flows for all packet types in a particular protocol group:
user@host> clear ddos-protection protocols protocol-group culprit-flows
Change History Table
Feature support is determined by the platform and release you are using. Use Feature Explorer to determine if a feature is supported on your platform.