一种基于接收端决策的介质访问控制(MAC)协议
2018-07-18李永锋姜胜明
李永锋,姜胜明
(上海海事大学信息工程学院,上海 201306)
0 引言
在无线网络环境中,各个移动节点共享同一个信道。由于受到节点发射功率限制和信道衰落的影响,各个移动节点的通信范围受到限制。当两个节点处于各自通信范围外的时候,这两个节点被称为各自的隐藏终端。当两个互为隐藏终端的节点同时向处于各自通信范围内的同一个节点发送消息的时候,可能产生信息的碰撞,使接收节点无法正常的接收信息。隐藏终端问题会导致信道资源浪费、节点能量消耗,使网络吞吐量降低并加大网络延迟。
目前,设计了许多MAC协议来解决隐藏终端的问题,其中运用比较广泛一种是采用基于单信道的RTSCTS握手机制,其基本思想是,在数据发送之前发送方与接收方通过RTS和CTS帧预约信道,其他邻居节点听到RTS和CTS后均延迟自己的发送,直到通信双方数据传输完毕。典型的单信道协议有:CSMA[1](Carrier Sense Multiple Access)、MACA[2](Multiple Access with Collision Avoidance)、IEEE802.11 DCF[3](Distributed Coordinated Function)等。当节点处在密集分布状态且要求数据快速发送时,RTS-CTS机制会出现因握手所耗费时间过长而导致信道的利用率和节点能量利用率降低的问题。在基于握手机制的MAC协议的基础上,有人提出了一种自适应重传超时(Retransmission Time-Out,RTO)[4]的方法。通过一种新的贝叶斯动态线性模型预测往返时间(Round Trip Time,RTT)的值,然后自适应地将RTO调整为预测值,从而解决数据帧的冲突问题,并提高网络吞吐量。此外还有一些基于流量自适应机制的MAC协议[5],通过对该机制中的退避窗口调节算法进行优化,也能在一定程度上避免隐藏终端的问题,并有效地改善吞吐量。部分基于双信道和忙音信道的协议,通过对信道的划分也能用来避免信息冲突 ,如 MARCH[6](Media Access with Reduced Handshake)、DBTMA[7~8](Dual Busy Tone Multiple Access)协议。但是这一系列的方法设计算法复杂,实现困难,不利于广泛使用。
另一种解决隐藏终端问题是从接收节点开始入手[9],其思路为:使接收节点的邻居节点知道自己此时不能进行数据发送。然而触发传输的是发送方而不是接收方,因此接收节点往往无法准确提前告知其周围邻居节点此时和将来一段时间的接收情况。
1 协议设计
1.1 协议概述
本文提出的MAC协议是一种基于握手机制的协议。该协议以接收节点为中心,发送数据的时间被分成两个部分,握手阶段(Handshake Time,HT)和数据发送阶段(Data transmission Time,DT)。在HT阶段分为两次握手,首先接收节点处于空闲状态时,会等待来自发送节点的发送计划信号(Plan Signal,PS)。当收到第一个PS时,会进入一段等待时间TW,在TW时间内,接收节点将持续保持空闲状态并接收其他发送节点的PS。发送节点需要发送信息时,首先会进入到侦听状态,若侦听到接收节点处于空闲状态则会进入随机等待时间(Backoff Time,BT),每个节点的BT是随机设定的。BT截止后,各发送节点将发送计划信号PS发送给接收节点并进入等待状态。接收节点收到PS后将其存储在接收计划表中。
接收节点建立接收计划后,对接收计划信息进行处理,然后打包成发送控制包(Send Control Package,SCP),发送给所有的邻居节点。邻居节点收到SCP后,将提取接收计划的信息,然后按照接收计划信息依次发送消息。该协议最主要的一个特点是,接收节点不只是与唯一的发送节点进行握手,而是在TW时间内与周围所有需要发送信息的邻居节点进行握手。这样在有多个节点需要发送数据的情况下,能够大大降低握手的等待时间,提高数据发送速率。此外通过握手能够掌握发送节点的发送信息,以此建立接收节点的接收计划。将合理的接收计划告知发送节点后,发送节点根据接收计划依次发送数据,这样不仅避免由隐藏终端导致的信息冲突,也避免了由暴露终端导致的信道资源浪费的问题。
1.2 协议特点
(1)握手策略
在HT阶段的握手策略是由发送节点主动发起握手。当接收节点处于空闲状态时会等待来自发送节点的PS。当发送节点有发送意愿的时候会进入到侦听状态,若在侦听过程中发现接收节点处于空闲状态,则会自动进入BT,当BT结束后,有发送数据意愿的邻居节点即发送节点,会将发送数据的时间Td记录到PS中,然后发送给接收节点,此时第一次握手结束。接收节点收到PS后,会将PS中的Td提取出来存储在接收计划表中以便在建立接收计划过程中使用。接收节点的接收计划建立后,会将接收计划记录在SCP中,然后将SCP发送给每一个邻居节点,邻居节点收到SCP后,有发送意愿的节点将按照接收计划依次发送数据,而没有发送意愿的节点将在整个发送过程中不在发送数据,此时第二次握手结束。本协议的握手流程图如图1所示,其中在第一次握手结束后的BT阶段,每一个节点的BT都是随机的,大小可能相同也可能不相同。当发送节点比较多的时候,发送节点将PS发送给接收节点时,产生信息冲突的概率也会大大增加。此时为每一个发送节点增加一个BT,最大程度的错开PS的发送时间,能在最大程度上降低接收节点接收PS时产生信息冲突的概率。
图1 握手流程图
(2)接收计划建立过程
在HT阶段,当发送节点向接收节点发送PS后,接收节点将根据PS到达的顺序和PS内的Td来建立接收计划。接收计划主要用来为每一个发送节点设定数据传输次序、划分数据传输时隙和预留信道。接收计划的建立过程如图2所示。发送节点1、发送节点2与发送节点3经过BT的等待后,开始发送PS给接收节点1。当发送节点1的PS最先到达接收节点1时,接收节点1将为发送节点1设定一个发送优先级(Send Priority Level,SPL),并令 SPL=1。发送节点 2 的 PS 第二个到达后,则其SPL=2,发送节点3的PS第三个到达,则SPL=3。SPL划分完成后,接收节点会将发送节点所发送的PS里的Td取出来与每个节点的SPL一起记录在接收计划表中。全部记录完毕后,接收节点将根据SPL和Td为每个发送节点设定发送等待时间TSi。当SPL=1时,TS1=TSIFS,即发送节点经过短帧间间隔(Short Inter Frame Space,SIFS)的等待后开始发送数据。当SPL=2时,TS2=TS1+Td1,即发送节点需要等待的时间为上一个发送节点的发送等待时间和发送时间之和。当SPL=3时,TS3=TS1+TS2+Td2。依次类推,当SPL=n 时,TSn=TS1+TS2+TS3+...+TS(n-1)+Td(n-1)。当发送节点的发送等待时时间设定完毕后,将其记录在SCP中发送给发送节点。同时,接收节点将设定一个接收数据时间Tr,其值Tr=TSn+Tdn。至此接收计划制定完毕,接收节点发送完SCP后会经过SIFS的等待后进入接收数据的状态,并开始计时。
图2 接收计划建立过程
(3)冲突避免机制
隐藏终端问题是本协议所需要解决的关键问题,在本协议的握手阶段,将会针对由隐藏终端问题导致的信息冲突给出解决方案。首先,在第一次握手阶段,在发送PS前通过随机的BT等待,可以避免发送节点发送PS到接收节点的过程中产生信息冲突,而没有发送意愿的节点若收到PS将进入到退避状态。当接收节点发送SPC后,无发送意愿的邻居节点接收到SCP提取出接收节点的等待时间Tr,开启计时器,并保持退避状态,直到Tr结束。在Tr期间无发送意愿的邻居节点可以进行信息的接收,但不能进行数据的发送,从而避免了隐藏终端和暴露终端的问题。
(4)数据传输
经过HT阶段的握手后进入到DT阶段,接收节点将SCP发送出去后便进入数据接收状态,同时开启计时器,直到Tr结束。发送节点接收到SCP后将提取对应的发送等待时间TSi。然后开启计时器,等待数据的发送。数据传输过程如图3所示。发送节点1的SPL=1,在经过TS1的等待后开始发送数据。当发送节点1数据发送结束后,由于发送节点2的SPL=2,所以在等待TS2后开始发送数据。接收节点3也在等待TS3后开始发送数据。每一个发送节点在收到SCP后均开启计时器然后进入数据等待发送状态。在整个数据传输过程中,通过为每一个发送节点设定发送等待时间TSi,使每一个节点在自己的时间区域内发送数据,从而避免由于隐藏终端导致的数据发送冲突。当Tr截止后,接收节点停止接收数据,清空接收计划表,重新进入到HT阶段。
图3 数据传输过程
2 仿真和结果分析
2.1 仿真场景及参数
本文将对本协议在静态网络拓扑结构中进行仿真,使用仿真软件为Exata。仿真主要对协议的行为和性能进行验证,并与现有的基于802.11协议的RTSCTS握手机制进行对比。在静态网络拓扑中,仿真场景大小为1000m×1000m,在场景中随机分布5个节点。节点的传输范围为500m。数据的传输速率为2Mb/s,数据包的长度为512byte,则数据包传输持续时间为0.125us。TW的时间设定为5ms。本文将从吞吐量、丢包率和时延这三个指标来评价本协议的性能。
2.2 仿真结果分析
(1)吞吐量
网络吞吐量是指在单位时间内所收到的数据包的字节数。如图4所示,当提供的负载较低时,两种协议的吞吐量相差不大。这是由于当负载很小时,数据包发送冲突也小,两种协议在握手过程中表现的性能相差不大。当负载逐步增加时,本MAC协议的在吞吐量的表现上开始优于RTS-CTS握手机制。当负载大于20时优势开始明显。这是由于当负载增大后,RTSCTS机制在握手过程中需要耗费更多的等待时间。而本MAC协议在TW时间内与多个发送节点握手,能够大大降低握手等待的时间,从而提高吞吐量。
图4 本MAC协议与RTS/CTS机制吞吐量比较
(2)丢包率
丢包率是指接收到数据包的个数与发送数据包个数的比值。图5所示为本MAC协议与RTS-CTS机制丢包率的比较。随着负载的增加,两种协议的丢包率均出现一定程度的增加。当负载小于30时,本MAC协议的丢包率比RTS-CTS的丢包率略小,当负载大于40时,RTS-CTS机制的丢包率比本MAC协议的丢包率逐渐变得更大。这表明,RTS-CTS机制和本MAC协议都能通过握手控制由隐藏带来的数据冲突问题,从而降低丢包率。在负载逐渐增加变大的情况下,本MAC协议比RTS-CTS机制具有一定的优势。但是两种协议随着负载的增加均出现了丢包率增加的现象,说明还不能完全解决由隐藏终端带来的数据冲突问题。
图5 本MAC协议与RTS/CTS机制丢包率比较
(3)端到端时延
在图6我们对比了本MAC协议与RTS-CTS机制的时延。当负载小于33.66时,本MAC协议与RTSCTS机制在时延上基本上没有区别,并且上升的变化很小。这是由于负载小,数据发生冲突的量很小,两种协议都需要在数据发送之前通过握手来预订信道,所以两种协议在发送数据之前都需要等待一定的时间,即造成的时延相差不大。当负载大于33.66时,本MAC协议的时延要比RTS-CTS的时延要小,这是由于本MAC协议在握手过程中,通过接收节点和多个发送节点握手,从而降低了握手的等待时间。此外握手完成后,节点按照接收计划进行数据发送也极大地减少了数据帧的冲突,所以其时延小于RTS-CTS。
3 结语
本文针对无线网络中隐藏终端和暴露终端的问题,设计了一种基于握手机制的以接收节点决策为主的新型MAC协议。该协议以接收节点在握手阶段与多个发送节点进行握手来获取发送信息并制定接收计划,合理安排信息的发送,从而解决了隐藏终端和暴露终端带来的数据发送冲突问题。通过在仿真平台上的大量模拟,并与RTS-CTS机制在吞吐量、丢包率和时延进行对比,结果表明本协议能够获得较高的吞吐量,比较低的丢包率和时延。
图6 本MAC协议与RTS/CTS机制时延比较