APP下载

分布式水下组网MAC协议的设计与仿真

2021-06-10周锋夏凡乔钢王思远

哈尔滨工程大学学报 2021年6期
关键词:时隙水声数据包

周锋, 夏凡, 乔钢, 王思远

(1.哈尔滨工程大学 水声技术重点实验室, 黑龙江 哈尔滨 150001; 2.海洋信息获取与安全工业和信息化部重点实验室(哈尔滨工程大学),黑龙江 哈尔滨 150001; 3. 哈尔滨工程大学 水声工程学院,黑龙江 哈尔滨 150001; 4. 中船重工安谱(湖北)仪器有限公司,湖北 宜昌 443000; 5.哈尔滨工程大学 核科学与技术学院,黑龙江 哈尔滨 150001)

随着计算机网络水平的提高和水声通信技术研究水平的进步,以二者为基础的水下通信网络得到了更多的关注,无论是在军事应用方面还是在其他领域中水下通信网络都将得到更为广泛的应用[1]。在水声通信网络中,传统的MAC协议包括ALOHA协议、MACAW协议和TDMA协议等。

TDMA协议适用于规模较大的网络或者在需要发送的数据包较大的场景中,但是其相比于其他常用的MAC协议[2]而言,通常具有更大的端到端时延。由于水下的传播时延远远大于无线电中的传播时延,因此在TDMA协议中,网络对于时间同步的精度要求比较高,并且空闲时隙会造成信道资源在时间上的浪费[3]。为了提高水下网络的数据传输效率,本文在传统TDMA协议的基础上提出一种基于传播时延特性的改进协议并对2种TDMA协议的性能进行对比分析。

1 水下组网MAC协议的设计

TDMA协议相对于其他基于竞争的MAC协议具有更好的可靠性,而且相对于其他固定分配MAC协议而言实现起来更为简单[4]。为了解决TDMA协议在水声通信网络中传输效率较低的问题,本文在传统的TDMA协议的基础上设计了一种动态时隙的TDMA协议。

1.1 动态时隙TDMA协议设计

传统的TDMA协议网络中,在某一节点发包时间段内,其他节点不发送数据,来避免产生冲突,但是由于水声信道具有时延较长和传输距离较远等特点,传统TDMA协议会造成网络的通信过程中产生较大范围的时间空闲,导致信道资源没有被充分的利用。然而,如果能够根据各个非时基节与时基节点之间的时延长短将时隙进行适应性的分配,并且设置合适的保护间隔,就可以大大节约时间资源从而提高整个网络的工作效率。

在节点全部入网后,时基节点开始周期地发送入网消息,下一次发送入网消息的时间为上次发送入网消息的时刻加上5个时隙间隔再减去各个非时基节点与时基节点之间传播时延的总和。各非时基节点就可以根据计算出来的与时基节点之间的传播时延来确定各自的业务时隙。从图1中可以看出改进后的协议传输的空闲时间缩短了,由原来设定的固定值变为了动态值。

图1 时隙分配原理Fig.1 Schematic diagram of time slot allocation

在网络开始时首先需要应用Tri-Message协议完成时钟同步过程,保证每个节点的时间基准是统一的。Tri-Message协议是一种轻量级时间同步协议,它在TSHL协议上进行了改进,在保证精度的同时大大降低了时间同步开销,通过主从节点的3次信息交互来估计从节点的时钟频偏及时钟偏差。由于水声通信网络的吞吐量十分有限,这使得该协议在水声通信网络中十分适用。Tri-Message协议的本地时钟模型为:

y=sx+a

式中:y为本地时间;x为全局时间;s是时钟偏移率;a是时钟偏移量,μs。当式中s=1且a=0时,模型为y=x,此时的本地时间和全局时间一直保持一致为理想状态。

当时钟偏移存在时则需要通过建模计算出s和a的值并进行修正来进行时钟同步。为了模拟实际网络中各个节点的时钟偏移,需要人为地加入时钟偏移量和时钟偏移率来模拟同步过程,它们均为(30,50)和(-50,-30)之间的随机数,其原理如图2所示。其中,时基节点为使用其本地时间作为网络时钟基准的节点,非时基节点为需要与时基节点进行同步的节点。

图2 Tri-Message协议原理Fig.2 Schematic diagram of Tri-Message protocol

