摘 要 分析IEEE802.11 DCF在实现广播数据传输中存在的问题,提出了一种新的无线自组网MAC层协议。采用循环访问的方式,分别向邻居节点发送数据。在网络负载较轻的情况下,该协议具有较好性能,能够实现可靠的广播。关键字 无线自组网; MAC; 广播0 引 言 无线自组网是一种无线移动通信网络,由一组带有无线收发设备的移动自主节点组成的自治系统,移动节点之间作为对等实体通过无线链路连接,而不借助于任何已经建立的网络基础设施或集中管理。由于信道的动态变化以及分布式控制等特点,设计适用于移动自组网的分布式MAC层协议,已成为移动自组网的研究热点之一。移动自组网的MAC层协议主要描述和实施无线移动节点对无线信道的多址接入。 目前,所有无线自组网广播/多播路由协议都是利用无线信道的广播特性来实现的。例如,ODMRP[1]就是利用MAC层的广播特性来实现路由的发现和数据包的传输。因此,MAC层对于广播/多播路由的实现来说是十分重要的。IEEE802.11标准委员会制定了无线网络MAC层协议标准。但是,它只能为单播数据传输提供可靠性。它使用的是CSMA/CA载波监测机制,通过交换RTS/CTS/ACK控制帧来预约信道和保证数据帧的正确接收,实现可靠的数据传输。然而,对于广播数据来说,数据要被发送到所有的邻居节点,如果邻居节点都试图交换CTS/ACK控制帧,必然会导致CTS/ACK帧在发送节点处的冲突。 在本文中,我们提出了一种新的无线自组网MAC层协议,以一种循环访问的方式向各个邻居节点发送数据,能够实现可靠的广播。 1 预备知识 该协议借鉴了IEEE802.11 DCF的部分相关技术。所以,先对其进行简要的介绍是必要的。 IEEE802.11 DCF[2][3]是IEEE802.11标准委员会制定的无线局域网信道接入协议,用于ad hoc结构的网络。IEEE802.11源于CSMA /CA,对CSMA /CA进行了扩展,加入了ACK控制帧来实现链路层的确认。它使用CSMA/CA的载波监听机制来监听信道,使用RTS/CTS来实现信道的预约。在实现CSMA/CA过程中,采用了两种独特的技术。 虚拟载波监听技术:RTS/CTS/DATA/ACK。网络中,节点A有数据要发送给节点B时,先发送一个RTS控制信号给节点B;节点B收到RTS后 ,回送一个CTS信号。RTS/CTS中有一个Duration/ID字段,用于指示无线资源被占用的时间。这样,在A和B的通信范围内,所有收到RTS或CTS信号的节点都将停止发送和接收数据,并且将它们的网络配置矢量(NAV)计数器设置为Duration/ID字段所对应的时间值;只有当NAV=0时,这些节点才可以再次侦听无线链路。同样,在节点发送DATA/ACK中也设定了信道被占用的时间。 随机接入技术:一旦发生冲突,该节点要根据二进制指数退避算法计算随机退避时间。 2 新的MAC层协议2.1 节点信息列表 在我们提出的MAC层协议中,每个节点都需要保存三个列表:邻居列表(NEIGHBOR LIST),发送数据缓存列表(SEND BUFFER),接收数据序列号缓存列表(RECEIVER BUFFER)。节点通过(RTS/CTS/DATA/ACK/HELLO)来确定和更新它们的邻居节点信息。节点收到其中任何一个帧时,将更新它的NEIGHBOR LIST。当然,如果在一定的时间间隔之内没有收到来自NEIGHBOR LIST中某一节点的以上任何一种帧,将把该节点从NEIGHBOR LIST中删除。 在SEND BUFFER中存储着已发送但未被其所有邻居节点成功接收的帧的副本,这些帧还会被重新发送。当该节点的所有邻居节点都已成功接收一个数据帧时,该数据帧的副本将从SEND BUFFER中删除。SEND BUFFER中所能存储的数据帧数目不应小于所有节点中邻居节点数的最大值。除SEND BUFFER以外,每个节点还保存一个数据缓存队列用于缓存未发送的数据帧。 最后,每个节点还保存着一个RECEVIER BUFFER列表,其中存储着已被成功接收数据帧的序列号。在发送节点发送的RTS中包括要发送数据帧的序列号,接收节点接收到RTS后,将RECEIVER BUFFER中的序列号和RTS中的进行比较,判断是否存在未成功接收的帧的序列号。如果有,则在CTS中指出这些数据帧的序列号。 2.2 协 议 当节点有数据要发送时,首先通过CSMA/CA的载波监听机制来监听信道,像IEEE802.11 DCF一样。如果信道是空闲的,发送节点向它的一个邻居节点发送RTS帧,在其中列出在SEND BUFFER中已发送的数据帧和当前要发送的数据帧的序列号。在收到RTS帧之后,这个邻居节点检查它的RECEIVER BUFFER列表,确定要接收的数据帧的序列号。当列表中缺少以前已发送的数据帧的序列号,则在CTS帧中指出未成功接收数据帧中序列号最小的一个。如果只缺少目前正准备发送的数据帧的序列号,则在CTS响应帧中指出该数据帧的序列号。 所有接收到RTS的其它邻居节点,将退避足够长的时间以便CTS/DATA/ACK的发送。发送节点收到CTS之后,发送在CTS中指出的序列号所对应的数据帧。所有收到CTS帧的节点(除发送节点)将退避足够长的时间使得DATA/ACK发送。接收到DATA后,目的节点更新自己的RECEIVER BUFFER列表,将所接收数据帧的序列号添加到RECEVIER BUFFER列表中,并发送ACK确认帧。其它接收到DATA帧的节点同样更新它们的RECEIVER BUFFER列表。发送节点接收ACK之后,判断刚才发送的数据帧是不是节点当前正准备发送的数据帧。如果不是,则继续向该邻居节点发送RTS帧,直到当前要发送的数据帧被接收为止。在这个过程中,监听信道的过程被省略,因为信道一直被此次通信所占用。一旦目前要发送的数据帧被发送且得到确认,原节点将该数据帧的副本保存在SEND BUFFER中,然后选择在NEIGHBOR LIST的下一个邻居节点重复执行以上步骤。 当发送节点一直有数据要发送时,这种循环发送的过程可以正常进行。但是,当发送节点的发送队列中没有数据要发送时,循环的过程将暂停,从而发送节点不知道下一个邻居节点是否已经成功接收了全部已发送数据帧。直到有新的数据要发送时,发送节点才能确定这一点。为了解决这个问题,协议设计了一个发送计时器,当发送节点在计时器设定的时间间隔内没有发送RTS帧,则发送节点将选择NEIGHBOR LIST中的下一个邻居节点发送RTS帧,这样循环过程可以继续进行。当所有的邻居节点都被访问,而发送队列仍为空时,循环过程终止,发送计时器关闭。直到有新的数据帧要发送时,发送计时器重新启动,循环发送重新开始。当信道争用过于激烈时,协议将退化成802.11这种不可靠的广播模式。因过高的信道争用率将导致控制帧和数据帧的重传。当重传次数超过协议的设定的重传次数最大值时,节点将删除NEIGHBOR LIST中的所有邻居节点,转去执行IEEE802.11协议,直到有新的邻居节点被发现。 3 性能分析 该协议充分利用了无线信道的广播特性。当发送节点与邻居节点通信时,其他邻居节点通过侦听信道,也可以接收目前尚未成功接收的数据帧,从而极大的减少了循环发送过程中数据帧的发送量,节省了宝贵的无线信道资源。使用RTS/CTS进行信道预约,减少了信道争用冲突,提高信道的利用率,并较好的解决了隐发送终端的问题。 4 结束语 该协议弥补了IEEE802.11 DCF只能对单播数据提供可靠传输的不足,充分利用了MAC层的广播特性,为广播数据提供可靠性。该协议在广播信道的争用率较低的情况下,运行效果较好。下一步的工作重点就是在现有的高效多播路由协议中加入流量控制和拥塞控制机制,以保证这种新的MAC层协议能够高效的运行。 参考文献:[1] Sung-Ju Lee, Mario Gerla, Ching-Chuan Chiang[C]. On-demand multicast routing protocol, Proceedings of IEEE WCNC’99, 1999; 1298-1302.[2] Editors of IEEE 802.11, wireless LAN medium access control (MAC) and physical layer(PHT) specification[S], Draft Standard IEEE 802.11, 1997.[3] Shugong Xu, Tarek Saadow i. Does IEEE 802.11 MAC Potocol Work Well in Multihop Wireless Ad Hoc Networks[J]. IEEE Communications Magazine June 2001, 39(6) : 130-137.[4] Ray S, Carrathers J.B, Starobinski D. RTS/CTS induced congestion in ad hoc wireless LANS[J], Wireless Communications and Networking, 2003.[5] 赵志峰,郑少仁 . Ad Hoc网络 信道接入技术研究[J].解放军理工大学学报(自然科学版),2001,2(3):47-51.