APP下载

Linux环境下的BGP4+一致性测试研究

2011-04-23丁雪莲

电子科技 2011年6期
关键词:测试法功能测试路由

丁雪莲

(内蒙古财经学院计算机信息管理系,内蒙古呼和浩特 010070)

随着互联网技术在全球的迅速发展,高效稳定的路由协议成为保障网络性能的重要因素。路由协议测试是实现协议性能的有效手段,通过测试才能保证协议实现的正确性。在文献[1]中,作者针对路由协议的特点,给出了路由协议的测试模式。在对BGP4[2]协议进行测试的过程中,采用了形式化与非形式化相结合的思想开展测试。在文献[3]中,实现了一个可扩展的路由协议测试系统,在测试系统中采用工具命令语言TCL(Tool Command Language)来描述测试套。在文献[4]中提出了一种测试目的自动生成方法,将这一方法应用到路由协议的测试中,具有很好的指导意义。文中给出了用XML来描述BGP4+[5]测试套的模板,并针对 BGP4+的实现Linux RedHat 9.0 Zebra 0.93b中的bgpd进行了一致性测试,列举了部分测试例执行的测试结果,并对其进行了分析。

1 BGP4+协议分析

随着IPv6的部署,原本只能支持IPv4的BGP4协议不能满足实际需要,为使BGP4协议能够支持IPv6协议,IETF修订完成了RFC2858(Multiprotocol Extentions for BGP4,即,BGP4+)。在 BGP4+中,IETF定义了一个BGP的特殊属性Multi-Protocol BGP(MP-BGP)来承载IPv6协议的路由信息。BGP4+是BGP协议的一个扩展,同BGP兼容,BGP4+可以在IPv4网络上或者是IPv6网络上运行。

在BGP4协议中有3部分与IPv4的信息相关,即,NEXT-HOP、NLRI和AGGREGATOR属性。假设任何BGP发言者都有一个IPv4地址,那么要使BGP4支持多网络层协议的路由只需要加入两个功能:把特定的网络层协议分别与NEXT-HOP和NLRI关联起来。为此在BGP4中增加了两个属性:MP_REACH_NL-RI(Multiprotocol Reachable NLRI)和 MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI)。这两个属性是可选非传递的,不支持多协议扩展的BGP发言者会忽略这两个属性中携带的信息并且不转发这些信息。MP_REACH_NLRI是结构比较复杂的属性,详细定义了所使用的网络层协议的类型、下一跳的长度和地址、子网接入点信息和NLRI信息。如果在UPDATE消息中使用了MP_REACH_NLRI属性则不需要原来IPv4的NEXI-HOP属性。而MP_UNREACH_NLRI属性相对简单得多,如果在UPDATE消息中使用了MP_UNREACH_NLRI属性则不需要携带其他的路径属性。这与RFC1771中规定的如果UP-DATE消息中不包含强制属性就发送NOTIFICATION消息有很大的不同。BGP4+中还增加了对这两个新属性的错误处理。RFC2858中还采用了BGP能力通告协议以使对等体间转发的UPDATE消息是可以承载IPv6网络层可达信息的。BGP4的这种扩展机制能够使BGP4携带多种网络层协议的路由信息。

在协商达成一致后,开始交换路由信息。只在初始情况下,需要交互全部路由表。此后,采用增量更新的方式进行路由刷新。BGP4+的路由信息存储在相应的路由信息库中,经过处理、计算并通过决策过程选择路由发送给其他BGP对等体,其中包括两类操作:路由撤消和路由宣告。对于无效的路由信息,BGP4+通过发送带有MP_UNREACH_NLRI路径属性的UPDATE消息撤消路由,每一条被撤消的路由都包含一个二元组 <Length/IP-Prefix>,其中 IPPrefix是一个地址前缀,表示一个网络地址,其有效长度由Length说明;在一个UPDATE消息中可以撤消一条或多条路由信息。BGP4+声明的路由则是由BGP4原来的路径属性和新增的MP_REACH_NLRI进行说明。MP_REACH_NLRI属性的网络可达性信息由一个或多个<Length/IP-Prefix>二元组构成,描述了通过Next Hop指明的网关可以到达的网络。在交换路由信息的过程中,对等体会周期性地发送KEEPALIVE消息,维持双方的连接。

2 测试方法

把BGP4+的一致性测试过程大致划分为4个阶段。第一阶段是根据协议文本得到一个独立于所有协议实现的一致性抽象测试套,称之为“一致性测试生成”。第二阶段是实现特定一致性测试套的执行方法组成,称作“一致性测试实现”。第三个阶段为“一致性测试执行”,运行已经具体化的一致性测试例。第四阶段为“测试判定”,对IUT的输入输出进行观察,判定测试结果是否与协议说明一致,并将测试执行的结果记录在BGP4+协议一致性测试报告中,进而对测试结果进行分析对比。

ISO/IEC 9646-2根据不同的控制观察点定义了不同的抽象测试方法,现有的端系统抽象测试方法基本可以分为本地测试法、协调式测试法、分布式测试法和远程测试法。由于远程测试法的主要特点是并不要求能访问IUT的上边界,也不要求显式的测试协调过程,而是依赖被测协议来实现IUT和LT间的同步。远程测试法所采用的一个假设是IUT的状态可由LT通过N-1层服务与之交换N层PDU来确定。测试判决则是由基于下测试器对IUT提供的激励以及下测试器所观察到的IUT的响应做出的。由于路由协议不需要为上层的协议提供服务,因此在路由协议的测试中不需要IUT存在,所以在对BGP4+路由协议的测试中采用了远程测试法,测试环境如图1所示。

