林 文
(1.闽江学院计算机与控制工程学院,福建 福州 350108;2. 福建省信息处理与智能控制重点实验室,福建 福州 350108)
海洋面积约占地球面积的71%,远远超过陆地面积,海洋对整个人类的生存和社会发展具有重要意义。随着陆地上无线传感器网络的飞速发展,低成本、高可靠性的水下声传感器网络成为近年来的新研究热点[1-2]。 水下声传感器网络被认为是探索和开发海洋的重要途径,可为资源保护、污染监测、灾害预警、海洋工程、海洋军事和其他海洋活动提供更好的技术支持[3]。
介质访问控制(media access control, MAC)协议主要作用是在不发生数据包碰撞的情况下协调网络中的多个终端节点共享公共信道。由于水下通信主要采用声波通信,声信道的带宽受限使得MAC协议的设计成为水下声传感器网络中的重要支撑技术之一。然而,水下声信道的一些固有特性,如高传播延迟,有限的能量和多径效应等,会使MAC协议的设计面临诸多挑战[4-5]。
基于握手接入机制的MAC协议通过控制包交互避免数据包发生碰撞,可以有效地减少隐藏终端和暴露终端等问题,同时水声信道具有独特的复用性,所以握手接入机制在吞吐量、端对端时延和功耗等方面具有明显的优势[6-7]。陆地上无线传感器网络的经典握手机制协议均被利用于水声传感器网络MAC协议的设计,然而传统的握手协议在水声传感器网络中面临着信道利用率低和控制包失效等问题[8-9]。
FAMA(floor acquisition multiple access)协议是一种采用载波侦听的握手协议,它可以较好地解决数据包碰撞问题。但是所需的控制包长度取决于传播时间,在水下声信道中控制包的长度变得过大,会导致能量损耗[10]。时隙FAMA协议对 FAMA 协议进行一些改进,使之更加适合水声传感器网络。在时隙FAMA 协议中,节点之间必须时间同步,并且每个节点只能在时隙的开始时刻发送控制包和数据包。每个时隙的长度都要足够长,这样才能保证控制包及时通知到周围所有的潜在干扰节点。虽然可以解决控制包传递问题,但是由于分配的时隙太长,节点在等待控制包交换的时间同样变长,导致信道的空闲时间增多,信道的利用率低[11]。本文提出一种改进型时隙FAMA协议,该协议通过并发预约机制减少控制包交换时间,降低高传播时延对协议性能的影响,同时通过时隙的方式克服控制包传递问题。
由于FAMA协议不能解决水声传感器网络中存在控制包失效问题,控制包不能及时通知到所有潜在干扰节点。时隙FAMA协议通过时隙方式来消除控制包失效问题,针对节点发送控制包和数据包的时间施加限制,即每个包(RTS、CTS、DATA或ACK)必须在一个时隙的开始时刻发送。时隙长度必须确保没有控制包和数据包冲突发生并允许所有邻居节点侦听到所需的信息,以便它们判断在下一时隙开始时刻的发送是否会干扰正在进行的发送。时隙FAMA协议设置的时隙长度为τ+γ,其中τ是最大传播延迟,而γ是控制包的传输时间。这种方式保证了在一个时隙的持续时间内,在传输范围内的所有节点都接收到发送节点在时隙开始时刻发送的RTS或CTS分组。
时隙FAMA协议的基本思路为:当源节点需要发送数据包时,它会等到下一个时隙开始时刻发送RTS控制包。该RTS控制包被目标节点和所有邻居节点侦听到。目标节点在下一个时隙的开始时刻回复CTS控制包。目标节点的邻居节点也在同一个时隙时间内侦听到CTS控制包。当源节点接收到CTS控制包时,等到下一个时隙的开始时刻发送数据包。当目标节点接收到整个数据包后,它将在下一个时隙的开始时刻回复ACK控制包给源节点,提示传输成功。一个成功且完整的数据包传输过程如图1所示。节点C为目标节点B的邻居节点,它在侦听到CTS控制包后进入退避状态,直到侦听到ACK控制包后退出退避状态,这样可以保障节点A和节点B之间的正常数据包传输。
图1 时隙FAMA协议
在时隙FAMA协议中,每个节点只能在时隙的开始时刻发送控制包和数据包。每个时隙的长度都要足够长,这样才能保证控制包及时通知到周围所有的潜在干扰节点。虽然时隙FAMA可以解决控制包传递问题,但是由于分配的时隙太长,信道的利用率很低。水声传感器网络中的高传播延迟会导致RTS包发送和CTS包接收之间存在较大的时间间隔,时隙FAMA引入的时隙方案使该间隙变得更大,如图1中节点A发送RTS包和接收到CTS包之间的间隙一样。如果节点A能够利用时隙FAMA协议闲置而浪费的这些大间隙,则可以进一步提高网络吞吐量。节点A可以在等待CTS包响应的同时发送队列中其他RTS包,这意味着节点可以连续与多个目标节点进行控制包交互,而不是仅顺序地处理不同目标节点的数据包发送流程。
改进型协议的流程如下:当源节点要发送数据包时,在时隙的开始时刻发送RTS包,并等待下一个时隙接收目标节点回复的CTS包。同时在等待期间,源节点可以发送第二个RTS包,进行多次控制包交互。目的节点接收到RTS包后,在下一个时隙开始时刻回复CTS包。源节点如果只发送一个RTS包,需要等待1个时隙侦听目的节点的CTS包,并在后续时隙发送数据包。反之,如果源节点发送多个RTS包,需要等待1个或2个时隙侦听所有的CTS包,等待时间根据源节点与所有目标节点的传播延时的信息决定,最后在下一个时隙开始时刻按照一定顺序依次发送多个数据包。然而,如果源节点未在等待时隙时间内侦听到CTS包,则将停止后续数据包的发送。当目标节点完整接收完数据包后,将在下一个时隙回复ACK包,完成整个数据包传输过程。如图2所示,源节点A等待目标节点D回复CTS包期间,通过发送第二个RTS包与节点B进行信道预约,在前2个时隙时间内完成两次控制包交互。在后续的第3个时隙开始时刻,源节点可以依次发送两个数据包给不同的目标节点。
图2 改进型时隙FAMA协议
当节点在信道上检测到载波时,它将进入接收状态,如果侦听到的包不是发送给该节点,则必须进入退避状态避免碰撞的发生。所有处于退避状态中的节点侦听到另一个不是发送给该节点的包时,必须更新退避时间。接收到的包类型将决定该节点的后续退避状态,具体规则如下。
2.2.1 侦听到xRTS控制包
节点侦听到发送给其他节点的RTS包(xRTS)后,必须退避两个时隙(当前时隙与下一个时隙)。 如果在此时间侦听到目标节点的RTS包,则节点退出退避状态,在下一个时隙回复CTS包。如果在此时间之后未检测到载波,则终端返回空闲状态。
2.2.2 侦听到xCTS控制包
节点收到发送给其他节点的CTS包(xCTS)后,必须等待足够长的时间,以允许发送节点发送整个数据包并接收相应的ACK。由于节点已接收到CTS包,因此它还将接收到后续的ACK包,侦听到xACK包后表明数据传输已成功结束,节点退出退避状态。
2.2.3 侦听到xDATA控制包
节点收到发送给其他节点的数据包(xDATA)后,必须等待足够长的时间,以允许接收后续的xACK包。
2.2.4 侦听到xACK控制包
由于数据传输已成功结束,节点在侦听到发送给另一个站的ACK包(xACK)后,仅需等到时隙结束即可返回空闲状态。
改进型时隙FAMA协议采取并发预约机制,允许源节点在等待目标节点的CTS包响应的同时并发预约队列中发送给其他目标节点的数据包,这意味着源节点可以采用并发的方式而不是顺序地处理发送给不同目标节点的控制包。对于并发预约机制,当需要针对多个RTS包在一个时隙内进行并发处理时,至关重要的是控制包交互及其CTS包响应之间的时间尽量占据最少的时隙。
多个控制包并发交互占据时间的长度是由节点之间的不同传播延迟引起的。如果一个源节点在当前CTS包的响应到达前处理完另一个控制包交互过程,则并发交互占据的时间比较短。如图2所示,假设源节点保存有其与任意目标节点的传播延时的信息,节点A知道RTS包及其后续CTS包之间的等待时间是否足够长,足够允许其他控制包被发送或接收。节点A发送的第二个RTS包在第一个时隙内被节点B接收。因此源节点并发预约只占据两个时隙。必须注意的是,如果源节点未获知节点之间的传播时延信息或者在一个控制包交互时间内不足以进行另一个控制包交互,并发预约机制同样可以工作,代价是控制包交互占据的时隙个数变多。如图3所示,节点A和节点B进行控制包交互,期间节点A有数据包发送给节点D,节点A同样立即发送RTS包,节点D在第2个时隙收到RTS包,然后在第3时隙回复CTS。节点A在第4个时隙连续发送两个数据包。节点B和节点D的周围潜在干扰节点侦听到xCTS帧后,需要等待侦听到xACK才退出退避状态,因此不会对节点B和节点D接收数据包产生干扰。
图3 并发预约机制
源节点在完成并发控制包交互后,需要在下一个时隙发送多个数据包,在改进型时隙FAMA协议中,数据包最优化的发送顺序由源节点和目标节点之间的传播时延大小来决定的。源节点根据其与目标节点之间的传播时延从小到大进行排序,传播时延小的目标节点最早进行数据包发送,这种方案的优点是可以在最短的时间内发送完所有的数据包。如果源节点不能提前获知传播时延的信息,则数据包发送顺序按照发送RTS包的顺序制定。
在仿真实验中,设定水声传感器网络的分布范围为5 000 m5 000 m,在分布范围内随机分布10个传感器节点,节点的最大传输距离为1 500 m。控制包(RTS、CTS、ACK)大小为16 bit,数据包大小为512 bit,传输速率为1 000 bit/s,仿真时间为1 000 s。
为了更好地对比各个协议性能,仿真中需要计算网络的负载量(offered load)和吞吐量(throughput)两个指标,它们的具体计算公式如下:
网络负载=传输的包数量×包的大小÷仿真时间÷传输速率
(1)
网络吞吐量=接收的包数量×包的大小÷仿真时间÷传输速率
(2)
如图4所示,时隙FAMA协议和改进型协议的平均吞吐量随着网络负载的增加而增加,最后达到一个最大值,并基本保持恒定的吞吐量。这种吞吐量变化趋势是基于握手接入协议共有的。改进型协议最大网络吞吐量高于时隙FAMA协议,主要原因是改进型协议采用并发预约机制,允许发送节点在一个时隙内同时发送多个RTS包进行多个数据包发送的信道预约,在网络负载较低的时候,由于节点一个时隙内有多个数据包发送给不同目标节点的概率比较低,改进型协议的工作方式和时隙FAMA协议等同,因此两个协议的性能没有比较大的区别。随着网络负载的不断增加,每个发送节点需要发送的数据包增加,改进型协议启动并发预约机制,可以在2个时隙或者3个时隙内进行多次控制包交互,后续时隙可以同时发送多个数据包,因此网络吞吐量高于时隙FAMA。
图4 吞吐量随网络负载变化示意图
上述仿真的假设情况是每个节点都提前获取和邻节点的传播时延,但在未获取相关信息的情况下,改进型协议也可以正常工作。如图5所示,在未获取节点间传播时延的情况下,改进型协议的性能会有所降低,导致这种情况的原因是发送节点在发送数据包时是采取发送RTS包的顺序发送方式,当第一个通信的节点距离发送节点较远时,数据包发送占据的时隙变多,导致吞吐量下降,然而在未知节点传播时延的情况下,改进型协议的性能还是优于时隙FAMA。
图5 节点间传播时延对性能影响示意图
时隙FAMA协议可以有效地解决握手协议在高传播时延情况中的控制包失效问题,引入时隙方案导致节点之间控制包交互占据信道的时间变长,导致网络吞吐量比较低。本文提出了一种改进型时隙FAMA协议,该协议充分利用控制包交互时间进行另一个控制包交互,在所有控制包交互结束后,发送节点可以连续发送多个数据包。仿真实验表明改进型协议有效地提高了网络的吞吐量,减少了控制包交互占据的时间。无论节点之间的传播时延信息是否已知,该协议都可以有效地提高时隙FAMA协议的性能。