Fast Roaming (802.11r/k/v)
Fast Roaming (802.11r/k/v)
Section titled “Fast Roaming (802.11r/k/v)”Fast Roaming enables seamless client transitions between access points without authentication re-negotiation, critical for voice, video, and real-time applications.
Overview
Section titled “Overview”RouterOS supports three fast roaming protocols:
| Protocol | Name | Purpose |
|---|---|---|
| 802.11r | Fast BSS Transition | Pre-authentication for fast handoff |
| 802.11k | Radio Resource Measurement | Neighbor reports for informed roaming |
| 802.11v | BSS Transition Management | AP-initiated roaming suggestions |
How Roaming Works
Section titled “How Roaming Works”Without fast roaming:
- Client detects signal degradation
- Client scans for alternative APs
- Client authenticates with new AP (full 4-way handshake)
- Client reassociates and obtains IP
- Result: Noticeable delay, dropped calls, video stalls
With 802.11r:
- Client performs initial handshake with Mobility Domain
- APs share security keys via CAPsMAN
- Client gets “pre-authenticated” for neighboring APs
- Roaming happens in milliseconds without full re-authentication
Requirements
Section titled “Requirements”Critical: Single Controller
Section titled “Critical: Single Controller”All APs must be managed by the same RouterOS instance running CAPsMAN.
For 802.11r to work:
- The mobility domain must be shared between APs
- Key exchange happens between APs via CAPsMAN
- Different controllers cannot share key material
What works:
- Multiple APs managed by single CAPsMAN (all on same RouterOS)
- All APs on same Controller using WifiWave2
What doesn’t work:
- APs on different RouterOS instances
- Mixed CAPsMAN controllers
- Autonomous APs not managed centrally
Security Requirements
Section titled “Security Requirements”- WPA2 only (recommended): WPA3 causes roaming issues on many client devices
- Same authentication: All APs must use identical security profile
- PMF recommended: Protected Management Frames for stability
Package Support
Section titled “Package Support”| Feature | wifi package (v7.13+) | wireless package (legacy) |
|---|---|---|
| 802.11r | Yes | Yes (limited) |
| 802.11k | Yes | No |
| 802.11v | Yes | No |
| CAPsMAN integration | Yes | Yes |
The wifi package (WifiWave2) is recommended for RouterOS 7.13+ and supports the full 802.11r/k/v stack.
Configuration
Section titled “Configuration”Enable 802.11r (wifi package)
Section titled “Enable 802.11r (wifi package)”/interface wifi securityadd authentication-types=wpa2-psk \ encryption=ccmp \ ft=yes \ ft-over-ds=yes \ ft-mobility-domain=0x1234 \ name=fast-roam \ passphrase=MyPasswordKey properties:
| Property | Description | Default |
|---|---|---|
ft | Enable 802.11r Fast BSS Transition | no |
ft-over-ds | Enable over-the-DS (recommended) | no |
ft-mobility-domain | 16-bit identifier (hex)—must match across all APs | 0xADC4 |
ft-nas-identifier | PMK-R0 key holder ID | Interface MAC |
ft-r0-key-lifetime | Lifetime of PMK-R0 key | 7 days |
ft-preserve-vlanid | Preserve client VLAN after roaming | yes |
Enable 802.11k/v Steering
Section titled “Enable 802.11k/v Steering”/interface wifi configurationadd name=my-config \ ssid=MyNetwork \ steering.neighbor-group=my-neighbors \ steering.rrm=yes \ steering.wnm=yes \ steering.transition-threshold=-80 \ steering.transition-threshold-time=10s \ steering.transition-request-period=30s \ steering.transition-request-count=3 \ steering.transition-time=unlimited802.11k (RRM) properties:
| Property | Description | Default |
|---|---|---|
rrm | Enable 802.11k neighbour reports | yes |
802.11v (Steering) properties:
| Property | Description | Default |
|---|---|---|
wnm | Enable 802.11v BSS transition requests | yes |
neighbor-group | Define static neighbor group | (dynamic) |
transition-threshold | RSSI threshold (dBm) for marking candidate | -80 |
transition-threshold-time | Time below threshold before marking candidate | 10s |
transition-request-period | Interval between transition requests | 30s |
transition-request-count | Number of requests to send | 3 |
transition-time | Time before forcing disconnect | unlimited |
Full CAPsMAN Configuration
Section titled “Full CAPsMAN Configuration”# CAPsMAN Controller/interface wifi capsmanset enabled=yes interfaces=LANBridge
# Security with 802.11r/interface wifi securityadd authentication-types=wpa2-psk \ encryption=ccmp \ ft=yes \ ft-over-ds=yes \ ft-mobility-domain=0x1 \ name=fast-roam \ passphrase=MyPass123
# Channel configurations/interface wifi channeladd frequency=2412,2437,2462 name=2G-channels width=20mhzadd frequency=5180,5260,5500 name=5G-channels width=20/40/80mhz skip-dfs-channels=all
# Configuration with 802.11k/v enabled/interface wifi configurationadd channel=2G-channels country=US datapath.bridge=LANBridge \ manager=capsman name=2G-config security=fast-roam ssid=MyNetwork-2G \ steering.rrm=yes steering.wnm=yesadd channel=5G-channels country=US datapath.bridge=LANBridge \ manager=capsman name=5G-config security=fast-roam ssid=MyNetwork-5G \ steering.rrm=yes steering.wnm=yes
# Provisioning rules/interface wifi provisioningadd action=create-enabled master-configuration=2G-config \ supported-bands=2ghz-n,2ghz-ac,2ghz-axadd action=create-enabled master-configuration=5G-config \ supported-bands=5ghz-n,5ghz-ac,5ghz-axLegacy wireless package (RouterOS 6.x)
Section titled “Legacy wireless package (RouterOS 6.x)”The legacy wireless package has limited 802.11r support:
/interface wireless security-profilesset default ft=yes ft-mode=ds \ ft-mobility-domain=1234Limitations:
- Only 802.11r (no 802.11k/v)
- Only WPA2-PSK or WPA2-EAP
- No support for WPA3
Client Compatibility
Section titled “Client Compatibility”Working Well
Section titled “Working Well”| Device Type | 802.11r | 802.11k | 802.11v |
|---|---|---|---|
| Google Pixel (4A, 6A, 7A) | Good | Good | Good |
| Linux laptops (ThinkPad) | Excellent | Good | Good |
| Windows laptops (Intel WiFi) | Good | Good | Varies |
| iOS devices | Good | Good | Varies |
Known Issues
Section titled “Known Issues”WPA3 Roaming Problems:
Many Android devices have poor roaming support with WPA3:
- Many Android devices (Xiaomi, Samsung, Huawei) don’t roam well with WPA3
- Android 13 particularly problematic
- Some iOS versions require manual reconnection
- Linux generally works fine
Recommendation: Use WPA2-only for reliable roaming:
/interface wifi securityset authentication-types=wpa2-psk# Remove wpa3-pskClient Behavior
Section titled “Client Behavior”“fastroaming stuff has very random implementation on clients side”
Client manufacturers implement roaming differently:
- Some devices ignore 802.11v requests entirely
- Roaming thresholds vary by device
- Some devices roam proactively, others wait until signal is very weak
Troubleshooting
Section titled “Troubleshooting”Clients Not Roaming
Section titled “Clients Not Roaming”- Verify 802.11r enabled in security profile
- Ensure all APs use same mobility domain
- Check client device supports 802.11r
- Try WPA2-only if having WPA3 issues
- Verify overlapping coverage exists
- Check logs for roaming events
Remove Aggressive Signal Rules
Section titled “Remove Aggressive Signal Rules”Do not kick off clients with weak signal, remove such wifiwave2 access-list rule if you have one
# Remove any aggressive signal-based rejection/interface wifi access-list remove [find action=reject]
# Only reject very weak signals (below -90 dBm)/interface wifi access-list add action=accept signal-range=-90..0
# Or allow all - let client decide/interface wifi access-list add action=accept signal-range=-120..0Check Logs
Section titled “Check Logs”Successful roaming:
<mac>@AP1 roamed to <mac>@AP2, signal strength -66Without fast roaming:
<mac>@AP1 disconnected, connection lost, signal strength -92<mac>@AP2 connected, signal strength -75Enable Debug Logging
Section titled “Enable Debug Logging”/system logging add topics=wifi,debugMonitor Registration
Section titled “Monitor Registration”/interface wifi registration-table print/interface wifi steering statusRouterOS Version Compatibility
Section titled “RouterOS Version Compatibility”| RouterOS | Package | 802.11r | 802.11k | 802.11v |
|---|---|---|---|---|
| 6.x | wireless | Yes (limited) | No | No |
| 7.0-7.12 | wifi | Yes | Yes (solicited) | Yes (solicited) |
| 7.13+ | wifi | Yes | Yes | Yes |
| 7.21beta2+ | wifi | Yes | Yes | Yes (unsolicited) |
Best Practices
Section titled “Best Practices”- Use single CAPsMAN: Manage all APs from one RouterOS instance
- WPA2 for roaming: Disable WPA3 until client support improves
- Same security profile: Ensure identical settings across all APs
- Remove weak-signal kick: Don’t kick clients with weak signal
- Overlap coverage: Ensure APs have overlapping coverage areas
- Enable all three protocols: Use 802.11r/k/v together for best results
Related Documentation
Section titled “Related Documentation”- WiFi Guide - General WiFi configuration
- Security Profiles - Security configuration
- CAPsMAN - Centralized AP management
- WiFi Index - All WiFi documentation