首先时基节点发送同步请求数据包RTS,数据包在发送时会被添加含有发送时间信息的Header,并记录当前的时间为T1。当非时基节点接收到数据包时首先判断是否为RTS帧,若是则回复给时基节点一个确认数据包CTS,并记录接收到RTS的时刻T2,发送CTS的时刻T3。最后在时基节点接收到CTS数据包时则会回复给非时基节点一个确认信号ACK,接收到CTS时间为T4,发送ACK的时刻为T5,非时基节点接收到ACK的时间为T6。

将以上记录的6个时刻T1、T2、T3、T4、T5、T6代入时钟偏移公式,可以得到一个方程组:

式中d1、d2和d3分别为3次数据传输的传输时延。假设同步过程中传播时延基本稳定,可得d1=d2=d3,则可解出s和a分别满足:

则推得修正时间可表示为:

式中:yn为第n个节点的本地时钟;xn为此时的全局时间。

在仿真时,根据上面介绍的Tri-Message时间同步协议的原理,设计时间同步帧如下:

1)Type表示时间同步帧的类型,长度8 bits,包括RTS,CTS和ACK 3种,依次对应前文介绍的同步的3次通信过程;2)Length表示当前数据帧的长度,长度为8 bits;3)TimeStamp用于存放当前的时间戳信息,用于计算时钟偏移,长度32 bits;4)Node_ID为当前正在进行时钟同步的节点编号,duration为分组的入队时间,Src记录源地址,Dest记录目的地址从,长度均为8 bits。

同步过程结束之后通过应答的方式测出各个节点与时基节点之间的时延,B节点测时延的原理如图3所示。

图3 时延测量原理Fig.3 Schematic diagram of delay measurement

B节点在收到A点发送的入网消息之后,会主动发送一个测时延请求信号“BA”,并记录发送的时刻TsendBA,发送完毕之后B节点即进入等待状态,等待A节点的回复信号。而A节点接收到B节点发送的测时延请求信号“BA”之后,记录接收时刻TrecvBA,并回复响应信号“AB”,同时记下回复的时刻TsendAB并计算A节点从接收“BA”到发送回复信号的处理时间作为参数一同发送给B节点。最后计算出B节点与A节点的时延差为:

由于计算时间差所用的2个时刻是以A的时钟为基准来计算的,而计算时延所用的时刻则是以B节点的时钟作为基准,所以计算时延的过程中无需调整2个节点之间的时钟完全一致。至此B节点与A节点之间的时延测量完毕,C节点与D节点测量时延的方式与A节点完全相同。但是B、C、D节点的数据包发送时如果在时间上发生重叠,就会产生信号冲突从而导致A节点无法正确地接收每个节点的请求信号,所以3个非时基节点发送测时延请求信号的时候要在时间上错开来发送。

1.2 动态时隙TDMA协议的仿真流程

时基节点在开启网络时首先需要进行同步过程,首先生成一个新的packet,再初始化一个UanHeaderCommon类的指针,利用SetTimeStamp()方法为其打上时间戳,并将其添加到生成的packet中,之后广播发送此packet给其他节点,并等待其他节点回复。在待机状态时,若有数据包到达时基节点首先利用GetType()函数判断帧的类型,若为TYPE_DATA则判断本数据包是否为发送给本节点的数据,若是则删除header并接收本数据包,若不是发给本节点则丢弃。若帧类型是TYPE_CTS同步帧则提取出时间戳信息和节点号,并向节点发送ACK帧,计算出各个节点与时基节点之间的时延,在同步过程之后发送时隙分配信息并开始在自己的时隙发送业务数据,时基节点的工作流程如图4所示。

图4 时基节点工作流程Fig.4 Time base node work flow chart

非时基节点工作的流程如图5所示。非时基节点判断时钟同步过程是否结束,如果已经完成时钟同步过程则按照分配给该节点的时隙发送数据包,若没有完成同步过程则只要收到TYPE_DATA类型的数据包就丢弃。若收到的是TYPE_RTS类型的包则回复一个TYPE_CTS类型的数据包并等待下一个同步数据的到来;若为TYPE_ACK类型的同步包则提取时间戳信息并修正时钟偏移完成同步的过程。

图5 非时基节点工作流程Fig.5 Work flow chart of non-time base node

2 网络仿真环境的搭建

本文选用的仿真软件环境是NS-3(Network Simulator 3)网络模拟器[5-6]。NS-3是一款近几年应用比较多的网络仿真工具软件,在网络通信技术的科研和教学中都有较为广泛的应用。在NS-3平台下,科研人员可以直接设计所需要的MAC协议并添加到相应的模块中,在仿真时直接进行协议的配置即可。NS-3相对其他仿真软件来说较为简单易学,扩展性好,节约资源并且仿真性能好,能得到与真实的情况更加接近的仿真结果,所以目前应用越来越广泛。NS-3是一款基于Linux操作系统的软件,在控制台运行时会给程序的调试和代码的修改带来麻烦,因此本文中使用eclipse编译器来进行程序的调试和仿真。

