Most engineers think…
"L7 DoS protection means I count requests per second, and when the number gets high, I block."
Wrong — and that wrong instinct is how you take yourself down. A raw transaction-per-second threshold can't tell a genuine Flipkart festival sale from a botnet flood; both look like "lots of requests, fast". Crank the threshold low and you block paying customers on your busiest day. Real L7 DoS protection asks a smarter question: is the server actually buckling? The F5 BIG-IP Advanced WAF (formerly ASM) DoS profile gives you three detection methods — TPS, stress-based, and machine-learning behavioral — so mitigation fires on a real attack, not on success. This lesson builds that instinct.
① Where L7 DoS lives — the DoS profile, not the network
Picture a stadium turnstile. A naive guard counts heads per minute and slams the gate when the count spikes — but a sold-out match looks exactly like a stampede to a head-counter. A wiser guard watches whether the gate itself is buckling, and learns what a normal Saturday rush feels like. That difference — counting vs sensing strain — is the whole story of F5 L7 DoS.
First, scope. This lesson is strictly Layer-7 application DoS — HTTP/HTTPS request floods, slow-and-low attacks, and resource-exhausting requests. It is configured in the DoS profile under its Application Security settings, and the profile is attached to a virtual server. Network/transport DDoS (SYN floods, UDP amplification) lives in a different place (the AFM/device DoS profile) and is out of scope here.
The DoS profile's Application Security tab gives you three detection methods: TPS-based, Stress-based, and Behavioral DoS (BADoS). You can run them together. The art is knowing which one decides, and in which mode.
Sneha at Infosys faces this
Sneha built a DoS profile, attached it to the virtual server, ran a load test — and nothing was detected or mitigated. The profile "doesn't work".
The DoS profile is enabled but the Application Security detection methods are all Off, or Operation Mode is set to Transparent so it only logs — it never mitigates.
Open the profile and confirm a detection method is enabled and the mode is right.
Security ▸ DoS Protection ▸ DoS Profiles ▸ profile ▸ Application SecurityEnable a detection method (TPS or Stress-based), then set Operation Mode = Blocking once you've baselined in Transparent. Confirm the profile is bound to the right virtual server.
Re-run the test. Security ▸ Reporting ▸ DoS ▸ DoS Visibility now shows the attack, the detection method, and the mitigation that fired.
▶ Watch a flood hit a Blocking profile — then watch Transparent mode let it through
Rahul at TCS runs a DoS profile in Blocking mode. Press Play for the healthy detect-and-mitigate path, then Break it to see what Transparent mode does to the same attack.
A TPS-based DoS profile blocked thousands of real shoppers during a Flipkart festival sale, even though the servers were healthy. What is the root cause?
Pause & Predict
TPS-based detection compares a recent request rate against a baseline rate. What two time windows do you think F5 uses for "recent" vs "baseline", and roughly how long is each? Type your guess.
② TPS-based detection — counting the turnstile
The simplest detector is the turnstile counter. TPS-based detection watches the transaction rate and fires when it spikes. It is the most intuitive method — and the one with the most false positives if you misuse it.
The clever part is that it doesn't use a single fixed number. It compares two moving averages:
- Detection interval — a short-term average of recent requests per second, updated about every 10 seconds. This is "what's happening right now".
- History interval — a long-term average over roughly the past hour. This is your normal baseline.
An attack is flagged when the short interval jumps sharply over the long baseline. You express that with two thresholds, per scope:
- "TPS increased by" — a percentage ratio of detection-interval TPS to history-interval TPS (e.g. fire when current rate is 500% of baseline). This is the relative trigger.
- "TPS reached" — an absolute ceiling (e.g. fire at 200 TPS regardless of history). This catches a cold-start flood before any baseline exists.
You can apply detection by Source IP, by Device ID, by Geolocation, by URL, or Site-Wide — so you can catch "one IP hammering one URL" separately from "the whole site is flooded".
Analogy: a head-counter at a turnstile. It knows a normal Monday is ~50 people/min (history). When it suddenly sees 800/min (detection), it shouts "attack!". The flaw is obvious — a real festival crowd also pushes 800/min, and the counter can't tell the difference. That's the false-positive trap, and it's exactly why stress-based detection exists.
Set "TPS increased by" for the relative spike and "TPS reached" for the absolute ceiling — the ratio handles steady-state, the ceiling catches a flood that arrives before a baseline is learned. Scope by Source IP to pin a single attacker without touching healthy site-wide traffic. But remember: pure TPS still can't tell a sale from a flood. Treat it as a fast first signal, not the final word.
Priya at Flipkart faces this
Priya set a low "TPS reached" threshold in Blocking mode "to be safe". On the next festival sale, legitimate shoppers got challenged and dropped. The business escalated hard.
Pure TPS-based Blocking with an absolute ceiling far below the legitimate peak. A real crowd crossed the line and was mitigated as an attack — even though servers were healthy.
Enable Stress-based Detection so mitigation triggers only when server latency rises, raise the TPS ceiling above the real sales peak, and rely on the "TPS increased by" ratio plus stress — not a low absolute number alone.
Replay the sale-day traffic in Transparent first. DoS Visibility shows zero mitigation on the healthy spike, while a synthetic flood (high rate + induced latency) still gets caught.
In the F5 DoS profile, what is the difference between the detection interval and the history interval for TPS-based detection?
Pause & Predict
Stress-based detection is coming next. You want a detector that does NOT fire on a healthy traffic spike. What extra signal — beyond request rate — could the BIG-IP measure to know the server is genuinely in trouble? Type your guess.
③ Stress-based & Behavioral DoS — sensing strain, then learning normal
TPS counts. The smarter methods sense and learn.
Stress-based detection — wait for the server to actually buckle
Stress-based detection watches server latency. Critically, it does not mitigate on latency alone — F5's own rule is that it takes a latency increase and at least one suspicious source IP, device ID, URL, heavy URL, geolocation, or site-wide entry for the activity to be considered an attack. Two conditions, not one.
That second condition is the whole point. A genuine Flipkart sale raises rate but the well-provisioned backend stays fast — latency is flat — so stress-based stays quiet. A real flood drives latency up and concentrates on a suspicious entity, so it fires. You can run thresholds in Automatic (BIG-IP self-tunes from observed latency) or Manual mode.
Analogy: instead of counting people at the turnstile, the guard watches whether the gate is bending. A packed-but-orderly crowd doesn't bend the gate; a crush does.
Behavioral DoS (BADoS) — auto-learn normal, build dynamic signatures
Behavioral DoS is the machine-learning method, enabled within the stress-based settings. It continuously learns the typical behavior of normal traffic, then combines that learned baseline with server stress to spot anomalies — "what changed, and who caused the congestion?".
It has two engines you toggle:
- Bad Actors Behavior Detection — identifies which source IPs are generating the malicious traffic and what share each contributes, then slows / rate-limits those anomalous IPs based on confidence and server health.
- Request Signatures Detection — generates dynamic request signatures that match only the attack traffic, so legitimate users sailing through the same URLs aren't blocked.
The mitigation is phased: BADoS first applies a global rate limit just to protect the server, then — once it has computed dynamic signatures — narrows to block only traffic matching those signatures. As the server recovers, the thresholds re-calculate against current health. It gets more accurate the longer it runs.
Analogy: BADoS is the veteran guard who has worked every match for years. They know exactly what a normal Saturday crowd feels like, so when something is off they can describe the troublemaker precisely ("hoodie, gate 4, pushing") — that description is the dynamic signature.
▶ Watch Behavioral DoS learn, detect, and build a dynamic signature
Karthik at Wipro enables BADoS on the app. Play the learn-then-mitigate flow, then Break it to see the classic premature-mitigation mistake.
The detection methods & key controls — tap each card
Each card front names the control; the back gives you the "so what" — when to reach for it.
Detection interval vs history interval; "TPS increased by" + "TPS reached". So what: fast, blunt first signal — but can't tell a sale from a flood. Don't run it alone in Blocking.
Needs server latency ↑ AND a suspicious entity (IP/URL/geo/site-wide). So what: spike-safe — a healthy crowd raises rate but not latency, so it's left alone.
Learns normal with ML, builds dynamic request signatures, mitigates global-limit-then-signature. So what: catches zero-day floods with no pre-written rule — surgical, self-tuning.
Transparent = detect/log/report only; Blocking = actually mitigate. So what: always baseline in Transparent first, then flip to Blocking — or you mitigate a healthy spike.
Stress-based detection sees server latency climb, but no single source IP, URL, or geolocation looks suspicious. Will it mitigate?
Pause & Predict
You're about to enable a brand-new DoS profile on a production Flipkart virtual server. Before you flip it to Blocking — what one thing could it silently break, and what mode should you use first instead? Type your guess.
④ Operation Mode & mitigation — see it, then stop it
Detection decides whether something is an attack. The Operation Mode decides what BIG-IP does about it. This is the single most misunderstood toggle on the profile.
- Transparent — BIG-IP detects, logs and reports the attack but does not drop or challenge any traffic. This is your safe baseline mode — run here first to learn what would have happened.
- Blocking — mitigation actions actually take effect. Until you set Blocking, a beautifully tuned profile changes nothing on the wire.
Mitigation actions — escalate gently
When a detection method fires in Blocking mode, BIG-IP doesn't just hard-drop everyone. It escalates:
- Client-Side Integrity Defense — a silent JavaScript challenge. Real browsers solve it transparently; scripted floods can't run JS, so they're filtered without a user ever noticing.
- CAPTCHA Challenge — a human-verification step for clients that look suspicious but might be real.
- Request Blocking — either Rate Limit (cap requests) or Block All for the offending scope.
Each is scoped by Source IP, Device ID, Geolocation, URL, or Site-Wide, so you pin the attacker without punishing the whole site. This is why client-side integrity is such a powerful first step — most volumetric L7 floods are bots that fail it instantly.
Behavioral DoS mitigation levels — and where the signatures live
Behavioral DoS adds its own Mitigation setting on top of the mode:
- No Mitigation — learns and monitors only (your BADoS "Transparent"). Start here.
- Conservative — slows/rate-limits anomalous IPs based on confidence + server health; blocks requests matching behavioral signatures.
- Standard — adds concurrent-connection limits and, if needed, rate-limits all requests based on server health.
- Aggressive — does everything Standard does plus proactively applies protections even before an attack and increases the impact of blocking matched requests.
The auto-generated dynamic signatures appear under Security ▸ DoS Protection ▸ Signatures (tick the Dynamic box). Each can be in Mitigate, Detect Only, Learn Only, or Disabled — so you can watch a signature form before you let it block.
tmsh — the same profile from the CLI
The GUI is the day-job, but the same settings exist in tmsh. Useful for review, automation, and the 303 exam.
root@(bigip-flipkart)(cfg-sync)(tmos)# list ltm virtual vs_checkout_443 profiles root@(bigip-flipkart)(cfg-sync)(tmos)# list security dos profile dos-flipkart-app application
ltm virtual vs_checkout_443 {
profiles { dos-flipkart-app { } http { } websecurity { } }
}
security dos profile dos-flipkart-app {
application {
flipkart-app {
mode blocking
tps-based { mode blocking }
stress-based { mode blocking }
behavioral { mitigation standard }
}
}
}Don't start in Blocking. A new DoS profile surprises you — a salary-day login rush or a flash sale spikes traffic exactly like an attack. Start in Transparent (and Behavioral DoS in No Mitigation), watch DoS Visibility to see what would have been mitigated, tune thresholds, then switch to Blocking. Going straight to aggressive Blocking is how a healthy spike becomes a self-inflicted outage.
▶ Watch the mitigation escalation — gentle first, hard only if needed
A flood hits a Blocking profile. Play to see mitigation escalate from a silent challenge up to blocking, then Break it to see the cost of skipping straight to Block All.
Aditya at HCL faces this
Aditya tuned a great DoS profile in the lab, but in production it never mitigates a real flood — DoS Visibility shows the attack detected but no action taken.
Operation Mode is Transparent. Detection works (that's why the attack appears in reports), but Transparent only logs — it never drops or challenges. Mitigation requires Blocking.
Switch Operation Mode to Blocking (and set Behavioral DoS mitigation from No Mitigation to Standard). Confirm the profile is bound to the correct virtual server.
Re-test; DoS Visibility now shows the attack and the mitigation that fired (challenge / rate-limit / block), with the matched signature.
Never claim a DoS profile works from the config screen. Run a safe synthetic flood in a lab window, then open Security ▸ Reporting ▸ DoS ▸ DoS Visibility, filter on the virtual server + last hour, and read which detection method fired, the mitigation applied, and any matched dynamic signature. If the report shows detection but no mitigation, your Operation Mode is Transparent — not the cloud, not the attack.
root@(bigip-flipkart)(tmos)# show security dos virtual name vs_checkout_443 root@(bigip-flipkart)(tmos)# show security dos application-attack
Security::DoS Application Attack Profile: dos-flipkart-app VS: vs_checkout_443 Attack ID: 9f3c-2026 State: Mitigating Detection: Stress-based + Behavioral Trigger: latency↑ + Source IP 203.0.113.0/24 Mitigation: Client-Side Integrity → Rate-limit (Source IP) Dynamic signature: dosl7_sig_4471 matched 98.6% of attack traffic # Detection but no mitigation row → Operation Mode is Transparent. No attack row at all → profile not bound to the VS.
You set the DoS profile Operation Mode to Transparent. An obvious L7 flood arrives. What does BIG-IP do?
🤖 Ask the AI Tutor
Tap any question — instant, scoped to this lesson. No login, no waiting.
Pre-curated from F5 techdocs + DevCentral, scoped to BIG-IP Advanced WAF L7 DoS. For a live prod issue, paste your DoS Visibility export into chat.techclick.in.
📝 Wrap-up assessment — six more
You've answered 4 inline. Six left. 70% (7 of 10) marks the lesson complete on your profile. Tap Submit all answers at the end.
🧠 In your own words
Type one line: why does stress-based detection avoid the false positives that pure TPS-based detection suffers? Then compare to the expert version.
🗣 Teach a friend
Best way to lock it in — explain it in one line to a teammate. Tap to generate a paste-ready summary.
📖 Glossary
- BIG-IP Advanced WAF (formerly ASM)
- F5's web application firewall. Advanced WAF = ASM plus L7 Behavioral DoS, Bot Defense, credential-stuffing/brute-force protection and DataSafe. ASM went End-of-Sale 01-Apr-2021; existing ASM customers on BIG-IP ≥14.1 under support can reactivate to Advanced WAF free. The TMUI menu still says "Security ▸ Application Security".
- L7 (application-layer) DoS
- An attack that floods HTTP/HTTPS requests to exhaust the app or backend. Configured in the DoS profile's Application Security settings — distinct from L3/L4 network DDoS (the device/AFM DoS profile).
- DoS profile
- The BIG-IP object holding the L7 DoS detection methods and Operation Mode, attached to a virtual server. Path: Security ▸ DoS Protection ▸ DoS Profiles ▸ profile ▸ Application Security.
- TPS-based detection
- Detects attacks by transaction rate — comparing a short detection interval (~10s) against a long history interval (~1 hour) via "TPS increased by" (ratio) and "TPS reached" (absolute).
- Stress-based detection
- Detects attacks using server latency. Requires a latency increase AND at least one suspicious entity (source IP, device ID, URL, heavy URL, geolocation, or site-wide). Thresholds run Automatic or Manual.
- Behavioral DoS (BADoS)
- Machine-learning detection inside stress-based settings. Learns normal traffic, identifies bad actors, and generates dynamic request signatures. Mitigation levels: No Mitigation / Conservative / Standard / Aggressive.
- Dynamic request signature
- A signature BADoS auto-builds during an attack that matches only the malicious requests, so legitimate users on the same URLs aren't blocked. Seen under Security ▸ DoS Protection ▸ Signatures (Dynamic).
- Operation Mode
- Transparent = detect, log and report only (no mitigation); Blocking = mitigation actions actually apply. Always baseline in Transparent first.
- Client-Side Integrity Defense
- A JavaScript challenge that real browsers solve silently while scripted bots can't — the gentle first mitigation step before CAPTCHA or request blocking.
- 303 — BIG-IP ASM Specialist
- The F5 certification this series maps to: 90 minutes, 80 questions, pass 245/350. Validates design, implementation, maintenance and troubleshooting of BIG-IP ASM / Advanced WAF.
📚 Sources
- F5 techdocs — Preventing DoS Attacks on Applications (BIG-IP 17.0): DoS profile Application Security, TPS-based vs Stress-based detection, detection/history interval, Operation Mode Transparent/Blocking, mitigation actions, heavy URL. techdocs.f5.com/en-us/bigip-17-0-0/big-ip-asm-implementations/preventing-dos-attacks-on-applications.html
- F5 techdocs (BIG-IQ 7.1) — About Behavioral DoS protection: Bad Actors Behavior Detection, Request Signatures Detection, and the No Mitigation / Conservative / Standard / Aggressive mitigation levels (exact behaviors quoted). techdocs.f5.com
- F5 DevCentral / F5 Agility & clouddocs DDoS labs — Configuring L7 Behavioral DoS Protection & Request Signatures (Module 3–4): "BaDoS first mitigates with a global rate limit… then blocks only traffic matching dynamic signatures"; signatures under Security ▸ DoS Protection ▸ Signatures (Dynamic); states Mitigate / Detect Only / Learn Only / Disabled. community.f5.com · clouddocs.f5.com
- Community write-up — "F5 BIG-IP ASM — L7 DDoS attack Protection (TPS, Behavioral & Stress-Based detection)" (DevCentral technical forum) and Nishal Rai's field walkthrough (nishalrai.com.np/posts/f5asm-l7ddos). community.f5.com
- F5 — Protecting Apps from DDoS and API Attacks with BIG-IP Advanced WAF (product blog) & BIG-IP Advanced WAF product page (Advanced WAF = ASM + L7 Behavioral DoS + Bot Defense + brute-force + DataSafe; ASM EoS 01-Apr-2021). f5.com
- F5 Quarterly Security Notification (October 2025, K000156572) and CVEs CVE-2025-54858 / CVE-2025-61935 —
bdprocess termination with an Advanced WAF/ASM policy configured (availability impact). my.f5.com - F5 Certification — 303 — BIG-IP ASM Specialist Exam Blueprint (90 min, 80 questions; design/implement/maintain/troubleshoot ASM/Advanced WAF, incl. L7 DoS). techdocs.f5.com · education.f5.com/exams/big-ip-asm-specialist-303
What's next?
You can now find L7 DoS in the DoS profile, tell TPS-based from Stress-based from Behavioral DoS, and pick the right Operation Mode and mitigation. Both detection and bot challenges live in the same DoS profile — but the next lesson zooms into the part this blog deliberately left out: Proactive Bot Defense and bot classification.