Community discussions

MikroTik App
 
dnnix
just joined
Topic Author
Posts: 21
Joined: Fri Aug 18, 2023 3:12 pm
Location: Washington, DC
Contact:

Mesh vs. Separate APs (yet another handoff discussion)

Fri Jun 07, 2024 7:57 pm

I have two wired APs, ap1 and ap2, connected to a router and configured on the same SSID with different channels. Performance is great, and I've optimized power to ensure coverage is appropriate. Handoff still sucks. When you travel from one to the other, we're talking 1-3 seconds of chaos in the era of Teams calls.

I was way happier with the handoff on my previous Google Wifi mesh, and the performance was sufficient. Those endpoints weren't wired, though, hence the performance hit. Can I run a mesh with wired endpoints like I have and thus get both the performance of a low latency direct backhaul, and the zero handoff of a mesh?

Is there some other option?
 
neki
Member Candidate
Member Candidate
Posts: 250
Joined: Thu Sep 07, 2023 10:20 am

Re: Mesh vs. Separate APs (yet another handoff discussion)  [SOLVED]

Sat Jun 08, 2024 1:06 am

You are looking for 802.11r/k/v, for that you need to set up fast transition and steering.

Properties related to 802.11r fast BSS transition only apply to interfaces in AP mode. WiFi interfaces in station mode do not support 802.11r.

For a client device to successfully roam between 2 APs, the APs need to be managed by the same instance of RouterOS. For information on how to centrally manage multiple APs, see CAPsMAN
 
erlinden
Forum Guru
Forum Guru
Posts: 2732
Joined: Wed Jun 12, 2013 1:59 pm
Location: Netherlands

Re: Mesh vs. Separate APs (yet another handoff discussion)

Sat Jun 08, 2024 9:14 am

What hardware are you using? To get the 802.11 k/r/v, you need to run the wifi wave2 drivers. And use CAPsMAN.
 
dnnix
just joined
Topic Author
Posts: 21
Joined: Fri Aug 18, 2023 3:12 pm
Location: Washington, DC
Contact:

Re: Mesh vs. Separate APs (yet another handoff discussion)

Mon Jun 10, 2024 4:07 pm

Interesting, I didn't know about this! I'm using CAP AX (for the APs) and I have a CCR2004 for my network core router. I'll read up on this protocol, thanks. The only real concern I have is capsman, since honestly, it's always been more trouble than it was worth, but perhaps that can be overcome.
 
dnnix
just joined
Topic Author
Posts: 21
Joined: Fri Aug 18, 2023 3:12 pm
Location: Washington, DC
Contact:

Re: Mesh vs. Separate APs (yet another handoff discussion)

Mon Jun 10, 2024 4:13 pm

You are looking for 802.11r/k/v, for that you need to set up fast transition and steering.

Properties related to 802.11r fast BSS transition only apply to interfaces in AP mode. WiFi interfaces in station mode do not support 802.11r.

For a client device to successfully roam between 2 APs, the APs need to be managed by the same instance of RouterOS. For information on how to centrally manage multiple APs, see CAPsMAN
So I do use the station bridge mode APs in a couple places, to get ethernet jacks where there is no drop. Can I implement 802.11k/v and have the benefits without 802.11r? Station bridge mode still works with k/v?
 
dnnix
just joined
Topic Author
Posts: 21
Joined: Fri Aug 18, 2023 3:12 pm
Location: Washington, DC
Contact:

Re: Mesh vs. Separate APs (yet another handoff discussion)

Thu Jul 11, 2024 3:50 am

Update:
I finally had a moment to implement steering and fast transition, and it works great. Wonderful resolution, extremely robust handoff. To help others, here's the configuration which worked for me (I have three APs and a CCR2004 router running capsman).
# 2024-07-10 20:45:50 by RouterOS 7.15.2
# software id = CWU8-WMJ4
#
# model = CCR2004-16G-2S+
# serial number = (serial)
/interface bridge
add name=bridge1 port-cost-mode=short
/interface ethernet
set [ find default-name=sfp-sfpplus1 ] advertise="10M-baseT-half,10M-baseT-ful\
    l,100M-baseT-half,100M-baseT-full,1G-baseT-half,1G-baseT-full,1G-baseX,2.5\
    G-baseT,2.5G-baseX,5G-baseT,10G-baseT,10G-baseSR-LR,10G-baseCR"
