天地一体化网络新型路由协议一致性测试研究
2018-04-02王之梁姚姜源施新刚陈健军戴庆龙
王 庆,王之梁,姚姜源,施新刚,尹 霞,3,王 鹏, 陈健军, 戴庆龙,牟 超
(1. 清华大学计算机科学与技术系, 北京 100084;2. 清华大学网络科学与网络空间研究院, 北京 100084;3. 清华信息科学与技术国家实验室(筹) , 北京 100084;4.海南大学信息科学技术学院,海口 570228;5.中国电子科学研究院,北京 100041)
0 引 言
以卫星通信为代表的空间网络是未来网络发展的一个重要研究方向。在网络覆盖范围和设备移动接入方面,空间网络与地面网络有着很强的互补关系,随着两者的不断融合,逐渐产生了天地一体化网络的概念。天地一体化网络是融合空间网络、地面互联网、移动通信网络等异构网络,为分布于太空、天空、海洋和陆地的各类用户提供全面信息服务的网络系统[1]。
目前中国的地面站不足以覆盖到全球范围,所以空间网络的信息通过地面组网来传播难以实现,这种情况下天地一体化网络中的空间节点需要通过组网互联。目前地面互联网分层的路由架构和技术已经比较成熟,可以将其应用到空间网络中。由于空间网络的节点存在数目种类繁多、距离遥远、分布具有周期性和可预测性等特性,加之空间网络拓扑变化频繁、信道质量差、组网特性差异较大、卫星处理能力受限等这些与地面网络显著不同的差异[1,2],天地一体化网络需要匹配适应空间网络特点的新型路由协议,如OSPF+[3]、BGP+等。
网络中同层之间的交互需要依赖网络协议,而路由协议是引导路由器转发数据包的一类网络协议。路由器会根据路由协议,进行路由信息的交互学习,从而生成路由表,数据包按照路由表进行转发。目前最常用的路由协议包括RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)、BGP(Border Gateway Protocol)等路由协议。路由协议能够直接影响数据传输和网络性能。为了保证路由协议能在网络中有效地运行,需要对协议进行全面的测试。协议的测试主要分为互操作性测试、一致性测试、性能测试三种。
本文主要关注新型路由协议的一致性测试。新型路由协议在实际部署之前,需要进行充分的一致性测试来检测其实现与对应协议设计文档的一致性。文中先简述路由协议的一致性测试,然后介绍新型路由协议OSPF+和BGP+的协议,之后根据协议标准,明确一致性测试过程中的测试内容、测试平台和测试集设计等测试细节,最后运行测试集进行测试,通过分析测试结果,修正协议实现。本文的主要贡献为基于通用协议集成测试系统平台PITSv3,设计了模拟天地一体化空间网络特性的协议测试集,对新型路由协议进行有效的一致性测试。
1 路由协议的一致性测试
路由协议主要用于生成、维护、更新路由表,从而使得数据包正确送达。路由协议主要功能可分为两部分:网络通信和路由信息处理。
路由协议的网络通信大部分使用FSM(Finite State Machine,有限状态机)模型来处理底层网络的接入,为路由信息流建立可靠信道,或者检测本地网络的连接状态,所以网络通信部分一般比较容易建模、实现和测试[4]。路由信息处理部分主要由路由器完成,路由器对收到的路由进行处理, 以更新本地的路由信息表。针对路由信息处理部分的测试研究主要有拓扑分析和内部过程模拟。拓扑分析的主要思想是将通过现有的路由信息表推测出的拓扑,与真实拓扑进行对比,判断路由信息处理过程是否正确。内部过程模拟主要是通过模拟路由信息处理的内部流程,设计并运行特定场景下的测试集,将测试结果与预期结果进行对比,从而查找路由信息处理过程中出现的错误[5]。
路由协议的一致性测试与路由信息处理的内部过程模拟测试相似,其主要思想是利用测试序列,在特定网络环境下,针对路由协议规范设计测试集,对被测系统进行黑盒测试,通过比较实际输出和预期输出,检测路由协议实际运行的系统与协议规范的符合程度。
2 天地一体化网络新型路由协议
域间路由协议和域内路由协议的协同工作能保证整个网络的互联互通。运行域间域内路由协议的边界路由器,会根据所运行的域间协议BGP+产生的路由表和域内协议OSPF+产生的路由表,生成最终的转发表,实现天地一体化网络的通信传输。
2.1 新型域内路由协议OSPF+[3]
OSPF是运行在单个自治系统内部,用于计算路由节点间最短路径的内部网关协议。OSPF属于链路状态协议,每个路由节点存储自治系统内部的链路信息,路由节点会根据该信息计算到目的节点的最短路径。
空间网络的拓扑变化频繁,传统的OSPF协议会洪泛拓扑信息占用带宽。此外,如果拓扑不及时更新,也会导致路由黑洞和环路,使得通讯中断、报文丢失。
针对天地一体化网络拓扑变化频繁、节点计算能力有限的特点,OSPF+协议在继承了OSPF协议基本功能的基础上,增加了拓扑预测功能,拓展了邻居状态机,从而提高域内路由协议在处理不同类型链路中断时的效率。
如果拓扑变化是因为通信信道受辐射干扰,空间链路发生短时间的中断,这种情况OSPF+协议可以避免路由收敛;如果拓扑变化可能导致特定链路长时间不可使用,该种情况OSPF+可以通过使用地面的管控服务器,直接根据各卫星的运动规律和轨道参数情况,计算出空间网络中各链路的连接和断开时刻,将其通告给对应的卫星节点,并提前计算最短路径,加速路由收敛[3]。
OSPF+扩展邻居状态机,如图1所示,新增Leaving状态来处理不同原因下拓扑变化的流程。不可预测的瞬时链路中断,可以用Hello报文进行检测,邻居状态保持Full不变来避免不必要收敛。可以预测的链路状态发生中断,邻居状态从Full状态进入Leaving状态,表示两个对等体暂时不可达,不进入Down状态。当邻居状态转为Leaving状态,对等体路由器为Leaving状态邻居建立NewLSAsList(New Link-state Advertisements List)表项,用以保存Leaving状态中邻居本应通过该对等体路由器收到的路由。当一个周期内或者NewLSAsList中LSA数量超出空间限制,链路未恢复则转为Down,链路恢复则转为ExChange,直接通过传输NewLSAsList提高同步效率。如果可预测链路发生中断,OSPF+不用等待4个Hello报文周期,通过直接判断链路情况,加速收敛。
图1 OSPF+邻居状态机[3]
2.2 新型域间路由协议BGP+
BGP是用于不同的自治系统之间交换路由信息的域间边界网关协议。BGP对等体只与邻居对等体交换路由信息,通过距离向量算法更新路由。BGP通过AS Path属性记录路由信息所穿越的自治系统信息,避免路由传输产生的环路。
BGP+是根据天地一体化网络中空间网络的特性,对BGP边界网关协议进行扩展得到的新型域间路由协议,它支持对等体会话动态建立和路由的增量更新[8]。
传统网络中自治系统的位置相对稳定,BGP对等体的连接也就相对稳定,但在天地一体化的空间网络中,卫星之间的相对运动导致了BGP对等体位置的变化,某一时刻直连的BGP+对等体可能在下一时刻需要通过其他对等体来建立连接,因此BGP+需要在不同的时刻选择更合适的对等体进行连接,则BGP+支持对等体会话的动态切换至关重要。
空间网络中,因为卫星之间的相互运动,导致BGP对等体之间出现周期性断开重连的情况,传统的BGP协议要求对等体建立连接时,对等体之间通告所有路由表项,但卫星网络存在周期性断开重连的情况,如果使用传统的BGP协议,则会有大量的路由表项在两个对等体之间周期性地进行重复传输。BGP+增加了路由增量更新的设计方案,能有效地减少路由表项的重复传输。如果对等体运行BGP+协议,当该对等体之间断开连接,两个对等体分别保留路由表项,等待重新连接之后,BGP+对等体之间仅传输增量宣告或者撤销的路由。
在下文的协议一致性测试方案中,主要针对OSPFv3的基本功能和OSPF+的扩展功能、BGP的基本功能和BGP+的扩展功能进行相应的测试设计。
3 一致性测试需求
网络协议的一致性测试是一种功能性的黑盒测试,它根据协议的描述对协议的实现进行测试,从而判断协议实现与协议标准是否一致。本文的一致性测试是通过在网络协议功能一致性测试工具上运行测试集,从而实现对运行被测网络协议的被测系统(System Under Test,SUT)进行测试的需求。
3.1 OSPF+一致性测试需求
OSPF+一致性测试主要包含两部分:OSPFv3协议原有基本功能的测试、OSPF+协议中扩展功能的测试。
(1)OSPFv3基本功能测试:主要测试OSPFv3协议原有的功能,由于OSPFv3的协议标准及其实现已相对比较成熟,这部分内容不是测试的重点。主要包括以下两方面的内容:
① OSPF+Hello协议测试:OSPF+路由器应能够周期性发送Hello报文。
② OSPF+正常建立邻接关系测试:OSPF+路由器与邻居正常建立邻接关系,并交换链路状态数据库信息,邻居状态机最终达到Full状态。
(2)OSPF+扩展功能测试:OSPF+协议主要针对空间网络的特点做了一些相关的扩展,主要体现在OSPF+邻居状态机的扩展。因此,对OSPF+扩展功能测试主要围绕OSPF+邻居状态机的扩展部分展开。主要测试需求如下:
① OSPF+邻居状态机由Full状态进入Leaving状态测试,分为两种情况:
·OSPF+协议中,在Full状态下,根据拓扑预测结果,与邻居的相应链路由于卫星轨道运动断开。此时,如果在一个Hello报文周期(10s)内没收到邻居的Hello报文,则进入Leaving状态。
·OSPF+协议中,在Full状态下,如果在Inactivity_timer定时器规定时间(40s)后没收到对端的Hello报文,则进入Leaving状态。
② OSPF+维持Full状态:OSPF+协议中,在Full状态下,根据拓扑预测结果,邻居的相应链路由于卫星轨道运动断开。此时,如果在一个Hello报文周期(10s)内收到邻居的Hello报文,则继续维持Full状态。
③ OSPF+协议中邻居状态机由Leaving状态进入ExChange状态:OSPF+协议中,在Leaving状态下,如果在一个邻居轨道周期内再次收到Hello报文,则进入ExChange状态。
④ OSPF+由Leaving状态进入Down状态:OSPF+协议中,在Leaving状态下,如果一个邻居轨道周期内,没有收到Hello报文,则进入Down状态。
3.2 BGP+一致性测试需求
BGP+一致性测试主要包含两部分:BGP协议原有基本功能的测试、BGP+协议中扩展功能的测试。
(1)BGP基本功能测试
① 邻居建连测试:测试系统软件向运行BGP+的被测系统发送OPEN报文,请求与被测系统建立连接,当测试软件系统收到被测系统回复的OPEN报文和KEEPALIVE报文,表明邻居建连成功。
② 对等体断连测试:测试系统软件向运行BGP+的被测系统发送OPEN报文,请求与被测系统建立连接,当测试软件系统收到被测系统回复的OPEN报文和KEEPALIVE报文,即邻居建连成功,测试系统软件回复KEEPALIVE报文维持连接,之后测试系统软件主动断开BGP连接,即连续3次收到被测系统的KEEPALIVE报文,然后测试系统收到被测系统通知断连的NOTIFICATION报文,表明对等体断连成功。
③ 前缀报文交互测试:测试系统软件和被测系统建立BGP+连接,测试系统软件通过向被测系统发送UPDATE宣告前缀信息,如果被测系统学习到该路由信息,表明前缀报文交互成功。
(2)BGP+扩展功能测试
① 动态切换对等体测试:在空间网络的高延时、高丢包和卫星位置经常发生变化的情况下,运行BGP+协议的可见卫星能够动态建立对等体关系,并且学习到相关路由信息。例如:对等体A和对等体B、C分别建立BGP+连接,C宣告给A的路由,A会转发给B。当B主动与A断连之后,D会和A主动建立连接,此时C如果向A宣告路由,A会转发给D。
② 路由增量更新测试:在空间网络高延迟、高丢包、链路周期性变化的网络情况下, BGP+协议能够与对等体进行路由的增量更新,只发送对等体断开期间,增量宣告或者撤销的路由信息。
4 测试方案
4.1 测试平台
4.1.1 网络协议一致性测试工具
网络协议功能一致性测试工具能够测试各类节点设备的网络协议功能一致性,包括OSPF+、BGP+等路由协议;使用网络协议测试工具进行测试的体系结构如图2所示。
图2 网络协议功能一致性测试的体系结构图
本文对新型路由协议OSPF+和BGP+的一致性测试,采用基于TTCN-3语言(Testing And Test Control Notation Version 3,测试和测试控制描述法第三版)的相关技术,使用自主研发的协议测试系统工具PITSv3[6](Protocol Integrated Test System)进行测试, PITSv3内通过MTC(Main Test Component,主测试部件)和多个PTC(Parallel Test Component,从测试部件),来模拟测试系统多网口的情况。PITSv3系统的体系结构见图3。
4.1.2 测试方法
本文进行的协议一致性测试采用改进的穿越测试法[7],如图4所示,测试系统和被测系统的多个接口分别相连,模拟真实网络环境。多个测试接口对应到PITSv3工具中为一个主测试部件和多个从测试部件。
图3 PITSv3系统的体系结构[6]
图4 改进的穿越测试法结构图[7]
4.1.3 协议一致性测试网络环境
本文对天地一体化网络新型路由协议的一致性测试,依托于安装在物理机上的VMware虚拟机管理软件,在VMware软件中创建两台虚拟机,分别作为测试系统(安装PITSv3的Window7系统)和被测系统(运行新型路由协议代码的CentOS系统)。每台虚拟机应设置内存大小(1G以上)、处理器个数(2个以上)、硬盘大小(20G以上)、网络适配器(参考测试用例的拓扑)等参数。通过设置网络适配器,创建多个网口,构建协议一致性测试的网络环境。
OSPF+和BGP+的一致性测试主要采用基于虚拟机的测试环境,采用虚拟机方式建立测试环境,具有使用调试方便、部署迁移快速的优点。
4.1.3.1 OSPF+一致性测试环境
OSPF+协议采用软件实现,运行在Linux系统上。测试环境如图5所示。
图5 OSPF+一致性测试环境
OSPF+协议一致性测试环境安装在一台物理机内,通过物理机内的虚拟机搭建网络环境。其中一台虚拟机运行PITSv3系统,作为OSPF+协议一致性测试工具;另外两台虚拟机分别运行OSPF+协议软件(作为被测实现IUT)及其管控中心。3台虚拟机均接入同一IPv6网段3ffe:3211:a:1::/64。
4.1.3.2 BGP+一致性测试环境
BGP+协议采用软件实现,运行在CentOS系统上。测试环境如图6所示。
图6 BGP+一致性测试环境
BGP+协议一致性测试启动两台虚拟机模拟BGP网络环境,一台安装测试软件系统PITSv3,一台运行BGP+协议属于被测系统,通过设置多个虚拟网络接口来连接外部邻居。
4.2 测试集设计
新型路由协议一致性测试的测试集结构如表1所示,按照协议及其功能测试的不同分成4个测试组:OSPFv3基本功能测试、OSPF+扩展功能测试、BGP基本功能测试和BGP+扩展功能测试,共12个测试例。其基本思路是根据协议功能分别进行设计,模拟空间网络拓扑情况,尽可能全面覆盖协议状态机、协议实现以及路由信息的交互情况。
表1 新型路由协议一致性测试的测试集结构
4.2.1 OSPF+协议一致性测试集
4.2.1.1 OSPFv3基本功能测试集
OSPFv3基本功能测试集主要为了测试OSPFv3的核心功能,涉及Hello协议和邻接关系的建立(邻居状态机进入Full状态),见表2。
表2 OSPFv3基本功能测试集
4.2.1.2 OSPF+扩展功能测试集
OSPF+扩展功能测试集重点围绕邻居状态机中新增的Leaving状态展开,主要包括对状态机中进入和离开Leaving状态变迁的测试。如表3所示。
表3 OSPF+扩展功能测试集
4.2.2 BGP+协议一致性测试集
4.2.2.1 BGP基本功能测试集
新型域间路由协议BGP+是通过对BGP协议进行扩展而产生的,它的基本功能测试集主要包含从BGP协议继承过来的邻居建连、对等体断连、前缀报文交互等3个测试例,如表4所示。
表4 BGP基本功能测试集
4.2.2.2 BGP+扩展功能测试集
因为空间网络卫星之间的相互运动,BGP+新型域间路由协议支持动态切换对等体和路由增量更新两项拓展功能,如表5所示。
表5 BGP+拓展功能测试集
测试系统软件和被测系统通过报文交互完成测试过程,以动态切换对等体为例。BGP+动态切换对等体的拓扑的测试配置如图7所示。该测试例中模拟被测系统有3个邻居,在测试系统内使用一个主测试部件MTC模拟被测系统的邻居对等体D,和两个从测试部件PTC1和PTC2模拟被测系统的邻居对等体E和F。
因为空间网络卫星随轨道运动,某时刻直连的BGP+对等体可能在下一时刻需要通过另外一条较远的路由才能连接,此时BGP+可能会切换更合适的对等体进行连接。
该测试例中运行BGP+协议的被测系统,从与对等体E建立连接,切换到与对等体F建立连接,期间对等体D向被测系统宣告路由,通过观测与被测系统相连的其他对等体是否收到路由,验证天地一体化动态网络拓扑结构下,BGP+对等体切换之后,对等体之间能够正确运行BGP+协议。
图7 BGP+动态切换对等体的测试配置
该BGP+动态切换对等体的测试序列见图8,测试序列对应的流程描述如下:
(1)MTC模拟对等体D主动和被测系统A口建立BGP+连接。
(2)PTC1模拟对等体E与被测系统B口建立BGP+连接。
(3)测试系统从对等体D向A宣告路由,被测系统会收到路由后将该路由从B口转发给对等体E。对等体E收到路由后,测试系统将连续3次不回复被测系统发来的KEEPALIVE,对等体E收到NOTIFICATION报文后,对等体BE断开连接。
(4)PTC1通知PTC2:对等体E和被测系统已经断开连接。对等体 F可以主动和被测系统建连。
(5)PTC2模拟对等体F与被测系统C口建立BGP+连接。
(6)PTC2通知MTC:测试系统可以通过对等体D向被测系统宣告路由。
(7)测试系统从对等体D向A宣告路由,被测系统会收到路由后将该路由从C口转发给对等体F。对等体F收到路由后,测试系统将连续3次不回复被测系统发来的KEEPALIVE,对等体F收到NOTIFICATION报文后,对等体CF断开连接。
(8)PTC2通知MTC:测试结束。
图8 BGP+动态切换对等体的测试序列
如果BGP+动态切换对等体的测试例在运行的过程中遵循图8的测试序列,则测试例PASS,否则测试例FAIL。
5 测试结果及分析
针对以上测试框架和方案,本文对所有测试集中的测试例进行测试,共开展2个阶段的测试工作,第一阶段测试中发现BGP+扩展功能的实现与协议设计不符,之后对协议实现进行修改和完善,第二阶段测试例全部通过,测试界面如图9所示。
图9 BGP+测试集的测试界面
表6所示是第一阶段的测试结果,第一阶段的测试结果表明BGP+动态切换对等体和路由增量更新两个扩展功能实现有误,通过查看测试结果、自动化测试例运行过程中的输出信息、WireShark的抓包信息,最终明确协议实现过程中的错误:
(1)动态切换对等体的实现错误:当被测系统切换对等体连接之后,被测系统能够与新的BGP+邻居保持通信,但当被测系统收到路由后,原本被测系统应该将收到的路由信息转发给新的BGP+邻居,但运行BGP+网络节点无法判断短时间内切换的对等体如何处理,是应该传输所有路由,还是由于该对等体之前曾与测试系统建立过连接则只传输路由更新。该测试例失败的主要原因在于路由增量更新的扩展功能实现错误,直接导致切换对等体之后BGP+链路中断。
(2)路由增量更新的实现错误:被测系统与测试软件断开之后,被测系统可能会撤销或者重新宣告路由。当被测系统撤销路由时,被测系统运行的BGP+协议异常退出,表明实现路由增量撤销的代码有误。通过查看输出信息和实现代码,发现实现路由增量撤销的函数传参有误,运行BGP+协议的进程直接崩溃。
表6 第一阶段一致性测试结果统计
在第二阶段的测试中,OSPF+协议和BGP+协议的一致性测试例全部通过,表7所示为第二阶段的测试结果。
表7 第二阶段一致性测试结果统计
6 结 语
本文提出了针对天地一体化网络特性的新型网络路由协议OSPF+和BGP+功能一致性测试的具体方案,该测试方案能够较好地模拟空间网络节点动态变化的情况。该测试方案的实现借助了PITSv3网络协议一致性测试平台,通过在PITSv3测试平台上配置测试环境,编写基于TTCN-3语言的测试集,将测试流程序列化、自动化,实现对网络协议一致性的测试。在测试的过程中,发现了BGP+扩展功能实现与协议设计不符,经过修正新协议的某些实现错误,最终实现了OSPF+和BGP+网络协议的一致性,支持了天地一体化网络路由协议的设计与开发。
致谢感谢王宇亮、桑猛、杨芫、刘峥等在测试过程中给予的帮助和支持。
[1] 李贺武, 吴茜, 徐恪等. 天地一体化网络研究进展与趋势[J]. 科技导报, 2016, 34(14):95-106.
[2] 张乃通, 赵康僆, 刘功亮. 对建设我国“天地一体化信息网络”的思考[J]. 中国电子科学研究院学报, 2015, 10(3):223-230.
[3] 徐明伟, 夏安青, 杨芫等. 天地一体化网络域内路由协议OSPF+[J]. 清华大学学报(自然科学版), 2017(1):12-17.
[4] Wu J, Li Z, Yin X. Towards modeling and testing of IP routing protocols[C]. Ifip International Conference on Testing of Communicating Systems. Springer-Verlag, 2003:49-62.
[5] Zhao Y, Ju J, Xia Y. From active to passive—Progress in testing Internet routing protocols[J]. Journal of Computer Science and Technology, 2002, 17(3): 264-283.
[6] Yin X, Wang Z, Jing C, et al. A TTCN-3-based protocol testing system and its extension[J]. Science in China Series F: Information Sciences, 2008, 51(11): 1703-1722.
[7] 杨建华, 王俊峰, 谢高岗. OSPFv3协议一致性测试系统设计与实现[J]. 计算机应用, 2003, 23(7):18-20.
[8] 徐明伟,杨芫,林恒. 一种基于路由校验的边界网关协议的路由更新方法:北京, CN105915457A[P], 2016-08-31.