基于FPGA的IEEE|基于FPGA的IEEE 802.11协议的实现

一、引言

1.1 IEEE 802.11协议简介
随着网络通讯技术的不断发展,如今无线局域网(WLAN)中应用最广的标准是IEEE 802.11系列标准,该协议从推出至今,不断修改完善,已日趋成熟。IEEE 802.11-1997是最初定义的IEEE 802.11标准,该协议工作于2.4000至2.4835GHz的ISM频段。它主要用于解决办公室局域网和校园网中用户与用户终端的无线接入。该协议的MAC层主要引入了带冲突避免的载波侦听多路访问协议(CSMA/CA)和请求发送/允许发送(RTS/CTS)协议。
首先介绍下载波侦听多路访问/冲突避免协议(CSMA/CA)的主要内容。一个节点要发送数据时首先会侦听信道的状态。如果侦听到信道处于空闲状态且空闲时间达到一个分布式帧间间隔(DIFS)时,节点便传输数据。如果侦听时发现信道处于忙碌状态或者信道刚开始处于空闲状态但是空闲时间还未达到DIFS时便转为忙碌状态,这时节点会随机产生一个退避时间,然后在退避时间之后再检查信道是否空闲,从而决定能否传输数据(这是该协议避免冲突的主要策略),以此来将该节点发出的数据在传输过程中与其他节点发出的数据发生冲突的概率最小化。此外,为了避免信道的使用权长期被一个节点占领,因此某一节点在完成一次成功传输之后,除了要等待一段DIFS的空闲时间之外,还必须等待一段随机生成的退避时间。
节点发送数据前如果侦听到信道处于忙碌状态,则需要随机退避一段时间,该段时间结束后再发送数据。其具体操作过程是:节点发现信道忙碌后会在某个整数范围内随机选取一个整数值,该整数值会储存在一个退避计数器里,当侦听听到信道空闲时,会持续侦听一个DIFS时间,如果在这一DIFS时间内信道一直处于空闲状态,则将这一DIFS之后紧跟着的那段时间分成一个个时隙(每个时隙可看成是一小段时间,其大小由物理层决定)。每过一个时隙退避计数器的值减一,如果侦听听到信道处于忙碌状态,退避计数器的值便保持不变,直到信道恢复空闲并且空闲时间又一次长达DIFS之后,再继续每过一个时隙退避计数器的值减一,当退避计数器的值减为0时,节点发送数据。
上述所说的节点为退避计数器选取的初始值是在范围(0,w-1)内随机选取的,w称为竞争窗口,其大小取决于传输数据的节点的数量,其中最大竞争窗口CWmax和最小竞争窗口CWmin之间的关系如式(1)所示。
(1)
请求发送/允许发送(RTS/CTS)协议是为确保数据被成功发送到目的节点而制定的,接下来介绍该协议的主要内容。接受端在收到发送端发送过来的信息后,会在一段SIFS时间(小于DIFS时间)后向发送节点发送ACK应答,如果发送节点收到了ACK应答,则表明数据成功发送,否则表明发送失败。因为SIFS时间比DIFS时间短,因此只有当ACK发送完之后其他节点才有可能侦听到信道处于空闲状态的时间长达DIFS。如果节点在一段指定的时间内没有接受到ACK应答或者它检测到信道上有其他的数据在传输,则表示发送冲突,它会根据给定的退避规则重新传输数据。
如图1所示,两个节点A和B共享同一个无线信道。在一次数据成功传输之后,B节点在进行下一次传输之前首先等待了DIFS,然后选取了退避计数器初始值为8。我们假定A节点在图中箭头所示的时间处要进行数据传输。在一个DIFS之后,数据包进行传输。注意A节点在B节点退避过程进行中要传输数据,此时对于B来说,退避计数器的值为5。故而节点B这时会感知信道忙碌,因此B节点的退避计数器的值会维持在5不变,当信道被侦听到为空闲状态长达DIFS后退避计数器的值会再一次开始减小。当A节点发送数据结束后过一段SIFS时间,收到目的节点发送过来ACK应答。










图1


1.2 802.11参考设计工程及WARP V3开发板简介

Mango通信802.11参考设计工程是用WARP V3开发板对IEEE802.11协议正交频分复用物理层和分布式协调功能MAC层一个实时的FPGA实现。802.11个参考设计完全在WARP V3开发板中实现。物理层的功能被划分到不同的模块中(发送模块、接收模块、AGC、硬件控制模块等)。媒介访问控制层主要通过运行在MicroBlaze CPU中的软件部分来实现,这在FPGA开发板中由专门的内核来实现精确的分组间时序。
802.11个参考设计完全在WARP V3节点的FPGA中实现。PHY处理分为多个核心(TX、RX、AGC、硬件控制等)。MAC主要是在两个微闪存CPU中运行的软件中实现的,在FPGA中具有支持核心以实现准确的分组间定时。整个设计集成在Xilinx Studio Studio(XPS)中。所有组件的源代码/模型可在存储库(/ReavyDealths/W3Y802.11)中使用,并在芒果参考设计许可证下分发。
















