Wireless Roaming – Intra & Inter-Controller
1. What Is Wireless Roaming?
Wireless roaming is the process by which a client device (laptop, phone, tablet) moves from the coverage area of one Access Point (AP) to another without losing its network connection. From the client's perspective, the transition should be seamless — the IP address is maintained, active sessions (VoIP calls, VPN tunnels, video streams) remain uninterrupted, and re-authentication latency is minimised.
In a centralised CAPWAP architecture (where all APs are managed by a Wireless LAN Controller — WLC), the WLC plays a critical role in roaming. It maintains the client's session state, coordinates the handoff between APs, and in the case of inter-controller roaming, communicates with peer WLCs via a mobility tunnel to preserve the client's context.
| Roaming Type | APs Involved | WLCs Involved | IP Address | Complexity |
|---|---|---|---|---|
| Intra-Controller (L2) | Different APs | Same WLC | Retained | Lowest |
| Inter-Controller L2 | Different APs | Different WLCs, same subnet | Retained | Medium |
| Inter-Controller L3 | Different APs | Different WLCs, different subnets | Retained via tunnel | Highest |
Related pages: Wi-Fi Overview | Access Points & WLC | Lightweight vs Autonomous APs | 802.11 Standards | Frequency & Channels | Wi-Fi Security | 802.1X Authentication | AAA Overview | 802.1X Authentication Lab | AAA RADIUS Configuration Lab
2. The Basic Roaming Process
Whether roaming is intra-controller or inter-controller, the client follows a similar sequence at the 802.11 layer. The key difference is what happens behind the scenes on the infrastructure side.
2.1 Client-Side Roaming Decision
3. Intra-Controller Roaming
Intra-controller roaming occurs when a client moves from one AP to another AP that is managed by the same WLC. This is the simplest roaming scenario because the WLC already has all context for the client and no communication with another controller is required.
Intra-controller roaming is fast and transparent — the WLC handles the entire handoff internally. With fast roaming techniques (OKC or 802.11r), the total transition time is typically under 50 ms, which is imperceptible to VoIP calls and video streams.
4. Inter-Controller Roaming
Inter-controller roaming occurs when a client moves from an AP managed by one WLC to an AP managed by a different WLC. This requires the two WLCs to communicate with each other via a mobility tunnel to transfer the client's session context. The two WLCs must be in the same mobility group.
4.1 Mobility Groups
A mobility group is a set of WLCs that are configured to trust each other for roaming. When a client roams between WLCs in the same mobility group, the controllers exchange the client's security credentials, IP address, VLAN, and QoS policy via a mobility tunnel (EtherIP over UDP 16666, or CAPWAP).
4.2 Layer 2 vs Layer 3 Inter-Controller Roaming
Whether inter-controller roaming is Layer 2 or Layer 3 depends on whether the two WLCs serve the client on the same or different IP subnets.
| Aspect | Layer 2 Inter-Controller Roaming | Layer 3 Inter-Controller Roaming |
|---|---|---|
| Subnet | Both WLCs serve the SSID on the same subnet (same VLAN) | WLC-1 and WLC-2 serve the SSID on different subnets |
| IP address change | No — client keeps its IP address; no DHCP renewal needed | No — client keeps its original IP via a mobility tunnel (asymmetric routing) |
| Mechanism | Context transfer via mobility tunnel; client database entry moved from WLC-1 to WLC-2 | WLC-1 becomes the Anchor; WLC-2 becomes the Foreign; client traffic tunnelled back to Anchor for routing |
| Anchor/Foreign concept | Not required — client entry fully moves to WLC-2 | Required — Anchor retains the client's original IP context; Foreign handles the local AP association |
| Traffic path | Client ↔ AP-2 ↔ WLC-2 ↔ Network (direct) | Client ↔ AP-2 ↔ WLC-2 (Foreign) ↔ Tunnel ↔ WLC-1 (Anchor) ↔ Network |
5. Layer 3 Roaming – Anchor and Foreign WLC
Layer 3 roaming introduces the Anchor/Foreign concept. When a client roams from WLC-1's subnet to WLC-2's different subnet, the client cannot simply be given a new IP address (that would break active sessions). Instead, the original WLC (now the Anchor) retains the client's IP address and subnet binding, while the new WLC (the Foreign) tunnels all client traffic back to the Anchor.
5.1 Static (Explicit) Mobility Anchors
A related but separate concept is the static mobility anchor (also called a guest anchor). In this design, a WLC is purposely designated as the anchor for a specific SSID (e.g., a guest WLAN) regardless of where the client associates. All traffic for that SSID is tunnelled to the anchor WLC — typically placed in a DMZ — ensuring guest traffic never touches the internal network directly.
6. Fast Roaming – OKC and 802.11r
Standard roaming with 802.1X/EAP authentication involves a full four-way handshake and potentially a complete EAP exchange each time the client roams. This can take 200–500 ms — unacceptable for VoIP calls (which tolerate only ~50 ms of interruption). Fast roaming mechanisms cache security credentials so the full EAP exchange can be skipped on subsequent associations.
6.1 Standard Roaming Authentication Overhead
6.2 OKC – Opportunistic Key Caching
OKC (Opportunistic Key Caching), also called Proactive Key Caching (PKC), allows a client that has already authenticated with one AP to reuse the derived Pairwise Master Key (PMK) when it roams to a new AP managed by the same WLC. The WLC caches and distributes the PMK to all APs in the mobility group, so when the client roams the full EAP exchange is skipped.
6.3 802.11r – Fast BSS Transition (FT)
IEEE 802.11r (Fast BSS Transition) is a Wi-Fi standard that redesigns the association handshake specifically for fast roaming. Rather than a separate EAP exchange on each new AP, 802.11r pre-distributes the security keys and allows the client to negotiate the new key material within the reassociation frames themselves — eliminating the EAP round trip entirely.
6.4 OKC vs 802.11r Comparison
| Feature | OKC (Opportunistic Key Caching) | 802.11r (Fast BSS Transition) |
|---|---|---|
| Standard | Not formally standardised — vendor implementation (Cisco, Broadcom) | IEEE 802.11r — ratified standard (2008), part of 802.11-2012 |
| Key mechanism | Caches and re-uses PMK; skips full EAP on roam | Hierarchical key structure (PMK-R0/R1); FT key negotiated inline |
| Client support | Widely supported by modern clients; no explicit 802.11r support needed | Requires both the client and AP to explicitly support 802.11r |
| Compatibility | Backward compatible — non-OKC clients fall back to full EAP | Non-802.11r clients must use a separate (non-FT) SSID or are excluded |
| Roaming latency | ~50–100 ms (eliminates EAP exchange, still requires 4-way handshake) | ~30–50 ms (FT exchange inline with association — fastest option) |
| Pre-authentication | WLC pushes PMK to APs proactively | Over-the-DS FT allows pre-authentication while still associated to old AP |
| Cisco WLC config | Enabled per-WLAN: WLAN → Security → Layer 2 → Enable OKC | Enabled per-WLAN: WLAN → Advanced → 802.11r Fast Transition |
| Use case | Default recommendation for most WPA2-Enterprise deployments | VoIP-heavy environments; voice-grade Wi-Fi with certified handsets |
7. Roaming Topology Summary – All Scenarios
8. Common Roaming Problems
8.1 Sticky Client Problem
A sticky client (also called a non-roaming client) refuses to roam to a better AP even when its current signal is very weak. Because roaming is client-driven, the infrastructure cannot force it. Sticky clients cause poor performance and can keep a distant AP's radio busy with low-data-rate retransmissions.
8.2 Other Common Roaming Issues
| Problem | Cause | Fix |
|---|---|---|
| Client loses IP on roam | Layer 3 roam occurring but Anchor/Foreign not configured; client gets DHCP on new subnet and drops existing sessions | Ensure both WLCs are in the same mobility group; verify L3 roaming with Anchor/Foreign is active; check mobility tunnel status |
| Roaming takes too long (VoIP drops) | Full EAP re-authentication on each roam; OKC or 802.11r not enabled | Enable OKC per-WLAN on Cisco WLC; or enable 802.11r for VoIP-specific SSIDs; confirm client device supports the fast roaming mechanism |
| Client fails to roam at all | Coverage gap between APs; client has no AP with acceptable signal; or client is misconfigured for the SSID security type | Perform wireless site survey; adjust AP placement and transmit power; use WLC RF profiles to optimise coverage |
| Inter-controller roam fails | Mobility group name mismatch; WLC not in peer's mobility list; firewall blocking UDP 16666 between WLCs | Verify mobility group name matches on all WLCs; add peer WLC IP and MAC to mobility list; open UDP 16666 between WLC management IPs |
| 802.11r causing client failures | Client device does not support 802.11r but connects to an FT-only SSID | Enable both FT and non-FT on the same SSID (Cisco WLC supports mixed mode); or create separate SSIDs — one with 802.11r, one without |
9. Verification Commands
| Command / Location | What It Shows |
|---|---|
WLC GUI → Monitor → Clients |
All associated clients — current AP, RSSI, SNR, data rates, roaming statistics per client |
WLC GUI → Controller → Mobility → Mobility Groups |
Configured mobility group name, peer WLCs, and tunnel status (UP/DOWN) between controllers |
show mobility summary (WLC CLI) |
Mobility group membership, peer WLC IPs/MACs, and tunnel state |
show client detail <mac> (WLC CLI) |
Full client details — IP address, AP, VLAN, roaming history, security association type (OKC/802.11r/full EAP), anchor/foreign status |
show client roam-history <mac> (WLC CLI) |
Full roaming event history for a specific client — timestamps, APs roamed from/to, roaming latency |
debug client <mac> (WLC CLI) |
Real-time 802.11 association/reassociation events, EAP exchange, mobility tunnel messages for a specific client — verbose, lab use only |
show wlan summary (WLC CLI) |
All configured WLANs with their security, OKC/802.11r settings, and associated client counts |
show ap summary (WLC CLI) |
All joined APs — name, MAC, IP, channel, clients associated, and operational state |
10. Key Terms Quick Reference
| Term | Definition |
|---|---|
| Roaming | The process of a wireless client moving from one AP to another while maintaining its network session, IP address, and active connections |
| Intra-Controller Roaming | Roaming between APs managed by the same WLC; the simplest and fastest roaming type — no external communication required |
| Inter-Controller Roaming | Roaming between APs managed by different WLCs; requires both WLCs to be in the same mobility group and communicate via a mobility tunnel |
| Layer 2 Roaming | Inter-controller roam where both WLCs serve the client on the same subnet; client IP is retained and the client database entry is transferred to the new WLC |
| Layer 3 Roaming | Inter-controller roam where WLCs serve the client on different subnets; Anchor/Foreign tunnelling preserves the client's original IP address |
| Mobility Group | A set of WLCs configured to trust each other for roaming; they exchange client context via mobility tunnels; mobility group name must match on all members |
| Mobility Tunnel | A logical tunnel between WLCs (EtherIP over UDP 16666) used to transfer client context during inter-controller roaming |
| Anchor WLC | In Layer 3 roaming, the original WLC that retains the client's IP address binding; all client traffic is tunnelled to the Anchor for routing to the network |
| Foreign WLC | In Layer 3 roaming, the new WLC where the client is currently associated; it tunnels the client's traffic to the Anchor WLC |
| Static Anchor (Guest Anchor) | A WLC designated as the permanent anchor for a specific SSID (e.g., guest); all client traffic is tunnelled to this WLC regardless of physical location — used to isolate guest traffic in a DMZ |
| OKC / PKC | Opportunistic Key Caching / Proactive Key Caching — fast roaming mechanism that caches the PMK on the WLC and distributes it to APs, allowing clients to skip the full EAP exchange on subsequent associations |
| 802.11r (FT) | IEEE Fast BSS Transition — a standard that embeds key negotiation within the reassociation frames using a hierarchical key structure (PMK-R0/R1), achieving the lowest roaming latency |
| PMK | Pairwise Master Key — the cryptographic key derived from a successful EAP exchange; cached by OKC so it does not need to be re-derived on every roam |
| Sticky Client | A client that refuses to roam to a better AP despite having a poor signal on its current AP; caused by the client-driven roaming model where the infrastructure cannot force the transition |
| CAPWAP | Control and Provisioning of Wireless Access Points — the tunnel protocol between lightweight APs and the WLC that carries both control and data traffic in a centralised WLAN architecture |
11. Wireless Roaming – Practice Quiz
Related Topics & Step-by-Step Tutorials
Continue your wireless networking studies:
- Wi-Fi Overview – 802.11 Standards & Architecture — Wi-Fi fundamentals — SSID, BSS, ESS, channels
- IEEE 802.11 Wi-Fi Standards (a/b/g/n/ac/ax) — 802.11 a/b/g/n/ac/ax — speeds, bands, features
- RF Fundamentals – Antennas, Channels & Interference — RF power, gain, EIRP, antenna types
- Wi-Fi Frequency Bands and Channel Planning — 2.4 GHz vs 5 GHz channels and overlap
- Wi-Fi Security – WPA2, WPA3 & EAP — WEP, WPA, WPA2, WPA3 — 802.1X and PSK
- Wireless Roaming – Intra & Inter-Controller — roaming, fast BSS transition, sticky client
- Access Points (APs) & Wireless LAN Controllers (WLCs) — lightweight APs and WLC architecture
- Lightweight vs Autonomous Access Points — CAPWAP — lightweight vs autonomous APs
- Wireless LAN Controller (WLC) – Overview — WLC configuration — SSIDs, VLANs, interfaces
- Configuring a Wireless LAN Controller (WLC) — Gettin… (Step-by-Step)
- Creating SSIDs and Mapping to VLANs on a Cisco WLC (Step-by-Step)
- Autonomous Access Point Configuration via CLI (Step-by-Step)
- FlexConnect AP Configuration (Step-by-Step)
- Guest WLAN with Web Authentication (WebAuth) (Step-by-Step)
- Wireless RF Channel & Power Planning (Step-by-Step)