Roaming: cambiar de punto de acceso
Tienes varios APs con el mismo nombre de red. Te mueves. ¿Cuándo se cambia tu móvil al AP más cercano? Spoiler: más tarde de lo que crees, y el que decide es él.
Quién decide: siempre el cliente
El AP no puede pasarte a otro AP. Solo el móvil o el portátil decide cuándo cambiarse. Y la mayoría son pegajosos (sticky clients): no sueltan el AP en el que están mientras "vaya bien", aunque tengan uno mucho mejor al lado.
Así decide Linux (wpa_supplicant 2.12, sacado de su código):
Pruébalo: ¿cambiaría Linux?
El paseo: muévete por el pasillo
Arrastra el PC por el pasillo de 60 m (o pulsa ▶). Compara el roaming ideal (siempre en el AP que mejor se oye) con un cliente pegajoso típico de móvil (solo busca otro AP por debajo de -70 dBm y cambia si es 5 dB mejor).
Señal de cada AP a lo largo del pasillo
Velocidad real: roaming ideal frente a cliente pegajoso
Cuánto se corta al cambiar
Corte típico al cambiar de AP (milisegundos)
El AP te echa (o te empuja)
Lo que propones, "que el AP te eche según te alejas y te conectes al más cercano", existe y se llama minimum RSSI o client steering. Como el AP no puede decidir por el cliente, tiene estas herramientas, de la más suave a la más bruta:
| Técnica | Qué hace | Corte | Riesgo |
|---|---|---|---|
| 802.11k (Neighbor Report) | Da al móvil la lista de APs vecinos para que busque más rápido | — | Ninguno |
| 802.11v (BSS Transition) | "Por favor, vete a este otro AP." El móvil puede negarse | Como un roaming normal | Bajo |
| Ignorar a los lejanos | No contesta a los que preguntan con poca señal | — | Medio |
| Rechazar por señal | No deja conectarse a quien llega flojo (código 34: poor channel conditions) | — | Medio |
| Echar (deauth) | Desconecta al cliente; al reconectar elige el AP mejor | ~1 s o más | Alto si no hay a dónde ir |
En los equipos de verdad: Minimum RSSI en Ubiquiti, signal-range en las access-list de MikroTik, usteer o DAWN en OpenWrt.
Dónde poner cada umbral
Qué hacer con un cliente pegajoso
| Dónde | Qué se puede hacer |
|---|---|
Linux con iwd | RoamThreshold en /etc/iwd/main.conf (por defecto -70) |
Linux con wpa_supplicant | bgscan (NetworkManager ya pone uno). La regla del SNR > 25 no se puede cambiar |
| Windows | Propiedades del adaptador → "Agresividad de itinerancia" |
| Móviles | Nada: decide el fabricante. Apagar y encender el wifi le obliga a elegir el mejor |
| En los APs | Bajar la potencia (ver Potencia), activar 802.11k/v y echar a los lejanos |
wpa_supplicant nunca cambia solo: el PC se queda en el AP1 todo el pasillo. Es exactamente el cliente pegajoso. El cambio se fuerza con wpa_cli roam <BSSID>, apagando el AP (hostapd_cli disable), echándolo (hostapd_cli deauthenticate) o con 802.11v (hostapd_cli bss_tm_req). Un ping -i 0.2 -O en otra terminal muestra cuánto se corta.