IPv6自动化测试平台:AIOT6的开发与实现
2013-02-28叶丹,杨鹏
叶 丹,杨 鹏
(北京天地互连信息技术有限公司 北京100028)
1 概述
1.1 IPv6的发展
国际互联网编号分配机构IANA(Internet Assigned Numbers Authority)于2011年2月3日用尽所有IPv4地址池,亚太地区APNIC(Asia Pacific Network Information Centre)也已经在2011年4月19日将IPv4地址分配完毕。IPv4网络还同时面临着带宽管理困难、网络监控困难、服务质量没有保证、网络安全保护能力有限、商业模式不清晰等问题,IPv6成为下一代互联网的趋势和必然。
许多国家和地区已经在积极地进行IPv6部署工作。美国方面提倡NGI计划,已建成试验网VBNS和Internet2,并要求国防部、政府网络和ICP(internet content provider,互联网内容提供商)于2008年6月前支持IPv6。澳大利亚在2009年7月发布了《澳大利亚政府实现IPv6策略》。欧洲方面,欧盟委员会已经在欧盟行政系统下成立了IPv6工作小组,为欧洲地区勾勒整体的IPv6发展蓝图。亚洲方面,日本制定了“e-Japan”的战略并于2001-2005年开始全日本的商用化服务。韩国和印度也已经制定IPv6演进和发展计划。我国在国家政策、商业创新、安全管控的驱动下也开始对IPv6进行部署。2011年12月23日,时任国务院总理温家宝主持召开国务院常务会议,研究部署以加快发展我国下一代互联网产业。
IPv6的部署和发展需要测试来保证其正常有序进行。通过IPv6测试可以发现IPv6发展中的问题,并提出指导性建议,进而帮助和指导IPv6演进和发展战略的制定。IPv6测试是对IPv6发展的把关以及质量的保证。
1.2 自动化测试的发展
自动化测试大幅度提高了效率,是测试发展的趋势。自动化测试较早出现于专业做设备和软件的厂商。现在自动化部门是各大设备厂商不可或缺的重要部分。测试的自动化程度也越来越高。
例如某著名的设备生产商,在2008年开始推广自动化测试,2009年成立独立的自动化部门,2010年自动化测试逐渐走向成熟,开始要求各产品线严格执行自动化测试。它早期的自动化测试工具有AT1(此为代号,非实际名称),AT1发展之初主要用于功能性测试,之后迅速加入了性能测试和压力测试。2011年,该厂商的自动化测试已经较为成熟,这时新一代自动化测试工具AT2(此为代号,非实际名称)开始全面使用。AT2比之前的第一代自动化测试工具更加智能,增加了更多的功能,操作更简捷。
再如思博伦,其为测试服务厂商的代表,推出的测试平台TestCenter是专业的、大家比较熟悉的自动化测试工具。TestCenter致力于一致性、功能性和性能测试。
1.3 AIOT6的出现和发展
IPv6的发展引入了IPv6测试的需求,自动化测试又是测试发展的趋势。IPv6自动化测试平台是市场的产物。2004年,IPv6自动化测试平台——AIOT6出现并得以发展。
AIOT6主要用于IPv6互通性测试,是一种可以自动执行IPv6互通性测试的工具。AIOT6可以实现自动化命令执行和自动化配置,可以自动完成ping6、ifconfig等命令的发放以及对测试环境中各个节点的自动配置。它简化了测试人员的工作,为IPv6互通性测试提供了极大便利。
AIOT6可以应用在互通性测试服务,测试认证以及测试大会等测试活动。
2 AIOT6的结构和测试原理
2.1 AIOT6的结构及支持平台
AIOT6由3个部分组成,分别是6Manager、6Agent和6Command。这3个部分合作实现IPv6互通性的自动化测试。
6Manager是测试管理器,用于控制测试的执行顺序和进度。它可以对用户、6Agent和6Command进行操作。6Agent是6Manager的网络通信代理,运行在6Manager操作的每一个节点。6Command是命令执行器,运行在6Manager操作的每一个节点,可以在设备上执行在6Manager上操作的命令。
AIOT6支持多个操作平台,如下列举了几种对IPv6支持较好的操作系统:FreeBSD、NetBSD、OpenBSD、Fedora。
2.2 AIOT6的测试环境
IPv6自动化测试可以分为一致性测试和互通性测试。AIOT6主要用于IPv6互通性的自动化测试。通俗来说,互通性测试是验证被测设备与不同厂商设备之间互连互通能力的一种测试。
AIOT6提供统一的测试拓扑。这个测试拓扑几乎适用于所有IPv6互通性测试场景。AIOT6的测试拓扑如图1所示。
这个统一的测试拓扑是一个物理拓扑,需要连接至少6个节点:DUT、6Manager、Monitor、Reference-1、Reference-2和Target。连接至少6个节点是为了构造一个支持多场景的物理拓扑,这个物理拓扑可以支持几乎所有的IPv6互通性测试场景。
图1中,DUT为被测设备,每个测试场景的逻辑拓扑都会包含这个设备。6Manager为测试管理器,用于远程控制连接的各个节点。Monitor用于数据分组监控,在测试中抓取数据分组作为测试输出的一部分。Reference-1和Reference-2表示两个参考节点,是为了组网,让物理拓扑可以应用于更丰富的测试场景。Target*表示4个来自不同厂商的用于互通性测试的设备,这里一般用2个不同操作平台的主机加上2个不同系统的路由器。这为一个最基本的配置,Target可以包含更多不同厂商、不同类型的设备。一般来说,一次测试只需要连接一个Target,如果其他3个Target设备网络接口处于“Down”状态,那可以将所有Target设备连接到这个统一测试拓扑上。将4个Target节点都连接到物理拓扑的好处是让测试自动化程度更高,IPv6互通性测试中,更换与之互通的设备,也不需要手动去改变物理拓扑的连接。带有标识(X)的设备运行了6Agent和6Command程序,包括Target*、Reference-1、Reference-2和Monitor。
2.3 AIOT6的测试原理、流程和实现
下面给出一个具体的测试场景来说明AIOT6的测试原理和自动化实现,以最简单的ICMPv6 Echo的互通性测试为例。
ICMPv6 Echo互通性测试的逻辑拓扑如图2所示。
图2中,被测设备DUT是一个路由器,Target是与之互通的设备,它是一个主机。这是IPv6互通性测试中最简单的一个测试场景。
简单来说,AIOT6实现自动化的原理就是将测试场景的逻辑拓扑映射到测试环境的物理拓扑上,自动化测试脚本将需要发放的命令进行封装,包括配置命令、发送echo request等。由6Manager对测试执行顺序和进度进行监控,Monitor对测试执行中的数据分组进行抓取和监控,抓取的数据分组作为测试结果文件的一部分。
图1 AIOT6统一测试拓扑
图2 ICMPv6 Echo互通性测试逻辑拓扑
测试流程可以概括如下。
(1)在AIOT6客户端有root权限的前提下,运行6Agent和6Command的程序(AIOT6客户端是指运行了6Agent和6Command程序的设备,比如统一测试拓扑上的Target*、Reference-1、Reference-2和Monitor)。
(2)在6Manager上将自动化测试脚本放在合适的目录下。
(3)在6Manager上编辑配置文件。
(4)在6Manager上生成测试场景。
(5)触发测试执行。
(6)测试过程中将测试结果文件有序输出到特定目录下。
(7)初始化测试环境。
AIOT6很大程度上提高了测试的效率,简化了测试人员的工作。使用自动化测试,命令的发放几乎可以在瞬间就完成,为测试节约了很多时间。测试人员从之前仅仅一组测试就需要反复敲打上百条测试命令,到现在只需一条简单的触发测试执行的命令,从之前需要反复手动连接和更换测试环境到现在只需对测试管理器进行简单的操作,可见IPv6自动化测试平台是一款非常实用的工具。
相比其他自动化测试工具,AIOT6在互通性测试上起步非常早,将近10年的成长和发展让它不断成熟和专业化。另外,AIOT6的扩展性也非常好,如有需要,可以支持更加丰富的测试场景,开发更多自动化脚本。AIOT6这款工具更加适合用于提供测试服务。
图3 AIOT6与手动测试效率对比
3 AIOT6的应用
AIOT6主要的应用是IPv6互通性测试。这款工具是专门为IPv6互通性测试设计的,适用于几乎所有IPv6互通性测试场景,是一款有针对性的、专业的自动化测试工具。
目前市面上用于互通性测试的自动化测试工具是非常少的。自动化测试更多的出自设备厂商或软件厂商,主要用于对自己的产品进行测试和调试。IPv6发展的早期,许多设备厂商对协议的理解会有些许不同,互通性测试是非常必要的。一些实验室可以提供IPv6的互通性测试服务,这时AIOT6就是一款必要且实用的自动化测试工具。
随着IPv6越来越受到重视,许多单位和组织采购产品都要求支持IPv6,所以设备需要通过IPv6进行认证。互通性测试常常出现在IPv6认证中。AIOT6这款自动化工具也非常适用于颁发IPv6认证的政府机构、国际组织、实验室等。
其实可以这么认为,只要有互通性测试规范,AIOT6自动化测试平台就有用武之地。AIOT6也具有非常好的扩展性。它也适用于大中型规模的IPv6测试大会和活动。2012年11月在北京邮电大学科技大厦举办的IPv6过渡技术国际测试大会就是一个适合使用AIOT6的典型例子。
AIOT6使互通性测试的配置和命令执行可以实现自动化。统一的测试拓扑提供了一个稳定的测试环境,每一个测试场景都可以映射到统一的测试拓扑。测试输出方面,AIOT6可以自动生成测试场景文件,并将测试结果有序并且完整地输出。这简化了测试人员的工作,为IPv6互通性测试提供了很大的便利。
在测试效率方面,笔者做了一项粗略的统计,记录了20次互通性测试的数据,选出2位测试人员,这2个测试人员同时熟悉手动测试和自动化测试,每个测试人员进行10组互通性测试。其中5组由测试人员手动完成,另外5组由AIOT6自动化实现。 这10组测试均执行同一套测试用例(每组38个测试例)。记录下完成一组测试的总体时间,包括搭建环境、执行测试和整理测试输出信息等。图3是AIOT6与手动测试效率对比。
其中,手动测试1和自动化测试1是由第一个测试人员执行的,手动测试2和自动动化测试2则是由测试人员2完成的。试验结果表明,AIOT6自动化测试能更加高效地完成测试任务,为测试工作节约了时间,也为测试人员减轻了工作量。
在准确性方面,笔者对之前的20组测试结果的输出进行检查,包括抓取的数据分组、测试拓扑、测试结果等文件,将每组测试结果中出现的错误进行统计(假设测试执行中一切设备正常运行,这里的错误指的是测试结果记录错误、抓取数据分组不完整等),统计测试数据见表1。
根据以上的统计数据发现,无论是手动操作还是自动化操作,准确率都是非常高的。使用AIOT6进行自动化测试,可以避免一些手动测试中出现的操作失误,比如抓取数据分组时间太晚、输入命令有误、结果记录错误等。AIOT6自动化测试的准确性非常令人满意。
表1 AIOT6与手动测试错误统计
1 ETSI TS 102 237-1.Telecommunications and Internet Protocol Harmonization Over Networks(TIPHON)Release 4;Interoperability Test Methods and Approaches;Part 1:Generic Approach to Interoperability Testing,2003
2 CIO Council.Planning Guide/Roadmap Toward IPv6 Adoption within the US Government Version 2.0,July 2012
3 IPv6 Forum.IPv6 Ready Phase1/2 Test Interoperability Specification Core Protocols Revision 4.0.4,March 2010
4 CCSA.IPv6过渡技术与实施方案,2013