Проект OpenWifi с реализацией открытого Wi-Fi чипа на базе FPGA и SDR
4 февраля 2020 года
На прошедшей конференции FOSDEM 2020 представлен проект OpenWifi, развивающий первую открытую реализацию полного стека Wi-Fi 802.11a/g/n, форма сигнала и модуляция в котором задаётся программно (SDR, Software Defined Radio). OpenWifi позволяет создать полностью подконтрольную реализацию всех компонентов беспроводного устройства, включая низкоуровневые слои, в обычных беспроводных адаптерах реализуемые на уровне недоступных для аудита чипов. Код программных компонентов, а также схемы и описания аппаратных блоков на языке Verilog для FPGA распространяются под лицензией AGPLv3.
Аппаратная составляющая продемонстрированного рабочего прототипа базируется на FPGA Xilinx Zynq и универсальном приёмопередатчике (RF) AD9361. В OpenWifi применяется архитектура SoftMAC, подразумевающая реализацию основного беспроводного стека 802.11 (high-MAC) на стороне драйвера и наличие low-MAC слоя на стороне FPGA. В качестве беспроводного стека используется подсистема mac80211, предоставляемая ядром Linux. Взаимодействие с SDR производится через специальный драйвер.
Основные возможности:
- Полная поддержка 802.11a/g и частичная поддержка 802.11n MCS 0~7 (пока только PHY rx). В планах поддержка 802.11ax;
- Полоса пропускания 20MHz и диапазон частот от 70 MHz до 6 GHz;
- Режимы работы: Ad-hoc (сеть из клиентских устройств), точка доступа, станция и мониторинг;
- Реализация на стороне FPGA протокола канального уровня DCF (Distributed Coordination Function), использующего метод CSMA/CA. Обеспечивается время обработки кадра ( SIFS) на уровне 10us;
- Настраиваемые параметры приоритета доступа к каналу: продолжительность RTS/CTS, CTS-to-self, SIFS, DIFS, xIFS, slot-time и т.п.
- Квантование времени ( Time slicing) на базе MAC-адреса;
- Легко изменяемая полоса пропускания и частота:
2MHz для 802.11ah и 10MHz для 802.11p;
В настоящее время в OpenWifi обеспечена поддержка SDR-платформ на базе FPGA Xilinx ZC706 с приёмопередатчиками Analog Devices FMCOMMS2/3/4, а так же связок (FPGA + RF) ADRV9361Z7035 SOM + ADRV1CRR-BOB и ADRV9361Z7035 SOM + ADRV1CRR-FMC. Для загрузки сформирован готовый образ SD-карты на базе ARM Linux. В планах поддержка связок ADRV9364Z7020 SOM + ADRV1CRR-BOB, Xilinx zed + FMCOMMS2/3/4, Xilinx ZCU102 + FMCOMMS2/3/4 и Xilinx ZCU102 + ADRV9371. Стоимость компонентов, задействованных в первом прототипе OpenWifi, составила около 1300 евро, но ведётся портирование на более дешёвые платы. Например, стоимость решения на базе Analog Devices ADRV9364-Z7020 составит 700 евро, а на базе ZYNQ NH7020(недоступная ссылка) - 400 евро.
Тестирование производительности подключения клиента с USB-адаптером TL-WDN4200 N900 к точке доступа на базе OpenWifi позволило добиться пропускной способности 30.6Mbps (TCP) и 38.8Mbps (UDP) при передаче данных от точки доступа к клиенту и 17.0Mbps (TCP) и 21.5Mbps (UDP) при передаче от клиента к точке доступа. Для управления могут использоваться штатные утилиты Linux, такие как ifconfig и iwconfig, а также специализированная утилита sdrctl, работающая через netlink и позволяющая управлять работой SDR на низком уровне (манипулировать регистрами, менять настойки квантования времени и т.п.).
Из других открытых проектов, экспериментирующих с Wi-Fi стеком, можно отметить проект Wime, развивающий совместимый с IEEE 802.11 a/g/p передатчик на базе GNU Radio и обычного ПК. Программные открытые беспроводные стеки 802.11 также развивают проекты Ziria и Sora (Microsoft Research Software Radio).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.