set [ find default-name=sfp-sfpplus2 ] advertise="10M-baseT-half,10M-baseT-ful\
    l,100M-baseT-half,100M-baseT-full,1G-baseT-half,1G-baseT-full,1G-baseX,2.5\
    G-baseT,2.5G-baseX,5G-baseT,10G-baseT,10G-baseSR-LR,10G-baseCR"
/interface list
add name=WAN
add name=LAN
/interface wifi datapath
add bridge=bridge1 disabled=no name=datapath1
/interface wifi security
add authentication-types=wpa2-psk,wpa3-psk disable-pmkid=yes disabled=no ft=\
    yes ft-over-ds=yes group-encryption=ccmp group-key-update=1h name=sec1 \
    wps=disable
/interface wifi steering
add disabled=no name="Hector Steering" neighbor-group=dynamic-Hector-5518dcee \
    rrm=yes wnm=yes
add disabled=no name="Florry Steering" neighbor-group=dynamic-Florry-5518dcee \
    rrm=yes wnm=yes
/interface wifi configuration
add channel.band=5ghz-ax .reselect-interval=1h .skip-dfs-channels=10min-cac \
    country="United States" datapath=datapath1 disabled=no name="Hector 5GHz" \
    security=sec1 security.ft=yes .ft-over-ds=yes ssid=Hector steering=\
    "Hector Steering" tx-power=15
add channel.band=2ghz-ax .reselect-interval=1h datapath=datapath1 disabled=no \
    name="Florry 2GHz" security=sec1 security.ft=yes .ft-over-ds=yes ssid=\
    Florry steering="Florry Steering" tx-power=15
/ip pool
add name=dhcp_pool0 ranges=10.62.14.128-10.62.14.190
/ip dhcp-server
add address-pool=dhcp_pool0 interface=bridge1 lease-time=1w1d name=dhcp1
/ip smb users
set [ find default=yes ] disabled=yes
/port
set 0 name=serial0
set 1 name=serial1
/system logging action
add email-to=(email) name=email target=email
/interface bridge port
add bridge=bridge1 interface=ether2 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether3 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether4 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether5 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether6 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether7 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether8 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether9 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether10 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether11 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether12 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether13 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether14 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether15 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=ether16 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=sfp-sfpplus1 internal-path-cost=10 path-cost=10
add bridge=bridge1 interface=sfp-sfpplus2 internal-path-cost=10 path-cost=10
/ip firewall connection tracking
set udp-timeout=10s
/ip neighbor discovery-settings
set discover-interface-list=all lldp-med-net-policy-vlan=1
/ipv6 settings
set disable-ipv6=yes
/interface detect-internet
set detect-interface-list=all
/interface list member
add interface=ether1 list=WAN
add interface=bridge1 list=LAN
/interface wifi capsman
set ca-certificate=auto enabled=yes interfaces=bridge1 package-path="" \
    require-peer-certificate=no upgrade-policy=none
/interface wifi provisioning
add action=create-dynamic-enabled disabled=no master-configuration=\
    "Hector 5GHz" slave-configurations="" supported-bands=5ghz-ax
add action=create-dynamic-enabled disabled=no master-configuration=\
    "Florry 2GHz" supported-bands=2ghz-ax
/ip address
add address=10.62.14.1/24 comment="LAN range" interface=bridge1 \
    network=10.62.14.0
/ip arp
add address=10.62.14.42 interface=bridge1 mac-address=98:06:3C:24:AB:C9
/ip cloud
set ddns-enabled=yes ddns-update-interval=20m
/ip dhcp-client
add interface=ether1 use-peer-dns=no use-peer-ntp=no
/ip dhcp-server network
add address=10.62.14.0/24 dns-server=94.140.14.49,94.140.14.59 domain=\
    (domain) gateway=10.62.14.1 ntp-server=10.62.14.1
/ip dns
set servers=94.140.14.49,94.140.14.59
/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN
/ip smb shares
set [ find default=yes ] directory=/pub
/system clock
set time-zone-autodetect=no time-zone-name=America/New_York
/system identity
set name=rtr1
/system logging
add action=email topics=critical,warning,account
/system note
set show-at-login=no
/system ntp client
set enabled=yes
/system ntp server
set enabled=yes
/system ntp client servers
add address=0.pool.ntp.org
add address=1.pool.ntp.org
add address=2.pool.ntp.org
/system routerboard settings
set auto-upgrade=yes enter-setup-on=delete-key
Additionally, to answer my own question earlier, I retain the ability to use station-bridge clients, which is important for my setup. They work just fine after this implementation.