PDA

Просмотр полной версии : Проект OpenWifi с реализацией открытого Wi-Fi чипа на базе FPGA и SDR


Suicide
05.02.2020, 20:48
На прошедшей конференции FOSDEM 2020 представлен (https://fosdem.org/2020/schedule/event/fsr_openwifi/) проект OpenWifi (https://github.com/open-sdr/openwifi), развивающий первую открытую реализацию полного стека Wi-Fi 802.11a/g/n, форма сигнала и модуляция в котором задаётся программно (SDR, Software Defined Radio). OpenWifi позволяет создать полностью подконтрольную реализацию всех компонентов беспроводного устройства, включая низкоуровневые слои, в обычных беспроводных адаптерах реализуемые на уровне недоступных для аудита чипов. Код программных компонентов (https://github.com/open-sdr/openwifi), а также схемы и описания (https://github.com/open-sdr/openwifi-hw) аппаратных блоков на языке Verilog для FPGA распространяются под лицензией AGPLv3.

Аппаратная составляющая продемонстрированного рабочего прототипа базируется на FPGA Xilinx Zynq и универсальном приёмопередатчике (RF) AD9361. В OpenWifi применяется архитектура SoftMAC, подразумевающая реализацию основного беспроводного стека 802.11 (high-MAC) на стороне драйвера и наличие low-MAC слоя на стороне FPGA. В качестве беспроводного стека используется подсистема mac80211, предоставляемая ядром Linux. Взаимодействие с SDR производится через специальный драйвер.

https://www.opennet.ru/opennews/pics_base/0_1580814351.jpeg (https://raw.githubusercontent.com/open-sdr/openwifi/master/openwifi-arch.jpg)

Основные возможности:


Полная поддержка 802.11a/g и частичная поддержка 802.11n MCS 0~7 (пока только PHY rx). В планах поддержка 802.11ax;

Полоса пропускания 20MHz и диапазон частот от 70 MHz до 6 GHz;

Режимы работы: Ad-hoc (https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%81%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D 0%B4%D0%BD%D0%B0%D1%8F_ad-hoc-%D1%81%D0%B5%D1%82%D1%8C) (сеть из клиентских устройств), точка доступа, станция и мониторинг;

Реализация на стороне FPGA протокола канального уровня DCF (https://ru.wikipedia.org/wiki/Distributed_coordination_function) (Distributed Coordination Function), использующего метод CSMA/CA. Обеспечивается время обработки кадра (SIFS (https://en.wikipedia.org/wiki/Short_Interframe_Space)) на уровне 10us;

Настраиваемые параметры приоритета доступа к каналу: продолжительность RTS/CTS, CTS-to-self, SIFS, DIFS, xIFS, slot-time и т.п.

Квантование времени (Time slicing (https://en.wikipedia.org/wiki/Time_slicing_(digital_broadcasting))) на базе MAC-адреса;

Легко изменяемая полоса пропускания и частота: 2MHz для 802.11ah и 10MHz для 802.11p;
https://www.opennet.ru/opennews/pics_base/0_1580822158.png (https://www.opennet.ru/opennews/pics_base/0_1580822257.png)

В настоящее время в OpenWifi обеспечена поддержка (https://github.com/open-sdr/openwifi-hw) SDR-платформ на базе FPGA Xilinx ZC706 с приёмопередатчиками Analog Devices FMCOMMS2/3/4, а так же связок (FPGA + RF) ADRV9361Z7035 SOM + ADRV1CRR-BOB и ADRV9361Z7035 SOM + ADRV1CRR-FMC. Для загрузки сформирован готовый образ (https://users.ugent.be/~xjiao/) 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 (https://wiki.analog.com/resources/eval/user-guides/adrv9364-z7020) составит 700 евро, а на базе ZYNQ NH7020 (https://aliexpress.ru/item/4000498157487.html) - 400 евро.

Тестирование производительности подключения клиента с USB-адаптером TL-WDN4200 N900 к точке доступа на базе OpenWifi позволило добиться пропускной способности 30.6Mbps (TCP) и 38.8Mbps (UDP) при передаче данных от точки доступа к клиенту и 17.0Mbps (TCP) и 21.5Mbps (UDP) при передаче от клиента к точке доступа. Для управления могут использоваться штатные утилиты Linux, такие как ifconfig и iwconfig, а также специализированная утилита sdrctl, работающая через netlink и позволяющая управлять работой SDR на низком уровне (манипулировать регистрами, менять настойки квантования времени и т.п.).

04.02.2020

http://www.opennet.ru/opennews/art.shtml?num=52309​