陈不了,冯 熳,马海波
(1.东南大学 信息科学与工程学院,南京 211189;2.网络通信安全紫金山实验室,南京 211189)
随着无线通信技术的发展,无人机集群之间可以形成一种高动态无线通信网络,即飞行自组网(flying Ad hoc network, FANET)。飞行自组网是移动自组网的子集,出于便携性考虑,无人机节点将受到功率,重量和尺寸的限制,其内置电源所提供的支持十分有限。此外,在FANET中,每个无人机节点都将作为中继,承担着路由转发的任务,这意味着相比无人机-基站架构,每个数据包到达目的节点将会消耗更多的能量,对网络性能是一个巨大的挑战[1]。
Ad hoc网络的性能与网络节点的能量消耗密切相关,节点过低的能量利用率和各节点间不平衡的能量消耗都将导致网络中过早的出现节点死亡,使整个网络的寿命缩短、性能下降。无人机节点的能量消耗主要分为移动能耗和通信能耗,随着移动计算的发展,无人机终端拥有更大的计算能力,以完成更多与通信有关的活动,使得无线通信所导致的能量消耗可占总功率的一半以上。因此,从组网通信的各层出发,研究节能路由协议是无人机Ad hoc网络能量优化的重点[2]。
针对Ad hoc网络中应用最广泛的按需路由协议,前人已经提出了很多能量优化的变体。文献[3]是在考虑了路由算法、移动性和无线电传播模型的现实环境中探索平衡能耗的第一项工作,提出的本地能量感知路由LEAR针对每个节点设置了能量阈值,节点根据其剩余能量与阈值决定路由请求是否被转发,当源节点的路由请求全部失效时会动态调整阈值。文献[4]采用备份路由机制,根据动态优先级权重选择路由,通过综合分析选择消耗较少能量并具有较大容量的路径。文献[5]引入了节点剩余能量能级概念,在选择节点进行路由之前,计算节点能级,并且仅当其能量级别高于某阈值时,才考虑将节点用于路由。文献[6]通过计算网络中不同路径的稳定性和寿命来获取路由度量,在一定程度上降低了能耗,提升了服务质量。上述文章中提出的改进协议,针对Ad hoc路由协议的能量优化给出了相对简单的能量度量选择与路由算法实现,但大多度量选择并未考虑到信道频繁变化导致的节点通信能耗变化,并不适用于FANET的高移动性节点与快速变化的拓扑。
本文从分层优化的角度出发,提出了一种综合飞行自组网物理层实时能量消耗率与网络层快速变化拓扑特性的特殊Ad hoc网络路由算法,该方法考虑了数据包传输跳数和链路中各节点的能量状态,提出了一种全新的路由度量,使无人机组网通信时各节点的能量消耗分布更加均匀,减少了网络总能耗,延长了网络寿命。
Ad hoc网络中节点的能源利用效率可以从多角度进行优化,除了硬件设备对能源的支持以外,单从网络数据传输的角度,可以按传输层、网络层、链路层、物理层这种自上而下的分层模型进行考虑[2]。其中,网络层的路由协议是飞行自组网优化的重点,经典按需距离矢量路由协议(Ad hoc on-demand distance vector routing, AODV)作为FANET中最常用的协议之一,其基本路由算法由路由发现、路由回复、路由修复与活跃邻居维护4个流程构成。
当源节点(source node, SRC)想要将数据发送到没有路由的目的地(destination node, DST)时,SRC通过广播路由请求包(route request, RREQ)启动路由发现。中间节点接收到RREQ后,如果邻居就是目的节点或具有到目的节点的有效路由,则通过将路由回复(route reply, RREP)单播到SRC进行响应。如果中间节点没有到达DST的路由,会重新广播RREQ到其邻居。若中间节点收到重复的RREQ,则丢弃该数据包。RREQ传播同时建立了到SRC的反向路由,RREP传播期间建立了到DST的正向路由,路由发现与路由回复的基本流程如图1所示[7]。
图1 AODV协议的路由发现与路由回复基本流程Fig.1 Basic route discovery and route reply process of AODV protocol
经典AODV协议为了实现通信服务质量的最大化,以最小跳数为原则,在路由发现流程中表现为:在相同源节点的一次路由建立请求中,各中间节点只接收第一次到达的RREQ路由控制包,而拒绝重复的路由请求。最小跳数度量虽然保证了通信的端到端时延等QoS性能,但没有考虑到网络节点的能量因素,例如:经典路由协议在选择路由路径时更偏向于选择特定的移动节点。而无人机节点高速移动的情况下,网络拓扑变化十分频繁,由拓扑变化而导致的链路断裂迫使源节点不断重新选路,若重新建立的路径仍然不将能量因素考虑在内,则会导致这些节点可能在网络中不公平地负担着中继功能,从而消耗更多的电量,其无线网卡比其他节点更早停止运行。基于此,本文引入新的度量,重新构建路由发现和路由回复过程,实现无人机自组网的跨层能源优化。
移动自组网节点间进行无线通信时,其能量消耗率的影响因素有很多,其中最关键的是Wifi设备的工作模式,在不同工作模式下,节点之间的无线信道具有不同物理层状态,分别对应着不同的天线接收、发射功率。
以组网最常使用的物理层与MAC层交互协议IEEE 802.11为例,在CSMA/CA接入机制下,节点的物理层会采用物理载波监听进行信道空闲评估(clear channel assessment, CCA),在一个Slot time内持续监听信道。该过程包含了能量检测(energy detection,ED)与载波检测(carrier sense,CS)两个部分:当信道空闲时,节点并未收到数据帧,在ED流程中未达到能量检测的阈值,此时802.11设备处于接收空闲状态(IDLE)。若信道的能量通过了ED检测,CCA会转移到CS状态并认为此时信道是繁忙的(clear channel assessment busy,CCA BUSY),物理层继续通过载波检测的方式判断该数据帧是否是802.11数据帧。在CS过程中,节点若识别数据帧头符合802.11帧格式且是发送给自己的,该节点会立即转移到接收状态(receive,Rx)进行接收,若数据帧不符合或不是发送给本节点,CCA监听的结果就是忙,然后等待此Slot time阶段结束后再进行新一轮的监听。若节点本身有数据要发送且信道是空闲的,则转移到发送状态(transport,Tx)发送[8]。
此外,802.11设备还有其他几种工作状态,例如,节点在多个信道之间切换是一个独立的状态(Switching)。由于节点真正处于收发数据帧的有效状态只有Rx和Tx,为保证这两个状态的工作与切换不产生任何冲突,节点需要长期处于IDLE空闲状态并持续进行监听和CCA检测,这将导致节点在数据传输需求较小时消耗大量无意义的能量。因此,802.11协议为达到节能的目的,引入了一种单独的休眠模式(Sleep),使节点在通信需求较小时关闭发送和接收模块进行休眠,从而使能耗将到最低。最后,如果完全关闭无线设备,则该设备状态为关闭(Off),不产生任何能量消耗。各工作状态的转换图如图2所示。
图2 802.11物理层工作状态转换图Fig.2 Physical layer’s working state transition of 802.11 protocol
综上所述,节点无线通信的能耗基本由802.11协议所定义的几种状态来决定,不同的设备状态对应着不同的工作电流,因此,无线网卡在一定工作时间T0内消耗的能量E0如式(1)所示。
(1)
其中i=1~6时,Statusi分别为IDLE、CCA BUSY、Tx、Rx、Switching、Sleep状态中的一种,PStatusi和IStatusi分别为该Statusi状态对应的功率与工作电流,U为无线网卡工作的额定电压,TStatusi为T0时间段内该无线网卡处于Statusi工作状态的总时间,有:
(2)
无人机自组网中各节点的能量消耗率反映了该节点在网络拓扑中的工作繁忙程度,过大的负载会使节点过早的耗尽能量,进而影响整个网络的通信性能。
节点在网络层选择路由转发时,通过跨层对物理层和链路层的工作状态进行感知,计算出节点的实时能量消耗情况,将其应用于路由度量的选择,可以有效避免同一中继节点的过度负载。
设节点的初始能量为E1,节点开始通信T0时间后的剩余能量为E2,有:
(3)
其中TStatusi为T0时刻内无线网卡位于Statusi工作的总时间。
为充分衡量节点在网络中的寿命,不能仅使用节点的剩余能量或平均剩余能量作为路由度量,因为剩余能量较低的节点不一定是网络中最早死亡的。若该节点在最近的t时刻内的平均能量消耗率较低,则其预期工作寿命反而可能较长。因此,本文提出将节点的预期寿命Lp作为均衡能量协议的路由度量,其计算方式如式(4)所列:
(4)
(5)
t时刻的选取十分重要,因为无人机自组网的节点移动速度很快,节点在网络拓扑中的地位与其实时能量消耗状态也变化很快,选取过大或过小的t都不能准确反映节点近期的能量消耗状况,因此也无法准确的预测节点寿命。
由于节点在网络中的拓扑变化概率与自身的移动速度是成正相关的,高速移动的节点所在的通信链路更容易断裂,导致形成新的拓扑结构,节点的能量消耗率也会改变。因此,高速节点越久,之前的能量消耗率就越没有参考价值。相反,低速节点拓扑比较稳定,其能量消耗率在较长一段时间内也比较恒定,选取更大的t计算出的平均功率可以更准确的反映该节点的能耗情况。本文选取节点通信的总时刻T作为节点固定(速度为0)时选取t的参考基准,考虑到无人机以10m/s及以下速度运动时网络拓扑较为稳定,本文选取10m/s作为速度梯度来衡量t,若当前节点的移动速度为v,则选取计算平均功率的时间段t,如式(6)所示:
(6)
其中,vmod 10表示速度v对10取余。
基于AODV协议在无人机场景下未考虑节点能耗,存在网络能耗不均衡的问题,提出一种改进的无人机自组网跨层能源优化协议,通过引入综合考量物理层能源消耗率与网络层跳数最小化的预期寿命路由度量,使协议在路由选择时充分考虑节点的能量消耗属性,进一步降低网络总能耗,延长网络寿命。
2.2.1 路由度量的计算
当各节点的无线网卡开始工作后,会不断记录其工作状态及该状态持续的起止时间戳,并周期地计算自身的预期寿命度量,其计算流程为:1)节点通过当前移动速度与网卡工作的总时间根据式(6)计算出预估平均功率的时间区间t;2)在当前时刻前t时间段内,查找并统计各工作状态的持续时间,根据式(5)计算出该时间段内的平均功率;3)根据式(3)计算节点的当前剩余能量,再由式(4)计算出预期寿命度量。
2.2.2 路由发现
重构协议的详细路由发现流程如图3所示。具体的,在RREQ,RREP消息包与路由表中,添加最小预期寿命字段,记录各节点预期寿命的最小值。当节点有通信需求却没有到达目的地址的有效路由时,会开启路由发现过程,洪泛广播带有源节点预期寿命字段的RREQ。当中间节点收到RREQ请求时,会进行两个操作:首先计算当前节点的预期寿命,并与RREQ记录的最小预期寿命字段比较,按照图3(b)的流程更新该字段。其次判断是否转发RREQ,若节点第一次收到相同源节点同一次路由请求中广播的RREQ,则继续转发,并记录更新后的链路预期寿命最小值到本地路由表中;若非第一次收到,则比较该RREQ的预期寿命最小值字段与当前节点路由表所记录的预期寿命最小值字段,若RREQ字段值较大,则更新该值到路由表中并继续转发,反之则丢弃。
图3 重构协议的路由发现流程Fig.3 Refactor routing discovery process of AODV protocol
重构的路由发现流程选择了最小预期寿命值较大的链路,避免了经典协议选择的路径中存在能量即将耗尽节点的情况。但需要注意的是,节点在比较RREQ能量字段的时候,来自同一源节点请求的跳数不能比最小跳数多2跳以上,超出跳数限制的RREQ会被丢弃。若不对跳数做限制,会导致RREQ在网络中的大规模洪泛,造成网络拥塞和〗开销增大,这与经典协议的初衷是相违背的。
2.2.3 路由回复
改进协议的路由回复流程与原来类似,当目的节点第一次收到源节点发送的RREQ后,立刻按其传播时所建立的反向路由向源节点单播发送路由回复RREP。不同的是,若目的节点收到了多条RREQ,允许其向源节点回复多个RREP,后接收到的RREQ代表着可能不是最小跳数,但能量度量较好的路径,因此再次回复的RREP可以建立一条均衡能量的正向路由。
此外,为最小化等待时间,源节点在接收到第一个RREP之后开始发送数据包。如果稍后接收到具有更好度量的其他RREP,则使用更好的路由来更新源节点的路由表,新的路由也将用于后续的数据包传输[9]。
本文针对提出的路由度量及完整的路由协议,在开源网络仿真器(network simulator 3, NS-3)中进行了实现,所使用的软件版本与实验环境分别为NS-3.29和Ubuntu 18.04。为了验证均衡能量路由相较于AODV协议的性能提升,本文建立了一个由50个节点所组成的组网系统,其初始随机分布在一个700m×700m的矩形区域内,如图4所示。
图4 无人机节点初始位置分布Fig.4 Initial position distribution of UAV nodes
使用OnOffApplication和PacketSink分别配置了应用层的数据收发,使0~9号节点持续地向10~19号节点以恒定的比特流生成数据流量。除了节点的网络层分别使用经典AODV协议与改进协议以外,其余的协议与仿真参数设置如表1所列。
表1 NS-3仿真平台参数设置Tab.1 Parameters of NS-3 simulation platform
改进协议重新定义了路由度量,主要在节点开始组网与路由失效重建时起作用,因此选择在无人机节点移动速度较大的场景下进行仿真,此时网络拓扑快速变化,源节点会更加频繁地重新选择剩余寿命较大的路径,改进协议的优势更加突出。
此外,由于路由控制包的传输也会消耗能量,应用层要选择较高的数据传输速率以保证节点正常通信,其消耗能量占总能耗的比重较大,若控制包的能耗占主导地位,协议即使重新选路,均衡能量的效果也不明显[10]。因此,本文选取了20480bit/s的应用层速率。
各无人机节点的无线网卡能耗功率默认值参考了文献[11]给出的实验测量结果,不同传输速率的无线网卡,其相同状态的功耗相似。物理层各状态对应的功率分别为:Ptx=1.14W(以0dbm发射),Prx=0.94W,Pidle=0.82W,Psleep=0.10W,默认信道的CCA繁忙状态与空闲状态功率相同,即Pcca=0.82W。考虑到在NS-3的能源模型BasicEnergySource中,默认的电源电压为U=3.0V,因此在WifiRadioEnergyModel中各状态的电流分别初始化为:Itx=380mA,Irx=313mA,Iidle=Icca=273mA,Isleep=33mA。在仿真过程中,WifiRadioEnergyModel会对物理层的状态进行持续监听,对于每一段能量消耗,该模型都会通知EnergySource对象,在EnergySource对象中根据总电流与状态持续时间计算消耗的能量以及其他度量[12]。
为了获得吞吐量、端到端时延、分组投递率、开销等仿真结果,本文使用了NS-3的pcap追踪系统,将整个仿真过程中统计的分组传输信息全部保存在各节点的pcap文件内。仿真结束后,使用tcpdump对各节点的pcap文件进行抓包,并配合gawk进行文本分析处理,统计了使用不同路由协议时的网络性能[13]。
为验证改进协议对节点能量消耗情况的影响,本文设计了以下两组实验:
1)设置所有节点的初始能量为5000J,仿真持续100s,为了在较短的仿真时间内更加清晰地显示网络节点的能量分布情况,在配置能量模型时把所有状态的工作电流都同比例增大了5倍,观察仿真结束时各节点的剩余能量分布情况,如图5所示,通过改变随机数种子进行多次仿真,节点的剩余能量均值与方差分布如图6所示。从图5、图6中可以观察到,改进协议的节点剩余能量普遍高于原协议,仿真时间内网络的总能耗相比原来降低了12%。各个节点的剩余能量分布更加平均,节点剩余能量的最大值与最小值差距减小,能量分布的方差比原协议降低了17%。其原因为新的动态能源度量充分考虑了链路中各节点的预期寿命,有效避免了个别节点的负载过度,均衡了负载过大与负载过小节点的能量消耗。同时,缓解了网络拥塞,减少了分组丢失与重传,降低了每个通信请求的传输总能耗。
图5 仿真100s后改进协议与原协议节点的剩余能量分布Fig.5 Remaining energy distribution between improved protocol and AODV after 100s
图6 改进协议与原协议节点剩余能量的均值与方差对比Fig.6 Comparison of mean and variance of remaining energy between improved protocol and AODV
仿真持续时间内,在所有接受节点的套接字端统计了应用层流量,并计算总和得到了网络吞吐量,其随时间的变化曲线如图7所示,由于网络吞吐量波动较大,绘图时采用了gnuplot的bezier数据平滑方式进行曲线拟合。仿真起始时各节点开始建立路由并进行通信,吞吐量不断增大,当趋于稳定时,改进协议的网络吞吐量约比经典协议提升了13%,这是因为改进协议避免了能耗较大,可能导致网络拥塞的节点,从网络层降低了信道竞争和链路质量较差导致的分组丢失。
图7 仿真100s内改进协议与原协议的网络吞吐量变化Fig.7 Throughput between improved protocol and AODV during 100s’ simulation
此外,本文从10组中选择了3组通信质量有明显差距的通信链路进行跟踪,分别为3~13,5~15,7~17号节点构成的链路。使用NS-3的flowmonitor模块测量了3组链路的端到端时延与丢包率情况,分别如图8(a)和图8(b)所示。
图8 改进协议的端到端时延与丢包率性能Fig.8 Throughput and end to end delay performance between improved protocol and AODV
从仿真结果可看出,无论通信链路的稳定性如何,改进协议均降低了源节点与目的节点的端到端时延与丢包率:在链路不稳定时,由于改进协议减少了网络拥塞节点导致的分组传输延迟,端到端时延可降低达30ms以上;丢包率平均可降低10%左右,直接导致了网络的总吞吐量提升。
2)设置所有节点初始能量为1000J,仿真持续100s,观察节点存活率随时间变化,结果如图9所示。其中,改进协议的节点首次死亡时间较原协议有所延后,网络的有效寿命得以延长,且改进协议的节点存活率始终高于原协议,仿真结束时,改进协议的节点存活率比原协议提升了18%。新的路由度量在一定程度上对快速拓扑变化网络起到了节能与能量均衡的作用。
图9 仿真100s改进协议与原协议的节点存活数曲线Fig.9 The node survival curve between improved protocol and AODV during 100s’ simulation
本文根据无人机节点物理层的能源消耗率,提出了一种基于预期寿命路由度量的自组网跨层能源优化路由协议。改进协议综合考虑了最小跳数与节点能耗因素,重新定义了路由度量,引入新度量后节点选择了预期寿命较大的链路,避免了过早出现能量不足而导致的链路失效与路由修复。仿真结果表明:在无人机节点高速移动的情况下,网络各节点负载得到了均衡,能量分布方差降低了17%。随仿真进行,节点剩余能量分布更加平衡,有效减缓了个别节点过早能源耗尽的情况,节点最终存活率提升了18%。此外,新协议对网络的整体性能也有所提升,其中网络总能耗降低了12%,吞吐量和分组投递率平均提升了10%左右,当链路不稳定时,端到端时延可提升30ms以上。