Обзор существующих Open Source решений
Обзор архитектуры монолитных и тонких драйверов. Open80211s, libertas, libertas_ts. Взгляд на архитектуру: как перераспределились функции при переходе от монолитной модели к модели с модулем 80211s. Переработать, добавить (при необходимости)
Управление состояниями физической среды сети осуществляется на MAC-уровне при помощи блока MLME (MAC Layer Management Entity). MLME участвует в достижении таких целей, как:
- аутентификация,
- деаутентификация,
- ассоциация (с точкой доступа),
- разъединение (с точкой доступа),
- реассоциация,
- запуск в сеть маркеров,
- сканирование сети.
В зависимости от того, где реализуется MLME, различают два типа драйверов сетевых карт: FullMAC и SoftMAC. FullMac сетевые карты реализуют MLME в микросхемах, SoftMAC карты реализуют управление на MAC-уровне программно.
Существует интерфейс стандарта 802.11 - это стек mac80211. Mac80211 - это API MAC-уровня под Linux для беспроводных SoftMAC драйверов. Для FullMAC драйверов данный стек не предназначен и работать с ними не может. В настоящее время стек реализует MLME для работы в режиме клиентской станции (STA) в ядре, а другую его часть - для работы в режиме точки доступа (AP) - в пространстве пользователя. В будущем планируется полный перевод функциональности в пространство пользователя.
Стек mac80211 поддерживают следующие драйверы устройств:
- adm8211,
- ath5k,
- b43 и b43legacy,
- iwl3945 и iwl4965,
- ub8xxx,
- p54_pci и p54_usb,
- rt2400pci, rt2500pci, rt2500usb, rt61pci и rt73usb,
- rtl8180 и rtl8187,
- zd1211rw.
Кроме того, в сентябре 2008 года Nokia опубликовала новый драйвер stlc45xx, основанный на интерфейсе mac80211, для устройств Nokia N800 and N810.
Стек поддерживает следующие функции:
- 802.11abgn,
- 802.11d,
- последнюю версию стандарта 802.11s,
- 802.11r,
- алгоритмы управления скоростью: PID, minstrel,
- различные типы интерфейсов:
- AP в режиме инфраструктуры,
- STA в режиме инфраструктуры,
- режим мониторинга,
- Ad-Hoc (IBSS) режим,
- WDS,
- Mesh.
Открытой реализацией последней версии черновика 802.11s является open80211s, основанный на стеке mac80211. Причем данная открытая реализация вошла в один из последних выпусков ядра Linux - версию 2.6.26.
Теперь для разработки совместимых mesh-устройств разными производителями достаточно реализовать низкоуровневый драйвер для управления самим устройством с ориентировкой на использование open80211s.
Примером FullMAC драйвера может служить Libertas, используемый в частности в OLPC XO для организации mesh-сети. Libertas - кодовое имя серии чипсетов Marvel 88w838X. В OLPC XO используется версия 88w8388 (версия внутреннего процессора) с передатчиком 88w8015 rf. Данный драйвер был разработан под более старую версию черновика. В силу своих отличий в интерфейсе от mac80211, данный драйвер не сможет взаимодействовать с последними и новыми mesh-драйверами. Он реализует MAC, PHY-уровни управления и управляет самим частотным каналом. Детские ноутбуки OLPC XO могут организовать mesh-сеть только между собой и не могут вступить в гетерогенную сеть. Однако в новом 2.6.27 Linux ядре появилась SoftMAC версия драйвера - Libertas_tf - драйвер PHY-уровня и среды передачи.