一种基于NDN的SWIM网络路由机制
2021-04-06吴志军徐新然
吴志军,徐新然
(中国民航大学电子信息与自动化学院,天津 300300)
广域信息安全管理系统[1](SWIM,system wide information management)作为新一代空中交通管理(ATM,air traffic management)信息系统的基础,为各航空系统提供高效、灵活、统一的数据交互服务。随着民航业快速发展,航空信息数据日益增加,不同ATM 系统间的信息交换愈加频繁,对SWIM 数据的分发效率提出了更高要求。因此,研究降低SWIM 数据传输延迟的措施,对保证SWIM 信息实时性、服务连续性和决策正确性具有重要意义。
命名数据网络[2](NDN,named data networking)是一种流行的信息中心网络[3](ICN,information-centric networking)架构,采用全新的网络协议栈,能实现网络层解析信息名称、路由缓存信息数据等功能,从而较好地解决了计算机网络中存在的扩展性、实时性和动态性问题[4],减轻数据源服务节点负载,提高网络性能。目前,研究人员已经对NDN 进行深入研究,并将其应用于多种网络。文献[5]提出了将NDN 转发模型应用于车联网,以解决车联网应用信息共享的安全性和实时性问题。文献[6]基于数据命名方式设计了一种简单的车辆信息分发应用,仿真结果显示该数据命名方式可有效促进兴趣包和数据包的转发,且可实现数据快速传输。文献[7]分析了NDN 在无线自组织网络中的优势,并结合无线自组织网络特点对基于NDN 的两种转发策略进行分析,为改善转发策略打下基础。文献[8]研究了可在NDN 上运行的改进Apache Hadoop平台,验证了在NDN 上运行大型、复杂分布式软件的可行性,展现了NDN 在分布式应用程序中实现重复读取的网络缓存前景。文献[9]为命名数据网络中的无线传感器设计了数据集同步协议,确保在各种网络状况下数据可用性接近100%,且开销可以忽略不计。由此可见,NDN 路由机制在降低网络数据传输时延和网络负载方面具有较大优势,可为改善SWIM 网络性能提供了一种解决方案。
目前,关于SWIM 的研究主要集中于SWIM 的架构以及SWIM 网络的安全性问题[10],文献[11]描述了SWIM 网络系统信息实时共享的重要性,提出了基于实时性的SWIM 架构以实现各应用信息传输的实时性。然而,在SWIM 网络路由方面还未提出有效措施,而网络中路由节点故障难以避免,数据传输的高时延成为SWIM 信息实时性的最大威胁。在对SWIM 架构和NDN路由机制研究的基础上,提出基于NDN 的SWIM 网络路由机制,以降低网络平均负载,解决因SWIM 路由节点故障引起的传输时延过高等问题,从而提高SWIM网络的请求响应速度,保证SWIM 信息的实时性。
1 SWIM 路由机制
1.1 SWIM 路由实现
SWIM 服务信息在数据交换的过程中主要使用两种类型的传输包,即兴趣包和数据包。兴趣包主要包括:内容名、选择器和随机数等字段;数据包主要包括:内容名、签名、签名信息和数据等字段。
SWIM 中的路由节点主要维护3 种表结构以实现路由转发,即转发信息表(FIB,forwarding information base)、待定请求表(PIT,pending interest table)和内容缓存(CS,content store),其基本格式如图1所示。
图1 SWIM 路由中3 种表结构Fig.1 Three related structures of SWIM routing
FIB 负责记录兴趣包所要转发的下一跳节点与相应信息命名的映射,用以确定路由方向(最长匹配原则);PIT 将跟踪并记录兴趣包已到达但预期数据未到达的输入端口;CS 作为节点的本地缓存,用于存储所经过信息的副本。FIB 中接口有3 种状态[12]:
1)端口状态正常(GREEN),即由该端口发送兴趣包,相应的数据包可以返回;
2)端口状态未知(YELLOW),端口可能长时间未使用时会转入该状态;
3)端口状态异常(RED),当出现节点故障或链路失效时,相关端口会转入该状态。
1.1.1 SWIM 信息数据的命名
目前SWIM 提供的数据交换服务主要有4 种:飞行数据交换服务、航行情报交换服务、气象信息交换服务及其他服务。
SWIM 信息请求者请求信息或信息提供者发布信息时,将使用SWIM 的信息交换服务对信息的特征进行提取、描述。这些特征可作为命名的参考,例如飞机的全球唯一航班标识符(GUFI)可结合SWIM 数据特点具体命名,规则如表1所示。
表1 SWIM 信息命名规则Tab.1 SWIM information naming rule
SWIM 网络中的兴趣包和数据包采用内容名作为唯一标识,实现了命名的一致性,具有可自验证特点,简化了内容的安全性检测。此外,这种命名方式为相关的路由转发方式和缓存机制打下了基础。这种基于内容寻址的通信模式将兴趣包与数据源地址隔离开,实现相同前缀内容名的聚合,避免了大量信息数据引起的路由表膨胀,从而提高了路由工作效率。另外,层次化的命名方式使得内容命名具有很好的扩展性,保证了SWIM 数据命名的可用性。
1.1.2 SWIM 网内路由缓存机制
SWIM 自身虽然不会产生信息数据,但其作为各ATM 系统信息交互共享的平台,所有的应用服务数据都将流入SWIM。随着航空业务和航空大数据发展,SWIM 需要处理的数据量呈现快速增长的趋势,SWIM“虚拟信息池”的概念意味着其将存储和传输大量的航空数据,同时对SWIM 网络传输信息的性能也提出了更高要求。SWIM 网络通过路由节点内的缓存机制,即对经过路由节点的数据包进行缓存,可实现对后续相同资源请求的快速响应,减少网络中的冗余流量,降低数据传输时延,节省网络带宽,减轻数据源服务器负载,提高数据复用率。例如,很多部门都需要气象部门发布的气象信息,当某个部门从气象部门的SWIM 应用获取数据后,相应的路由路径中会对气象信息进行缓存;当后续部门发出同样请求后,如果转发路径中的路由节点内缓存了相应的气象信息,则不需要再从源数据节点获取相关数据,减少了路由转发次数,提高了获取内容数据的效率。
1.1.3 信息的路由转发
在SWIM 服务发布之后,对于消费者而言,为了获取该服务的信息,需要发出包含期望内容名称的兴趣包;对于生产者而言,在接收到合法用户的兴趣包请求后,应返回相应的数据包。路由节点对兴趣包和数据包的处理过程如图2所示。
图2 路由转发过程Fig.2 Route forwarding process
在兴趣包进入路由节点后,首先将在CS 中查找是否有与消费者期望内容匹配的数据缓存,如果有,则直接将相应的数据包返回给消费者,同时丢弃该兴趣包;如果没有,则在PIT 中查找是否有与期望内容匹配的表项,如果有,说明之前已有内容名相同的兴趣包转发过,只需将本次兴趣包的来源端口添加到PIT 中,并丢弃该兴趣包;如果CS 和PIT 中均没有与之匹配的表项,则需要在FIB 中查找,如果FIB 中存在与兴趣包内容名匹配的表项,则根据转发策略将兴趣包从对应端口进行转发,并在PIT 中记录该兴趣包对应的内容名称以及接收该兴趣包的端口。如果FIB 中也无法匹配兴趣包的内容名称,说明无法经该节点获取所需的数据包,此时将丢弃该兴趣包,并返回NACK 包,告诉请求端,请求端将尝试向其他接口重新发送该请求包,直到接收到数据包或者请求超时。
当兴趣包由路由节点转发到数据源节点后,数据源节点将数据打包,并沿着PIT 中存储的发送端口往回发送数据包,转发完后将删除相应的PIT 表项,同时依据缓存策略对数据包进行缓存。
1.2 重路由机制
航空业对信息传输的及时性和有效性提出了很高要求。虽然路由节点的缓存策略可降低数据的传输延迟,提高对请求的响应速度,但当出现路由节点故障或链路失效时,根据现有的转发机制,路由节点将查询FIB,寻找与请求内容匹配的其他端口,然后通过该端口转发该兴趣包,直到接收到数据包或请求超时。然而,如果路由节点中的FIB 没有可用的其他端口可以转发该内容,将导致请求者无法获取请求数据。为保证出现路由故障后SWIM 网络中数据传输的效率,提出一种重路由机制。该方法可在监测到链路故障或节点失效后,快速寻找到新的路由转发路径,降低传输延迟和丢包率,保障SWIM 网络中数据传输的时效性。
1.2.1 重路由机制相关定义
重路由转发包包括:标识位、内容名、起始节点标识、失效节点标识和随机数,可用于寻找重路由路径。
重路由确认包包括:标识位、内容名和目标节点标识,可用于确认重路由路径。
重路由表包括:标识位、内容名和请求包来源接口。
其中,标识位是路由节点识别重路由是针对兴趣包还是数据包的依据。如果是兴趣包,则其值为0;是数据包,则其值为1。内容名即为兴趣包/数据包中的内容名;起始节点标识用于标记发起重路由请求的节点,当重路由请求包找到满足条件的下一跳节点后,该标识即作为重路由确认包的目标节点标识;失效节点标识用于标记失效节点,主要用于寻找路由失效前失效节点的下一跳节点;随机数的作用与兴趣包中的随机数字段作用一致。
1.2.2 兴趣包和数据包的重路由
当兴趣包或数据包到达节点后,根据路由转发规则,决定其下一跳的转发端口。当某个端口指向的下一跳节点出现故障或链路失效时,该端口的状态为RED。此时,查询FIB 和PIT,确认经该端口转发的内容名,并生成重路由请求包,并将该请求包向除了状态为RED 外的其他端口进行转发。路由节点接收到重路由请求包后的处理过程如图3所示。
图3 重路由请求包的处理过程Fig.3 Rerouting request packet process flow
当路由节点接收到重路由请求包后,首先判断当前节点是否为失效节点的相邻节点,如果不是,则根据请求包的各个字段及来源端口,创建重路由表项;如果是失效节点的相邻节点,且标识位为0,说明是针对兴趣包转发的重路由,故查询FIB 中是否有匹配的字段,如果没有,以同样方式创建重路由表项;如果标识位为1,说明是针对数据包转发的重路由,故查询PIT 中是否有匹配的字段,如果没有,以同样方式创建重路由表项。如果FIB 或PIT 中有匹配的表项,说明找到一条冗余路径传输相关的兴趣包和数据包,此时返回一个重路由确认包。节点对重路由确认包的处理过程如图4所示。
图4 重路由确认包的处理过程Fig.4 Rerouting confirmation packet processing flow
当路由节点接收到重路由确认包后,根据重路由包的各个字段,查询重路由表中是否有匹配的表项,如果没有,则丢弃该重路由确认包;如果有,根据标识位的值、内容名和来源端口分别更新PIT 和FIB 的表项并进行转发,直到转发到起始节点为止。
2 实验结果与分析
2.1 实验环境与实验过程
采用ndnSIM[13]进行仿真实验,模拟SWIM 网络中气象信息和飞行信息的订阅发布过程,请求信息方为消费者,发布信息方为生产者,仿真拓扑结构采用GEANT 网络。拓扑结构共有22 个节点和36 条链路,链路间的带宽为1 Mbps。设置10 个消费者节点,其中4 个消费者节点只请求气象信息,4 个消费者节点只请求飞行信息,2 个消费者节点既请求气象信息又请求飞行信息;设置2 个生产者节点,1 个为气象信息生产者,另1 个为飞行信息生产者,每个消费者节点每秒发送100 个请求。
2.2 实验结果分析
2.2.1 性能指标
1)网络平均时延
网络时延是从节点第一次发出请求到收到相应数据包的时间。网络平均时延则是所有不同请求网络延迟之和的平均值,即
式中:N 为不同节点中不同请求数的总和;Di为第i 个请求的时延。
2)网络平均负载
所有节点转发的兴趣包和数据包的总字节数与节点数目的比值,计算公式为
式中:BI,i和BD,i分别为第i 个节点转发的兴趣包和数据包;n 为节点总数。
3)平均跳数
跳数是兴趣包或数据包在传输过程中经过的节点数。平均跳数计算公式为
式中:HI,i为第i 个兴趣包经过的跳数;HD,j为第j 个数据包经过的跳数;l 为兴趣包的总数;k 为数据包的总数。
4)平均重传次数
重传是当网络中兴趣包出现丢失或者请求超时情况时,需要重新发送兴趣包。平均重传次数计算公式为
式中,Ri为第i 个请求重传的次数。
2.2.2 性能分析1)实验1
两个同时请求气象信息和飞行信息的消费者节点在0 s 开始发送请求获取气象信息,其余消费者节点在3 s 后开始发送请求,采用最佳路由策略[13],分别考虑使用节点内缓存和不使用节点内缓存的情况,每隔1 s 进行一次采样,平均时延和平均负载情况如图5和表2所示。
图5 平均时延Fig.5 Average time delay
由图5和表2可看出,在不使用节点内缓存时,每个消费者都需要从生产者的源节点获取数据,将产生大量的冗余流量,增加网络负载,导致网络传输时延上升,影响网络性能。而采用节点缓存策略,部分消费者可以从离自己较近的路由节点获取缓存过的内容,这将降低路由节点的传输时延和负载。
2)实验2
所有消费者节点在0 s 开始发送请求,在7.5 s 时随机选取某两个路由节点(非生产者和消费者节点)间的链路,将其状态设为“FailLink”,即模拟节点失效,每隔1 s 进行一次采样,为反映重路由、最佳路由策略以及泛洪策略[13]在节点失效后对网络性能的影响,在节点失效前均采用最佳路由策略,出现节点失效后,分别采用3 种方法实现路由路径重新规划,取7~12 s的数据进行分析。3 种方法的平均时延、平均跳数和平均重传次数比较如图6所示。
a)网络平均时延比较
图6(a)的仿真结果显示,在出现节点失效后,所有方法传输时延均上升,但重路由机制可较好地控制传输时延上升的程度。因为在出现链路失效之后,必然会有兴趣包和数据包出现丢弃和重传的现象。重路由机制是在原路径基础上寻找绕过失效节点的路由路径,这在很大程度上可减少兴趣包和数据包的丢弃和重传,减轻节点失效带来的影响。
图6 性能对比Fig.6 Performance comparison
b)平均跳数比较
图6(b)结果显示重路由机制的平均跳数略高于最佳路由策略,因为重路由路径选择并不是依赖于FIB,而是依据重路由机制寻找跨过失效节点的冗余路径,通过更新路径中节点的FIB 和PIT 找到新路径来传输兴趣包和数据包,但这并不一定是跳数最短的路径;最佳路由策略是根据FIB 选择状态最好的端口进行转发;而泛洪策略会向所有匹配内容的端口进行转发,故其平均跳数最高。
c)平均重传次数比较
图6(c)的仿真结果显示重路由机制的重传次数最低。因为重路由机制是在链路失效前建立最短路径并寻找绕过失效链路的路由路径,在确定路径后,原路径中未丢弃的兴趣包和数据包可直接在新路径中继续传输,减少了重传次数;另外两种方法原路径中的数据包都会被丢弃,需根据FIB 确定新的路由路径之后,由消费者重新发送兴趣包,获取数据包。泛洪策略向所有匹配内容的端口进行转发,故寻找到与兴趣包匹配的端口的概率更大,因此其相对于最佳路由策略的重传次数低。
综合以上对3 个指标的分析,从SWIM 网络的角度来看,信息实时性以及服务连续性很重要,故时延是关键因素。综合考虑,重路由机制优于另外两种转发策略,可减小路由节点失效对网络造成的影响。
3 结语
1)基于NDN 路由机制,结合SWIM 数据的特点,设置了SWIM 服务数据的命名规则,确定了传输包的基本结构和传输规则,提出了基于民航信息有效时间的路由缓存方式,通过仿真验证了路由机制中网络缓存可降低民航网络的传输时延,提高传输效率;
2)提出了基于NDN 的SWIM 网络重路由机制,设计了相关的数据结构和重路由规则,实验仿真表明该方法可减小路由失效对网络性能的影响,可为SWIM服务的连续性提供一定的保障。