曹 健,高 静,张泽梁,王艺潼,李 枫
(1.北华大学计算机科学技术学院,吉林吉林 132000;2.北华大学数学与统计学院,吉林吉林 132000;3.北华大学大数据与智慧校园管理中心,吉林吉林 132000)
第四次工业革命的核心技术是智能制造[1],通过对机器状态和生产环境的监控,能有效地预测机器故障并优化生产过程。在智能制造背景下,工业无线网络的规模不断扩大、新型应用不断涌现,这就导致网络中的能耗激增。降低网络的能量消耗,提高网络的能量使用效率成为工业无线网络实用化发展的关键。此外,目前大多数联网的工业设备资源有限,一旦部署就要使用很长时间,难以根据工业应用需求动态调整网络资源和路由策略,网络的灵活性较差,因此现有的网络架构不再适用于智能制造环境,迫切需要新的体系结构和新的路由算法来支持工业无线网络的发展。
软件定义网络(Software Defined Network,SDN)是一种新型的网络体系结构,它分离了控制平面和数据平面,控制平面集中式的管理使得网络可以基于全网视图进行路由决策,并且提高了新功能部署和实施的灵活性;网络的可编程性使得控制平面与数据平面之间的双向通信成为可能[2-3],达到简化网络管理与调度的目的。因此,将SDN 思想引入工业无线网络的架构设计中,由控制平面基于全网视图进行决策,可以降低工业现场联网设备的复杂度和硬件成本,有效提高网络的灵活性和能量使用效率。目前,国内外将二者结合的研究还在初期阶段,尚未有较为成熟的理论成果,因此对基于SDN思想的工业无线网络路由算法进行研究具有必要性和迫切性。
为此,本文基于SDN 思想提出软件定义的工业无线网络能量高效路由算法(Software Defined Energyefficient Routing Algorithm,SDERA),控制器根据全局的网络状态信息和应用需求动态地调整路由决策,均衡网络中节点的能量消耗,提高网络的能量使用效率和灵活性。
学术界开展了大量关于工业无线网络的研究。文献[4]分析了基于IEEE 802.11,IEEE 802.15.1 和IEEE 802.15.4 标准的工业无线网络的性能问题;文献[5]研究了WirelessHART 标准中的汇聚传输问题,并提出了一种优化时延的传输调度策略;文献[6]提出一种基于ISA100.11a 的工业认知无线传感器网络路由算法,有效地增加了网络吞吐量并降低端到端延迟;文献[7]从信道争用、传输冲突等角度分析了基于WirelessHART 标准网络的端到端通信延迟,并且通过计算得出了延迟的时间范围。上述研究内容虽然从某一个方面或某一个指标满足了工业无线网络的通信需求,但很难根据全局的实时网络状态信息及时调整路由策略,难以满足智能制造背景下用户个性化定制产品等应用场景对工业无线网络的需求。
SDN 是近年来国内外学术界和工业界的研究热点。文献[8]提出的OpenFlow 是SDN 最初的原型实现,它主要应用在大学校园和互联网的骨干网中,由OpenFlow交换机和控制器两部分组成。文献[9]分析了互联网域间路由的主要问题,提出了基于SDN 的域间路由机制。文献[10]将流量分类技术应用于SDN 中,网络能够区分不同的应用,并根据数据流在带宽和延时方面的需求智能优化网络资源的配置。此外,文献[11-12]分别把SDN应用到了移动接入网和无线传感器网络。总体来看,目前关于SDN 的研究主要是面向数据中心网络和互联网的主干网领域,研究的内容主要集中在SDN 的可扩展性、SDN 的规模部署与跨域通信、传统网络与SDN 共存等方面,基于SDN 的思想设计工业无线网络路由算法目前仍十分罕见。
用有向图G=(V,E)表示工业无线网络,其中,V表示网络中节点的集合,E表示网络中无线链路的集合,如图1 所示。
图1 网络模型Fig.1 Network model
网络中的节点包括控制器C、感知节点fi、交换节点sj和接入节点ak。控制器C 位于监测区域的中心,拥有网络的全局状态视图和无限的能量供给,能够智能分配网络资源和优化路由选择;感知节点fi能够感知现场设备及环境信息,并将其发送给交换节点;交换节点sj能够感知工业现场设备的状态信息,还能依据控制器C 下发的规则转发数据包;接入节点ak能够将sj发来的数据包进行数据融合,然后将其发送给云/雾计算中心。
网络中的链路包含控制器与交换节点间的链路、交换节点间的链路以及感知节点与交换节点间的链路等。由于无线链路具有不对称性,将交换节点si到sj的无线链路记为eij∈E,反向链路记为eji,将交换节点si到感知节点fj的无线链路记为∈E,RSSIij表示无线链路的RSSI 值。
SDERA路由算法由“网络状态信息收集”“路由计算”“路由规则下发”“数据传输”和“节点信息更新”五部分组成。控制器周期性地收集节点和链路状态信息,建立全局的网络拓扑结构,并分别为紧急数据包和普通数据包动态地计算转发路径,将其分配在不同的逻辑子网中传输,均衡网络中节点的能量消耗。当应用需求或者节点的状态信息发生变化时,控制器能够动态调整路由决策,从而提高能量使用效率。
2.2.1 网络状态信息收集
控制器C 向网络中所有的节点广播初始化消息HELLO-EO(hello-everyone)数据包,交换节点si在收到HELLO-EO 数据包后向控制器C 发送BACK-HELLO 数据包,同时si向周边节点广播Query 数据包,获取邻近的感知节点fj和交换节点sj的信息。
感知节点fj接收到来自控制器C 的HELLO-EO 数据包后进入等待状态,当它收到交换节点si发送的Query数据包后,向si发送BACK_Query 消息。如果fj接收到来自不同交换节点的多个Query 数据包,则比较接收数据包的RSSI 值,选择信号最强的交换节点si发送BACK_ Query 消息。si收到fj的反馈信息后,将其加入到自己的管辖节点集合中,即:
当sj接收到邻居交换节点si的Query 数据包以后,向其发送Back_S_Query 数据包,si收到反馈信息后,将sj加入邻居节点集合中,即:
si将自己的管辖节点集合、邻居节点集合以及剩余能量和CPU 负载等信息发送给控制器C。控制器C接收到所有交换节点的信息后,掌握了全局的网络状态信息。
2.2.2 路由计算
控制器C 完成网络状态信息收集后,掌握了网络中所有节点的状态信息,建立网络拓扑结构,接下来进行路由计算。根据工业数据传输需求,将网络中传输的数据包分为紧急数据包和普通数据包两种,控制器C 将其分配在不同的虚拟子网中传输,以便最小化普通数据包对紧急数据包的影响。
针对紧急数据包,控制器以交换节点si与sj间的一跳传输延时d(i,j)为度量,采用Dijkstra 算法计算每一个交换节点si到任意接入节点ak的最短路径:
如果一个交换节点si存在到达不同接入节点(如ak,ak+1,…)的多条路径p(i,k),p(i,k+1),…,满足数据传输的时延需求,则根据式(4)选取中继节点剩余能量较多,且到达队列占用率较低的接入节点的路径p(i,l)为转发路径,从而均衡网络负载和能量消耗。
式中:α∈(0,1)是一个常数,表示接入节点ak的队列占用率所占权重为接入节点ak的队列占用率,其值为百分数为路径p(i,k)上所有节点的剩余能量的和为路径上全部节点的初始能量的和。
针对普通数据包,控制器C 根据式(5)计算交换节点的负载因子:
式中:Ei为节点si的剩余能量;Eaver为网络中所有交换节点剩余能量的平均值;表示si的队列占用率,其值为百分数。控制器C 以节点的负载因子为度量,采用Dijkstra 算法计算交换节点si到处理器负载最轻的接入节点ak的最短路径:
由此将普通数据包分配在剩余能量高、负载较轻的交换节点中传输,均衡网络的能量消耗。
路由计算过程伪码描述如下:
Set packet_type=1/*紧急数据包*/
For(i=0;i<n;i++)/*n为网络中交换节点的数目*/
{ For(j=0;j<m;j++)/*m为网络中接入节点的数目*/
Compute the shortest path from s[i]to a[j]using Dijkstra with the metric about delay;
If(pathnum >1)/*满足传输需求的路径数量多于1 个*/
Select the path p(i,l) by formula(5);
}
Set packe_ type=0/*普通数据包*/
For(i=0;i<n;i++)/*n为网络中交换节点的数目*/
Compute the load factor LF[i]of s[i];
{For(l=0;l<m;l++)/*m为网络中接入节点的数目*/
Select the node a[l]with the lightest queue load;
Compute the shortest path from s[i]to a[l]using Dijkstra with the metric about LF[i];
}
2.2.3 路由规则下发
控制器完成路由计算以后,为每个交换节点中的紧急数据包和普通数据包分别计算了到达最优接入节点的路径,接下来要将路由规则分发给交换节点,由交换节点按照路由规则转发数据包。路由规则报文中包含了紧急数据包和普通数据包到达目的节点的下一跳节点地址等内容,路由规则报文格式如表1 所示。
2.2.4 数据传输
当感知节点有数据要发送时,先将数据包发给管辖自己的交换节点,交换节点为接收到的数据包匹配报文类型,然后根据控制器下发的路由规则找到下一跳节点地址,将数据包发往下一跳交换节点。
表1 路由规则报文格式Table 1 Description formats of routing rule
紧急数据包和普通数据包分别在不同的逻辑子网中传输,当它们到达接入节点以后,接入节点要统计数据包的跳数、转发节点、发送时间和接收时间等信息,并将统计信息以及自己的处理器负载信息发送给控制器。控制器根据接收到的统计信息估算网络中交换节点的剩余能量。
2.2.5 节点信息更新
网络运行一段时间以后,网络中节点和链路状态会发生变化,此外节点的新增和失效都会导致网络拓扑结构的改变,因此交换节点要周期地发送Query 数据包来更新邻居节点和管辖节点信息。交换节点要将新的邻居节点列表、管辖节点列表以及自身状态信息(剩余能量和队列占用率等)发送给控制器,控制器将新收到的每一个交换节点的剩余能量信息和估算的剩余能量进行比较,当它们的差值大于γ时,控制器则根据更新的全网信息重新计算转发路径并下发新的路由规则,从而及时优化网络的能量消耗。
本文采用OMNET++仿真平台对SDERA 算法的性能进行仿真实验,并与图路由算法进行比较,主要从3个方面评估SDERA 算法的性能:端到端的平均传输延时;网络的扩展性;网络的有效生存周期。实验参数设置如表2 所示。
在平均传输延时比较实验中,设定紧急数据包(HRSDERA)的延时约束THR=0.1 s;普通数据包(LRSDERA)的延时约束TLR=1 s。从实验结果可以看出,在SDERA 算法中,随着网络中数据流数量的增加,紧急数据包的传输延时在端到端的时延约束下平缓上升,当数据流的数量达到22 个时,时延约束仍小于0.1 s,始终低于图路由算法的延时;普通数据包在剩余能量高、负载较低的链路中传输,其端到端延时曲线会根据网络状态变化出现轻微波动,其延时略高于图路由算法,如图2 所示。
表2 实验参数设置Table 2 Parameter configurations of simulation experiment
图2 平均传输延时比较Fig.2 Comparison of average transmission delay
本文通过增加节点密度产生的控制包数量来反映网络的可扩展性。在SDERA 算法中,感知节点要将在工业现场采集的信息发送给交换节点,由交换节点转发信息,无需维护路由消息,虽然控制器和交换节点间的通信会增加额外的数据包,但数据量不大,总体来讲感知节点的增加并没有大幅度增加网络中控制包的数量;在图路由中,所有节点都要参与数据包的转发,新增节点带来了较大的网络开销。因此,SDERA 算法较图路由算法具有较好的网络扩展性,当网络中节点达到400 个时,SDERA 算法在网络扩展性方面的优势更加明显,如图3 所示。
此外,SDERA 算法能够根据节点的剩余能量动态调整路由策略,并且根据数据的类型匹配相应的策略,从而均衡网络中节点的能量消耗。SDERA 算法针对紧急数据包,在满足时延需求的路径中选取中继节点剩余能量多,到达队列占用率低的接入节点的路径为转发路径;针对普通数据包,根据节点的剩余能量和负载因子,选取剩余能量高、负载较轻的节点为下一跳节点,当仿真时间达到2 000 min 时,网络中的节点仍能够较好的存活。与图路由算法相比,SDERA 算法有效延长了网络的生存周期,如图4 所示。
图3 网络的扩展性比较Fig.3 Comparison of network expansibility
图4 网络生存周期比较Fig.4 Comparison of network life cycle
本文基于SDN 的思想设计了能量高效的工业无线网络路由算法SDERA。控制器拥有全局的网络视图,根据工业数据传输需求将数据包分配在不同的逻辑子网中传输,达到提高网络能量使用效率的目的;当网络中节点和链路状态发生变化时,控制器能及时调整路由策略,在满足工业数据传输需求的同时,提高了网络的灵活性和能量使用效率。仿真实验表明,该路由算法在提高网络能量使用效率方面表现出较好的性能。
注:本文通讯作者为高静,张泽梁。