Ferritaas Incident Intelligence
Defect Intelligence Report Bug 0889201 Severity: High (P2)

SD-WAN Passive Health Check Flapping under Asymmetric TCP ACK Streams

We have all been there at 2 AM: your monitoring dashboard lights up with thousands of SD-WAN route flaps, branch VoIP calls suddenly drop into static, and the link health table claims your 1 Gbps primary fiber has 100% packet loss—even though ICMP pings sail through flawlessly. Here is the deep engineering reality behind Bug 0889201 and how to stabilize your cluster.

Technical Root Cause Analysis

To avoid artificial probe traffic charges on metered uplinks or avoid triggering upstream rate limits, many network engineers deploy FortiOS Passive SD-WAN Health Checking. Instead of transmitting constant synthetic probes, the kernel’s link_monitor daemon passively sniffs active production TCP sessions traversing the interface, calculating Round Trip Time (RTT) and packet loss by correlating outbound TCP data segments with inbound server TCP acknowledgments (ACKs).

However, when enterprise topologies involve asymmetric routing—such as when outbound client requests depart via wan1 but return ACKs traverse a low-latency wan2 or an MPLS/ADVPN overlay—the passive SLA engine on wan1 suffers from one-way blinders. The outbound sequence numbers are registered in the local SLA table, but because the matching ACK packets arrive on a different interface, the timer window on wan1 expires without receiving confirmation.

The real-world firmware trajectory illustrates the engineering challenge: Discovered in firmware 7.2.2 as branch passive monitoring became mainstream, an initial fix was attempted in firmware 7.2.5 by introducing an ACK sampling smoothing filter. However, during high-throughput asymmetrical TCP transfers, the smoothing filter still accumulated false loss events. The permanent verified resolution was integrated into firmware 7.2.8+ and 7.4.2+, implementing cross-interface session table synchronization so that return ACKs arriving on any firewall interface credit the original egress member's SLA metrics.

[sdwan_passive_sla] link_mon_eval: member wan1 (id=1) seq_tx=2948102390 ack_timeout [sdwan_passive_sla] sample loss_count=64/64 (100% loss) rtt_est=999ms jitter=140ms [sdwan] SLA rule 'Corporate_SaaS' target failed on member wan1 (SLA #1 out-of-spec) [sdwan] service id=1: member 1 state changed to DEAD (flapping threshold exceeded) [kernel] fib_rule_update: switching active path from wan1 (cost=10) to wan2 (cost=20) [sdwan] route flap detected: 1420 active sessions re-routed to wan2

Affected Firmware & Blast Radius Matrix

FortiOS Branch Vulnerable Builds Confirmed Clean Build Status & Workaround
FortiOS 7.2 7.2.2 – 7.2.7 7.2.8+ Switch to active probes or disable passive SLA
FortiOS 7.4 7.4.0 – 7.4.1 7.4.2+ Upgrade to 7.4.2+ for bidirectional session sync
FortiOS 7.0 Not Affected 7.0.x Branch Clean Passive SLA TCP stream calculation engine not present

Platform Impact: Affects FortiGate 60F, 70F, 80F, 100F, 200F, and 400F desktop and mid-range appliances operating SD-WAN rules with detect-mode passive or hybrid active/passive health checks in topologies with asymmetric egress/ingress paths.

Step 01: Free Verification CLI (Safe Read-Only)

Run these non-disruptive commands from the FortiOS console to verify if passive SLA calculations are falsely flagging packet loss on healthy members:

Diagnostic Commands

# 1. Check SD-WAN health-check status and identify flapping members
diagnose sys sdwan health-check status

# 2. Inspect session table statistics to confirm asymmetric traffic flow
diagnose sys session stat

# 3. View real-time SD-WAN service rule steering decisions and state transitions
diagnose sys sdwan service

# 4. Read interface SLA metric logs for packet loss spikes during live traffic
diagnose sys sdwan intf-sla-log wan1

Remediation & Workaround Steps (Teaser Preview)

Resolve passive health-check flapping immediately using the guided workflows in the Ferrite platform:

Step 02: Audit Active SD-WAN Health-Check Configuration

Locate all performance-sla profiles configured with detect-mode passive and inspect member assignments.

🔒 Interactive CLI Available in Ferrite Runbook #14

Step 03: Non-Disruptive Transition to Dual Active Probes

Convert passive probes to low-bandwidth active HTTP/ping probes targeting resilient Anycast DNS endpoints.

🔒 Interactive CLI Available in Ferrite Runbook #14

Step 04: Tune Flap Dampening Hysteresis & Recovery Counters

Apply failtime and recoverytime dampening to prevent micro-second flapping from tearing down TCP sessions.

🔒 Interactive CLI Available in Ferrite Runbook #14
⚡ Ferrite Platform Superpowers

Execute the Complete Runbook with Live Browser Automation

Connect your FortiGate via browser console (Web Serial) or local SSH bridge, verify each command in real-time, generate ready-to-run Tera Term scripts, and export sanitized TAC dossiers.

Live Browser Automation Direct terminal connection with live step checkoff.
📟
1-Click Tera Term (.ttl) Generate scripts for air-gapped jumpboxes.
🛡️
Zero-Trust Scrubber Scrub serials and credentials in local browser RAM.
📄
TAC P1 Escalation Dossier Standardized evidence export with SHA-256 seal.

Frequently Asked Questions

Why do passive SD-WAN health checks flap on asymmetric links?

Passive health checks calculate RTT and packet loss by sniffing outbound client TCP packets and their corresponding server ACKs on the same physical interface. When egress traffic leaves wan1 but return ACKs arrive via wan2, wan1's passive SLA engine assumes packet loss, reaching 100% loss and triggering constant route failovers.

What is the real-world firmware trajectory for Bug 0889201?

Discovered in FortiOS 7.2.2, an initial fix was attempted in 7.2.5 using an ACK sampling smoothing filter. Permanent verified resolution arrived in FortiOS 7.2.8 and 7.4.2 with bidirectional cross-interface session state tracking.

Can I prevent flapping without upgrading immediately?

Yes. Convert affected SD-WAN health checks from passive mode to active ping or HTTP probes targeting highly available DNS or gateway IPs, or apply strict policy routes to enforce symmetric routing.