Skip to content

Fast Roaming (802.11r/k/v)

Fast roaming enables wireless clients to seamlessly switch between access points without noticeable delay or re-authentication. This guide covers MikroTik’s implementation of the 802.11r (Fast BSS Transition), 802.11k (Radio Resource Measurement), and 802.11v (BSS Transition Management) standards.

Fast roaming allows clients to:

  • Authenticate with a new AP before losing connection to the current AP
  • Maintain active connections (VoIP, video calls) during AP transitions
  • Automatically select the best AP based on signal strength and load
StandardPurposeBenefit
802.11rFast BSS TransitionPre-authentication reduces roaming delay
802.11kRadio Resource ManagementAP-assisted roaming decisions
802.11vBSS Transition ManagementNetwork-assisted AP selection

Recommendation: Enable all three standards together for optimal roaming performance.

  • Controller: Any RouterOS device running 7.13+ with CAPsMAN
  • CAPs: Devices must support 802.11r/k/v (most WiFi package devices)
  • RouterOS Version: 7.13+ recommended, minimum 7.4+

ALL APs must be managed by the SAME RouterOS instance. Roaming does not work across different controllers.

✓ Correct: All APs managed by single CAPsMAN router
✗ Wrong: Multiple independent APs or different controllers

CRITICAL: Use WPA2 only for fast roaming. WPA3 is incompatible with 802.11r fast roaming on most devices.

# Create security profile - WPA2 ONLY (no WPA3!)
/interface wifi security add name=Roaming-Security \
authentication-types=wpa2-psk \
encryption=aes-ccm \
group-encryption=aes-ccm \
passphrase=YourSecurePass!
# Disable PMKID caching issues
/interface wifi security set [find name=Roaming-Security] disable-pmkid=no
# Create channel configuration
/interface wifi channel add name=5GHz-Roaming \
band=5ghz-a/n/ac/ax \
frequency=5180,5200,5220,5240 \
channel-width=80mhz
# Create datapath
/interface wifi datapath add name=Roaming-DP \
bridge=bridge-local \
local-forwarding=yes
# Create configuration with roaming enabled
/interface wifi configuration add name=Roaming-AP \
ssid=Office-WiFi \
security=Roaming-Security \
channel=5GHz-Roaming \
datapath=Roaming-DP \
country=UnitedStates \
fast-roaming=yes \
rrm=yes \
bss-transition=yes

When using CAPsMAN:

# On CAPsMAN controller
# Create channel
/capsman channel add name=5GHz band=5ghz-a/n/ac/ax frequency=5180
# Create security - WPA2 ONLY
/capsman security add name=Roaming-Sec \
authentication-types=wpa2-psk \
encryption=aes-ccm \
passphrase=YourPass!
# Create configuration with roaming
/capsman configuration add name=Roaming-AP \
channel=5GHz \
security=Roaming-Sec \
ssid=Office-WiFi \
country=UnitedStates \
# Enable fast roaming
ft=yes \
rrm=yes \
bss-transition=yes
# Provisioning rule
/capsman provisioning add \
action=create-dynamic-enabled \
hw-supported-modes=ac,ax \
master-configuration=Roaming-AP

802.11r allows clients to perform the 4-way handshake with a new AP before disconnecting from the current AP:

  1. Initial Authentication - Client authenticates with first AP
  2. FT Authentication - Client gets mobility domain info
  3. Pre-authentication - Client pre-authenticates with target AP
  4. Fast Transition - Client switches with minimal delay
ModeDescription
over-the-airClient communicates directly with target AP
over-the-dsClient communicates via current AP (more reliable)
# Set FT mode
/interface wifi configuration set [find] ft-mode=over-the-ds

802.11k allows APs to:

  • Measure channel conditions
  • Report neighbor APs to clients
  • Recommend optimal AP for roaming
# Enable 802.11k
/interface wifi configuration set [find] rrm=yes
OptionDescription
rrm=yesEnable Radio Resource Management
neighbor-list=yesAdvertise neighbor APs to clients

802.11v allows the network to:

  • Request clients to roam to better APs
  • Balance load across APs
  • Direct clients away from congested APs
