If you've spent any time configuring user authentication on... Full Story
By Manny Fernandez
July 19, 2026
FortiGate ADVPN: Classic (1.0) vs. Edge-Discovery (2.0) for Dynamic Spoke-to-Spoke SD-WAN
1. Executive Summary
Objective. This guide explains what changed between ADVPN 1.0 and ADVPN 2.0 on FortiGate, then walks two complete deployment tracks so you can stand up on-demand spoke-to-spoke shortcuts on the version that fits your fleet. ADVPN (Auto-Discovery VPN) lets a hub-and-spoke IPsec topology build direct, dynamic tunnels between spokes so branch-to-branch traffic stops hair-pinning through the hub. Getting the version right matters because 1.0 and 2.0 make opposite assumptions about where path intelligence lives, and mixing those assumptions is where deployments break.
Target audience. Network and security engineers, SD-WAN architects, and SEs who already run FortiGate hub-and-spoke overlays and need spoke-to-spoke automation with predictable path selection.
2. How ADVPN 1.0 and 2.0 Differ
Both versions do the same job at a high level: user traffic between two spoke LANs triggers an on-demand IPsec shortcut, and the shortcut is torn down after the traffic goes idle. What differs is who decides which underlay the shortcut is built on, and how much BGP scaffolding you need to make that decision correct.
ADVPN 1.0 in one paragraph
The hub is the brain. Spokes exchange IKE shortcut-offer and shortcut-reply messages through the hub, and the hub uses policy routes to keep a shortcut on the same overlay it was requested on. Because a spoke only learns another spoke LAN as a BGP prefix whose next hop is the remote spoke tunnel IP, correct path selection depends on a specific BGP design: the hub acts as a route reflector, next-hop is preserved (not rewritten to the hub), BGP additional-path (add-path) advertises one path per overlay, and the spoke recursively resolves the tunnel-IP next hop over the freshly built shortcut. It works, but the routing design is load-bearing and unforgiving.
ADVPN 2.0 in one paragraph
The spokes are the brain. Each spoke runs edge discovery and path management, so it learns the remote spoke WAN link inventory (IP, transport group, link quality, cost, and member order) directly from an expanded IKE Shortcut-Reply and picks the best matching underlay itself. Path selection no longer depends on route reflection, add-path, BGP-per-overlay, or BGP-on-loopback. BGP (or any IGP) is now only responsible for distributing LAN reachability, not for steering shortcuts. Spokes tag overlays into transport groups and only build shortcuts between links that share a group, and overlay placeholders let two spokes build a shortcut across a transport the hub is not even connected to.
| Dimension | ADVPN 1.0 (Classic) | ADVPN 2.0 (Edge Discovery) |
|---|---|---|
| FortiOS support | Through the 7.2 branch | 7.4 branch and later (path management from 7.4.2) |
| IKE version | IKEv1 or IKEv2 | IKEv2 only |
| Address family | IPv4 and IPv6 | IPv4 only (current) |
| Path-selection intelligence | Centralized on the hub | Distributed to the spokes |
| Shortcut trigger | User traffic only | Health-driven plus user traffic; spokes can pre-select a better path |
| Routing dependency | Route reflection, add-path, per-overlay BGP or BGP-on-loopback all load-bearing | BGP or IGP for LAN reachability only; not used for path selection |
| Underlay awareness | Spoke A cannot see Spoke B link health before building | Spokes exchange health and pick the best matching underlay |
| Transport control | Kept on same overlay via hub policy routes | Transport groups plus overlay placeholders |
| Best fit | Existing fleets pinned below 7.4, or mixed-version meshes | Greenfield or fully 7.4+ fleets wanting resilient, self-optimizing shortcuts |
3. Prerequisites & Architecture
Assumed knowledge
- FortiGate route-based IPsec (phase1-interface and phase2-interface), dial-up hubs, and tunnel-interface IP addressing.
- iBGP fundamentals: neighbor groups, neighbor ranges, route reflection, and recursive next-hop resolution.
- FortiGate SD-WAN members, zones, performance SLA health checks, and service (steering) rules.
Lab and licensing requirements
- Three FortiGate instances (physical, VM, or EVE-NG/GNS3). One hub, two spokes minimum to prove a shortcut.
- FortiOS 7.2.x for the 1.0 track; FortiOS 7.4.x (7.4.4+ recommended) for the 2.0 track. ADVPN itself needs no add-on license; it is part of FortiOS. IPS/AV licensing only matters if you inspect the tunneled traffic.
- Two WAN underlays per site (for example ISP1 and ISP2, or Internet and MPLS) to make dual-overlay path selection meaningful.
Reference topology
| Device | Role | Underlays | Overlay tunnel IP | LAN / Loopback |
|---|---|---|---|---|
| FGT-HUB | Dial-up hub, BGP route reflector (1.0) | 203.0.113.1 (ISP1), 198.51.100.1 (ISP2) | 10.255.1.254, 10.255.2.254 | 172.16.255.254/32 (Lo) |
| FGT-SPOKE1 | Spoke | DHCP/Static ISP1 + ISP2 | 10.255.1.1, 10.255.2.1 | 10.1.0.0/24 |
| FGT-SPOKE2 | Spoke | DHCP/Static ISP1 + ISP2 | 10.255.1.2, 10.255.2.2 | 10.2.0.0/24 |
ASN 65000 is used throughout (iBGP). Overlay 1 rides ISP1, overlay 2 rides ISP2. Replace every <placeholder> with your real values.
4. Track A: Deploying ADVPN 1.0 (FortiOS 7.2)
Step A1: Hub IPsec (dial-up, one phase1 per overlay)
Action: Configure a dynamic phase1 per underlay. The three settings that make ADVPN 1.0 work on the hub are auto-discovery-sender enable, tunnel-search nexthop, and exchange-interface-ip enable.
config vpn ipsec phase1-interface
edit "HUB-OV1"
set type dynamic
set interface "port1"
set ike-version 2
set peertype any
set net-device disable
set tunnel-search nexthop
set add-route disable
set auto-discovery-sender enable
set exchange-interface-ip enable
set network-overlay enable
set network-id 1
set psksecret <strong_psk_ov1>
next
edit "HUB-OV2"
set type dynamic
set interface "port2"
set ike-version 2
set peertype any
set net-device disable
set tunnel-search nexthop
set add-route disable
set auto-discovery-sender enable
set exchange-interface-ip enable
set network-overlay enable
set network-id 2
set psksecret <strong_psk_ov2>
next
end
config vpn ipsec phase2-interface
edit "HUB-OV1-P2"
set phase1name "HUB-OV1"
set keepalive enable
set auto-negotiate enable
next
edit "HUB-OV2-P2"
set phase1name "HUB-OV2"
set keepalive enable
set auto-negotiate enable
next
end
config system interface
edit "HUB-OV1"
set ip 10.255.1.254 255.255.255.255
set remote-ip 10.255.1.253 255.255.255.0
next
edit "HUB-OV2"
set ip 10.255.2.254 255.255.255.255
set remote-ip 10.255.2.253 255.255.255.0
next
end
GUI verification: VPN > IPsec Tunnels shows both hub tunnels as dial-up parents. The shortcut children appear here only after spokes connect and traffic flows.
Step A2: Spoke IPsec (one phase1 per overlay, pointed at the hub)
Action: Mirror the hub, but set auto-discovery-receiver enable, net-device enable (so the spoke spins up dynamic shortcut interfaces), and point remote-gw at the hub underlay IP. Repeat with matching network-id on the second overlay.
config vpn ipsec phase1-interface
edit "S1-OV1"
set interface "port1"
set ike-version 2
set peertype any
set net-device enable
set auto-discovery-receiver enable
set exchange-interface-ip enable
set add-route disable
set remote-gw 203.0.113.1
set network-overlay enable
set network-id 1
set psksecret <strong_psk_ov1>
next
edit "S1-OV2"
set interface "port2"
set ike-version 2
set peertype any
set net-device enable
set auto-discovery-receiver enable
set exchange-interface-ip enable
set add-route disable
set remote-gw 198.51.100.1
set network-overlay enable
set network-id 2
set psksecret <strong_psk_ov2>
next
end
config system interface
edit "S1-OV1"
set ip 10.255.1.1 255.255.255.255
set remote-ip 10.255.1.254 255.255.255.0
next
edit "S1-OV2"
set ip 10.255.2.1 255.255.255.255
set remote-ip 10.255.2.254 255.255.255.0
next
end
Step A3: BGP with route reflection and add-path
Action (hub): Reflect routes, do not rewrite next-hop-self, and advertise additional paths so spokes learn one path per overlay.
config router bgp
set as 65000
set router-id 172.16.255.254
set ibgp-multipath enable
set additional-path enable
set graceful-restart enable
config neighbor-group
edit "SPOKES"
set remote-as 65000
set route-reflector-client enable
set additional-path send
set adv-additional-path 4
set soft-reconfiguration enable
next
end
config neighbor-range
edit 1
set prefix 10.255.0.0 255.255.0.0
set neighbor-group "SPOKES"
next
end
config network
edit 1
set prefix 172.16.255.254 255.255.255.255
next
end
end
Action (spoke): Peer to both hub tunnel IPs, request additional paths, and enable recursive next-hop so the tunnel-IP next hop resolves over the shortcut once it exists.
config router bgp
set as 65000
set router-id 10.1.0.1
set additional-path enable
set recursive-next-hop enable
config neighbor
edit "10.255.1.254"
set remote-as 65000
set additional-path receive
set soft-reconfiguration enable
next
edit "10.255.2.254"
set remote-as 65000
set additional-path receive
set soft-reconfiguration enable
next
end
config network
edit 1
set prefix 10.1.0.0 255.255.255.0
next
end
end
Step A4: SD-WAN steering and firewall policy
config system sdwan
set status enable
config zone
edit "OVERLAY"
next
end
config members
edit 1
set interface "S1-OV1"
set zone "OVERLAY"
next
edit 2
set interface "S1-OV2"
set zone "OVERLAY"
next
end
config health-check
edit "HUB-HC"
set server 10.255.1.254 10.255.2.254
set members 1 2
config sla
edit 1
set latency-threshold 200
set jitter-threshold 50
set packetloss-threshold 5
next
end
next
end
config service
edit 1
set name "SPOKE-TO-SPOKE"
set dst "RFC1918-BRANCHES"
set mode sla
config sla
edit "HUB-HC"
set id 1
next
end
set priority-members 1 2
next
end
end
config firewall policy
edit 100
set name "OVERLAY-to-OVERLAY"
set srcintf "OVERLAY"
set dstintf "OVERLAY"
set srcaddr "LOCAL-LAN" "RFC1918-BRANCHES"
set dstaddr "LOCAL-LAN" "RFC1918-BRANCHES"
set action accept
set schedule "always"
set service "ALL"
next
end
GUI verification: Network > SD-WAN > SD-WAN Rules shows SPOKE-TO-SPOKE bound to the OVERLAY members. Once traffic flows between LANs, VPN > IPsec Tunnels lists a new shortcut child tunnel.
5. Track B: Deploying ADVPN 2.0 (FortiOS 7.4)
Track B reuses the same tunnel-interface addressing and firewall policy. The deltas are: IKEv2 is mandatory, path selection moves to the spokes via advpn-select, overlays are tagged into transport groups, health is embedded so spokes learn each other, and BGP drops back to LAN reachability only. No route reflector or add-path scaffolding is required for steering.
Step B1: Phase1 deltas for 2.0
config vpn ipsec phase1-interface
edit "S1-OV1"
set ike-version 2
set auto-discovery-receiver enable
set auto-discovery-shortcuts independent
set exchange-interface-ip enable
set net-device enable
set idle-timeout enable
set idle-timeoutinterval 5
set network-overlay enable
set network-id 1
set remote-gw 203.0.113.1
set psksecret <strong_psk_ov1>
next
end
auto-discovery-sender enable and IKEv2, as in Track A. The 2.0 intelligence is on the spokes, so most 2.0-specific configuration lands in SD-WAN, not phase1.Step B2: SD-WAN edge discovery and transport groups
Action: Enable advpn-select at the SD-WAN root, assign a transport-group to each member (Internet overlays in group 1, MPLS in group 2, for example), and set embed-measured-health enable on the health check.
config system sdwan
set status enable
set advpn-select enable
set advpn-health-check "HUB-HC"
config zone
edit "OVERLAY"
next
end
config members
edit 1
set interface "S1-OV1"
set zone "OVERLAY"
set transport-group 1
next
edit 2
set interface "S1-OV2"
set zone "OVERLAY"
set transport-group 1
next
end
config health-check
edit "HUB-HC"
set server 10.255.1.254 10.255.2.254
set members 1 2
set embed-measured-health enable
config sla
edit 1
set latency-threshold 200
set jitter-threshold 50
set packetloss-threshold 5
next
end
next
end
config service
edit 1
set name "SPOKE-TO-SPOKE"
set dst "RFC1918-BRANCHES"
set mode sla
config sla
edit "HUB-HC"
set id 1
next
end
set priority-members 1 2
next
end
end
Step B3: Simplified BGP (reachability only)
config router bgp
set as 65000
set router-id 10.1.0.1
config neighbor
edit "10.255.1.254"
set remote-as 65000
set soft-reconfiguration enable
next
edit "10.255.2.254"
set remote-as 65000
set soft-reconfiguration enable
next
end
config network
edit 1
set prefix 10.1.0.0 255.255.255.0
next
end
end
6. Verification & Validation
Run these from a spoke after generating LAN-to-LAN traffic (for example a continuous ping from 10.1.0.10 to 10.2.0.10). Success means a shortcut tunnel appears, BGP resolves the remote LAN over that shortcut, and the session no longer transits the hub.
Confirm the parent tunnels and shortcuts
# Parent tunnels plus any dynamically built shortcut children get vpn ipsec tunnel summary diagnose vpn tunnel list # IKE gateway state (look for the shortcut gateway to the peer spoke) diagnose vpn ike gateway list
What success looks like: a new tunnel named after the parent with a shortcut suffix, phase1 and phase2 both up, and the remote gateway set to the peer spoke public IP (not the hub).
Confirm routing resolves over the shortcut
get router info bgp summary get router info routing-table bgp diagnose vpn ike routes list
What success looks like: the remote spoke LAN (10.2.0.0/24) is a BGP route whose next hop is the remote spoke tunnel IP (for example 10.255.1.2), and the routing table resolves that next hop through the shortcut interface, not the hub.
Confirm SD-WAN steering and health
diagnose sys sdwan health-check diagnose sys sdwan service # ADVPN 2.0 edge discovery and path state diagnose sys sdwan advpn
What success looks like: the health check reports the overlays in SLA, and the SPOKE-TO-SPOKE service shows the shortcut member as selected. On 2.0, the advpn output lists the discovered remote edge and the chosen transport.
7. Troubleshooting & Gotchas
Diagnose:
diagnose debug reset diagnose debug application ike -1 diagnose debug enable # generate spoke-to-spoke traffic, watch for shortcut-offer / shortcut-reply diagnose sys sdwan service
Resolve: The usual causes are a missing tunnel-search nexthop on the hub phase1, net-device set wrong (must be disable on the hub, enable on spokes), or the SD-WAN service not actually matching the destination so no traffic is steered onto the overlay. Confirm the service dst covers the remote branch subnets and that the OVERLAY zone holds both members.
Diagnose:
get router info routing-table 10.2.0.0 get router info bgp network 10.2.0.0/24 diagnose vpn ike routes list
Resolve (1.0): Almost always a BGP design problem. If the hub applied next-hop-self, the remote LAN next hop becomes the hub, recursive resolution never points at the shortcut, and the hub path wins. Remove next-hop-self on the reflected neighbor group, confirm additional-path is enabled on both sides so per-overlay paths exist, and confirm recursive-next-hop enable on the spoke. Resolve (2.0): confirm advpn-select enable and that both overlays share a transport-group; a mismatched transport group blocks the shortcut from being selected.
Diagnose:
diagnose vpn ike gateway list diagnose sys sdwan advpn get vpn ipsec tunnel details
Resolve: Verify every device in the mesh is IKEv2. ADVPN 2.0 will not negotiate shortcuts over IKEv1, and a single IKEv1 spoke poisons its own path. Confirm the traffic is IPv4 (2.0 does not yet handle IPv6 shortcuts). Check that exchange-interface-ip is enabled everywhere so spokes can learn peer tunnel IPs, and that network-id matches per overlay end to end. A shortcut wedged in a bad state clears with a targeted flush:
diagnose vpn ike gateway flush name <shortcut_gateway_name>
advpn-select. Because 2.0 steering lives on the spokes, a hub-first sequence buys you nothing on its own.Recent posts
-
-
DNS is one of those technologies that quietly underpins... Full Story
-
BGP issues on FortiGate firewalls usually trace back to... Full Story
-
Every time your laptop talks to your router, a... Full Story
-
If you've spent any time configuring NAT on a... Full Story
-
If you have spent any time configuring firewall policies... Full Story
-
High availability on FortiGate is one of those features... Full Story
-
If you've configured SD-WAN on a FortiGate, you've almost... Full Story
-
FortiLink is the management protocol that turns a FortiSwitch... Full Story
-
FortiSwitches are pretty rock solid from Mean Time Between... Full Story
-
This is a quicky tip. Have you ever gone... Full Story
-
DNS is one of those quiet pieces of internet... Full Story
-
This article is an updated version of the previous... Full Story
-
You will add ns2 as a secondary (slave) BIND9... Full Story
-
In the process of deploying my lab, I needed... Full Story
-
RFC 8805, used to be known as Self-Correcting IP... Full Story
-
Years back, I wrote an article about certificate pinning. ... Full Story
-
FortiGates have the ability to send alerts to Microsoft... Full Story
-
In this post, I am going to walk through... Full Story
-
Troubleshooting VoIP on a FortiGate can feel like trying... Full Story
-
Prior to FortiOS 7.0, there were three commands to... Full Story
-
In this post, I am going to go over... Full Story
-
What we are going to do: We are going... Full Story
-
Choosing between FGCP (FortiGate Clustering Protocol) and FGSP (FortiGate... Full Story
-
Creating a VLAN on macOS (The "Pro" Move) A... Full Story
-
This blog post explores the logic behind how macOS... Full Story
-
Pretty Fly for a Wi-Fi Tell My Wi-Fi Love... Full Story
-
Part of my daily gig is creating BoMs (Bill-of-Materials)... Full Story
-
ICMP introduces several security risks, but careful filtering, rate... Full Story
-
The command diag debug application dhcps -1 enables full... Full Story
-
In the world of FortiOS, execute tac report is... Full Story
-
LLDP; What is it The Link Layer Discovery Protocol... Full Story
-
What it actually does When you run diagnose fdsm... Full Story
-
Monkey Bites are bite-sized, high-impact security insights designed for... Full Story
-
I have run macOS in macOS with Parallels but... Full Story
-
Don't be confused with my other FortiNAC posts where... Full Story
-
This is the third session in a multi-part article... Full Story
-
Today I was configuring key-based authentication on a FortiGate... Full Story
-
Netcat, often called the "Swiss Army knife" of networking,... Full Story
-
At its core, IEEE 802.1X is a network layer... Full Story
-
In case you did not see the previous FortiNAC... Full Story
-
This is our 5th session where we are going... Full Story
-
Now that we have Wireshark installed and somewhat configured,... Full Story
-
The Philosophy of Packet Analysis Troubleshooting isn't about looking... Full Story
-
1. Executive Summary Objective: This guide walks you through... Full Story
-
Note: Version target: FortiOS 7.6.x on an NP6/NP7-class FortiGate.... Full Story
-
1. Executive Summary Objective: This guide takes you from... Full Story