论文部分内容阅读
[摘 要] 边界网关协议BGP4+是保证下一代互联网网络安全基础的中重要的域间路由协议,它是在BGP4的基础上加入了对IPv6的支持,对它的测试研究有助于IPv6网络的顺利部署。本文针对下一代边界网关协议BGP4+进行了一致性测试研究。文章分析了BGP4+的工作机制,对一致性测试研究中使用的测试方法进行了介绍,然后详细的介绍了BGP4+协议的测试实践过程。
[关键词] BGP4+ 协议一致性测试 IPv6 测试例
目前许多发达国家都加大力度在一致性测试方面进行研究,不仅在理论研究上取得了很大进展,而且先后建立了一批可以提供协议测试服务的一致性测试系统。如美国杜克大学计算机系[2]开发的PCTS协议一致性测试系统可以完成TTCN描述的X.400协议测试集的一致性测试。芬兰的OES公司[3]开发的运行在Windows和Linux操作系统下的基于TTCN-3的OpenTTCN Tester v2.54.0测试平台。国内在协议测试研究方面近些年也取得了一定的研究成果,如清华大学计算机系开发的协议集成测试系统PITS,该系统使用TTCN作为测试集描述语言,使用该系统已经对Cisco、Huawei等许多厂家的路由产品进行了一致性测试并发现了其中存在的不一致问题。国内还有中科院计算所、兰州大学、中国科技大学、内蒙古大学等多所高校成立了IPv6实验室从事这方面的研究,也发表了一些相关的文章。文章[4,5]针对BGP4+作为路由协议的特点,对现有的测试方法进行了分析研究,并设计实现了BGP4+协议一致性测试系统。在[6]中,作者提出了一种基于on-the-fly策略符号测试生成方法。
1.BGP4+的工作机制
在对等体协商达成一致后,开始交换路由信息。BGP4+只在初始情况下交互全部路由表,此后,只在路由表发生变化的时候才进行增量路由刷新。BGP4+通过决策过程选择最好的路由发送给对等体,发送的路由包括宣告新路由和撤消无效路由。对于无效的路由信息,BGP4+通过发送带有MP_UNREACH_NLRI路径属性的UPDATE消息撤消路由,在一个UPDATE消息中可以同时撤消一条或多条路由信息。BGP4+宣告新路由是通过发送带有MP_REACH_NLR路径属性的UPDATE消息来进行的,MP_REACH_NLRI属性的网络可达性信息由一个或多个二元组构成,描述了通过下一跳所指明的网关可以到达的网络。运行BGP4+的对等体间会周期性的发送KEEPALIVE消息来维持双方的连接,否则,超过Hold Time的时间间隔连接会断开。
2.测试方法的选择
协议一致性测试使用在控制观察点PCO(Point of Control and Observation)对被测实现的层间服务原语ASP和协议数据单元PDU进行控制和观察的原理。根据PCO的不同,OSI一致性测试的方法和框架定义了四种不同的抽象测试方法,分别是本地测试法(Local Test Method),协调式测试法(Coordinated Test Method),分布式测试法(Distributed Test Method)和远程测试法(Remote Test Method)。
3.BGP4+测试实践
要进行边界网关协议BGP4+的测试研究,我们首先需要建立BGP4+实验网。实验网内包括根据不同的测试实验要求进行模拟的网络拓扑、运行BGP4+的各种路由设备与路由软件、BGP4+协议一致性测试系统、协议运行监测工具等软硬件平台。
3.1 测试环境配置
在BGP4+实验网中,我们在主机上安装Zebra-0.94b路由软件包,从而使主机来充当边界路由器。Zebra是Linux操作系统下的开源路由软件,它提供基于TCP/IP的路由服务,目前能够支持RIPv1、RIPv2、RIPng、OSPFv2、OSPFv3、BGP4和BGP4+等路由协议,其中RIPng、OSPFv3和BGP4+扩展了对IPv6的支持。由于Zebra是把主机操作系统的网络接口当作路由器的接口来使用,因此在对BGP4+进行测试的过程中,我们在主机上安装了多块100M以太网卡,利用Zebra路由软件使主机具有了路由器的功能并完成了一些用昂贵的路由器才能完成的比较复杂的路由协议功能。
另外,在测试环境中使用的PC有运行Windows XP操作系统的测试系统和运行Linux操作系统的PC路由器,为了使这些PC能支持IPv6,我们在Windows XP操作系统中启用IPv6协议栈,在Linux操作系统的配置文件/etc/modules.conf中写入alias net-pf-10 ipv6启动对IPv6的支持。要使PC路由器实现BGP4+的功能,需要在Zebra中建立BGP4+的配置文件bgpd.conf。
3.2 BGP4+测试系统
由于BGP4+协议比较复杂,涉及较多的变量,很难直接使用现有的测试工具进行一致性测试,而TTCN虽然功能强大,但是用其书写的测试集过于复杂,内容关联性强扩展性差,对TTCN文件的修改须借助专用工具来完成并且TTCN编译器的实现非常困难。因此,在我们的测试研究中,我们针对BGP4+的特点,自行设计开发了协议一致性测试系统,测试系统的功能包括测试数据的生成、测试数据的发送与接收、测试结果的显示等。
3.3 BGP4+一致性测试规范
目前,我国协议一致性测试的具体标准主要基于IETF文件、RFC文档以及设备技术规范与协议测试方法等。在IPv6标准系列中包括IPv6的邻居发现协议技术规范、IPv6无状态地址自动配置技术规范、基于IPv6的路由协议——OSPF协议技术规范、IPv6协议一致性测试方法、基于IPv6的OSPF协议一致性测试规范、基于IPv6的BGP协议一致性测试规范等。但基于IPv6的路由协议BGP4+的一致性测试规范尚未最终成文。
本文参考信息产业部发布的路由协议一致性测试方法——边界网关协议(BGP4)一致性测试规范YD/T 1251.3,根据BGP4+的协议说明及测试目的,为每一测试组中的测试目的制定出了用自然语言描述的BGP4+协议一致性测试规范。
在测试组BGP4+/V2DDFF中针对MP_REACH_NLRI属性的NLRI字段的测试目的,制定测试项目为“BGP4+差错处理功能测试”(测试编号TestCase75)的测试规范,如表1。
表 1 BGP4+协议一致性测试规范举例
测试编号:TestCase75
测试项目: BGP4+差错处理功能测试 测试依据:[RFC 2858] section 2
测试目的:保证被测设备收到有错的NLRI字段时,发送NOTIFICATION消息
测试配置:见图2网络拓扑,其中PC Router1作为被测设备,PC Router3是测试端口1,PC Router2是测试端口2。
预期测试结果:
1. 步骤2中,测试端口2收到被测设备发来的MP_REACH_NLRI属性的NLRI字段为AS9-NLRI1的UPDATE消息。
2. 步骤3中,测试端口1收到被测设备发来的NOTIFICATION消息,其中Error Code字段值为3(Update 消息错误),Error Subcode 字段为10(Invalid Network Field),BGP4+连接断开。
我们按照表1中给定的测试配置对测试实验网上的被测设备和测试端口做了相应的配置,然后执行测试例,得出如下测试结果:
1. 利用测试器上安装的Ethereal可以从测试端口2侦听到被测设备发来的UPDATE消息,经解码分析得出UPDATE消息中MP_REACH_NLRI属性的NLRI字段为AS9-NLRI1,与预期结果一致。
2. 利用测试器上安装的Ethereal可以从测试端口1收到被测设备发来的NOTIFICATION消息,经解码分析得出NOTIFICATION消息中Error Code字段值为3(表示UPDATE消息错误),Error Subcode 字段为10(Invalid Network Field),与预期结果一致。
所以,在测试系统上执行这个测试例的最终结果为PASS。
3.4 测试数据监测
实验网中使用Sniffer和Ethereal作为协议数据包侦包软件。要使安装了监测软件的PC随时侦听广播网络上所有数据,需要用侦包软件把网卡设置成混杂模式。侦包软件可以对侦听到的数据包按照相应的协议说明进行解码,这样我们就可以清楚地看到网络中各个设备相互通信时所交换的数据情况。
4.结论
随着下一代互联网技术的发展,路由协议仍将是保证互联网信息畅通的重要基础,而伴随着协议测试研究的不断开展,面向IPv6的路由协议将得到进一步的完善和发展。本文对下一代边界网关协议BGP4+进行了测试研究,文中首先分析了的BGP4+的工作过程,然后对研究中使用的Dip-in测试方法进行了介绍,最后对BGP4+协议的测试实践过程进行了详细的介绍并给出了针对Linux RedHat 9.0 Zebra 0.94b中的守护进程bgpd进行测试的过程中发现的与协议标准不一致的地方。后续的工作包括:对测试系统的功能进行进一步的完善、对测试目的自动生成进行研究、针对测试中发现的不一致的地方对被测协议实现进行分析等。
参考文献:
[1]Bates,T.Rekhter,Y.Chandra R.Multiprotocol Extensions for BGP-4(BGP4+),RFC 2858,June, 2000.
[2]颜勇,谢高岗,张大方.基于SoT的BGP4+协议一致性测试系统设计[J].计算机工程与应用,2005,21:139-145.
[3]翟鹏,王旸旸,李登道等.BGP4+协议一致性测试系统设计与实现[J].计算机应用研究,2006,5:202-204.
[4]邢熠,叶新铭,谢高岗.路由协议的符号化测试生成[J].计算机学报,2010,3:589-595.
[5]尹霞,吴建平.一种路由协议测试框架研究[J].清华大学学报,2001,41(1):81-84.
[关键词] BGP4+ 协议一致性测试 IPv6 测试例
目前许多发达国家都加大力度在一致性测试方面进行研究,不仅在理论研究上取得了很大进展,而且先后建立了一批可以提供协议测试服务的一致性测试系统。如美国杜克大学计算机系[2]开发的PCTS协议一致性测试系统可以完成TTCN描述的X.400协议测试集的一致性测试。芬兰的OES公司[3]开发的运行在Windows和Linux操作系统下的基于TTCN-3的OpenTTCN Tester v2.54.0测试平台。国内在协议测试研究方面近些年也取得了一定的研究成果,如清华大学计算机系开发的协议集成测试系统PITS,该系统使用TTCN作为测试集描述语言,使用该系统已经对Cisco、Huawei等许多厂家的路由产品进行了一致性测试并发现了其中存在的不一致问题。国内还有中科院计算所、兰州大学、中国科技大学、内蒙古大学等多所高校成立了IPv6实验室从事这方面的研究,也发表了一些相关的文章。文章[4,5]针对BGP4+作为路由协议的特点,对现有的测试方法进行了分析研究,并设计实现了BGP4+协议一致性测试系统。在[6]中,作者提出了一种基于on-the-fly策略符号测试生成方法。
1.BGP4+的工作机制
在对等体协商达成一致后,开始交换路由信息。BGP4+只在初始情况下交互全部路由表,此后,只在路由表发生变化的时候才进行增量路由刷新。BGP4+通过决策过程选择最好的路由发送给对等体,发送的路由包括宣告新路由和撤消无效路由。对于无效的路由信息,BGP4+通过发送带有MP_UNREACH_NLRI路径属性的UPDATE消息撤消路由,在一个UPDATE消息中可以同时撤消一条或多条路由信息。BGP4+宣告新路由是通过发送带有MP_REACH_NLR路径属性的UPDATE消息来进行的,MP_REACH_NLRI属性的网络可达性信息由一个或多个
2.测试方法的选择
协议一致性测试使用在控制观察点PCO(Point of Control and Observation)对被测实现的层间服务原语ASP和协议数据单元PDU进行控制和观察的原理。根据PCO的不同,OSI一致性测试的方法和框架定义了四种不同的抽象测试方法,分别是本地测试法(Local Test Method),协调式测试法(Coordinated Test Method),分布式测试法(Distributed Test Method)和远程测试法(Remote Test Method)。
3.BGP4+测试实践
要进行边界网关协议BGP4+的测试研究,我们首先需要建立BGP4+实验网。实验网内包括根据不同的测试实验要求进行模拟的网络拓扑、运行BGP4+的各种路由设备与路由软件、BGP4+协议一致性测试系统、协议运行监测工具等软硬件平台。
3.1 测试环境配置
在BGP4+实验网中,我们在主机上安装Zebra-0.94b路由软件包,从而使主机来充当边界路由器。Zebra是Linux操作系统下的开源路由软件,它提供基于TCP/IP的路由服务,目前能够支持RIPv1、RIPv2、RIPng、OSPFv2、OSPFv3、BGP4和BGP4+等路由协议,其中RIPng、OSPFv3和BGP4+扩展了对IPv6的支持。由于Zebra是把主机操作系统的网络接口当作路由器的接口来使用,因此在对BGP4+进行测试的过程中,我们在主机上安装了多块100M以太网卡,利用Zebra路由软件使主机具有了路由器的功能并完成了一些用昂贵的路由器才能完成的比较复杂的路由协议功能。
另外,在测试环境中使用的PC有运行Windows XP操作系统的测试系统和运行Linux操作系统的PC路由器,为了使这些PC能支持IPv6,我们在Windows XP操作系统中启用IPv6协议栈,在Linux操作系统的配置文件/etc/modules.conf中写入alias net-pf-10 ipv6启动对IPv6的支持。要使PC路由器实现BGP4+的功能,需要在Zebra中建立BGP4+的配置文件bgpd.conf。
3.2 BGP4+测试系统
由于BGP4+协议比较复杂,涉及较多的变量,很难直接使用现有的测试工具进行一致性测试,而TTCN虽然功能强大,但是用其书写的测试集过于复杂,内容关联性强扩展性差,对TTCN文件的修改须借助专用工具来完成并且TTCN编译器的实现非常困难。因此,在我们的测试研究中,我们针对BGP4+的特点,自行设计开发了协议一致性测试系统,测试系统的功能包括测试数据的生成、测试数据的发送与接收、测试结果的显示等。
3.3 BGP4+一致性测试规范
目前,我国协议一致性测试的具体标准主要基于IETF文件、RFC文档以及设备技术规范与协议测试方法等。在IPv6标准系列中包括IPv6的邻居发现协议技术规范、IPv6无状态地址自动配置技术规范、基于IPv6的路由协议——OSPF协议技术规范、IPv6协议一致性测试方法、基于IPv6的OSPF协议一致性测试规范、基于IPv6的BGP协议一致性测试规范等。但基于IPv6的路由协议BGP4+的一致性测试规范尚未最终成文。
本文参考信息产业部发布的路由协议一致性测试方法——边界网关协议(BGP4)一致性测试规范YD/T 1251.3,根据BGP4+的协议说明及测试目的,为每一测试组中的测试目的制定出了用自然语言描述的BGP4+协议一致性测试规范。
在测试组BGP4+/V2DDFF中针对MP_REACH_NLRI属性的NLRI字段的测试目的,制定测试项目为“BGP4+差错处理功能测试”(测试编号TestCase75)的测试规范,如表1。
表 1 BGP4+协议一致性测试规范举例
测试编号:TestCase75
测试项目: BGP4+差错处理功能测试 测试依据:[RFC 2858] section 2
测试目的:保证被测设备收到有错的NLRI字段时,发送NOTIFICATION消息
测试配置:见图2网络拓扑,其中PC Router1作为被测设备,PC Router3是测试端口1,PC Router2是测试端口2。
预期测试结果:
1. 步骤2中,测试端口2收到被测设备发来的MP_REACH_NLRI属性的NLRI字段为AS9-NLRI1的UPDATE消息。
2. 步骤3中,测试端口1收到被测设备发来的NOTIFICATION消息,其中Error Code字段值为3(Update 消息错误),Error Subcode 字段为10(Invalid Network Field),BGP4+连接断开。
我们按照表1中给定的测试配置对测试实验网上的被测设备和测试端口做了相应的配置,然后执行测试例,得出如下测试结果:
1. 利用测试器上安装的Ethereal可以从测试端口2侦听到被测设备发来的UPDATE消息,经解码分析得出UPDATE消息中MP_REACH_NLRI属性的NLRI字段为AS9-NLRI1,与预期结果一致。
2. 利用测试器上安装的Ethereal可以从测试端口1收到被测设备发来的NOTIFICATION消息,经解码分析得出NOTIFICATION消息中Error Code字段值为3(表示UPDATE消息错误),Error Subcode 字段为10(Invalid Network Field),与预期结果一致。
所以,在测试系统上执行这个测试例的最终结果为PASS。
3.4 测试数据监测
实验网中使用Sniffer和Ethereal作为协议数据包侦包软件。要使安装了监测软件的PC随时侦听广播网络上所有数据,需要用侦包软件把网卡设置成混杂模式。侦包软件可以对侦听到的数据包按照相应的协议说明进行解码,这样我们就可以清楚地看到网络中各个设备相互通信时所交换的数据情况。
4.结论
随着下一代互联网技术的发展,路由协议仍将是保证互联网信息畅通的重要基础,而伴随着协议测试研究的不断开展,面向IPv6的路由协议将得到进一步的完善和发展。本文对下一代边界网关协议BGP4+进行了测试研究,文中首先分析了的BGP4+的工作过程,然后对研究中使用的Dip-in测试方法进行了介绍,最后对BGP4+协议的测试实践过程进行了详细的介绍并给出了针对Linux RedHat 9.0 Zebra 0.94b中的守护进程bgpd进行测试的过程中发现的与协议标准不一致的地方。后续的工作包括:对测试系统的功能进行进一步的完善、对测试目的自动生成进行研究、针对测试中发现的不一致的地方对被测协议实现进行分析等。
参考文献:
[1]Bates,T.Rekhter,Y.Chandra R.Multiprotocol Extensions for BGP-4(BGP4+),RFC 2858,June, 2000.
[2]颜勇,谢高岗,张大方.基于SoT的BGP4+协议一致性测试系统设计[J].计算机工程与应用,2005,21:139-145.
[3]翟鹏,王旸旸,李登道等.BGP4+协议一致性测试系统设计与实现[J].计算机应用研究,2006,5:202-204.
[4]邢熠,叶新铭,谢高岗.路由协议的符号化测试生成[J].计算机学报,2010,3:589-595.
[5]尹霞,吴建平.一种路由协议测试框架研究[J].清华大学学报,2001,41(1):81-84.