A few weeks ago I upgraded my home network equipment with a few really cheap, but also really nice routers. All I wanted was fast roaming. And I got it.
Like so many, my wife and I work from home. So far I had a cobbled together network, one Edimax, one Phicom, one Netgear router. Edimax and Phicom were plucky little devices. Unfortunatly the Phicom tried to phone home, so I couldn't run it as my main router, despite being the most powerful — and cheapest — device of the lot. The Netgear was the worst of the three, so the Edimax had main router duty. The others ran in AP-mode.
Discussion of Phicom phoning home
Unfortunatly, there are a lot unfortunate things in this story, the three devices were not cooperative while running on the same SSID. Roaming therefore was mostly impossible and to get working WLAN in the house, I polluted the airspace with half a dozen SSIDs (I still do, but you need a frequency scanner to notice ;)) No roaming, pfui, and my wife wanted WLAN coverage in the rear end of the garden. That's not hard... if you have structured cabling into your garden. I did not. So I did a little research and found a newfangled technology called "Mesh WLAN". Meshes are the hot shit. But they are actually not new, they are just networks on wireless connections and we have been mostly using them for ad hoc networks. If you ever switched your WLAN device into ad hoc mode, you basically switched it into mesh mode. I mentioned this somewhere else, but I once was responsible for a rather large network (in the 5-digit range of clients), so this is not quite undiscovered country. Of course, in my time we did not have such fancy standards such as 802.11s, you damn whippersnappers. Obviously that is an unfair characterization. Ad hoc mode allows you to mesh anything with horrific performance, the meshes network equipment manufacturers peddle are build with dedicated radios and antennas for up- and downstream, shared configurations, mixed-mode backhaul and much more. Unfortunatly — again — most of them ignore the IEEE standard 802.11s. I can't think of any favorable reason why.
Anyway, after some research I decided to get Asus' product. Their solution is called AIMesh and I can't say a lot about the AI part, but it is a mesh, alright. Asus offers a package of two pretty beefy routers (RT-AX92U) for mesh builders. I bought two packages, four devices at all. A layout of about 650€. I'm not going into details about the performance of the individual routers but the range of the 2.4GHz radio was a little underwhelming, both the Edimax and the Phicom had longer range. The setup of the mesh was very easy and straightforward, Asus does a good job at hand-holding, and performance was fine with really good latency.
Too bad roaming did not work. Worse than not working, actually. When a client tried to jump from one router to the next, the gateway router lost its WAN connection... huh...? How? What? Why? Is this how Simon Sinek got his ideas? And that's not all. The gateway router, and with it the whole mesh, needed a cold reboot to get the WAN connection back. That's an amazing bug. I mean, ignoring the fact that the WAN connection is lost on cell hop, there is probably some kind of Linux running on the box, upping and downing devices is, I don't know, bread and butter — without the butter. Plain, basic. I can't recall any trouble with hardware cycling since the days of Linux 2.2. Okay, with the exception of nVidia stuff, but that's somehow par for the course, isn't it? But you can't do it on the Asus routers. Weird.
So I got into contact with Asus' support and I really can't fault them for lack of trying. Indeed, I was very positively surprised how fast and indepth their response was. They wanted to help and figure out what was going on. Unfortunatly, there it is again, my grace period for returning the equipment was coming to an end. So I packed everything up and sent it back.
There is a plethora of cheap routers available from Chinese companies. And many of them run, or are cabable of running, OpenWrt. If you don't know OpenWrt, it's a Linux distribution with a focus on networking. Duh! It brings scaffolding, CLI tools, a WebGUI for network configuration, and an package management system for easily extending the OpenWrt functionality. Provided the hardware of the router supports it, OpenWrt can configure all IEEE 802.11 standards, including 11s and 802.11r for fast roaming.
The small-time network equipment manufacturer Cudy sells a line of very cheap WLAN routers supporting 802.11ac with a 2T2R, four antenna configuration. Obviously it's marketed as an "ac2100" device. The asking price is about 40€! OpenWrt supports the router since... I don't know. There was a snapshot, then the early 21.x development versions. Cudy itself provides a custom OpenWrt image which makes switching to OpenWrt proper a breeze.
I'm not going into the details how I set up one of the Cudys as the gateway router and the other as APs. Maybe another time, but not now. All I'm going to say is, the fast roaming standard of the IEEE is called 802.11r and it requires a full wpad package and two directives on the wifi interface to enable it.
1. Replace _wpad-basic-wolfssl_ with the full version and set a "mobility domain" (see below). Here is how to do this on SSH
opkg update opkg remove wpad-basic-wolfssl opkg install wpad-wolfssl (or wpad-openssl, if you want WPA3)
802.11r is sufficient for a good roaming experience. You have to set the following options in your SSID config.
option ieee80211r '1' # activates fast roaming on SSID option mobility_domain '12ab' # all SSIDs within this mobility domain can fast roam between each other. It's just a four digit Hex-number.
Note, if and when to roam is always a client decision. So if your client refuses to jump to a better available AP, there is nothing the AP can do about it. I've been told Apple phones tend to be sticky, but I wouldn't know.
Three Cudy routers now cover my house and my garden. Their range with the 2.4GHz radio is more than sufficient. It took me about two days to set up the routers with OpenWrt and configuration. Total cost 120€. Totally worth it.