Skip to content
A Akamai Security Reference

Engine deep dive

Behavioral DDoS Engine (BDE)

An intelligent, hostname-centric DDoS mitigation system that dynamically learns traffic patterns, establishes baselines, and automatically responds to anomalies. Unlike traditional rate-based controls, BDE leverages per-hostname behavioural profiling, providing precise, adaptive and automated protection.

TL;DR

What is it?

BDE learns normal traffic patterns for each hostname and uses those baselines to detect anomalies. It additionally uses both malicious signals (e.g. Platform DDoS Intelligence) and benign signals (e.g. the DAN table) to enhance precision.

How does it work?

BDE profiles provide a shared administrative framework where sensitivity, exceptions and mitigation actions are defined, but each hostname always builds and enforces its own independent baseline and thresholds daily. This dual structure delivers efficiency at the profile level while preserving precision at the protection level.

Sensitivity can be adjusted to traffic behaviour: conservative for bursty endpoints, moderate for most production services, and strict for stable or low-volume hostnames/endpoints such as login or payment portals.

Instead of static thresholds it adapts dynamically and detects anomalies across multiple dimensions: HTTP method, hostname, path, country source, TLS patterns (a subset of TLS information), connecting IP and TLS fingerprint. When the solution flags a suspicious actor it does so within a defined scope (HTTP method + hostname + path). This increases effectiveness and sensitivity while keeping false positives very low in case of misclassification.

BDE versus Rate Controls

BDE is not directly comparable with DoS Rate Control, but for reference:

FeatureBehavioral DDoS EngineRate Controls
Counting scopeClient Identifier + HTTP method* + per-URLClient Identifier + scope defined at the Rate policy level (usually shared across hostnames)
Mitigation scopeSame as counting scopeClient Identifier + scope defined at the Security policy level (usually shared across hostnames)
Thresholds36 burst thresholds pre-calculated per hostname daily; 12 used at any given time (per sensitivity)Set manually with 2 options: burst threshold and average threshold
Penalty box duration10 minutes10 minutes
PrecisionHigh (anomaly-based)Low (threshold-based)
SetupSensitivity tuning, bypass, exceptionFixed rates, bypass, exception
Better coverageDDoS attacks high and low volume; parameter fuzzing (random parameter) and brute-force attacksDDoS attacks high volume; URL fuzzing (random path) and web scraping
Traffic awarenessContext aware (baselines based on the last 14 days, updated every 24h)Lacks context
Threat intelligenceYes (Platform DDoS Intelligence, DAN, etc.)No
Risk alignmentTailored to risk toleranceStatic thresholds
Operational overheadHands-offManual updates

*HTTP method buckets: GET, POST, Others (PUT, DELETE, etc.)

Why does it matter?

Unlike traditional rate controls that apply static, shared thresholds, BDE reduces false positives and provides accurate protection by understanding what “normal” looks like for each hostname. It enables proactive defence that adapts in real time, preserving availability and customer trust even during unpredictable traffic events. When a potential attack occurs, only the targeted endpoint is affected by the mitigation — which reduces the blast radius of false positives and gives you far more confidence when switching to blocking mode.

Not suitable candidates for BDE protection

BDE depends heavily on data collection to learn expected behaviour from legitimate user traffic. Attempting to protect sites with little or no traffic results in inefficient or no protection.

Tip: use the Traffic Report to understand how much traffic your website receives at its origin. Focus on origin traffic with status code 200 — BDE requires several thousand requests per day to learn effectively.

Deployment best practices

Key takeaways

BDE profile scope drives administrative efficiency, while hostname baselines preserve fidelity. Group hostnames within a profile according to their traffic type or nature, since each group shares the same sensitivity level; within that profile every hostname still builds and enforces its own independent baseline. Continuous monitoring and tuning remain essential for long-term value. BDE is not a reactive firefighting tool but a proactive, adaptive system that outperforms traditional rate-based controls through data collection, precision and intelligence.

1. Key concepts

Hostname-centric profiling

BDE creates individual traffic baselines per hostname, so protection thresholds are tailored to the specific traffic patterns of each hostname. Even if multiple hostnames are included in a single BDE profile, the actual baselining and anomaly detection are defined per hostname.

Example
  host1.com and host2.com are both in BDE Profile A with Strict sensitivity.
  Each is protected based on its OWN historical traffic, despite sharing a profile.

Profile scope vs protection scope

It is important to distinguish the Profile Scope, which governs shared configuration settings, from the Protection Scope, which reflects how each hostname is individually protected.

Profile scope — centralised configuration

The BDE profile is the administrative layer defining shared operational parameters for one or more hostnames:

Note: use a single profile for hostnames with similar business functions and traffic behaviour — but be aware that each hostname still profiles independently.

Protection scope — hostname-centric defence

Each hostname builds its own adaptive baseline using up to 14 days of production traffic. This means:

The result: a shared profile enables administrative efficiency, while individual baselines preserve protection fidelity.

Traffic profiling & detection framework

BDE profiles traffic using multi-dimensional criteria that go far beyond IP and volume metrics.

Profiling scope dimensions

Each profile is uniquely scoped per Akamai region, and only the maximum value is retained, using:

Ultimately, the average of the maximum rates per scope + dimension is calculated and propagated to the Edge daily. Dimension here means: TLS pattern, country source, TLS fingerprint, and IP.

Important: at the Edge, the BDE calculation is per request, and the formula is similar to the Rate Control burst threshold: total hits are divided by 5 over 5 seconds (sliding window), then the identifier is placed in the penalty box for 10 minutes.

This results in 12 profiles per hostname (4 primary behavioural profiles × 3 HTTP method buckets):

Profile typeScopeBehavioural signal used
Detection 1HTTP method* + Hostname + Path + Country source, per Akamai regionGeographic anomalies
Detection 2HTTP method* + Hostname + Path + TLS pattern, per Akamai regionClient TLS stack behaviour
Mitigation 1HTTP method* + Hostname + Path + IP, per Akamai regionIP-based behavioural deviation
Mitigation 2HTTP method* + Hostname + Path + TLS fingerprint, per Akamai regionClient TLS fingerprinting deviation

*HTTP method buckets: GET, POST, Others (PUT, DELETE, etc.)

Sensitivity levels

The sensitivity level can be overridden or tuned based on the hostname–path pair.

Fine-tuning for false positives

BDE baseline generation process

Once BDE is enabled on any scope, the baseline profile continues to collect and consider all paths for that hostname. It is independent of the match target, which only defines the scope of counting and mitigation actions at the Edge — not the scope of baseline computation.

Baseline computation is performed asynchronously and entirely in the backend, using the previous day's traffic data in addition to the baselines generated over the last 14 days. It is generated offline, without any interaction with the Edge processing workflow. Once computed, the baseline is pushed to the Edge once every 24 hours for live enforcement.

As of today, there is no information sharing from your configuration to the BDE backend system. BDE is unaware of your security configuration, including bypasses, exceptions, or Override sensitivity settings. Baselines and outlier-path detection are built solely from BDE's internal model and the traffic data it collects.

Multiple traffic types are excluded to sanitise the data prior to baseline generation. This list is not exhaustive:

Tip: to positively influence the baseline, tune your other security products (Bot Manager, Client Reputation, WAF, etc.) to block as much bad traffic as possible. BDE will learn and do its best to clean up traffic before baseline calculation, but an essential part of the process is that you continuously tune your security configuration in blocking mode.

Key takeaways for professional services teams

ConceptDescription
BDE profileDefines how protection is applied (settings, not behaviour).
BDE baselineBuilt per hostname, unique to its traffic, applied per scope (HTTP method + hostname + path).
Multi-dimensional detectionIdentifies potential targeted URLs using the scope combined with TLS patterns and country source.
Multi-dimensional mitigationIdentifies suspicious end users using the scope combined with TLS fingerprint and/or source IP. Threat intelligence enhances precision. Note: TLS fingerprints commonly seen (from the DAN table) are automatically ignored; in that scenario mitigation only considers the IP dimension.
Granular tuningEnables accurate mitigation with customisable exclusions and overrides.
Profile efficiencyGroup hostnames administratively, but treat protections independently.

2. Initial configuration

Step-by-step setup

  1. Create a BDE profile
    • Group together hostnames with similar sensitivity and exception requirements.
    • Keep the number of hostnames manageable (the limited-availability limit is 10 hostnames per contract).
  2. Set initial parameters
    • Sensitivity level: Moderate
    • Action: Alert
    This lets the engine observe real-world traffic without enforcement. There is no BDE trigger in WSA until the baseline reaches a ready state (~5 days).
  3. Include hostnames
    • Wildcards are not allowed; hostnames must be specified explicitly.
    • All hostnames share profile settings but build independent behavioural baselines.
  4. Let BDE learn
    • Allow 7–10 days for the baseline to stabilise.
    • During this phase no mitigation is performed — only observation and tuning.

Strategic implementation advice

The BDE system cannot determine whether constant noise, tolerated (non-blocking action) by customers for several days, is good or bad bot traffic. Ensuring long-lived noise is not included in the BDE system is pre-work that must be done if you want to increase the likelihood of proper detection by BDE.

Implementation decisions should align with the customer's risk tolerance, traffic stability and the business criticality of each hostname. If you are not familiar with the customer context, start with a moderate level.

For non-critical hostnames or services with variable traffic patterns (e.g. marketing pages, bursty APIs):

This gives visibility into behavioural anomalies without prematurely triggering mitigation, helping teams understand baseline stability before applying relaxed controls.

For critical or sensitive hostnames (e.g. authentication portals, payment systems, admin interfaces) where availability and integrity are paramount:

This applies tighter thresholds to high-value assets while still giving operators time to evaluate behavioural data before enforcing mitigation.

Regardless of sensitivity level, always allow at least 7–14 days of clean traffic learning before enabling mitigation. Use BDE reports to assess stability, identify legitimate traffic bursts and fine-tune exceptions. Compare BDE triggers with rate control triggers to understand which attacks each system is catching.

After confidence is built in baseline accuracy and tuning is complete:

Note: there is no “one size fits all” profile. Let business context, application behaviour and security posture drive tuning decisions.

Reference documentation compiled from Akamai TechDocs, Akamai blog/newsroom material and Cloudflare Learning Center fundamentals. Product behaviour and limits change — validate against current vendor documentation before production use.