对IPv6主协议进行一致性测试的方法和装置的制作方法

文档序号:7616011阅读:118来源:国知局
专利名称:对IPv6主协议进行一致性测试的方法和装置的制作方法
技术领域
本发明涉及现代通信领域中的协议工程技术,尤其涉及一种对IPv6(互联网协议第6版)主协议进行一致性测试的方法和装置。
背景技术
随着网络服务要求的提高,网络系统的复杂性要求高质量的通信协议再也不可能靠工程直觉方法来设计了,协议工程(Protocol Engineering)技术用形式化的方法来描述在协议设计和维护中的各个活动,使协议开发的整个过程一体化、系统化和形式化,从而保证协议的一致性、正确性、安全性和可移植性。
协议是各设备之间进行通信时应遵守的规则,这些规则基本上是以自然语言来描述,在RFC(Request for Comment,请求注解)中以文本的形式给出。由于实现者对于协议的理解可能不同,这就导致针对同一个协议的不同的协议实现,对协议实现进行判别的方法便是协议测试(ProtocolTesting)。
协议的一致性测试旨在检测所实现的协议实体与协议规范的符合程度,它是指针对一个网络协议的实现,测试者根据协议说明,通过执行协议测试套对其进行测试,然后通过观察该实现在不同的环境和条件下的反应行为,来验证该协议实现与相应的协议标准是否一致。在OSI(开放系统互连)范畴内,如果一个协议实现在它与别的实现系统通讯中所表现的行为符合OSI协议规范的一致性要求,就说明该协议呈现了一致性。协议的一致性测试是保证一个协议正确实现的关键。
IP(网际协议)网络是指以TCP/IP(传输控制协议/网际协议)协议为基础通信协议的网络,著名的Internet(因特网)就是IP网的一种。目前使用的IP协议是IPv4(版本4互联网协议),IPv4是上世纪70年代制定的协议,随着全球IP网络规模的不断扩大和用户数的迅速增长,IPv4协议已经不能适应发展的需要,它存在着下列三大危机地址枯竭,IPv4只用32位二进制数来表示地址,地址空间很小;网络号码匮乏;路由表急剧膨胀。
IPv6是继IPv4以后IP协议的一个新版本,是在上世纪九十年代中期发展起来的,IPv6继承了IPv4的优点,并对IPv4进行了大幅度的修改和功能扩充,IPv6把地址扩大到了128位。另外,IPv6在服务质量、自动控制和安全等方面也做了很大的改进,IPv6将会成为下一代网络的主导协议。各项IPv6基本协议的标准目前也已经完成,但要想使IPv6网络在国际网络间无差错、透明地进行数据传输,使各个厂家的协议实现符合IPv6协议的标准,必须要对IPv6协议进行一致性测试。
TTCN(树形和板状的组合标志)是被ISO(国际标准化组织)推荐使用的一种专门描述测试集的半形式化的描述语言,TTCN可以描述独立于任何实现的通用测试集。用TTCN描述的标准的抽象测试集包括四部分测试集概述部分(Suite Overview),说明部分(Declaration Part),约束部分(Constraints Part),动态描述部分(Dynamic Part),用TTCN描述的测试集具有标准性、通用性和可交换性等优点。
现有技术中对IPv6主协议进行一致性测试的一种方法是用TTCN来描述IPv6主协议的测试集,并根据该测试集,利用TTCN的编译器对IPv6主协议进行一致性测试。
所述现有技术中对IPv6主协议进行一致性测试的方法的缺点为由于TTCN的标准定义极其烦琐。因此,TTCN的编译器是一个非常复杂、庞大的软件,用TTCN的编译器对IPv6主协议的测试集进行编译将消耗大量的时间,并且占用大量的系统资源,而且TTCN不能实现嵌入式测试。所以用TTCN来描述IPv6主协议的测试集工程大、时间长、代价高,并且不能进行嵌入式测试。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种对IPv6主协议进行一致性测试的方法和装置,使得对IPv6主协议进行一致性测试的测试脚本的描述简单化,大大缩短了测试时间,并且能够实现对IPv6主协议自动地进行一致性测试。
本发明的目的是通过以下技术方案实现的一种对IPv6主协议进行一致性测试的方法,包括A、建立互联网协议第6版IPv6主协议的工具命令语言扩展命令;B、根据所述工具命令语言扩展命令,生成IPv6协议一致性测试需要的工具命令语言脚本;C、执行所述工具命令语言脚本,并根据执行的结果判断IPv6主协议的一致性。
所述的步骤A进一步包括A1、根据IPv6主协议的数据部分的报文格式设计测试例;A2、根据所述测试例和所述报文格式,设计IPv6主协议的工具命令语言扩展命令。
所述的IPv6主协议的工具命令语言扩展命令包括针对封装报文、解析报文、发送报文和接收报文处理的扩展命令。
所述的步骤A1还包括
A11、分析IPv6主协议的标准文本请求注解,确定IPv6主协议的标准文本请求注解的数据部分;A12、从所述数据部分中提取出IPv6主协议的数据部分的报文格式。
所述的步骤A2还包括根据被测实现的配置要求,设计对被测实现接口进行配置的工具命令语言扩展命令。
所述的步骤B进一步包括根据所述工具命令语言扩展命令和所述测试例,利用工具命令语言内建命令提供的编程特性,生成相应的工具命令语言脚本。
所述的步骤C进一步包括C1、在被测实现中执行所述工具命令语言脚本;C2、根据被测实现执行所述工具命令语言脚本后的输出报文,判断IPv6主协议的一致性。
所述的步骤C2进一步包括如果被测实现执行所述工具命令语言脚本后的输出报文,和IPv6主协议的协议标准相一致,则确定IPv6主协议呈现一致性。
所述的步骤C进一步包括利用所述被测实现接口的工具命令语言扩展命令,在被测实现中自动执行所述工具命令语言脚本。
一种对IPv6主协议进行一致性测试的装置,包括工具命令语言脚本模块基于工具命令语言扩展命令和测试例生成的对IPv6主协议进行一致性测试所需要的工具命令语言脚本;被测实现用于执行所述生成的工具命令语言脚本,并将输出的报文传递给测试结果判别模块;测试结果判别模块用于根据被测实现传递过来的输出报文和IPv6主协议的协议标准的关系,判断IPv6主协议是否具有一致性,确定测试结果。
由上述本发明提供的技术方案可以看出,本发明和现有技术相比,用功能强大且简单灵活的TCL(Tool Command Language,工具命令语言)语言代替TTCN语言来对测试脚本进行描述,大大简化了测试脚本的描述,并且不需要漫长的编译过程,从而缩短了测试时间,降低了测试代价。并且通过设计对被测实现接口进行配置的工具命令语言扩展命令,实现了对IPv6主协议自动地进行一致性测试。


