Why this matters — the Google Maps analogy
Imagine you're driving to a customer site in Bangalore. You open Google Maps. It checks every road — Outer Ring Road, Sarjapur, Hosur — sees the live traffic colour (green / yellow / red), and picks the fastest right now. Halfway through, an accident closes one road; Maps reroutes you in seconds. FortiGate SD-WAN does the same thing for your packets: it watches every WAN link's latency, jitter and loss in real time, decides per-session (and sometimes per-flow) which one to use, and reroutes when one degrades.
The part that catches L1 candidates: SD-WAN is not a routing protocol. It sits on top of routing — you still need a default route on every member. SD-WAN just picks which route to prefer for each session.
Aman (L2 Network, 2.5 years in) has been handed the rollout of FortiGate SD-WAN across 50 branch offices for a manufacturing client. Each branch has two ISPs (wan1 = ACT Broadband, wan2 = Airtel) plus an IPsec tunnel to the HQ data centre over MPLS. The brief: "Microsoft 365 must use the lowest-jitter path, ERP must always go via MPLS, and general internet should load-share."
Day 1 he ships a "Best Quality" rule for everything. Day 2, voice calls on Teams start jittering mid-call because Best Quality keeps re-evaluating per-flow and flipping paths every 30 seconds. By the end of this blog you'll know exactly which strategy Aman should have picked, and why.
Three terms every interviewer will test
SD-WAN zone is the logical container. Member is each WAN link inside the zone (wan1, wan2, the IPsec to HQ). Performance SLA is the live health check on each member.
The biggest L1 trap: candidates conflate zone with member. A firewall policy with srcintf=lan, dstintf=overlay-zone covers every member inside that zone. You don't write three policies for three WAN links — that's the whole point.
Logical bundle of members. Security policies and routing reference this — not the physical interfaces. Default zone is virtual-wan-link; you can create many.
A single WAN link inside a zone — physical (wan1/wan2) or virtual (IPsec tunnel). Has a sequence number, gateway, cost, and priority.
Live latency / jitter / loss probe per member. Defaults: 5ms / 5ms / 0%. Hit thresholds = "in SLA"; miss = "out of SLA" and rule may switch.
The ordered list deciding which member each session uses. Match src / dst / app / ISDB → pick strategy → choose member. First match wins.
Internet Service Database — Fortinet's curated list of public-IP sets per cloud service (Microsoft-365, Salesforce, Zoom). Use it instead of typing IPs.
The last SD-WAN rule. Anything not matched by an explicit rule falls here. Pick the strategy carefully — it's the default behaviour for "everything else".
Performance SLA — the heartbeat that decides everything
Every SD-WAN decision depends on one signal: is this member in SLA right now? If yes, it's a candidate. If no, the rule strategy may dump it for another member. So performance SLA tuning is where 70% of real-world SD-WAN problems live.
The defaults you'll see in config system sdwan / config health-check are latency ≤ 5 ms · jitter ≤ 5 ms · packet-loss ≤ 0%. These are absurdly tight for any path that touches the internet — even a clean fibre to AWS Mumbai will fail the 5 ms target. Always tune them per app.
Before you scroll — if both wan1 and wan2 are in SLA and the rule uses Lowest Cost SLA, what happens when wan2 (the currently-chosen member) suddenly spikes to 80 ms latency for 10 seconds, then recovers?
What are the FortiOS default performance SLA thresholds for latency, jitter, and packet loss?
Real config — a tuned SLA for Microsoft 365
Aman opens his branch FG-100F and writes a fresh performance SLA for M365:
config system sdwan
config health-check
edit "M365-Health"
set server "outlook.office.com"
set protocol http
set http-get "/api/health"
set members 1 2
set sla-id-redistribute 1
config sla
edit 1
set latency-threshold 80
set jitter-threshold 30
set packetloss-threshold 1
next
end
set interval 500
set failtime 5
set recoverytime 10
next
end
end
Health Check(M365-Health): Seq(1 wan1): state(alive), packet-loss(0.000%) latency(22.140), jitter(7.911) sla_map=0x1 Seq(2 wan2): state(alive), packet-loss(0.000%) latency(18.302), jitter(3.144) sla_map=0x1
Both members show state(alive) and sla_map=0x1 meaning they both meet SLA 1. The rule engine will pick between them — for Lowest-Cost-SLA, wan2 wins on jitter; for Best Quality, it picks whichever is best right now.
Don't hammer 8.8.8.8 from 50 branches every 500 ms — Google rate-limits ICMP and you'll see flapping. For per-app SLA, probe a target that reflects the actual service: outlook.office.com for M365, salesforce.com for SF, an internal HTTPS health endpoint for ERP. Or run two health-checks per member — one ICMP to the ISP gateway for liveness, one HTTP to the real service for quality.
The 5 rule strategies — which to pick and why
FortiGate SD-WAN gives you five strategy modes. Each is a different answer to the same question: "when more than one member is eligible, which do I use?" Get this matrix straight and 30% of your interview SD-WAN round is over.
You enable a Best Quality rule for "all important traffic" thinking quality = good. Best Quality re-evaluates every flow — and for a long-running SIP/RTP voice call, that means the path can switch mid-conversation, causing jitter spikes and one-way audio. Use Manual (pin to MPLS) or Lowest-Cost-SLA (sticky once chosen). Verify with diag sys sdwan service — the strategy is printed in the rule output.
Aman has two SD-WAN service rules. Rule 1 (sequence 1): src LAN → ISDB Microsoft-365, strategy Lowest Cost SLA. Rule 2 (sequence 2): src LAN → any, strategy Maximize Bandwidth. A user opens outlook.office.com. Which rule applies?
Real config — Aman's three-rule layout
Here's exactly how Aman should have written it on day 1:
config system sdwan
config service
edit 1
set name "ERP-pin-MPLS"
set dst "ERP-servers-HQ"
set src "internal-lan"
set mode manual
set priority-members 3
next
edit 2
set name "M365-LowestCostSLA"
set internet-service enable
set internet-service-name "Microsoft-365"
set src "internal-lan"
set mode sla
config sla
edit "M365-Health"
set id 1
next
end
set priority-members 1 2
next
edit 3
set name "General-Internet-LoadShare"
set dst "all"
set src "internal-lan"
set mode load-balance
set priority-members 1 2
next
end
end
Service(1): Address Mode(IPV4) flags=0x200 use-shortcut-sla Tie break: cfg Members(1): 1: Seq_num(3 ipsec-MPLS), alive, selected Service(2): Address Mode(IPV4) flags=0x4200 use-shortcut-sla Internet Service(327681): Microsoft-365.0(327681,0,0) SLA(1): jitter 3 latency 18 packet-loss 0.000% (member 2) Members(2): 2: Seq_num(2 wan2), alive, selected · 1: Seq_num(1 wan1), alive Service(3): Address Mode(IPV4) flags=0x0 load-balance Members(2): 1: Seq_num(1 wan1), alive · 2: Seq_num(2 wan2), alive
SD-WAN is a steering layer — it doesn't replace routing. If an SD-WAN rule fails to find any healthy member (or no rule matches), the packet falls back to the regular routing table. Every SD-WAN member must have a default route via its gateway (config router static). Without that, traffic black-holes when the SLA goes bad. Check with get router info routing-table sdwan.
▶ Watch a voice session — wan1 SLA degrades, Lowest-Cost-SLA picks wan2
Aman's branch — a Teams call originates on wan1 (current best). Mid-call wan1 jitter spikes. Watch what happens with the Lowest-Cost-SLA strategy.
Two days after Aman flips rule 2 from Best Quality to Lowest-Cost-SLA, the call-drop tickets stop. He confirms in diag sys sdwan service that rule 2 is sticky on wan2 and diag sys session list | grep sdwan shows long-running Teams sessions hugging their initial member. The trade-off: when wan2 briefly worsens, Lowest-Cost-SLA waits for current sessions to finish before re-evaluating — better than mid-call flipping.
A branch has wan1 + wan2 + an IPsec tunnel to HQ all in one zone. Aman wants ERP traffic to ALWAYS go via the IPsec tunnel even if wan1/wan2 are faster — but he wants automatic fallback to wan1 if the tunnel is down. Which strategy and which fields?
set mode manual and set priority-members 3 1 (3 = the IPsec tunnel member's sequence number, 1 = wan1 as fallback). Manual mode pins to the first listed member if alive; falls through to the next if it goes dead. SLA-aware modes don't apply because Aman doesn't want SLA-based reshuffling. The tunnel's link-detect (or BGP next-hop check) decides "alive" — define a health-check on the tunnel member to make that explicit.
▶ ISDB-aware steering — Microsoft-365 across both ISPs
Same user, same packet, but watch how the ISDB ID picks a different rule than a destination-IP match would.
Aman has rule 2 using ISDB Microsoft-365. Microsoft adds 200 new IPs to its public range. A week later users complain M365 traffic is on the wrong path. Most likely cause?
diag autoupdate versions and confirm the Internet Service Database is current.Debug a bad path — settle every SD-WAN argument in 90 seconds
Vikram, an L3 at an Indian security firm, doesn't open the GUI to debug SD-WAN. He runs three commands. You should too.
# 1. What is each member's live SLA? diagnose sys sdwan health-check # 2. Which rule matched and which member is selected? diagnose sys sdwan service # 3. Which member did a given session land on? diagnose sys session list | grep -E 'policy|sdwan'
Health Check(M365-Health): Seq(1 wan1): state(alive), packet-loss(0.000%) latency(22.140), jitter(7.911) sla_map=0x1 Seq(2 wan2): state(alive), packet-loss(0.000%) latency(18.302), jitter(3.144) sla_map=0x1 Seq(3 ipsec-MPLS): state(alive), packet-loss(0.000%) latency(8.011), jitter(1.022) sla_map=0x1
If a member shows state(dead) or sla_map=0x0, that's your culprit — the rule won't pick that member until probes recover. If all members are dead, your probe target is the problem (firewall rule blocking 8.8.8.8, ISP DNS hijacking your health-check URL).
After tuning an SLA or moving a rule, run:
diagnose sys sdwan service
Look for the line Members(N): X: Seq_num(Y intf), alive, selected. The "selected" tag tells you exactly which member is currently active for that rule. If "selected" doesn't change after your config push, restart probes with execute sdwan service-monitor.
ADVPN vs SD-WAN — when which?
This is a high-level L3 question. Both ADVPN and SD-WAN solve "smart overlay across multiple paths", but they live at different layers. ADVPN is the transport — it builds a dynamic mesh of IPsec tunnels so spokes can shortcut through each other instead of hairpinning via HQ. SD-WAN is the steering brain — it chooses which of those tunnels (or which raw internet member) a session uses based on live SLA. Real production setups run SD-WAN on top of ADVPN: ADVPN gives many encrypted paths; SD-WAN picks the best one per app per moment.
If your SD-WAN rule load-shares outbound across wan1 + wan2 but reply traffic comes back via a different ISP than it went out (asymmetric), stateful inspection breaks. Two clean fixes: (1) SNAT every session at the egress member with a per-member IP pool — so return traffic naturally lands on the same WAN; (2) use Manual or Lowest-Cost-SLA strategy so a session sticks to one member end-to-end. Diagnose with diag sys session list and check asic` flag.
Mid-2024, a large Indian MSP rolled out FortiGate SD-WAN to 300+ retail branches with a default ICMP performance SLA probe targeting 8.8.8.8 every 500 ms. Google began rate-limiting their /24 — ICMP started dropping intermittently, every branch's SLA flapped, sessions thrashed between wan1 and wan2 with Best-Quality rules in play, voice quality collapsed across the fleet. Root cause: they hammered a public anycast endpoint from 300 sources at 2 Hz each.
Fix: probe target moved to each ISP's own gateway for liveness + an internal HTTPS health endpoint for quality. Reduced probe interval to 2s. Switched voice rules from Best-Quality to Lowest-Cost-SLA. The lesson: never let an SD-WAN probe become an unintended DoS against your dependency. Source: 2024 NSE 7 SD-WAN field report compiled across CBT Nuggets + community forum threads.
Aman runs diag sys sdwan health-check and sees wan1 with latency(100.412) but the manual ping from CLI to the same SLA target completes in 22 ms. What's the most likely cause?
set source-ip / set source-interface — if that source-IP can't egress wan1 (asymmetric NAT upstream, ISP filtering source IP), the probe takes a longer path or fails. Fix: confirm set source-ip in the health-check, sniff with diag sniffer packet wan1 'icmp and host 8.8.8.8' — if no packets, the probe never leaves the interface.
🤖 Ask the AI Tutor
Tap any question — instant context-aware answer. Tuned on FortiOS 7.4 / 7.6 SD-WAN docs + NSE 7 SD-WAN exam blueprint + community threads.
Pre-curated answers grounded in FortiOS 7.4 / 7.6 docs + NSE 7 SD-WAN blueprint + LIVECommunity. For complex prod issues, paste your diag sys sdwan service + diag sys sdwan health-check output into chat.techclick.in.
📝 Final round — seven more
You've already answered 3 inline. Seven more. 70% (7 of 10) total marks this lesson complete on your Techclick profile. Tap Submit all answers at the end.
Self-explanation prompt
In 2-3 sentences, explain to a hypothetical batchmate: "Why is Lowest Cost SLA the safer choice than Best Quality for voice traffic on a FortiGate SD-WAN?" Writing it out cements the concept faster than re-reading.
📖 Mini-glossary — terms used in this blog
- SD-WAN zone
- Logical bundle of one or more SD-WAN members. Policies and routing reference the zone.
- Member
- A single WAN link inside an SD-WAN zone — wan1, wan2, an IPsec tunnel, etc.
- Performance SLA
- Live latency/jitter/loss probe per member. Defaults 5 ms / 5 ms / 0%.
- Service rule
- Ordered SD-WAN rule deciding which member each session uses (top-down, first-match).
- ISDB
- Internet Service Database — Fortinet's curated public-IP sets per cloud service.
- Best Quality
- Strategy that picks the highest-quality member per flow — flips mid-session.
- Lowest Cost SLA
- Strategy that picks the cheapest in-SLA member and sticks per session. Voice-safe.
- Manual
- Strategy that pins to one preferred member; fails over only if it's down.
- Maximize Bandwidth
- Strategy that load-shares sessions across members. Watch asymmetry.
- Auto
- Catch-all strategy; FortiOS picks based on SLA + cost. Fine for the implicit rule.
- ADVPN
- Auto-Discovery VPN — dynamic IPsec mesh between spokes. Transport beneath SD-WAN.
- Application steering
- Routing decisions based on application identity (ISDB, app-id), not just IP/port.
- FortiSASE
- Fortinet's SASE — SD-WAN + SSE / ZTNA / SWG in a cloud-delivered service.
diag sys sdwan health-check + diag sys sdwan service debug muscle memory.
What's next?
Blog 5 opens up FortiGate Security Profiles — flow-based vs proxy-based inspection, web filter, app control, IPS, AV, and the inline-CASB additions in 7.4+ that the FortiSASE-era recruiters love to test.
📚 Sources
- Fortinet Docs — SD-WAN Performance SLA (FortiOS 7.6 Administration Guide). docs.fortinet.com/document/fortigate/7.6.6/administration-guide/584396/sd-wan-performance-sla
- Fortinet Docs — SD-WAN Rules and Strategy Modes (FortiOS 7.4 / 7.6). docs.fortinet.com
- Resume Pro — Fortinet SD-WAN Key Interview Questions (2025). resumeprofessionalwriters.com/fortinet-sd-wan-key-interview-questions
- CBT Nuggets — What is covered on the NSE 7 SD-WAN exam (2025). cbtnuggets.com/blog/certifications/security/what-is-covered-on-the-nse-7-sd-wan-exam
- Fortinet Community — Routing Methods in FortiGate (Policy, ISDB, SD-WAN, Static, Dynamic). community.fortinet.com/fortigate-3/technical-tip-routing-methods-in-fortigate-policy-isdb-sd-wan-static-and-dynamic-routes-105196
- Fortinet Community — SD-WAN troubleshooting — diag sys sdwan and friends. community.fortinet.com (multiple troubleshooting threads, 2024–2025)
- UniNets — Top Fortinet Firewall Interview Q&A 2025 (SD-WAN section). uninets.com/blog/fortinet-firewall-interview-questions-answers