2.1 NS-3中应用的主要模块

对水声通信网络的MAC协议仿真时,首先要根据需要选择需要的仿真模块,包括用于实现NS-3基本功能的core模块,UAN模块和用于设置节点布放位置的Mobility移动模块等。其中UAN模块是NS-3中的水声通信网络模块,它的功能是能够方便研究人员研究模拟各种水下场景。UAN模型提供水下声学信道的精准建模,它主要分为4个部分:信道、PHY、MAC和自主水下航行器模型。图6为水声通信网络在NS-3仿真时的结构图。从图中可以看出网络应用是使用套接字来控制节点发送和接收数据的,在节点中需要利用网络设备安装PHY模型和MAC协议等相关模块,另外2节点之间通过安装的水声信道模型来传输数据。由于本文主要研究水声通信网络中的MAC协议,所以UAN中的MAC协议模型是本文仿真时重点使用的模型。在设计MAC协议时要定义一个继承于UanMac类的子类,如UanMacMacaw、UanMacTDMA等,在使用时利用UanHelper::SetMac()函数完成MAC协议的选择。在NS-3中提供的有CW-MAC协议、RC-MAC协议和ALOHA协议等,而对本文设计的动态时隙TDMA协议仿真时需要自行编写和添加相应协议的代码模块。

图6 UAN模块结构Fig.6 UAN module structure diagram

2.2 仿真中的水声信道模型

UAN模块中提供3种水声信道模型[7]分别为理想信道模(ns3::UanPropModelIdeal)、Thorp传播模型(ns3::UanPropModelThrop)和Bellhop传播模型[8](ns3::UanPropModelBh)。所有的传播模型都遵循ns3:: UanPropModel中的完整接口,在仿真中利用Channel类完成对水声信道模型的配置。其中理想信道模型是水声信道在理想状态下的模型,Bellhop模型是用高斯近似方法比较好地减弱了能量焦散和绝对影区等问题,而Thorp传播模型则是利用Thorp经验公式模拟海水的吸收特性对真实的水下环境进行模拟。

本文的目的主要是为了验证动态时隙TDMA相比于传统TDMA的性能变化情况,所以选的信道模型为理想信道模型,该信道模型提供了功率延迟分布(power delay profile,PDP)和路径损耗信息,假设在圆柱形区域内的路径损耗为0,延迟时间为接收器与发送器的距离除以声速(1 500 m/s)。使用返回类型UanPdp的GetPdp方法检索PDP。 ns3:: UanPdp是Taps的容器类每个抽头具有对应于到达时间(相对于第1个抽头到达时间)和幅度的延迟和幅度成员,它利用的是如图7的声学通道的抽头延迟线模型[9]。

图7 抽头延迟线模型Fig.7 Tapped delay line model

2.3 网络拓扑结构的想定

在通信网络中常用的拓扑结构[10]一般有集中式、分布式和多跳式3种。考虑水下网络的应用场景和功能需求,本文中选择的拓扑结构为分布式,其拓扑结构图如图8所示。在分布式网络中,无中心节点,各个节点都可以与任何其他节点之间通信发送和接收数据。分布式拓扑结构适合网络节点之间距离较近的网络,这样各个节点相互之间的距离都小于最大通信距离,就可以实现任意2个节点之间的通信。但是如果在节点之间距离相对比较大的网络中,要想进行正常通信就需要提高发射机的发射的功率,由于大部分通信节点是采用自主电源供电的,就会增加系统总体的功耗。

图8 网络的拓扑结构Fig.8 Network topology diagram

3 仿真及分析

动态时隙TDMA协议是在传统的TDMA协议的基础上进行的改进,下面对2种协议从端到端时延、吞吐量和丢包率3个方面对协议进行仿真对比,在仿真中设定参数如表1所示。

表1 仿真网络参数配置Table 1 Simulation network parameter configuration

仿真过程中的使用NS-3的可视化工具Pyviz查看节点的分布场景如图9所示:

图9 节点的分布场景Fig.9 Scenario graph of node distribution

首先分析2种协议对网络吞吐量的影响,吞吐量定义为单位时间内的成功传输的数据量,即节点成功接收的数据包的总数据数量与仿真时间的比值,单位为bit/s,计算公式为:

