WifiNetDevice架构

这张图展示了一个Wi-Fi设备从上层应用接收数据包到通过天线发送出去,以及反向从天线接收信号到向上层递交数据包的完整过程。它遵循标准的 OSI模型,清晰地分离了 MAC层 和 PHY层 的功能。
架构可以分为三个主要部分:
- 与上层的接口(最上方)
- MAC层组件(中间部分)
- PHY层组件(下方部分)
组件详细说明
1. 与上层的接口
Send(packet, dest, proto)/ForwardUp:- 这是Wi-Fi设备与网络栈上层(如网络层)的接口。
Send: 当上层(如IP层)有一个数据包要发送时,它会调用这个函数将数据包传递给Wi-Fi设备。ForwardUp: 当Wi-Fi设备成功接收到一个目标是本机的数据包时,它会通过这个函数将数据包向上传递给网络层。
2. MAC层组件
MAC层负责信道访问控制、组帧、校验等。
WifiMac(及其子类TagMAC,ApWifiMac,StaWifiMac等):- 这是MAC层的核心,有不同的实现类来模拟不同的网络角色(如站点STA、接入点AP、自组网节点Adhoc)。
- 功能:负责处理关联、认证、信标帧发送、探测等MAC层管理功能。数据包的 MAC头 就是在这里添加的。
Txop(Transmission Opportunity):- 功能:处理数据包队列,并存储 DCF/EDCA 信道访问参数。在支持 QoS 的设备中,每个接入类别(AC:Voice, Video, Best-Effort, Background)都有一个独立的
Txop实例。 Enqueue: 从WifiMac接收数据包并将其放入相应的队列中等待发送。
- 功能:处理数据包队列,并存储 DCF/EDCA 信道访问参数。在支持 QoS 的设备中,每个接入类别(AC:Voice, Video, Best-Effort, Background)都有一个独立的
ChannelAccessManager:- 功能:决定何时可以授予信道访问权。它实现了 CSMA/CA 协议的核心逻辑,监听信道状态(空闲、繁忙),管理退避计时器,当条件满足时,它授权
Txop进行传输。
- 功能:决定何时可以授予信道访问权。它实现了 CSMA/CA 协议的核心逻辑,监听信道状态(空闲、繁忙),管理退避计时器,当条件满足时,它授权
FrameExchangeManager:- 功能:一个类层次结构,负责处理特定协议标准(如802.11n, 802.11ac)的帧交换序列。例如,它管理一次完整的数据传输,包括 RTS/CTS、数据帧、ACK/BlockAck 的整个握手过程。
BlockAckManager:- 功能:管理 BlockAck 协议。当使用块确认(一种提高效率的机制,允许一次确认多个数据帧)时,这个管理器负责维护BlockAck协议、缓存已发送但尚未被确认的数据包,并根据接收到的BlockAck帧进行确认。
MacRxMiddle:- 功能:处理数据包分片的重组。当发送端将一个大的数据包分成多个小的MAC帧发送时,接收端的
MacRxMiddle负责将这些分片收集起来,并重组为原始的数据包。
- 功能:处理数据包分片的重组。当发送端将一个大的数据包分成多个小的MAC帧发送时,接收端的
3. PHY层组件
PHY层负责信号的调制、编码和发送/接收。
WifiPhy:- 这是物理层的核心抽象。
- 功能:负责将MAC层的帧转换为真正的无线电信号,以及将接收到的无线电信号转换回MAC帧。
StartTx: 当被MAC层触发时,它开始一个发送过程。StartReceivePreamble: 当从信道检测到信号时,它开始一个接收过程(首先尝试解码前导码)。
PhyEntity:- 功能:处理特定协议修订版(Amendment-specific)的PHY层细节。例如,不同的类负责实现 802.11a/g, 802.11n, 802.11ac 等不同标准特有的调制、编码和信号处理方式。这使得
WifiPhy能够支持多种标准。
- 功能:处理特定协议修订版(Amendment-specific)的PHY层细节。例如,不同的类负责实现 802.11a/g, 802.11n, 802.11ac 等不同标准特有的调制、编码和信号处理方式。这使得
Listener:- 这是一个内部接口或回调机制,用于通知MAC层关于PHY层状态的变化,例如信道从繁忙变为空闲,这对于
ChannelAccessManager至关重要。
- 这是一个内部接口或回调机制,用于通知MAC层关于PHY层状态的变化,例如信道从繁忙变为空闲,这对于
4. 信道与传播模型
Channel(Spectrum or Yans):- 这是模拟的无线媒介本身。
- 功能:负责将信号传递到所有连接到这个信道的其他
WifiPhy对象。在传递过程中,它会咨询传播损耗模型(如自由空间损耗、阴影衰落)和传播延迟模型,以模拟真实的无线环境效果。
数据流总结
发送路径:
Send() -> WifiMac (添加MAC头) -> Txop (入队) -> ChannelAccessManager (竞争信道) -> FrameExchangeManager (组织帧交换) -> WifiPhy (转换为信号) -> StartTx -> Channel (发射到空间)
接收路径:
Channel (从空间接收信号) -> WifiPhy (StartReceivePreamble, 转换为数字帧) -> FrameExchangeManager (处理帧交换) -> MacRxMiddle (重组分片) -> WifiMac (处理MAC逻辑) -> ForwardUp() (递交给上层)