图1 一致性测试环境

3 用XML描述和保存测试套

测试套描述的是协议一致性测试数据,它在整个一致性测试过程中起着重要作用。ISO/IEC 9646-3中建议使用TTCN作为测试套的描述方法。TTCN是一种专为描述测试套的抽象测试套描述语言,具有明确的语法和语义,能处理一些复杂说明,且可执行。正因为TTCN有着诸多的优点,所以有许多标准测试套都是使用TTCN语言描述的。但是TTCN过于庞大,实现其编译器很困难,而XML是一种界定文本数据的简便而标准的方法,且XML具有可扩展性,允许设计人员根据需要定义自己的标记以及文档结构,它可以将数据表示为具有层次结构的结构化文本形式,因此使用XML作为测试套描述语言。任何支持XML的编辑器都可以用来编辑测试套文件,任何支持XML的浏览器都可以显示测试套,而且在浏览器中显示测试套可以清楚的看到测试套的层次结构。

用XML描述BGP4+测试套的层次结构

在分析BGP4+测试套的功能之后,将用XML描述的BGP4+测试套分为5个层次如图2所示,其中每个测试层次都有各自的测试目的,并根据IUT的响应对其被测的行为做出判决,得出测试结果。

对一个测试套的形式化描述分为:测试套(Test Suite)描述,测试组(Test Group)描述,测试例(Test Case)描述,测试步(Test Step)描述,测试事件(Test Event)描述。

图2 测试套的层次结构

(1)测试套描述:对应于一个协议,如BGP4+(RFC2858)。包括测试套名称,测试套相关信息,所包含的测试组的名称及内容。

(2)测试组描述:对应于此协议的一个子协议或称一个测试目标,一个测试套中可以包含多个测试组。该描述包括测试组名称,测试组信息,所包含的测试例的名称及内容。

(3)测试例描述:对应于一个标准协议的某一项功能描述,如 RFC2858中关于处理最大长度4096 Byte的UPDATE消息的描述。一个测试组由一个以上的测试例组成。该描述包括测试例名称,测试目的,测试例相关信息,所包含的测试数据包的名称及内容,测试例的动态行为描述。

(4)测试步描述:该描述包括测试状态初始化、发包、收包等,每个动作就是一个测试步。一个测试例包含一个以上的测试步。

(5)测试事件描述:测试套的最小单元是测试事件,测试事件是不可分割的最小单位。测试步是由一些测试事件组合起来完成一个特定功能的集合。

4 BGP4+协议的测试实例

通过以上定义的XML模板,对BGP4+的测试例进行了描述,并运用远程测试法对BGP4+实现Linux RedHat 9.0 Zebra 0.93b中的bgpd进行一致性测试。列举一个BGP4+连接建立功能测试组的测试例,如表1所示。

表1 测试举例

用XML描述并保存该测试例,如图3所示,将这个测试例在Linux环境下的BGP4+协议实验网中执行,得到的执行结果与预期结果相符,最终结论为PASS。

5 测试例分析

参考ISO/IEC9646的建议,根据协议的测试目的和BGP4+协议标准,抽象出一个测试套,在这个测试套中包含8个测试组,分别是:(1)互连行为状态机测试组;(2)消息格式一致性测试组;(3)消息处理功能测试组;(4)路由处理功能测试组;(5)路由流量控制功能测试组;(6)BGP4+差错处理功能测试组;(7)路由反射功能测试组;(8)Community属性处理功能测试组。每个测试组中又抽象出不同数目的测试例。

使用这些测试例对Linux RedHat 9.0中的路由协议软件包Zebra 0.93b进行了一致性测试。下面以BGP4+的UPDATE消息格式一致性测试组为例,给出测试例列表及其测试结果,其测试例列表如表2所示。

图3 XML测试套文件

表2 测试例列表

6 结束语

本文对下一代域间路由协议BGP4+进行了一致性测试研究,文中使用XML定义了协议测试套的模板,并用该模板实现了对BGP4+测试套的描述,通过对BGP4+协议实现进行测试,发现了被测实现上的一些不一致问题。进一步的工作包括建立完整的BGP4+协议测试系统,同时将针对测试中发现的不一致的地方对被测实现进行分析,在使用XML进行测试套的描述方面还需要进一步的规范化,通用化。

[1] 赵邑新,吴建平,韩博.路由协议测试研究――边界网关路由协议 BGP-4测试[J].通信学报,2001,22(9):91-98.

[2] Network Working Group.RFC 1771:A Border Gateway Protocol 4(BGP -4)[S].USA:IBM Corp.,1995.

[3] 李建,周颢,赵保华.路由协议一致性测试系统研究及实现[J].计算机工程与应用,2005(16):119-123.

[4] HENNIGER O,LU M,URAL H.Automatic generation of test purposes for testing distributed systems[J].Information& Software Technology,2003,45(12):793-803.

[5] Network Working Group.RFC 2858:Multiprotocol Extensions for BGP-4[S].USA:IBM Corp.,2000.

猜你喜欢

测试法功能测试路由
某内花键等速传动轴八功能测试夹具设计
铁路数据网路由汇聚引发的路由迭代问题研究
探究路由与环路的问题
伊士曼展示其耐受医用消毒剂的新一代聚酯——四步测试法显示伊士曼MXF221共聚酯具有出色的耐化学性
新型混合材料咀嚼效率测试法
基于预期延迟值的扩散转发路由算法
电气化铁路轨道电路绝缘电压测试法的研究
基于D-最优化理论的陀螺仪力矩反馈测试法
PRIME和G3-PLC路由机制对比