เป‚เบ„เบ‡เบเบฒเบ™ OpenWifi เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบดเบš Wi-Fi เป€เบ›เบตเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ FPGA เปเบฅเบฐ SDR

เปƒเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบก FOSDEM 2020 เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ เบ™เบณ เบชเบฐ เป€เปœเบต เป‚เบ„เบ‡เบเบฒเบ™ openwifi, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ›เบตเบ”เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ stack Wi-Fi 802.11a/g/n เป€เบ•เบฑเบก, เบฎเบนเบšเบฎเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™เปเบฅเบฐ modulation เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบŠเบญเบšเปเบง (SDR, Software Defined Radio). OpenWifi เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เป„เบฎเป‰เบชเบฒเบ, เบฅเบงเบกเบ—เบฑเบ‡เบŠเบฑเป‰เบ™เบ•เปˆเปเบฒ, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบญเบฐเปเบ”เบšเป€เบ•เบตเป„เบฎเป‰เบชเบฒเบเปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบŠเบดเบšเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเป„เบ”เป‰. เบฅเบฐเบซเบฑเบ” เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบŠเบญเบšเปเบงเปเบฅเบฐ ss (Verilog) เบ•เบฑเบ™เบฎเบฒเบ”เปเบงเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ FPGA เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰ AGPLv3.

เบญเบปเบ‡เบ›เบฐเบเบญเบšเบฎเบฒเบ”เปเบงเบ‚เบญเบ‡เบ•เบปเป‰เบ™เปเบšเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ Xilinx Zynq FPGA เปเบฅเบฐ AD9361 universal transceiver (RF). OpenWifi เปƒเบŠเป‰เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ SoftMAC, เป€เบŠเบดเปˆเบ‡เบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ stack เป„เบฎเป‰เบชเบฒเบ 802.11 เบ•เบปเป‰เบ™เบ•เป (MAC เบชเบนเบ‡) เบขเบนเปˆเบ‚เป‰เบฒเบ‡เป„เบ”เป€เบงเบตเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบŠเบฑเป‰เบ™ MAC เบ•เปˆเปเบฒเบขเบนเปˆเบ”เป‰เบฒเบ™ FPGA. stack เป„เบฎเป‰เบชเบฒเบเปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบเปˆเบญเบ mac80211 เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เป‚เบ”เบ Linux kernel. เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เบเบฑเบš SDR เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบœเบนเป‰เบ‚เบฑเบšเบ‚เบตเปˆเบžเบดเป€เบชเบ”.

เป‚เบ„เบ‡เบเบฒเบ™ OpenWifi เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบดเบš Wi-Fi เป€เบ›เบตเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ FPGA เปเบฅเบฐ SDR

เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆ เบชเบณ เบ„เบฑเบ™:

  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบš 802.11a / g เปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบชเปเบฒเบฅเบฑเบš 802.11n MCS 0 ~ 7 (PHY rx เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ•เบญเบ™เบ™เบตเป‰). เบกเบตเปเบœเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ 802.11ax;
  • เปเบšเบ™เบงเบดเบ” 20MHz เปเบฅเบฐเบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเบ–เบตเปˆเบˆเบฒเบ 70 MHz เบซเบฒ 6 GHz;
  • เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ: เบชเบฐเป€เบžเบฒเบฐ (เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบฅเบนเบเบ„เป‰เบฒ), เบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, เบชเบฐเบ–เบฒเบ™เบตเปเบฅเบฐเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก;
  • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เบŠเบฑเป‰เบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบ”เป‰เบฒเบ™ FPGA DCF (เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ—เบตเปˆเปเบˆเบเบขเบฒเบ), เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ CSMA/CA. เปƒเบซเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป€เบŸเบฃเบก (SIFS) เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบš 10usโ€‹;
  • เบžเบฒเบฃเบฒเบกเบตเป€เบ•เบตเบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบŠเปˆเบญเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบเบณเบ™เบปเบ”เป„เบ”เป‰: เป„เบฅเบเบฐเป€เบงเบฅเบฒ RTS/CTS, CTS-to-self, SIFS, DIFS, xIFS, slot-time, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
  • เป€เบงเบฅเบฒเบ•เบฑเบ” (เป€เบงเบฅเบฒเบ•เบฑเบ”) เบญเบตเบ‡เบ•เบฒเบกเบ—เบตเปˆเบขเบนเปˆ MAC;
  • เบ›เปˆเบฝเบ™เปเบšเบ™เบงเบดเบ”เปเบฅเบฐเบ„เบงเบฒเบกเบ–เบตเปˆเป„เบ”เป‰เบ‡เปˆเบฒเบ:
    2MHz เบชเปเบฒเบฅเบฑเบš 802.11ah เปเบฅเบฐ 10MHz เบชเปเบฒเบฅเบฑเบš 802.11p;

เป‚เบ„เบ‡เบเบฒเบ™ OpenWifi เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบดเบš Wi-Fi เป€เบ›เบตเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ FPGA เปเบฅเบฐ SDR

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, OpenWifi เปƒเบซเป‰ เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เป€เบงเบ—เบต SDR เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ FPGA
Xilinx ZC706 เบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เบญเบฐเบ™เบฒเบฅเบฑเบญเบ FMCOMMS2/3/4 transceivers, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบกเบฑเบ” (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.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบนเบเบ„เป‰เบฒเบเบฑเบšเบญเบฐเปเบ”เบšเป€เบ•เบต USB TL-WDN4200 N900 เบเบฑเบšเบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ openwifi เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบฅเบธเป€เบ–เบดเบ‡ 30.6Mbps (TCP) เปเบฅเบฐ 38.8Mbps (UDP) เป€เบกเบทเปˆเบญเป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ›เบซเบฒเบฅเบนเบเบ„เป‰เบฒ. เปเบฅเบฐ 17.0Mbps (TCP) เปเบฅเบฐ 21.5Mbps (UDP) เป€เบกเบทเปˆเบญเบชเบปเปˆเบ‡เบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเป„เบ›เบซเบฒเบˆเบธเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡, เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ Linux เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป€เบŠเบฑเปˆเบ™ ifconfig เปเบฅเบฐ iwconfig, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš sdrctl utility เบžเบดเป€เบชเบ”, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบœเปˆเบฒเบ™ netlink เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ SDR เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒ (เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เบ›เปˆเบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบงเบฅเบฒ slice, เปเบฅเบฐเบญเบทเปˆเบ™เป†).

เปƒเบ™เบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบš stack Wi-Fi, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™ Wimeเบเบณเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบซเป‰เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบš IEEE 802.11 a/g/p เป€เบ„เบทเปˆเบญเบ‡เบชเบปเปˆเบ‡ เบญเบตเบ‡เปƒเบชเปˆเบงเบดเบ—เบฐเบเบธ GNU เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ›เบปเบเบเบฐเบ•เบด. เบŠเบญเบšเปเบงเป€เบ›เบตเบ” 802.11 stacks เป„เบฎเป‰เบชเบฒเบเบเบฑเบ‡เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™ เบŠเบตเป€เบฃเบ ะธ Sora (เบงเบดเบ—เบฐเบเบธเบŠเบญเบšเปเบงเบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ‚เบญเบ‡ Microsoft).

เป‚เบ„เบ‡เบเบฒเบ™ OpenWifi เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบดเบš Wi-Fi เป€เบ›เบตเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ FPGA เปเบฅเบฐ SDR

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™