二、硬件、软件模块的原理方法

2.1硬件部分

芒果802.11参考设计实现了一个基于FPGA开发板完整的,实时的物理层传输。物理层实现是基于802.11-2016标准中的第17和第19节中指定的正交频复用物理层。这个PHY通常被称为“802.11a/n”(5GHz)和“802.11g/n”(2.4GHz)。PHY采用11A/G/N标准作为其许多参数(子载波分配、前导结构等)的默认值。这些参数中的许多可以通过对PHY核心初始化脚本的微小更改来定制。

2.1.1物理层架构

802.11参考设计程序物理层实现被分成以下三个FPGA内核:
(1)wlan_phy_tx_pmd:OFDM传输器
(2)wlan_phy_rx_pmd:OFDM和DSSS接收器
(3)wlan_phy_agc:自动增益控制器(AGC)








在架构的一端,PHY核通过w3_ad_brige核直接连接到WARP V3硬件上的ADC和DACS。这些接口是运行在10, 20或40MHz的复杂的采样流。在另一端,核心连接到Tx和Rx包缓冲器。分组缓冲器被实现为双端口RAM,每个端口具有专用于PHY访问的一个端口,并且另一个端口与AXI互连连接以供CPU访问。

2.1.2 物理参数

时钟频率:160MHz
带宽:10, 20或40MHz
OFDM格式(64个子载波,16采样循环前缀):
1)非HT波形(11AG):48个数据副载波,4个导频音
2)HTMF波形(11n):52个数据副载波,4个导频音
帧格式:如802.11-2012第18和20节所述:
速率:如下表所示,每个数据速率通过调制和编码速率的组合来实现。











多天线支持:当前PHY TX/RX管道是SISO,支持标准中的第18和20节中规定的调制/编码速率。PHY天线接口在WARP V3硬件上的两个RF接口上实现选择分集。每个分组进行天线选择。对于传输,天线选择总是由CPU低C代码控制。对于接收,PHY可以基于AGC增益选择自动选择更高SNR天线。或者,CPU低的C代码可以强制接收天线选择。

2.1.3 接收模块架构图










2.1.4 发送模块架构图



【基于FPGA的IEEE|基于FPGA的IEEE 802.11协议的实现】









2.2软件部分

高层MAC CPU负责非时间关键的分组间行为。底层MAC CPU负责时间关键的分组内行为。

2.2.1数据传输概况

让开发板实现数据传输有三种方法:无线MPDU接收,网络帧接收,用户交互事件。这三种方式的程序流程图如下。
无线MPDU接收:




















网络帧接收:















用户交互事件:




























2.2.2数据传输主要函数

the frame_receive():负责接收到数据帧的后续处理过程,主要包括将接收到的数据包进行处理并且需要的话向上层传输以及确定是否发送ACK回传指令等。
ltg_sched_create(LTG_SCHED_TYPE_PERIODIC, &my_ltg_schedule, &my_ltg_pyld, NULL):负责随机产生数据并调动发送数据的进程。
ltg_sched_start(my_ltg_id):开启数据发送。







三、实验过程介绍



3.1 实验过程介绍

本次实验利用参考设计工程的用户交互事件来实现数据的发送,并用Wireshark软件检测数据的接收,最后进行误差矢量检测(EVM)和发射功率精度检测,以验证该设计的传输性能。

3.1.1 数据包传输流

数据包在参考设计程序之间进行传输时,数据包的内容可被高层CPU、底层CPU和PHY核访问,这几部分之间的交互连接如下图所示:

















3.1.2数据包发送过程介绍

如下图所示。在用户交互事件模式下,在程序中输入的数据包会抵达在传输队列中,传输队列中的数据包会在相应函数的调用下被一个个放入传输缓冲器,传输缓冲器中有数据包时,会向CPU发送中断申请,CPU处理中断,按照802.11协议有发送端向程序中所给的物理地址发送数据。








3.1.3数据包接收过程介绍

如下图所示。当接收端有数据包接收到时,首先会判断是否是干扰信号,判断为干扰信号时将数据包丢弃;否则将接收到的数据包传递到接收缓冲器中。接收缓冲器中有数据包进入时,会向CPU发起中断申请,CPU处理中断,将接收缓冲器中的数据包进行处理,送达到高层进行下一步处理。











3.1.4数据包拥塞过程

参考设计程序中,接收端的代码是接收到无线信道中的无线信号后,会首先判断是否是干扰以及若不是干扰的话是什么类型的信号,若接收到的是广播的信号,则按照802.11协议进行退避规则,所以如果在开发板进行退避规则之前便进行数据的发送,则可以阻塞其他设备无线信号的传输。



















四、实验结果


发送数据时wireshark捕获图:















抢占信道时wireshark捕获图:


























传输EVM测试结果图:















发射功率精度检测图:























五、未来与展望


在接下来的工作中,笔者会讲本次的成果应用起来,本次课题中实现的抢占信道,可以用在中间人攻击中。笔者会在接下来的工作中,用本次的实验成果搭建中间人攻击实验平台。进行中间人攻击方面的相关研究。

    推荐阅读