式中:numpacket_recv为接收数据包的个数, packet_size为数据包的长度, simulation_time 为仿真时间。吞吐量反应通信网络的数据传输效率的高低,吞吐量越大,通信网络在单位时间内传输的数据越多,通信的效率越高,网络的性能越好。从图10中可以看出在仿真刚开始时2种网络的吞吐量相对于网络稳定之后更小,这是因为此时同步过程还未完全结束,各个节点还没有分配好各自发送数据包的时隙,此时数据包入队后暂时不能发出。而时钟同步过程结束网络达到稳定之后可以看出,2种协议的吞吐量都保持基本不变,而动态时隙TDMA协议的吞吐量要高于传统TDMA协议,是因为动态时隙TDMA协议的时隙根据各个节点之间的时延动态确定,提高了信道的利用率,相同的仿真时间内分配的时隙个数更多,因此发送和接收数据包的个数也更多。

图10 2种TDMA协议吞吐量对比Fig.10 Comparison graph of throughput of two TDMA protocols

丢包率定义为未被成功接收而被丢弃的数据包数量与发送的总的数据包数量之间的比值,其计算公式:

式中:Numpacket_loss为丢失数据包的数量;Numpacket_all 为总的发包量。区别于通信过程中的误码率,丢包率统计的是未被成功接收的数据包量,而不是接收成功的数据中错误的数据量。丢包率反映的是水声通信网络的稳健性,丢包率越小,网络的性能越好。

从图11中可以看出2种协议的丢包率在网络稳定之后都维持在一个很低的水平,这是因为无论是传统TDMA协议固定分配时隙还是改进后的TDMA协议动态地来分配时隙都是让网络中的各个节点只在已经分配好的自己的时隙内才会发送数据包,时隙不会发生重叠各个节点发送的数据包也就不会发生碰撞,在理想的水声信道模型条件下发生丢包的概率比较低。

图11 2种TDMA协议丢包率对比Fig.11 Comparison of packet loss rate between two TDMA protocols

端到端时延定义为在网络通信过程中,发送节点生成分组到分组被接收节点成功接收的时间差。在水声通信的过程中,端到端时延包括以下3部分:应用层产生分组到分组到达下一层的时间Delay_txdel,分组在水声信道中从发送机发送到被接收机接收所需的时间即传输时延Delay_propdel以及队列等待时间。端到端时延的计算公式为:

Delay_propdel+TQwait)

式中:packet_size为分组大小,bit;bit_rate为网络的通信速率,bit/s;distance表示发送端到接收端之间的距离,m。

从图12可以看出,2种协议在开始时的端到端时延都高于网络稳定后的端到端时延。这是由于在网络刚刚建立时需要进行时钟同步过程,此时各个节点所需发送的数据包只能排队等待同步过程结束后才发送,因此队列等待时间会延长,而端到端时延由传输时延、传播时延和队列等待时间3部分组成,所以总时延比较长。而在网络保持稳定之后2种协议的端到端时延分别保持在一个稳定的水平,动态时隙TDMA协议的时延相对于传统TDMA协议会有一定程度的减小,提高了整网的工作效率,这也是对传统TDMA协议进行改进的主要目的之一。

图12 2种TDMA协议端到端时延对比Fig.12 Comparison of end-to-end delay between two TDMA protocols

4 结论

1) 本文通过对端到端时延、吞吐量和丢包率3个方面的仿真,证明了设计的动态时隙TDMA协议可以在保持了数据传输的准确性的同时提高网络通信的效率,针对水声信道时延长对传统TDMA协议造成传输效率较低的问题实现了一定程度的性能优化。

2)由于在本文设计的动态时隙TDMA协议中,网络性能的提高,一定程度上是以增加网络的控制开销来实现的,如何使用更少的控制帧来完成通信中的同步过程是本文尚未解决的问题。

3)本文在仿真中使用的是水声信道的理想信道模型,为了更加符合真实情况,可以在以后的研究中针对不同的应用场景添加其他信道模型的模块。

猜你喜欢

时隙水声数据包
基于阵列天线的数据时隙资源比例公平动态分配方案设计
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于最小二乘法的超短基线水声定位系统校准方法
基于时分多址的网络时隙资源分配研究
有些水声,像乡音
C#串口高效可靠的接收方案设计
Link—16中继时隙自适应调整分配技术研究
暮饮
一种车载网络中基于簇的时隙碰撞解决方法