# Enable 802.11v
/interface wifi configuration set [find] bss-transition=yes
OptionDescription
bss-transition=yesEnable network-directed roaming
bss-transition-legacy=yesSupport older clients
# Enable CAPsMAN manager (even for local APs)
/capsman manager set enabled=yes
# Create security - MUST be WPA2 for 802.11r
/interface wifi security add name=corp-sec \
authentication-types=wpa2-psk \
encryption=aes-ccm \
passphrase=SecurePassword!
# Create 2.4GHz channel
/interface wifi channel add name=2.4ghz band=2ghz-b/g/n/ax frequency=2437 channel-width=20mhz
# Create 5GHz channel
/interface wifi channel add name=5ghz band=5ghz-a/n/ac/ax frequency=5180,5200 channel-width=80mhz
# Create datapath
/interface wifi datapath add name=corp-dp bridge=bridge-local
# Create 2.4GHz configuration
/interface wifi configuration add name=2.4ghz-ap \
ssid=Corporate \
security=corp-sec \
channel=2.4ghz \
datapath=corp-dp \
country=UnitedStates \
fast-roaming=yes \
rrm=yes \
bss-transition=yes
# Create 5GHz configuration
/interface wifi configuration add name=5ghz-ap \
ssid=Corporate \
security=corp-sec \
channel=5ghz \
datapath=corp-dp \
country=UnitedStates \
fast-roaming=yes \
rrm=yes \
bss-transition=yes
# Apply to interfaces (assuming wifi1 and wifi2)
/interface wifi set [find name="wifi1"] configuration=2.4ghz-ap disabled=no
/interface wifi set [find name="wifi2"] configuration=5ghz-ap disabled=no
# On CAPsMAN Controller
# Enable manager
/capsman manager set enabled=yes
# Security - WPA2 only!
/capsman security add name=fast-roam \
authentication-types=wpa2-psk \
encryption=aes-ccm \
passphrase=YourPass!
# Channel configuration
/capsman channel add name=5ghz band=5ghz-a/n/ac/ax frequency=5180
# Datapath (local forwarding recommended)
/capsman datapath add name=corp-dp bridge=bridge-local local-forwarding=yes
# Configuration with roaming
/capsman configuration add name=fast-roam-ap \
channel=5ghz \
security=fast-roam \
datapath=corp-dp \
ssid=Office-Net \
country=UnitedStates \
ft=yes \
rrm=yes \
bss-transition=yes
# Provisioning
/capsman provisioning add \
action=create-dynamic-enabled \
hw-supported-modes=ac,ax \
master-configuration=fast-roam-ap
# On each CAP
# Point CAP to controller
/interface wifi cap set enabled=yes \
capsman-addresses=10.0.0.1 \
discovery-interface=bridge1
DeviceNotes
Google Pixel (all models)Excellent roaming support
Apple iPhone/iPadWorks with WPA2
Apple MacBookGood roaming performance
Windows 10/11Works with WPA2
Samsung Galaxy (recent)Generally good
DeviceIssueWorkaround
Xiaomi phonesPoor roaming with WPA2Use WPA3 (but slower roaming)
Huawei phonesRoaming issues reportedLatest firmware helps
Some Android tabletsMay get stuck on weak APDisable band steering
WPA3 devices802.11r often brokenUse WPA2/WPA3 mixed mode

Avoid WPA3 when fast roaming is required.

Many devices do not properly implement 802.11r with WPA3:

  • Some Android devices fail to roam
  • Delayed roaming causes connection drops
  • Security re-keying interrupts traffic

If you must use WPA3, accept that roaming performance will be degraded.

# View connected clients
/interface wifi registration-table print
# Monitor a specific client
/interface wifi registration-table monitor [find mac-address=XX:XX:XX:XX:XX:XX
# Enable debug logging
/system logging add topics=wireless,debug
# Watch for roaming events
/log print where "~*roam*"
# Check roaming settings on interface
/interface wifi configuration print detail

Look for:

  • fast-roaming: true
  • rrm: true
  • bss-transition: true
  1. Verify WPA2 is used - WPA3 breaks 802.11r on most devices

  2. Check all APs on same controller - Roaming requires single controller

  3. Verify client support - Some devices don’t support 802.11r

  4. Check signal overlap - APs should have 20-30% coverage overlap

  5. Enable neighbor list:

/interface wifi configuration set [find] neighbor-list=yes
  1. Reduce AP spacing - Ensure good overlap coverage

  2. Lower tx-power - Force clients to roam earlier:

/interface wifi set [find] tx-power=17
  1. Check for interference - Strong interference can cause failed roaming

  2. Update client firmware - Device updates often fix roaming issues

  1. Enable 802.11v BSS Transition:
/interface wifi configuration set [find] bss-transition=yes
  1. Configure minimum RSSI:
/interface wifi configuration set [find] roaming-allow=yes
  1. Enable band steering to push to 5 GHz
  1. Check for PMKID issues:
/interface wifi security set [find] disable-pmkid=yes
  1. Update RouterOS - Older versions have roaming bugs

  2. Check client power settings - Some phones reduce WiFi power when screen off

# Adjust configuration for better roaming
/interface wifi configuration set [find] \
# Aggressive roaming
disconnect-timeout=5s \
# Quick handoff
roaming-allow=yes
# Enable client load balancing via 802.11v
/interface wifi configuration set [find] \
bss-transition=yes \
bss-transition-legacy=yes
# Set max clients per radio
/capsman interface set numbers=0 \
max-station-count=50
  1. Use WPA2 only for fast roaming - WPA3 breaks 802.11r on most devices

  2. Single controller - All roaming APs must be on same RouterOS instance

  3. Coverage overlap - 20-30% overlap between APs for seamless handoff

  4. Enable all three standards - Use 802.11r, 802.11k, and 802.11v together

  5. Consistent SSID - Same SSID across all APs, no password changes

  6. Local forwarding - Use local-forwarding=yes for lower latency

  7. Update firmware - Keep RouterOS and client devices updated

  8. Test with critical devices - Verify roaming works with your specific devices