Обзор существующих 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-уровня и среды передачи.