考虑环境影响的水下电场通信组网算法
2021-01-18吴佳楠温智皓贺曼利李念峰
吴佳楠, 温智皓, 贺曼利, 吴 剑, 李念峰
(长春大学 计算机科学技术学院, 长春 130022)
以水下仿生机器鱼为代表的水下航行器(autonomous underwater vehicle, AUV)因具有良好的自主性和灵活性, 已成为探索海洋复杂水下环境的有效工具, 具有良好的应用前景[1-2]. 但海洋环境的特殊性对无人航行器的续航能力、 可靠性提出了更高要求. 由于水质、 水流、 电导率、 压强等水下环境因素的影响, 传统的通信方式很难有效工作, 目前主要有水下光学通信、 水下声学通信和水下电场通信等几种通信方式[3]. 水下光学通信以光波作为信息载体, 具有近距离高速通信的特点, 但其对使用环境要求较高[4]; 水声通信是当前应用较广泛的水下通信方法, 其技术成熟, 可实现水下远距离通信, 但会受环境和通信介质的影响, 易出现盲区, 发射器效率较低[5]; 水下电场通信是将电流形成的电场作为介质进行通信, 传输信号稳定, 对环境限制少, 灵活性较高[6-7]. 相比于光学和水声通信, 水下电场通信技术因其能耗低, 不受水域浑浊等因素影响的特点, 对仿生鱼在水下进行组网通信有重要意义. 北京大学的仿生鱼研究团队选取箱鲀鱼为仿生对象, 设计出一种小型水下机器人的电场通信系统, 该系统属于多跳临时性自治系统, 由一组兼具主机和路由功能的移动终端组成, 实现了仿生鱼在3~5 m的双向通信[8-9]. 若能形成由多个仿生鱼体组成的智能集群, 协同工作, 则可有效弥补单机器人系统的不足. 文献[10]根据实际情况, 使用CSMA/CA协议减少了共享信道上通信碰撞问题的发生, 同时提出了基于无线自组网按需平面距离向量路由协议AODV (Ad hoc on-demand distance vector routing)的电场通信路由协议, 实现了多节点的电场通信组网和消息的多跳转发[10-11]. AODV是一种典型的反应式路由协议, 具有高响应时间的特点, 但不适用于大型、 高动态网络, 且对链路变化也不敏感, 很难应对节点的失联、 故障等意外情况[12-13]. 此外, 文献[14]证明电场会随着海水电导率增大而减小, 低电导率海水的电场幅度明显高于高电导率海水, 所以在水下环境中, 电导率的变化对水下电场通信的距离和效果有一定影响.
本文以北京大学团队研发的基于水下电场通信的仿生箱鲀鱼为物理载体, 设计一种考虑实际水域电导率影响的仿生鱼群自组网算法. 算法主要根据节点间的通信时间计算节点优先级, 确定节点角色, 形成集群协作网络, 实现小规模仿生鱼群的快速组网. 以目的坐标为导向的子节点和失散节点自主巡航功能的设定, 不但能实现群体失散节点的寻回, 还间接优化了网络协作模型, 减少了节点间的路由维护信息, 有效节约了网络能耗.
1 模型设计与定义
1.1 角色定义及功能描述
仿生鱼群网络中定义了6种节点角色: 临时核心节点、 主核节点、 备份节点、 直连节点、 子节点和失散节点. 各节点功能如下.
1) 临时核心节点: 用于主核节点和备份节点的选举过渡.
2) 主核节点: 群体的主控制节点, 用于协调控制鱼群.
3) 备份节点: 主核节点失效时, 作为新的群体控制节点.
4) 直连节点: 能与临时核心节点建立直接通信, 辅助整合子节点.
5) 子节点: 仅能与直连节点通信.
6) 失散节点: 与群体网络失联的节点, 不在群体有效通信距离内.
1.2 通信模型设计
仿生鱼的内部系统通信功能分为初始化、 事件生成器、 报文分类处理、 PID(priority ID)更新器、 计时器、 输入/输出6个模块和一个PID信息数据库, 如图1所示. 其中, TD(TCP data)报文定义为TCP报文解析出的数据字段, PID表示节点优先级. 为提高处理效率, 减轻系统负担, 算法设计为单进程结构[15], 模块间的交互方式为函数调用和数据传输. 系统各部分功能如下.
图1 系统工作模型Fig.1 System working model
1) 初始化模块: 初始化算法使用的全部数据结构; 通过事件生成器产生开始事件, 启动报文分类处理模块, 开始运行整个算法.
2) 事件生成器: 生成事件, 驱动算法正常执行; 通过接收输入模块发送的TD报文, 生成报文处理事件, 转发给报文分类处理模块处理; 产生报文发送事件, 将报文分类处理模块需发送的TD报文通过输出模块发送出, 同时负责维护报文队列的正常使用, 提供数据结构的函数接口.
3) 报文分类处理模块: 从事件生成器模块接收TD报文, 通过报文标识判断类型, 针对不同类型的报文进行相应的处理, 处理过程中需要查看PID数据库信息, 从而更新自身PID和PID数据库, 将此过程产生的事件添加到事件生成器模块.
4) PID更新器: 计算和更新自身PID和PID数据库.
5) 计时器: 根据TD报文的发送时间字段, 计算两节点往返通信一次所需时间, 辅助PID更新器计算PID.
6) 输入/输出模块: 直接调用操作系统提供的TCP服务接口, 完成TCP建立的连接和释放; 将相邻节点送来的TCP报文解析成TD报文, 提交给事件生成器; 接收事件生成器发来的TD报文, 封装成TCP报文, 发给相应的节点.
7) PID信息数据库: 存放算法执行过程中产生的各种数据, 包括与自身通信的上级节点, 以及两个相互独立的直连节点信息表和子节点信息表, 表中含有ID和PID等信息.
2 组网算法
算法运行分为两个阶段: 选举阶段通过计算节点优先级确定节点角色, 生成全网拓扑; 网络维护阶段基于自主巡航功能优化子节点, 并通过发送探索报文寻回失散节点. 算法主要流程如图2所示.
图2 算法流程Fig.2 Flow chart of algorithm
2.1 选举阶段
该阶段包含选举临时核心节点、 整合子节点、 主备节点选举3个子过程.
2.1.1 选举临时核心节点
步骤1) 所有节点广播询问报文M1, 发送时间字段为当前时间t1, 数据字段h1为0;
步骤4) 所有节点PID更新完毕;
步骤5) 每个节点广播报文M2, 发送自身PID;
步骤6) 节点收到M2, 建立自身直连节点信息表并排序;
步骤7) 排在直连节点信息表第一位的节点, 发送临时核心确认报文M3;
步骤8) 节点收到M3, 判断是否同意; 若是, 则单播M3y, 同意建立临时核心节点, 更新自身上级节点信息; 若否, 则单播M3n, 拒绝建立临时核心节点.
临时核心节点选举时序如图3所示.
图3 临时核心节点选举时序Fig.3 Sequence of temporary core node election
PID包括两部分: 通信总个数(Number_Sum)和平均通信时间(Time_Average), 更新计算过程为
(1)
Number_Sum=Number_Sum+1,
(2)
其中Time_Twopoints表示两节点进行通信的时间. 通信总个数越多, PID越高; 通信总个数相同, 平均通信时间越短, PID越高.
2.1.2 整合子节点
步骤1) 临时核心节点将自身直连节点信息表放进M4报文, 广播发送;
步骤4) 直连节点收到M5a报文, 向子节点单播报文M5b;
步骤5) 子节点收到M5b, 更新自身上级节点信息, 协作拓扑建立完毕.
子节点整合时序如图4所示.
图4 子节点整合时序Fig.4 Sequence of sub node integration
2.1.3 主备节点选举
步骤1) 将临时核心节点作为主核节点;
步骤2) 主核广播发送M6报文, 通知所有节点开始选举备份节点, 主核进入备份选举状态: 可正常接收报文, 但不进行处理和回复, 只有收到M7报文才进行回复;
步骤3) 节点收到M6报文, 删除直连节点信息表中关于主核的信息, 执行临时核心选举部分, 选出的临时核心节点作为备份节点;
步骤4) 备份节点单播发送M7报文, 通知主核, 备份节点已经选举完毕;
步骤5) 主核收到M7报文, 发送M8报文, 通知所有节点回归主核控制状态;
步骤6) 节点收到M8报文, 开启主核节点控制状态, 结束.
2.2 维护阶段
维护阶段用于维护选举阶段建立的网络拓扑: 主核节点负责协调鱼群内部通信, 定时发送维护报文, 通过节点的反馈, 判断节点运行情况, 更新网络拓扑; 备份节点在主核正常情况下, 定时备份主核节点所有的数据, 一旦主核出现失联、 故障问题, 立刻替代主核, 成为新的主核节点, 同时控制鱼群再次选举.
2.2.1 自主巡航功能
步骤1) 网络协作拓扑形成后, 主核节点广播封装了目的坐标的报文M9;
步骤2) 直连节点收到报文M9后, 随同主核节点按到目标坐标的最短路径移动;
步骤3) 子节点收到报文M9后, 独立于主核节点, 选择到目标坐标的最短路径自主移动;
步骤4) 主核节点在移动过程中, 定时广播探索报文M10;
步骤5) 子节点未定时收到探索报文M10, 角色变为失散节点, 同样自行向目的坐标移动.
2.2.2 群体拓扑优化与失散节点寻回
根据自主巡航功能, 在移动过程中, 如果子节点或失散节点直接从主核节点收到报文M10, 此时若符合直连节点特征, 则进行角色转换, 加入网络.
3 仿真实验与结果分析
用计算机软件对复杂的网络行为进行仿真是一种行之有效的网络分析方法[16], 本文利用MATLAB软件对算法执行结果进行仿真模拟, 用NS-2软件对仿生鱼群间的通信情况进行仿真运算.
3.1 MATLAB仿真
3.1.1 理想水域环境仿真
随机模拟10条仿生鱼下水的初始位置, 如图5(A)所示, 由于目前水下电场的实际有效通信范围是3~5 m, 因此本文将仿生鱼的通信范围设为3 m, 若超出该范围将不能进行直接通信. 算法执行后, 每个节点将会确定自己的角色, 形成网络拓扑, 其中红色五角星表示主核节点, 紫色三角形表示备份节点, 绿色圆形表示直连节点, 蓝色正方形表示子节点. 按本文算法运行程序后, 由主核节点控制的网络拓扑如图5(B)所示, 由备份节点控制的网络拓扑如图5(C)所示.
本文算法具有丢失节点寻回功能, 如图5(D)所示, 将群体行进终点坐标设为(5,5), 主核节点控制所有节点向终点移动, 红色虚线表示节点移动的轨迹(为图像更简洁清晰, 只标出主核节点和子节点的移动轨迹). 由图5(D)可见, 经仿真计算后, 左上角的蓝色子节点经过t时刻后与红色主核节点之间的通信距离缩小为3 m, 达到了有效通信距离, 拓扑更新后, 变为绿色直连节点. 该机制有效减少了群体网络节点间的路由维护报文, 进而节约网络能耗. 该过程同样适用于群体行进过程中由于水下环境的意外风险因素导致出现失散节点的有效寻回, 从而间接提高了网络可靠性.
3.1.2 电导率因素影响下的实际水域环境仿真
海水的电导率随海水温度、 压力和盐度等因素的改变而变化, 电导率变化会对水下电场通信产生影响. 为客观地展现本文算法在该因素影响下的有效性, 在图5(A)中设定电导率的影响区域, 以此模拟实际环境中的干扰因素, 如图5(E)所示, 其中将阴影部分的电导率设为其余空白部分的1.2倍, 电导率的影响将会反映在节点间通信时间的相对改变上. 将电导率影响前后的网络拓扑图5(B)和图5(F)进行对比可见, 鱼群的网络拓扑发生了变化, 节点角色也发生了相应的改变. 表明在实际水域环境发生变化的情况下, 本文算法能保持相对稳定, 有一定的实用性.
图5 MATLAB仿真拓扑Fig.5 MATLAB simulation topology
3.2 NS-2仿真
下面用NS-2软件对本文算法的网络性能指标进行分析. AODV是应用于无线随意网络中进行路由选择的路由协议, 能实现单播和多播路由, 是Ad Hoc网络中按需生成路由方式的典型协议. 实验中通过测量AODV和本文算法在应用中的吞吐量、 分组投递率和平均端到端时延3个指标衡量本文算法的网络性能. 实验中的所有指标均经过10次计算取平均值, 仿真参数列于表1.
表1 网络仿真参数Table 1 Network simulation parameters
3.2.1 吞吐量
吞吐量定义为整个数据传输期间节点接收并转发的数据包总数, 是协议有效性的度量[17]. 如图6所示, 随着节点数量的增加, 吞吐量逐步上升; 当节点增长到一定数量后, 吞吐量增长速度减缓. 由于本文算法初期需要选举主备节点, 会增加额外的数据包, 但随着网络收敛, 吞吐量明显降低. 与AODV相比, 当网络节点数量约大于40时, 整体吞吐量更低.
图6 吞吐量随节点数量的变化曲线Fig.6 Change curves of throughput with number of nodes
3.2.2 分组投递率
分组投递率反应网络支持的最大吞吐量, 表明路由协议的完整性、 正确性和适应网络变化的能力, 是衡量协议效率的重要指标[17-18], 其计算公式为
(3)
其中Rni为节点i成功接收的报文数, Sni为节点i成功发送的报文数.
本文算法和AODV的分组投递率比较如图7所示. 由图7可见: 初期网络中节点数量较少, 通信数据不多, 分组投递率接近1; 后期随着节点的增加, 通信队列逐渐达到上限, 分组投递率下降; 随着节点数量的增加, 本文算法的分组投递率高于AODV.
图7 两种算法的分组投递率比较Fig.7 Comparison of packet delivery ratios of two algorithms
3.2.3 平均端到端时延
平均端到端时延包含所有延时, 如发送缓冲器等待时间、 接口队列排队时间、 MAC层重传时间[18], 其计算公式为
(4)
其中N为成功传输的数据报文总数, Rti为第i个报文的接收时间, Sti为第i个报文的发送时间.
本文算法和AODV的平均端到端时延如图8所示. 网络节点越多, 时延越大. 由于在选择链路时本文算法和AODV都考虑了节点负载, 将节点负载作为影响因素纳入节点稳定度的计算中, 因而在节点个数较少时, 能选择到稳定且负载低的链路进行数据传输, 减少排队时间, 降低端到端时延; 而当节点个数持续增加时, 可选路径较多, 节点负载普遍降低, 节点负载对链路稳定的影响力下降, 平均端到端时延上升. 本文算法在通信前需要进行主备节点的选举, 占用了信道, 增加了数据传输的时间. 节点数量较少时, 端到端时延要比AODV更大. 随着节点增加, 本文算法通过主备节点调节, 能降低时延的增长速率.
图8 两种算法的平均端到端时延比较Fig.8 Comparison of average end-to-end delay of two algorithms
综上所述, 本文设计了一种考虑实际水域电导率影响的水下电场通信的仿生鱼群自组网算法. 该算法基于通信时间计算节点优先级, 能快速生成水下集群协作通信模型, 实现小规模仿生鱼群组网. 自主巡航功能及核心备份机制的设定, 不但能实现群体失散节点的寻回功能, 而且间接优化了网络协作模型, 减少了网络节点间的路由维护信息, 有效节约网络能耗的同时增强了系统的安全性.