It seems to me that "FT over DS" doesn't make too much sense to use. It communicates with the target AP via the current AP. But if the client needs to roam it's because the signal is getting worse, e.g. you're walking away from the current AP towards a target AP. Wouldn't it make sense to start talking to the target AP hence using "FT over the Air" would be better?
Good question. Up to now I just thought FT over DS is more secure, but that does not seem to be the point.
I found this, also discussing advantages/disadvantages of the 2 approaches:
In short if I understood that paper correctly it looks like ft over ds is the better approach if the network between the APs is not too crowded, because the client only switches channels in case it definitely roams, whereas with ft over the air it has to pause the current ap to contact the new one.
And basically with your nickname "wired" you definitely should choose ft over ds
I do not have a controller, so I wonder how the APs talk to each other or "over DS" without some sort of controller just doesn't work?
provided that both APs have a way to communicate. In a controller-based network, no problem.
And from the comments:
I haven't tried 802.11r with standalone APs, as I have a controller. So I can't say much about how (or even if) it actually works, and it's probably somewhat of a corner case, as most people do have controllers anyway.
The best way to make this work without a full blown WLC is probably to look at Mobility Express feature on the new APs, which in 8.2 allows you to run an AP as a cut down controller of sorts. In 8.2 this now also supports FT.
I use 802.11r together with wpa2/eap on 19.07.6, therefore I have to specify all this key stuff in the wireless config:
mobility_domain, pmk_r1_push, r1_key_holder, r0kh, r1kh...
This all is done somehow automatically if you use wpa2/psk and specify ft_psk_generate_local.
To my understanding the current AP knows the mac addresses of all involved APs (as they have to be all listed with r0kh and r1kh), and with the pmk_r1_push option every access point pushes all info needed for roaming in advance to all involved access points.
If I'm reading that post correctly, with hostapd the key is generated locally (for better or worse) so the APs do not need to talk to each other.
With PSK, hostapd can generate R1 locally as it already knows the MSK (derived from passphrase). The passphrase needs to be present, as the client could as well start its session locally. So no inter-AP communication is required.
So maybe DS vs Air does not really matter for WPA2 PSK?
No, I do not use snapshots. I need a stable working environment, as my complete family relies on internet for work and school. We are in lockdown since 2 months, I work from home since nearly 1 year.
No dangerous experiments yet...
Have you confirmed that it works with the log lines:
WPA: FT authentication already completed - do not start 4-way handshake
In this post:
@hnyman indicated he got things working using FT over the air. @hnyman did you have any success with FT over DS? I gather in theory the latter is preferable?
I tested now also with "FT over DS", and got mixed results. Although the device once switched ok via FT, it didn't later switch back to the original router although the signal was weak.
When I then reverted back to "over Air", the switching between APs was more immediate.
Having set the above on all nodes I saw this on one of my extension nodes:
root@OpenWrt:~# logread
Segmentation fault
Reboot seemed to fix.
The RT3200's don't seem to react very nicely to having WiFi settings changed without reboot. I recall seeing mtdblock2 read errors when switching from mesh to 160Mhz.
I think this looks like it is working for iphone from perspective of single node, right(?):
Tue Nov 23 17:31:33 2021 daemon.info hostapd: wlan0: STA XX:XX:XX:XX:b4:10 IEEE 802.11: authenticated
Tue Nov 23 17:31:33 2021 daemon.info hostapd: wlan0: STA XX:XX:XX:XX:b4:10 IEEE 802.11: associated (aid 10)
Tue Nov 23 17:31:33 2021 daemon.notice hostapd: wlan0: AP-STA-CONNECTED XX:XX:XX:XX:b4:10
Tue Nov 23 17:31:33 2021 daemon.info hostapd: wlan0: STA XX:XX:XX:XX:b4:10 RADIUS: starting accounting session 6E1E892A7CF3AD14
Tue Nov 23 17:31:33 2021 daemon.info hostapd: wlan0: STA XX:XX:XX:XX:b4:10 WPA: pairwise key handshake completed (RSN)
Tue Nov 23 17:31:33 2021 daemon.notice hostapd: wlan0: EAPOL-4WAY-HS-COMPLETED XX:XX:XX:XX:b4:10
Tue Nov 23 17:44:57 2021 daemon.info hostapd: wlan1-1: STA XX:XX:XX:XX:b4:10 IEEE 802.11: associated (aid 4)
Tue Nov 23 17:44:57 2021 daemon.notice hostapd: wlan1-1: AP-STA-CONNECTED XX:XX:XX:XX:b4:10
Tue Nov 23 17:44:57 2021 daemon.notice hostapd: wlan0: Prune association for XX:XX:XX:XX:b4:10
Tue Nov 23 17:44:57 2021 daemon.notice hostapd: wlan0: AP-STA-DISCONNECTED XX:XX:XX:XX:b4:10
Tue Nov 23 17:44:59 2021 daemon.info hostapd: wlan0: STA XX:XX:XX:XX:b4:10 IEEE 802.11: associated (aid 10)
Tue Nov 23 17:44:59 2021 daemon.notice hostapd: wlan0: AP-STA-CONNECTED XX:XX:XX:XX:b4:10
Tue Nov 23 17:44:59 2021 daemon.notice hostapd: wlan1-1: Prune association for XX:XX:XX:XX:b4:10
Tue Nov 23 17:44:59 2021 daemon.notice hostapd: wlan1-1: AP-STA-DISCONNECTED XX:XX:XX:XX:b4:10
Tue Nov 23 17:45:29 2021 daemon.info hostapd: wlan1-1: STA XX:XX:XX:XX:b4:10 IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Because it only states EAPOL-4WAY-HS-COMPLETED upon the first connection, and not in respect of subsequent connections.