Бесшовный роуминг (миграция между ТД) в wi-fi для Linux клиентов.

Linux wi-fi roamingХорошая новость для Linux`оидов. С wpa_supplicant из GIT запросто настраивается “прозрачная” миграция. Т.е. iptv мультикастовое продолжает литься при миграции, iperf в большинстве случаев не умирает, а лишь деградирует по скорости в момент миграции и т.д. При этом даже корректно отрабатывает вариант с несколькими AP в разных поддиапазонах 5ГГц. Что для этого надо (на примере mageia linux v5)

1) wpa_supplicant из git (можно взять подготовленный мной src.rpm http://wive-ng.sf.net/downloads/wpa_supplicant-2.6-1.mga5.src.rpm и собрать по команде rpmbuild –rebuild wpa_supplicant-2.6-1.mga5.src.rpm)

2) переключить его на использование nl80211 вместо wext, драйвер вашего wifi модуля должен полностью поддерживать nl80211 (при использовании wext всегда будут долгие периоды реконнекта с потерей соединений пользовательских приложений) т.к. требуется, чтобы SME был на уровне wpa_supplicant.

Большинство дистрибутивов по умолчанию использует WEXT, т.е. до сих пор далеко не все дрова wifi, даже входящие в состав ядра, умеют nl80211 (iwlwifi точно умеют, ath*k тоже должны, rt28xxx хоть типа и умеют, но увы по факту даже сканирование не работает). Проверить, что используется на данный момент, можно, посмотрев, с какими опциями запущен supplicant (ps ax | grep wpa_supplicant должен выдать что-то типа 25201 ? Ss 0:01 /usr/sbin/wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D nl80211 -f /var/log/wpa_supplicant.log)

Для этого редактируем /etc/sysconfig/network-scripts/ifcfg-<имя интерфейса>

Важно установить:

WIRELESS_WPA_DRIVER=nl80211
WIRELESS_WPA_REASSOCIATE=no
MII_NOT_SUPPORTED=yes
USERCTL=yes
 В /etc/wpa_supplicant.conf отключаем рандомизацию mac везде, где найдём. Включаем фоновое сканирование:
# bgscan: Background scanning
# wpa_supplicant behavior for background scanning can be specified by
# configuring a bgscan module. These modules are responsible for requesting
# background scans for the purpose of roaming within an ESS (i.e., within a
# single network block with all the APs using the same SSID). The bgscan
# parameter uses following format: "<bgscan module name>:<module parameters>"
# Following bgscan modules are available:
# simple - Periodic background scans based on signal strength
# bgscan="simple:<short bgscan interval in seconds>:<signal strength threshold>:
# <long interval>"

bgscan="simple:30:-65:200"

Т.е. при уровне ниже -65 будем начинать время от времени “щупать эфир” на предмет наличия кандидатов для миграции и по возможности мигрировать.

Также следует обратить внимание на используемый DHCP клиент. Важно, чтобы он не сбрасывал адрес на интерфейсе (иначе сбросятся стэйты соединений приложений) по сигналу от ifplugd. Я использую штатный “Internet Systems Consortium DHCP Client 4.3.3-P1”.

Ну и естественно, ваши точки доступа и опорная сеть должны нормально отрабатывать ситуацию с перемещением клиентов.

Опять-таки, в Wive-NG для этого сделано абсолютно всё, что возможно.

Больше ничего не требуется. Проверено на I3160/I7260. Выпинывать их принудительно не надо – оно само инициирует переход без всяких проблем. Под виндой эти интелы ведут себя аналогично, т.е. без проблем мигрируют с сохранением пользовательских соединений, достаточно лишь в настройках драйвера увеличить агрессивность роуминга и вуаля.

Вот вместо фонового сканирования можно было бы использовать данные из RRM, но этой логики в supplicant пока нет.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.