摘要:IEEE802.11标准中的媒体接入控制层(MAC)协议栈由包含22个子模块的有限状态机组成。在嵌入式系统的基础上实现802.11MAC层协议栈时,可以有多线程和单线程的设计方法,但它们都难以达到效率均衡的效果。这里提出的均衡多线程的设计方法,兼顾了系统效率和可实现性的要求,获得了良好的效果。仿真实验结果验证了此方法的高效性。
关键词:无线局域网;MAC协议栈;均衡多线程;嵌入式Linux
在无线局域网(WLAN)系统中,IEEE802.11标准仍然有许多需要改进的方面,如增强安全保障、QoS支持、漫游管理以及频谱功率合理分配等问题。IEEE组织仍在推出相应的修补标准来对WLAN技术进行更细致和优化的规定。如802.11e标准的制定是为在WLAN中提供QoS支持;802.11g标准的制定是为在2.4GHz频段上提高WLAN传输速率使之能支持高达54Mbps的速率。IEEE802.11是一个可扩展升级的标准集。顺应上述技术发展的要求,需要我们能提供一个可升级扩展的无线局域网设备实现系统。
在无线局域网设备实现系统中,硬件和软件结合以完成无线数据的物理获取和协议控制传输过程。IEEE802.11媒体接入控制层(MAC)协议栈由包括了22个子模块的有限状态机组成,在实现时可以有单线程和多线程的实现方式。在无线局域网标准中,随着支持的接入速度不断提高,要求实现的无线局域网设备的系统提高效率。在嵌入式系统中,由于单线程存在效率上的问题,原则上应该使用多线程来实现系统的各个模块。但在嵌入式系统的有限资源中完全采用多线程完成802.11MAC层的22个模块,则在线程调度方面又会浪费许多系统资源。单线程和多线程的实现过程中存在着一个效率均衡的过程。因此,我们提出了均衡多线程的802.11MAC层协议栈的设计方法,统筹考虑系统效率均衡和可实现性问题。一方面考虑使用多线程的技术来提高系统的效率,另一方面考虑到不能同时建立太多的线程,因为太多线程同样也会影响到系统在线程之间切换的时间和空间的花费,从而同样影响到系统的效率。
在综合考虑IEEE802.11MAC协议有限状态机中各模块的重要性和复杂度,与模块通信的消息权重以及与该模块关联的消息数量的情况下,同时考虑在嵌入式Linux的环境下线程数应保持在合理的线程范围,本文在实现整个MAC协议栈程序时建立了11个线程。每个线程的内部包含着多个不同的处理模块。在MAC层的各线程之间是通过消息队列的交互来进行通信。本文实现平台选用了Motorola的MPC860处理器平台和嵌入式Linux操作系统来组成WLAN接入点AP的实现框架。
IEEE802.11MAC协议功能与构成
MAC协议的功能
IEEE802.11MAC层主要提供了两种不同功能的接入方法:分散协调功能(DCF)和集中协调功能(PCF)。所谓的协调功能是指一个用来决定什么时候哪个工作站能发送数据的机制.DCF是IEEE802.11MAC的基本接入方法,它主要利用载波监听多路接入和冲突避免(CSMA/CA)的技术来收发异步数据。PCF收发具有实时性的数据,在使用上属于无竞争方法,只能应用在基础架构模式的无线局域网中。CSMA/CA机制首先判定信道是否处于空闲状态。如果信道是忙碌的,工作站必需延迟一个随机的时间直到发现传输媒介是空闲的,才能进行传送帧操作。
MAC协议栈的构成
在IEEE802.11标准的MAC内部模块图中,无线局域网接入点的MAC层的实现是由以下的8个大模块来组成,而8个大模块可以分成22个小模块(本文侧重介绍无线局域网接入点的MAC层实现,无线局域网终端的MAC层实现可同样得到)。8个大模块分别是MAC-Data-Service;MAC-Management-Service;Distribution-Service;MPDU-Generation-AP;Protocol-Control-AP;MLME-AP;Transmission;Reception.在图1中,MAC-Data-Service模块完成MAC层数据与LLC上层接口的处理过程.MAC-Management-Service则完成对MAC层内部运行进行管理并与站点进行管理握手的处理过程.Distribution-Service处理本MAC层与分布式系统的接口过程.MPDU-Generation-AP完成对MSDU和管理帧进行分段及其他的相关处理形成MPDU的过程.Protocol-Control-AP则主要完成DCF和PCF媒体接入管理控制机制的功能.MLME-AP具体完成MAC层有关管理的具体实施和有关管理帧的生成和解释.Transmission主要完成MAC层向PHY层发送数据及相关处理的过程.而Reception则完成MAC层从PHY层接收数据并进行相关处理的过程.上述MAC层的核心实现过程再加上外部的有关接口的配合,如:与LLC层接口的MAC-SAP接口、与站点管理实体进行接口的SM-MLME-SAP接口、与分布式系统DSM-SAP接口的DSM模块以及与物理层进行接口的发送和接收模块PHY-SAP-Tx,PHYSAP-Rx,即可构成一个完整的WLAN接入点MAC协议栈系统。
均衡多线程的实现
均衡多线程的MAC协议栈实现方法在具体的实现过程中,统筹考虑了系统的可实现性和系统的效率问题,在实现整个MAC协议栈程序时建立了11个线程。在每个线程的内部包含着多个不同的处理模块.11个线程表述如下:
其中mac-data-service-p线程中包含了MSDUto-LLC模块和MSDU-from-LLC模块;DSM-Interface的模块单独组成distribution-service-p线程;而mpdu-generation-ap-p线程中包括有MPDUGeneration和PM-Filter-AP模块;Rx-Coordination模块单独组成rx-coordination-p线程;Tx-Coordination模块组成tx-coordination-p线程;reception-p中包含了Channel-State、Validate-MPDU、Filter-MPDU和Defragment模块;而transmission-p中则包含有Data-Pump和Backoff-Procedure模块;mlme-ap-p中包含有Distribute-Mmpdus、Power-Save-Monitor、AuthReq-Service-AP、AsocService-AP、AuthRspService和Synchronization-AP模块.系统中MIB模块和Mlme-Requests和Mlme-Indications模块则与MAC-SAP接口模块组合到mac-sap-p线程中.mac-sap-p和ds-sap-p和phy-sap-p线程分别完成对不同的接口的操控功能。
在MAC层的各线程和线程之间是通过消息队列的交互来进行通信,通信过程可以直接定位到线程内部的各个模块。在图2中,distribution-service-p、mpdu-generation-ap-p和tx-coordination-p线程是循环处理的线程.它们之间的信号交互是通过消息队列的传递来完成的。每个线程拥有属于它的消息队列,如图2中的qDistribution-Service、qMPDUGeneration-AP和qTx-Coordination队列.线程运行时首先检查对应的消息队列中是否有消息,如有就进行处理,没有则线程转入节省资源的睡眠状态,直到又有一个新的消息到来才唤醒线程。线程处理完的结果要向别的模块传递时,则将结果封装成消息后抛送到目标模块所属的线程对应的消息队列中,然后由目标线程进行判断再传送到相应的处理模块中进行处理.例如图2的mpdu-generation-ap-p线程包含了2个处理模块,从qMPDU-Generation-AP队列中提取出来的消息通过判断处理后才决定调用Prepare-MPDU模块或PM-Filter-AP模块处理。
图2中的消息队列的结构中定义了线程调用互斥锁和信号状态锁。这些互斥锁和状态锁是为了避免信号在交互过程当中可能发生的线程处理碰撞问题。在消息队列中,Message结构是承载内容的主要结构.Message结构定义为:
typedefstruct{
Pidrec-p;
MsgTypesig-id;
MsgPriorityprio;
uintmsg-len;
union{
uchar*par-ptr;
ucharparcopy[MSG-BORDER-LEN];
}par-union;
}Message;
该结构中定义了接收消息队列的队列名称rec-q,接收处理模块的名称rec-p,消息信号的类型,消息信号的优先级,消息信号需要占用的长度.另外还定义了一个par-union的结构,当消息信号的占用长度不超过MSG-BORDER-LEN长度时,则在操作过程当中直接使用已经分配空间par-copy数组来存放消息信号的内容,而当长度超过MSGBORDER-LEN长度时,则在操作的过程当中必须新开辟出空间来存放消息信号所携带的内容。在上述MAC协议实现过程中,还需要定义在各模块中进行通信的消息。这里,我们定义了142个不同消息的类型。每个消息有不同的内容和定义,通过这样的消息交互可以完成各模块之间的通信过程。
实现的嵌入式平台
本文的研究内容是选择实现MAC协议栈的方法,并在相应的嵌入式处理器和嵌入式操作系统的平台上实现。在实现无线局域网AP的MAC层软件的选择方案中,我们选择Motorola公司的MPC860处理器平台和嵌入式Linux操作系统来组成实现的硬件和软件的平台。然后在这平台基础上来完成802.11MAC层协议软件的系统构建。
在图3的基于MPC860和嵌入式Linux平台的WLAN接入点设计方案中,专门设计出一个与无线物理层相对应的一个PHYI/O驱动接口,通过这个接口可以实现对无线物理层的基带处理芯片和其他的中频芯片、射频芯片和功放芯片的控制和调节,同时完成物理层数据的传输过程。MPC860的嵌入式处理器完成整个MPC860的系统运行的工作。MPC860中还内建了一个以太网驱动模块,通过设备驱动来实现与以太网的接口过程.在嵌入式Linux的基础之上,建立必要的设备驱动来实现对物理层接口的驱动和以太网的接口驱动。IEEE802.11标准的MAC层的协议栈的程序建立在嵌入式的Linux和系统的设备驱动之上,并与嵌入式Linux的内核紧密结合,以更好地实现系统的实时性,提高系统的效率。
性能分析
最后,我们对本文提出的均衡多线程的IEEE802.11MAC协议实现方法在嵌入式系统的平台上进行测试。一个是本文方法实现的无线局域网AP接入点;另一个是将MAC协议栈程序全部修改成22个多线程,通过22个消息队列进行相互通信的完全多线程实现的AP接入点模型;以及将多线程实现方法修改成单线程的程序,使用一个总的消息队列来进行通信,对消息队列中的各目标模块建立一个优先级调度过程的完全单线程AP接入点模型;并将mac-data-service-p线程、distribute-service-p线程和mpdu-generation-ap-p线程合并成1个线程,同时将mac-sap-p线程和mlme-ap线程合并成1个线程以形成共8个线程AP接入点模型;还将mpdu-generation-ap-p线程中的2个模块分成prepare-mpdu-p线程和pm-filter-ap-p线程,同时将transmission-p线程分开成data-pump-p线程和backoff-procedure-p线程,以共同组成13个线程的实现模式。将上述的5个模型进行数据转发实现测试。数据从有线网端口传送到无线网端口并发送出去,通过1个无线局域网终端进行数据的接收统计。有关的无线参数定义如下。
根据IEEE802.11标准规范,设定Tmac为MAC层传送处理时间。而将一系列数据帧传送到接收端所需要的传送时间Ttotal定义如下:
其中N为传送帧数量;L为传送的帧的长度;tPreambleTime+tHeaderTime为传送帧而加上的前导码和物理帧头传输时间;CW是传送帧之前的退避时间,假设没有碰撞发生,CW从[0,aCWmin]中提取随机数;τ为无线传播延迟时间;tACKTime定义为tACKTime=(tPreambleTime+tHeaderTime+14*8/Rate),假设信道环境不发生改变,从统计的接收时间Ttotal中即可得出MAC层处理时间Tmac来反映MAC层的处理时间效率问题.另外定义丢帧率为μlost丢帧率反映了当采用不同的线程设计MAC协议栈,数据帧通过消息队列过程传递时,由于调度效率问题得不到及时的处理所引起的超时而丢弃数据帧的概率.MAC协议栈的设计应该能够保证数据帧的及时传送,防止消息队列堆栈的溢出,以降低丢帧的可能。实验中通过统计出丢帧数量Nlost,定义丢帧率为
实验中,从有线端传送出10000个帧,通过从另一个无线局域网终端用网络捕获工具,如Networkspy软件进行接收并统计他们的丢帧率和10000个帧从发送到接收所需的时间。帧的大小从1500bytes到60bytes测量5个阶次.然后,再反过来从无线终端发出同样的信号并测量系统反向的丢帧率和发送接收所需的时间,并与前面正向链路传输测试的结果进行平均。
在上述实验中,假设无线接入点与终端之间传输状况理想,无特定外界干扰源,不考虑由于媒介影响所引起的丢帧情况。得到的结果如图4(a)和图4(b)所示,图中的各点值是10次试验结果的平均值.图4(a)表示发送不同长度帧与系统的丢帧率的关系,可以看出随着帧长度的变大,采用均衡多线程的MAC实现方法要优于完全单线程实现方法和完全多线程的实现方法。在图4(b)中,在外部无线传送环境一样的条件下,传送时间的差别就体现为实现的MAC协议栈的效率。可以看到完全多线程实现方法和完全单线程的实现方法所需的传送时间均长于均衡多线程的实现方法。实验结果验证了均衡多线程方法来实现IEEE802.11MAC协议的高效性。
结束语
无线局域网技术发展要求设计出高性能的产品实现平台。本文提出将均衡多线程的MAC协议实现方法和基于嵌入式Linux实现平台结合起来,提高了系统的效率,得到了良好的效果。实现的WLAN平台一方面可以转化实现成商用的产品,另一方面可以作为WLAN技术发展的研究平台,跟踪最新标准技术的发展,如支持QoS业务的IEEE802.11e草案和支持增强安全认证的802.11i以及优化频谱利用和功率控制的802.11h标准都可以在这个平台上进行实现及进行仿真研究。