Fuchsia无线网络


英文原文快照


简介

Fuchia的无线网络软件栈旨在提供IEEE 802.11标准的兼容非AP实现,它同时支持具有”FullMAC“和”SoftMAC“固件的硬件,其中802.11规范的MLME层分别在固件和主机OS中得以实现。

高层次架构

  1. +------------------+ +------------------+
  2. Fuchsia service | Fuchsia netstack | | Fuchsia Wireless |
  3. | | | Network Service |
  4. +------------------+ +------------------+
  5. ^ ^ ^
  6. | | |
  7. fdio/FIDL ------|------------------------|----------------|-------------------
  8. | | |
  9. v | v
  10. +------------------+ | +--------------+
  11. | Fuchsia ethernet |<--------|-------------->| Fuchsia WLAN |
  12. | driver | | | MLME driver |
  13. devmgr +------------------+ | +--------------+
  14. ^ | ^
  15. | | |
  16. v v v
  17. +-------------------+ +-------------------+
  18. | Driver | | Driver |
  19. | (Full MAC device) | | (Soft MAC device) |
  20. +-------------------+ +-------------------+
  21. ^ ^
  22. \ /
  23. hardware bus --------------------\----------------/------------------
  24. (USB, PCI, etc) \ /
  25. v v
  26. +---------------------+
  27. | Wireless networking |
  28. hardware | hardware |
  29. +---------------------+

驱动

FullMAC驱动依赖于无线硬件中的固件来实现大多数IEEE 802.11中的MLME功能。

SoftMAC的驱动实现了与无线硬件通信的基本构建块,允许Fuchsia中的MLME驱动执行IEEE 802.11的MLME功能。

Fuchsia的MLME驱动是独立于硬件的层,为同步、身份验证、关联和其他无线网络状态提供了状态机维护,它与SoftMAC驱动进行通信来管理硬件。

WLAN服务

Fuchsia的无线网络服务实现了IEEE 802.11的SME功能,并保留了当前环境中所有可用无线网络的状态,它是系统UI等组件(通过驱动程序)使用硬件的接口。

和以太网软件栈的关系

FullMAC驱动或Fuchsia WLAN的MLME驱动在devmgr中以以太网设备的形式存在。该设备的行为与其他任何以太网设备并无区别,并向系统的其余部分提供数据包。

TBD:考虑是否始终使用Ethernet II的帧,或支持802.2的SNAP帧。

接口

Fuchsia的无线网络服务通过ioctl操作获得的驱动程序信道,与每个硬件设备进行通信(最终将由FIDL替换)。通过此信道交换的消息将为每个操作的请求/响应进行编码,编码通常遵循IEEE 802.11的MLME SAP定义。

对于SoftMAC设备,硬件驱动程序和通用MLME驱动程序使用针对wlan设备的DDK“协议”进行进程内通信。通过此接口公开的原语操作包括发送、接收和设置无线电(radio)信道。