Is roaming algorithm based on est_throughput and how to change it locally?
Marco Marzetti
marco at lamehost.it
Wed Jan 31 00:49:48 PST 2024
Dear members of the hostap community,
Because of bad planning, even though I have 3, the most "powerful" AP
in my house is located outdoors.
By "powerful" i mean the one with the highest est_throughput as
perceived by my laptop among others. Here you can see the scanning
results returned by wpa_supplicant when I run it with -d:
wlp1s0: Scan results matching the currently selected network
wlp1s0: 0: d0:21:f9:ff:52:5a freq=5260 level=-86 snr=25 est_throughput=306252
wlp1s0: 1: e0:63:da:25:9c:f5 freq=5200 level=-54 snr=57 est_throughput=180001
wlp1s0: 3: d0:21:f9:ff:52:59 freq=2462 level=-82 snr=28 est_throughput=98902
wlp1s0: 4: e0:63:da:25:9c:f4 freq=2437 level=-41 snr=68 est_throughput=65000
wlp1s0: 5: 74:83:c2:d0:d7:6e freq=2412 level=-76 snr=33 est_throughput=65000
If i understand the roaming algorithm correctly, since 2022
wpa_supplicant always prefers the AP with higher est_throughput and
tries to connect to it. And attempt frequency is definied by a penalty
system that delays retries incrementally up to every 30 minutes.
Here's an example:
Jan 31 09:40:31 lilith wpa_supplicant[379881]: wlp1s0: SME: Trying to
authenticate with d0:21:f9:ff:52:5a (SSID='Marzetti' freq=5260 MHz)
Jan 31 09:40:31 lilith wpa_supplicant[379881]: BSSID d0:21:f9:ff:52:5a
ignore list count incremented to 5, ignoring for 600 seconds
Jan 31 09:40:35 lilith wpa_supplicant[379881]: wlp1s0: SME: Trying to
authenticate with e0:63:da:25:9c:f5 (SSID='Marzetti' freq=5200 MHz)
Jan 31 09:40:35 lilith wpa_supplicant[379881]: wlp1s0: Trying to
associate with e0:63:da:25:9c:f5 (SSID='Marzetti' freq=5200 MHz)
Jan 31 09:40:35 lilith wpa_supplicant[379881]: wlp1s0: Associated with
e0:63:da:25:9c:f5
Jan 31 09:40:35 lilith wpa_supplicant[379881]: wlp1s0:
CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
Jan 31 09:40:35 lilith wpa_supplicant[379881]: wlp1s0: WPA: Key
negotiation completed with e0:63:da:25:9c:f5 [PTK=CCMP GTK=CCMP]
Jan 31 09:40:35 lilith wpa_supplicant[379881]: wlp1s0:
CTRL-EVENT-CONNECTED - Connection to e0:63:da:25:9c:f5 completed [id=0
id_str=]
If the above it correct, then it works smoothly in most cases. But
it's extremely bad for real time streams such as video calls.
And that's bad for me as i work remotely and spend a fairly big amount
of time on zoom.
Now, i apoligy if anything above is wrong. And in that case, please
correct me. But in case it is right, is there any way to force
wpa-supplicant to ignore BSS whose level is below a given threshold?
I believe i could use it to ignore d0:21:f9:ff:52:5a and - as a result
- stick to e0:63:da:25:9c:f5 even though est_throughput is lower.
Thank you
Regards
--
Marco
More information about the Hostap
mailing list