图1为本发明所述方法的具体处理流程;图2为本发明所述装置的结构图。
具体实施例方式
本发明提供了一种对IPv6主协议进行一致性测试的方法和装置,本发明的核心为通过编写简单的TCL脚本来实行IPv6主协议的一致性测试,从而避免了编写繁长复杂的代码,可以把更多的时间投入到测试点的寻找、测试例的设计以及提高测试套的测试覆盖度上。
为了更好地描述本发明,我们先简单介绍一下TCL(工具命令语言)。
TCL是一种集C语言灵活强大的功能与BASIC(Beginner′s All-purposeSymbolic Instruction Code)语言易学高效的风格于一身的通用程序设计语言,是一个开源软件,它的语法简单,可扩充性很强。
TCL的核心是一个解释器,该解释器解释执行TCL应用程序中的命令,TCL的命令分为三种内建命令、应用程序命令和扩展命令,其中内建命令是TCL自带的命令,提供了足够的可编程特性,如变量、流程控制和过程等,使得用户可以将现有程序组装成脚本程序,用户还可以创建新的过程以增强TCL内建命令的功能。应用程序命令是操作系统提供的系统命令,内建命令和应用程序命令可以在单独的编程环境中使用。为了实现一些TCL不能实现的功能,或者是提高TCL执行效率,需要一些符合用户要求的新命令,TCL的C函数库有清晰的接口而且便于使用,该函数库实现了基本的解释器,用C语言就可以很容易地对TCL进行扩展,因此,用户可以根据不同需要设计自己的TCL扩展命令。
下面结合附图来详细描述本发明所述方法,本发明所述方法的具体处理流程图如图1所示,包括如下步骤步骤1-1获得IPv6主协议的数据部分的报文格式。
IPv6协议和所有因特网协议一样都是用自然语言描述的,在RFC(请求注解)中以文本的形式给出。本发明首先分析IPv6主协议的RFC2460(Request for Comment,标准文本请求注解2460)的数据部分和控制部分,并且从RFC2460的数据部分中提取出报文格式。
步骤1-2根据所获得的报文格式设计测试例。
IPv6主协议是无连接协议,只有一个状态,即空闲状态,因为IPv6主协议只有一个状态,所以可以根据从RFC2460的数据部分中提取出的报文格式,逐个设计测试例,而不用考虑其中的状态转换。
数据部分的测试例生成方法为首先设计本次测试需要用的、需要给IUT(Implementation under test,被测实现)发送的正常和异常报文,然后通过观察IUT接收到所述正常和异常报文后,是否做出正确处理,即是否输出相应的正常和异常报文,来得出该测试例的判定结果。
步骤1-3根据所获得的报文格式和所设计的测试例设计TCL拓展命令。
根据从RFC2460的数据部分中提取出的报文格式,并结合步骤1-2所设计的测试例,利用TCL的C函数库对TCL进行扩展,设计出该报文的封装、解析、发送以及接收的TCL扩展命令。
比如,可以设计如下的IPv6主协议的TCL扩展命令IPv6 CreateHeader sourceAddr destAddrsourceAddr源地址destAddr目的地址-version版本(缺省6)-traffictraffic域的值(缺省0)-flowflow域的值(缺省0)-nextNext Header-hopHop Limit(缺省255)返回值IPv6头部的Hash键值另外,还可以根据IUT的配置要求,利用TCL的C函数库设计对IUT接口进行配置的TCL扩展命令。
上述TCL扩展命令的使用方式为用户将TCL扩展命令的C语言代码编译成动态链接库文件,放在系统环境变量Path的目录中,然后在TCL中加载并编译生成动态链接库,TCL解释器在解释其应用程序中的命令时,就可以根据不用的命令调用相应的动态链接库,实现TCL扩展命令的调用。
步骤1-4根据所设计的测试例和TCL拓展命令编写TCL脚本。
根据步骤1-2所设计的测试例和步骤1-3所设计的TCL扩展命令,利用TCL内建命令提供的编程特性,即变量的声明、流程的控制等,生成相应的TCL脚本。
TCL语言的语法简单,因此,所生成的TCL脚本并不庞大,比较简单,运行起来速度快。
下面我们列出一个简单的IPv6主协议的测试例TCL脚本。
#文件名Basicltem_ToHost.tcl#文件描述IPv6基本协议测试例
#测试项目编号Basicltem_IPv6header.ip.v6.IPv6#测试目的测试IPv6协议栈是否能处理正常IPv6 ping报文#测试过程# 测试设备 目标设备#| |#|-------------------------->|#| Echo Request |#| |#|<--------------------------|#|Neighbor Solicitation |#| |#|-------------------------->|#|Neighbor Advertisement |#| |#|<--------------------------|#| Echo Reply |#| |#脚本执行结果pass#构造Echo Request报文set id 65535set seq 1set data 0x0102030405060708set request[icmpv6_CreateRequestPacket $id $seq $data]#设置发送报文的目标Mac地址tcl_SetDestMac $Link0DestinationMac#打开网卡set Adapter[tcl_OpenAdapter $Link0Adapterlndex]#Send Echo Requestprints"Send Echo Request......."
icmpv6_SendPacket$Adapter$SourceLinkLocalAddress$TargetLinkLocalAddress$requestIPv6_Delete$request#receive Echo Replyset counter$RecvCounterset timeout$RecvTimeoutwhile{$counter>0}{set reply[IPv6_RecvPacket$Adapter type$timeout]PrinfPdulnfo $reply typeif{$reply>0}{if{$type==$NSPACKET}{#ND过程NsProcess $reply $Adapter $Link0SourceMac$SourceLinkLocalAddressIPv6_Delete $replycontinue}elseif{$type==$ECHOREPLY}{#收到Echo Replyif{[icmpv6_GetReplyPacket $reply-id rlD-seq rSeq-datarData]>0}{prints"receive Echo Reply packet!"#判断是否为发出Echo Request对应的Echo Replyif{($rlD==$id)&&($rSeq==$seq)&&[string equal$rData$data]}{puts"Test result:pass!!!"IPv6_Delete$replybreak}
}}IPv6_Delete $reply}set counter[expr $counter-1]}if{$counter<=0}{puts"Test result:fail!!!"}#关闭网卡tcl_CloseAdapter $AdapterIPv6_Delete $Adapter步骤1-5执行所编写的TCL脚本。
在IUT(Implementation under test,被测实现)中执行步骤1-4所生成的TCL脚本,并且可以利用步骤1-3所设计的对IUT接口进行配置的TCL扩展命令,进行自动测试。
步骤1-6根据TCL脚本的执行的结果来判断IPv6主协议是否具有一致性。
通过分析在IUT中执行本次测试的TCL脚本后IUT所输出的报文,是否和应该输出的报文相对应,是否和IPv6主协议的协议标准相一致,来得出本次测试的结果。如果IUT的输出报文和IPv6主协议的协议标准相一致,则说明该协议实现呈现了一致性。
本发明使用了TCL语言,而有的IPv6网络路由器本身带有TCL shell(TCL语言的外壳),因此,利用本发明可以对路由器带有TCL shell的IPv6网络实现嵌入式测试。
本发明所述装置的结构图如图2所示,包括如下模块
工具命令语言脚本模块基于工具命令语言扩展命令和测试例生成的对IPv6主协议进行一致性测试所需要的工具命令语言脚本;被测实现用于执行所述生成的工具命令语言脚本,并将输出的报文传递给测试结果判别模块;测试结果判别模块用于根据被测实现传递过来的输出报文和IPv6主协议的协议标准的关系,判断IPv6主协议是否具有一致性。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种对IPv6主协议进行一致性测试的方法,其特征在于,包括A、建立互联网协议第6版IPv6主协议的工具命令语言扩展命令;B、根据所述工具命令语言扩展命令,生成IPv6协议一致性测试需要的工具命令语言脚本;C、执行所述工具命令语言脚本,并根据执行的结果判断IPv6主协议的一致性。
2.根据权利要求1所述对IPv6主协议进行一致性测试的方法,其特征在于,所述的步骤A进一步包括A1、根据IPv6主协议的数据部分的报文格式设计测试例;A2、根据所述测试例和所述报文格式,设计IPv6主协议的工具命令语言扩展命令。
3.根据权利要求1或2所述对IPv6主协议进行一致性测试的方法,其特征在于,所述的IPv6主协议的工具命令语言扩展命令包括针对封装报文、解析报文、发送报文和接收报文处理的扩展命令。
4.根据权利要求2所述对IPv6主协议进行一致性测试的方法,其特征在于,所述的步骤A1还包括A11、分析IPv6主协议的标准文本请求注解,确定IPv6主协议的标准文本请求注解的数据部分;A12、从所述数据部分中提取出IPv6主协议的数据部分的报文格式。
5.根据权利要求2或4所述对IPv6主协议进行一致性测试的方法,其特征在于,所述的步骤A2还包括根据被测实现的配置要求,设计对被测实现接口进行配置的工具命令语言扩展命令。
6.根据权利要求1、2或4所述对IPv6主协议进行一致性测试的方法,其特征在于,所述的步骤B进一步包括根据所述工具命令语言扩展命令和所述测试例,利用工具命令语言内建命令提供的编程特性,生成相应的工具命令语言脚本。
7.根据权利要求1所述对IPv6主协议进行一致性测试的方法,其特征在于,所述的步骤C进一步包括C1、在被测实现中执行所述工具命令语言脚本;C2、根据被测实现执行所述工具命令语言脚本后的输出报文,判断IPv6主协议的一致性。
8.根据权利要求7所述对IPv6主协议进行一致性测试的方法,其特征在于,所述的步骤C2进一步包括如果被测实现执行所述工具命令语言脚本后的输出报文,和IPv6主协议的协议标准相一致,则确定IPv6主协议呈现一致性。
9.根据权利要求1、7或8所述对IPv6主协议进行一致性测试的方法,其特征在于,所述的步骤C进一步包括利用所述被测实现接口的工具命令语言扩展命令,在被测实现中自动执行所述工具命令语言脚本。
10.一种对IPv6主协议进行一致性测试的装置,其特征在于,包括工具命令语言脚本模块基于工具命令语言扩展命令和测试例生成的对IPv6主协议进行一致性测试所需要的工具命令语言脚本;被测实现用于执行所述生成的工具命令语言脚本,并将输出的报文传递给测试结果判别模块;测试结果判别模块用于根据被测实现传递过来的输出报文和IPv6主协议的协议标准的关系,判断IPv6主协议是否具有一致性,确定测试结果。
全文摘要
本发明提供了一种对IPv6主协议进行一致性测试的方法,所述方法包括建立互联网协议第6版IPv6主协议的工具命令语言扩展命令;根据所述工具命令语言扩展命令,生成IPv6协议测试需要的工具命令语言脚本;执行所述工具命令语言脚本,并根据执行的结果判断IPv6主协议的一致性。所述装置包括工具命令语言脚本模块、被测实现、测试结果判别模块。利用本发明所述方法,使得对IPv6主协议进行一致性测试的测试脚本的描述简单化,大大缩短了测试时间,并且能够实现对IPv6主协议自动地进行一致性测试。
文档编号H04L29/06GK1832435SQ20051005350
公开日2006年9月13日 申请日期2005年3月8日 优先权日2005年3月8日
发明者赵宝华, 江涛, 许永利, 屈玉贵, 徐军委, 周颢, 柯尧, 林华辉 申请人:华为技术有限公司, 中国科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1