网络协议测试编解码器的设计和实现终版毕业论文.doc_第1页
网络协议测试编解码器的设计和实现终版毕业论文.doc_第2页
网络协议测试编解码器的设计和实现终版毕业论文.doc_第3页
网络协议测试编解码器的设计和实现终版毕业论文.doc_第4页
网络协议测试编解码器的设计和实现终版毕业论文.doc_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

研 究 生 学 位 论 文网络协议测试编解码器的设计和实现摘 要随着以IPv6为核心的下一代互联网技术的发展,支持IPv6的网络设备也正被广泛应用,与此同时IPv4仍是当前Internet的核心协议,因此从IPv4到IPv6的过渡将是一个漫长的过程。路由器作为支持同种/异种版本IP的重要网络中继设备在互联网上扮演着重要角色,因此路由器的测试技术研究和测试系统的开发具有重要的意义和广阔的应用前景。本论文是以四川省网络通信技术重点实验室(SC-Netcom Lab)展开的有关路由器多端口测试技术的研究活动为背景,以四川省网络通信技术重点实验室目前致力于开发的路由器分布式并发多端口测试系统(DMC-TS - Distributed Multi-port Concurrent Test System)的核心子系统路由器双端口测试器(TPT - Two-Port Tester)中的编解码器(E/D - Encoder/Decoder)为主要研究对象。四川省网络通信技术重点实验室目前致力于开发的路由器分布式并发多端口测试系统(DMC-TS)具有两层结构:上层的一台PC作为多端口并发测试器(MPCT - Multi-Port Concurrent Tester),下层则是应用回绕测试法或穿越测试法对一对端口进行测试的多组双端口测试器(TPT)。本文的重点是双端口测试器(TPT)中的重要组件-编解码器(Encoder/Decoder-E/D)的扩展设计和实现,使之具有更强的扩展性、通用性,功能更完善、接口更清晰。编解码器被作为被测路由器协议实现的对等实体来考虑,该编解码器不仅能够对符合协议规范的协议数据单元(PDU)进行编码,同时也能将含有违规代码的用于测试被测路由器反应的协议数据单元(PDU)编码成测试所需要的“违规PDU”。笔者的主要贡献总结如下:1、针对已有的编解码器的设计框架,对编解码器进行扩展设计,以全新的部件特性体现出编解码器的易操作性、扩展性和通用性。2、针对所开发的编解码器介绍所选择的测试支撑层适配工具。支撑层适配工具工作于被测协议与下层协议之间,使得针对被测协议的编解码器能够独立于下层而仅仅与被测协议本身有关。3、根据扩展后的编解码器设计框架,在Win32环境下实现了RIP协议和IPv4协议的编解码器设计,并通过模拟测试对设计进行了相应的验证。关键词:网络协议测试;编解码;支撑层工具;RIP;IPv4AbstractWith the development of the Next Generation Internet technology based on IPv6 protocol, the IPv6 supported devices are extensive installing but IPv4 is still the core protocol for present Internet system and therefore the transition from IPv4 to IPv6 is a very long term process. As the only networking relay device supporting heterogeneous and homogenous IP version, the router plays a key role when Network environment is transiting from IPv4 to IPv6. So the research and design technology for the router testing becomes very promising in the near future.The technique background of this dissertation is Multi-Port router testing technology and the subject investigated is the Encoder and Decoder (E/D) which is a sub-module of the Two-Port Tester (TPT) being part of the Distributed Multi-port Concurrent Testing System (DMC-TS), which is investigated by SC-Netcom Lab.DMC-TS, which is investigated by SC-Netcom Lab, takes two-layer architecture: at the top layer, a PC acts as the Multi-Port Concurrent Tester (MPCT) and at the bottom layer, multiple TPTs test a pair of ports with either LTM or TTM.This dissertation focuses on the extended design and implement action of the Encoder/Decoder (E/D), which is an important component in TPT and acts as the peer entity (in a test system) of the protocol implementation under test in a router. An E/D is not only capable of encoding PDUs (Protocol Data Unit) conforming to relevant protocol specifications, but also capable of encoding PDUs with errors inside to check the reaction of the router under test to an erroneous PDU. The authors contribution in this dissertation can be summarized as:1. Extended design of the E/D is provided, which represents better operationality and expansibility and achieves general design framework.2. An adaptation module is introduced between an E/D and supporting layers to cope with the diversity of underlying protocols and make the E/D for a given protocol independent of lower layers.3. The author has developed an RIP E/D and an IPv4 E/D in a Win32 environment based on the general design framework and unit tests carried out to show they have designed behave.Key words: network protocol testing; encode and decode; device of supporting layer; RIP; IPv4目 录第1章 绪论11.1 本论文的研究背景11.1.1 路由器测试11.1.2 国内外的研究现状21.2 分布式多端口并发测试系统概述41.2.1 多端口并发穿越测试法41.2.2 分布式多端口并发测试系统51.2.3 双端口测试器与编解码器概述61.3 本论文的研究内容及贡献71.4 论文的组织结构8第2章 编解码器及双端口测试器92.1 双端口测试器体系结构92.1.1 双端口测试器执行部分102.1.2 双端口测试器测试集支撑工具112.2 编解码器原理112.2.1 编解码技术及编解码器功能概述112.2.2 编解码器扩展设计方案概述122.3 编解码器与双端口测试器各部件的关系132.3.1 编解码器与单测试例执行器的关系132.3.2 编解码器与测试支撑层适配模块的关系14第3章 测试支撑层环境153.1 测试支撑层环境与测试支撑层适配模块153.1.1 网络协议测试中支撑层适配模块的作用153.1.2 网络协议测试中支撑层环境的搭建163.2 以WinPcap为核心的测试支撑层环境173.2.1 WinPcap系统介绍173.2.2 以WinPcap为核心的测试支撑层的优点193.3 以Socket为核心的测试支撑层环境20第4章 编解码器扩展设计224.1 编解码器扩展设计的必要性224.1.1 简化接口设计224.1.2形成通用设计框架234.2 编解码器扩展设计分析244.2.1 编解码器扩展的设计目标244.2.2 面向对象的编解码器扩展设计方案244.3 RIP编解码器扩展设计324.3.1 RIP协议概述324.3.2 RIP扩展编解码分析344.4 IPv4编解码器扩展设计404.4.1 IPv4协议概述404.4.2 IPv4扩展编解码分析41第5章 测试实验475.1 RIP编解码器测试实验475.2 IPv4编解码器测试实验50总结及展望54总结54展望54致 谢56参考文献57攻读学位期间发表的论文60附录61第1章 绪论1.1 本论文的研究背景1.1.1 路由器测试计算机网络通信作为当今社会信息通信的基础一直以来受到广泛关注。进入20世纪90年代后,随着计算机网络在全球的爆发式发展使得计算机网络不再是为政府和研究机构所专用。各种以计算机网络通信为基础的面向普通用户的商业服务应运而生,计算机网络用户呈数量级的增长趋势以及越来越多的面向连接的服务地提供导致所要求的用户数据流速率的不断提高从而暴露了以IPv4为基础的Internet暴露出了诸如地址空间有限、路由选择效率不高、缺乏服务质量(Qos)保证及安全性方面的缺点,在IPv4协议上的一些修修补补并非长久之计,为此IETF制定并完善了下一代IP协议,即IPv61。IPv6所具有的128位地址、简化高效的头部结构、数据流标识能力、主机地址自动配置、扩展的安全性等众多优点使得IPv6成为下一代互联网的核心,国际上无论是标准化、产品化方面,还是在网络部署及应用方面,IPv6都在逐渐成熟,但是从IPv4网络向IPv6网络的过渡将是一个长期的过程。在过渡期间,由于支持两种版本IP协议的设备同时并存,需要在两类网络或设备之间实现互联。路由器作为支持同种/异种版本的IP的网络中继设备,在系统互联中扮演重要的角色,因此,路由器测试技术的研究和测试系统的开发具有重大意义和广阔的应用前景2。网络协议测试主要由一致性测试(Conformance Testing)、互操作性测试(Interoperable Testing)和性能测试(Performance Testing)以及鲁棒测试(Robustness Testing)又称强健性测试组成。一致性测试试图判断协议实现是否具有相关协议的规定的行为是其它测试的基础;互操作测试解决实现同一协议集的设备能否实现互通;性能测试针对设备的定性指标(安全性、可管理性等)或定量指标(吞吐率、传输时延、数据丢失率、平均无故障时间等)进行测试,鲁棒性(强健性)测试是检测协议实体或系统在各种恶劣环境下运行的能力(信道被切断、通信技术掉电、注入干扰报文等)。目前针对路由器的测试主要有两种方法大都是采用ISO96463规定的两种抽象测试法,也即对单端口的“回绕测试法”(LTM - Loop-back Test Method)或对一对端口的“穿越测试法”(TTM - Transverse Test Method) 4-5。回绕测试法和穿越测试法的示意图如图1-1和图1-2所示。被测路由器图1-1 回绕测试法示意图图1-2 穿越测试法示意图中继测试器1测试器2被测路由器中继测试器1测试器2这两种测试方法都只能针对路由器的单个或单对端口进行简单的功能测试和协议一致性测试。然而目前广泛使用的高性能路由器一般具有几十甚至上百个端口,每个端口的吞吐量为Gbps数量级,整机吞吐量达到数百Gbps甚至更高,对多端口的性能测试要求多个端口的数据到达的分布关系和到达率能够接近路由器/交换机的正常和极端情况,采用传统的单个和单对端口的测试方法已无法满足高性能路由器测试需求,在此背景之下四川省网络通信技术重点实验室进行了“多端口路由器分布式并发测试技术研究和测试系统开发”。1.1.2 国内外的研究现状IPv6出现以后,国际上针对IPv6的测试被重视起来。目前国外的现有工作大体可分为两大类:单项测试系统开发和在现有IPv4网络环境上建立IPv6的互通性(Inter-operability)测试环境(即采用在IPv4之上利用隧道方式(Tunneling)进行测试)。参于开发单机测试系统的实体主要由研究机构和测试设备开发厂家。前者以美国NIST (原NBS)为代表,该研究所的信息技术实验室(ITL)从70年代末开始从事OSI协议的conformance test系统研究,主要采用技术为机内测试法 (Local Test Method)和分布式测试法(Distributed Test Method),前一种方法测试功能强,但实施困难,只适合作为系统自我调试;后一种方法测试设备间的同步问题未得到解决。类似的工作还有HP测试仪和Compaq的测试软件,根据相关资料重点在互通测试与性能测试。参与建立测试环境(Test bed)的研究活动主要由IETF和网络公司进行,其中以IETF的“6 bone Project”6为代表,其基本思想是:以现有的IPv4网络为基础,对IPv6进行“隧道”(Tunneling7)测试。从6bone近年的研究题目看,其重点在于尽快进行系统间的互通测试,在于研究如何以IPv4网络平台进行IPv6的试验;而并未全面开展对涉及IPv6的两类设备(端系统和中继系统)和3类测试目标(一致性、互通性和性能测试)进行全面的方法研究和测试系统的建设。国内主要有下述机构涉足了网络协议测试技术研究和系统开发:中科院成都计算机应用研究所提出了“Ferry-clip Test Approach”8并以此为基础开发了针对OSI传送层协议的测试系统,并将该测试系统移置到微机之中。在国家863项目支持下,中科院计算所研制开发出一套IPv6协议一致性测试系统9。从所发表文章来看,中科院项目IPv6 CTS虽然能实现多端口测试,文中并未明确提出新的并行、并发测试方法。在解决同一测试系统如何实现对多个端口进行观测的问题上,所采用的集线器作为接入路由器多端口的手段使多端口测试实时控制较难,并且尚未讨论如何应用于性能测试和解决同步问题。从系统开发目标看,主要是否符合协议标准的测试 (Conformance Test),而未涉及另外两类测试,即性能测试(Performance Test)和互通性测试(Interoperability Test)。另外包括北京邮电大学的IPv6研究小组10、兰州大学IPv6实验环境11也涉足建立试验系统和有关测试研究,主要采用的是基于IPv4的测试。针对IPv6协议测试,中科院计算机所发表有就IPv6中Neighbor Discovery协议及其测试方面的文章12。内蒙古大学计算机学院发表的基于PC的IPv6网络平台及其测试的探讨13文章谈到用PC组建IPv6网络,建立测试环境用于测试IPv6协议的问题。清华大学从近年发表的文章看,其工作主要是基于形式化技术研究14。1.2 分布式多端口并发测试系统概述1.2.1 多端口并发穿越测试法为解决多端口测试问题以及能在较少甚至不改动配置的情况下涵盖“三类”测试,实验室提出了多端口并发穿越测试法(Multi-Port Concurrent Transverse Test Method, MPC-TTM),并定义了多端口并发测试定义语言 (Multi-Port Concurrent Test Definition Language, MP-CTDL) 1516。多端口并发穿越测试法如图1-3所示:被测路由器(RUT)双端口测试器双端口测试器双端口测试器多端口测试管理器发送测试命令/接收响应发送测试命令/接收响应发送测试命令/接收响应发送测试命令/接收响应发送测试任务/接收中间结果发送测试任务/接收中间结果图1-3 多端口并发穿越测试法示意图发送测试任务/接收中间结果从图1-3可以看出,被测路由器任意多个端口都可以被接入测试系统,任何一个测试器的两个端口组成一个测试对,通过一方向另一方发送测试命令和数据,在另一方接收响应,从而获得局部的或中间的测试结果。多个双端口测试器在一个称为多端口测试管理器的部件的控制下进行测试数据的收发,从而形成一个大的分布式测试系统。1.2.2 分布式多端口并发测试系统笔者所在的四川省网络通信技术重点实验室正在进行分布式多端口并发测试系统(DMC-TS)的开发工作。该测试系统具有用于并发测试的同步协调机制和灵活的配置,能对路由器多个端口输入数据的并发特征和各类数据到达率进行模拟,较完整地再现了多端口路由器实际工作的网络环境,从而能在很少改动甚至不改动配置的情况下完成对路由器的各类测试17,解决了单对端口测试系统不能全面评测多端口路由器的问题,使测试更准确、更完备。DMC-TS系统及其支撑环境如图1-4所示。MPCT结果记录模块用户接口模块测试管理模块MPCT-CMP模块MPCT-CMP模块 多个TPTRUTMP-CTM与TPT之间的控制管理接口命令、应答等MP-CTM与TPT单测试例执行过程显示数据、同步信息等TPT向RUT发送测试数据/接收响应TPT可执行测试集/组/例(单测试例执行器、编解码器都被联合编译后成为可执行测试例的一部分MP-CTDL措述的多端口测试集/组/例单测试例执行模块MP-CTDL编译器/解释器C编译程序TTCN-3编译程序TTCN-3描述的抽象测试集/组/例测试支撑工具DMC-TS测试系统图1-4分布式多端口并发测试系统框图DMC-TS由上下两级结构组成,上级为多端口并发测试器(MPCT) ,下级为双端口测试器 (TPT) 。MPCT和TPT为物理上独立的设备,可在PC上实现,二者间利用交换机实现高速互联,并通过专用通信协议MPCT-CMP (Multi-Port Concurrent Testing Coordination & Management Protocol) 实现两级测试系统间的协调、同步和测试信息的交换。上级MPCT负责对下级多个TPT进行系统配置;根据多端口测试集为各TPT指派相应的双端口测试集;在测试例的执行过程中协调多个并行TPT测试进程同步运作,控制测试数据的并发性;在并发测试过程中控制多端口测试数据的显示、并发测试例的静态或动态选择;根据测试进展评测多端口测试结果。TPT既可以作为分布式多端口并发测试系统的下级测试执行与控制设备,又可以作为独立的双端口测试设备进行相关的测试。图1-4的左半部为测试系统的测试执行部分,由硬软件共同组成;右半部为测试控制数据的支撑工具,它包括测试控制数据描述语言本身和将该语言转换为测试系统可执行的机器代码的工具(MP-CTDL转换器、TTCN-3编译器和C/C+编译器)。多端口并发测试定义语言 (MP-CTDL) 是实验室为宏观描述并发测试而定义的新语言,它的主要任务是从并发测试的角度对多个并发双端口测试过程进行宏观描述,特别是它们之间的协调和同步,所描述的双端口测试例将以扩展的TTCN-3语言为基础。TTCN-3编译器将用TTCN-3描述的测试控制数据事先编译为C/C+程序,经过C/C+编译器后形成测试系统可执行的测试控制数据 (ETCD) 。1.2.3 双端口测试器与编解码器概述编解码器(E/DEncoder/Decoder)是用于测试器与被测路由器之间交换协议数据单元(PDU)的部件,也就是完成编/解码的功能单元。编码过程即是将测试器发出的数据由测试控制数据定义的内部格式编码为被测协议层所使用的标准PDU格式,并将它们转载于测试支撑层的服务数据单元或PDU的净荷(Payload)部分;解码则将标准PDU解释为测试控制数据定义的格式。由于双端口测试(TPT)器是对路由器一对端口进行监测的测试系统,因此,E/D为TPT中的核心组件之一。1.3 本论文的研究内容及贡献本论文的研究目标是以分布式多端口并发测试系统(DMC-TS)的研究开发工作为背景,以DMC-TS中的核心模块双端口测试器(TPT)的重要组成部件编/解码器(E/D)为主要工作重点。在已有的编解码器的研究基础上,深入探讨编解码器与其支撑层工具的关系,以面向对象的软件工程理论为基础,设计出功能更为强大的、扩展性更强的、接口更为明晰的编解码器;选择套按字(Socket)接口及WinPcap18软件系统为支撑工具,以C+语言的多态19特性实现具体的功能,使接口更为统一,方便其它模块调用,最后通过测试实验验证设计目标。1 笔者具体的研究内容概括为:l 在已有的编解码技术之上扩展编解码技术。根据编解码器必须针对具体协议设计的特性,针对RIP和IPv4协议进行编解码技术的扩展研究和设计,并提出相对通用的E/D设计框架。l 分析编解码器与双端口测试器的关系尤其是与测试支撑层工具的关系,笔者选用WinPcap和套按字(Socket)为支撑层工具进行研究。l 根据扩展的编解码器设计方案,实现RIP及IPv4的编解码器,并通过相关测试实验对编解码器扩展的设计方案进行验证。2 笔者的主要贡献如下:针对编解码器必须与具体协议相关的特性,所扩展的编解码器设计方案可以根据相对通用的设计框架方便地开发出各层协议的编解码器,为以后的扩展设计提供方便。同时编解码器工作于测试系统之中与其它模块相关,因此编解码器必须方便地为其它模块提供接口,扩展后的编解码器设计方案通过C+的多态特性可以很好的实现接口的统一,方便其它模块调用。与具体协议的编解码器开发最为相关的是支撑层软件的选择,这直接关系到编解码器的相关功能实现,笔者所选用的套按字(Socket)对于RIP协议、WinPcap对于IP协议的编解码器开发足以提供所需要的软件环境,这为以后网络层协议的编解码器地开发提供了参考。1.4 论文的组织结构本论文后续内容的组织结构如下:第二章介绍编解码器及其在双端口测试器中作用以及双端口测试器的工作流程;第三章介绍支撑层工具作为编解码器核心开发部件的作用及测试环境的搭建;第四章介绍编解码器扩展设计思想;第五章介绍测试实验的过程;第六章在现有工作基础上对未来工作的展望。第2章 编解码器及双端口测试器2.1 双端口测试器体系结构双端口测试器(TPT)既可以作为DMC-TS的下级测试器与其它TPT一起构成路由器多端口的并发测试系统,又可以当作独立的测试器对路由器进行一对端口的测试。当进行多端口并发测试时,TPT受MP-CTM (Multi-Port Concurrent Test Manager) 的控制;而作为独立的测试器时,由测试管理者通过用户界面进行软件环境配置并发布测试控制命令,由双端口测试管理器 (TPT-TM) 控制测试过程。TPT具有图2-1所示的内部功能结构:它由TPT测试执行部分(TPT-TE)和测试集支撑工具两部分组成20。 单测试例执行器(STCE) 编解码器(E/D) 支撑层适配模块(装拆被测层PDU) TPT-TM: 路由器双端口测试管理器A. 用户接口模块 (User Interface Module): 用户操作界面图形化测试过程动态显示模块+系统初始化模块可执行测试集:ETS Executable Test Suite + Encoder/DecoderB.测试例/组管理模块:静态与动态测试例、组选择)测试集、测试组选择测试例选择与测试同步信息、测试例指派与分发、测试例结论单测试例执行器(STCE)和编解码器(E/D)概念上隶属于TPTM,但在实现上已经与测试例一道编译成可执行代码。C.测试结果分析与测试报告生成模块 测试支撑层协议实现:测试IPv6:为IPv4或数据链路层测试应用层:UDP信控平面与用户平面联合测试:都需要并发测试配置命令、同步、测试中间结果被测PDU流、命令流和测试结论记录。支撑层PDU数据流记录模块:测试后进行分析用。至多端口并发测试系统抽象测试集(用TTCN-3语言描述)1、TTCNC编译2、C机器代码编译DE双端口测试器执行部分(TPT-TE)测试集支撑工具D. MPCT-CMP模块图2-1 路由器“双端口测试器”内部功能结构2.1.1 双端口测试器执行部分从图2-1可以看出,左半部分的测试执行部分(TPT-TE)由路由器双端口测试管理器TPT-TM (TPT Test Manager)、单测试例执行器STCE (Single Test Case Executor)和编解码器(E/D)、测试支撑层适配模块测试支撑层协议实现组成。下面分别介绍TPT-TE各部件的作用:1 路由器双端口测试管理器TPT-TM是TPT的宏观控制部分。它包括用户接口模块,测试例/组管理模块和测试结果处理模块等。用户接口模块实现用户操作界面,初始化系统,以图形化的形式动态显示测试过程。测试例/组管理模块根据用户要求,给等待运行的测试集赋参数并进行相关配置,动态选择测试组和测试例,并向STCE发出测试命令同时在测试过程中监测和记录测试状态。测试结果处理模块综合分析测试结果并生成测试报告。2 单测试例执行器(STCE)是TPT的核心程序,它完成TPT-TM指定的测试例的执行。而编解码器完成测试数据内部格式与标准协议测试单元格式间的转换并通过支撑层适配模块实现与支撑层服务数据单元或PDU间的装拆。单测试例执行器和编解码器概念上隶属于TPTM,但在实现上已经与测试例编译成可执行代码。3 测试支撑层适配模块主要为PDU的编解码功能提供符合测试环境的配置。从理论上讲,待测PDU可直接装载于支撑层PDU的净荷 (Payload)部分。但是,被测协议支撑层可能因被测路由器不同而异,例如,测试IPv6协议时,支撑层可能是Ethernet MAC、PPP、ATM Cell、Frame Relay,还可能为IPv4。为了增强在不同支撑环境中的配置功能,支撑层适配模块作为TPT系统中逻辑上独立的一部分。4 测试支撑层协议实现部分相当于特定测试例运行时的下层协议平台,也就是该测试例的PDU在支撑层协议之上传输。例如,对IPv6协议实现进行测试时,支撑层可能为数据链路层或者IPv4;如果测试应用层协议时,支撑层则可能是UDP或TCP。在进行测试时则要根据发送的PDU所在的层次,分别调用不同的支撑层适配模块以适应各自的支撑层协议接口。2.1.2 双端口测试器测试集支撑工具图2-1中,右半部分的测试集支撑工具的主要功能是将抽象测试控制数据转换成可执行测试控制数据ETCD。测试控制数据是以形式化描述技术规定某一协议标准的测试目的、测试内容和测试步骤的代码3。它决定了测试的质量,是测试操作和测试执行的基础,是整个协议测试的核心和主线,在测试中占据了非常重要的地位。本系统首先由通用的形式化测试描述语言TTCN-3定义抽象测试测试控制数据。抽象测试控制数据不依赖于特定测试系统,而是基于通用测试集与相关的协议规范,完整地说明了测试过程21。TTCN-3描述的抽象测试控制数据,通过TTCN-3编译器转换为C/C+程序,然后调用支撑层接口,经C/C+编译器编译生成ETCD。2.2 编解码器原理2.2.1 编解码技术及编解码器功能概述在测试系统中对协议测试PDU的组成和解释,传统上有两种方式:标准协议实现(SI Standard Implementation)错误生成器(EG - Error Generator)和E/D方式,分别代表20世纪80年代美国NBS22和英国NPL23开发的两个测试系统采用的策略。SI+EG方式可以借用已有的协议实现,开发起来较容易,但为了对SI产生的PDU注入错误,必须对原SI进行修改,控制起来不太方便;另一方面SI中还包括了协议状态变迁部分,而测试例中已经对相关问题进行了描述,因此可能对测试例的判断带来干扰。本系统编解码器的特色在于可以控制被测协议实现合法和违法的代码,因此本系统的编解码器采用了E/D方式。E/D可以看作是一个纯PDU编解码器,它不涉及协议状态变迁,也容易按测试例定义的实际情况生成带有各类错误的PDU,在PDU编解码方面比较简洁、易于理解。编解码器是双端口测试系统底层支持的关键部分,它的作用在于:当测试系统发送PDU时,需要调用PDU编码器将待测PDU装载于支撑层PDU之中;当收到测试支撑层上传的PDU时,解码器需要将测试例中关注的PDU字段进行解码,转换为测试数据的内部格式以便进行比较。编解码器贯穿于TPT的底层和后台系统。它的功能被分解于多个模块中,起到了融合功能模块的作用。首先,它连接后台支撑系统和STCE。抽象测试控制数据在被编译的过程中调用编解码接口,最终生成以STCE为核心的测试控制数据。其次,编解码器参与了测试支撑层的配置。不同的测试控制数据处于特定的测试环境中,需要相应测试支撑层的配置。编解码器在为测试控制数据提供编解码接口和网络传输接口的同时,完成了对测试支撑层的配置,从而使不同的测试控制数据在执行时调用相应的编解码器即可,不用考虑测试支撑层的配置细节。从而使支撑层适配模块就很好地与STCE结合在一起。2.2.2 编解码器扩展设计方案概述编解码器工作于单测试例执行器与测试支撑层软件之间,目的是方便地将被测协议的PDU进行编解码,同时也能够根据测试的需要人为地对被测试协议PDU进行“违法”处理,从而使测试更为完善。为此编解码器的扩展设计对已有编解码器的设计方案24做出了如下改进:l 不同层次协议的编解码器必须保持相对一致的设计模式。由于上层PDU将作为下层PDU的“净荷部分”(Payload)被装入下层PDU之中。因此,在设计下层协议PDU编解码器时,就需要考虑到上层协议PDU编解码的需要,从而简化不同协议的编解码器设计和保持其格式化,将有利于后续编解码器的开发。为此在原有编解码器以C语言开发为主的基础上,扩展后的编解码器使用C+语言,以面向对象25的软件开发思想进行设计,以类的形式对数据和功能进行封装,通过类的继承、多态26特性实现编解码器设计相对通用的框架。l 编解码器必须根据测试需要能够方便地对被测协议的各个字段进行填充。现有的编解码器是以C语言函数的形式实现该功能,在被其它部件如编译器调用时接口多而复杂,而扩展后的编解码器将以类成员函数的形式实现,对外部屏蔽这些复杂地实现,并根据C+的多态特性以统一的接口方便其它部件地调用。l 从软件工程的角度来说,编解码器作为TPT的重要组成部分,必须要自成模块,这有利于程序调试以及系统升级和扩展。在原有编解码器设计为C函数库的基础上,扩展后的编解码器以C+类库的型式出现,由于C+语言更为完善的封装机制,将使扩展后的编解码器模块内部更为紧凑,而外部接口更为清晰更由于面向对象的设计模式最大的“代码复用”的特点为,使得后续升级扩展更为便利。l 编解码器工作于TPT之中,与多个部件如STCE和测试支撑层存在接口。针对已有编解码器设计为C语言函数库的形式,不同的协议编解码器将会以各自名命函数的形式出现,接口众多,从而增加程序的复杂性,给其它模块的设计增加了困难。扩展后的编解码器根据C+类的封装特性在类的内部处理不同协议编解码器功能的实现,而通过C+面向对象设计的多态特性对外部提供统一的调用接口,这样对内既保护了模块内部的数据,对外也更为简洁。l 保持编解码器对数据的适应性。编解码器仅是处理协议数据单元(PDU)编解码,而不是判断PDU的合法和非法,对于非法PDU必须是按合法PDU来处理,因为非法的PDU也是按测试需要发送到被测路由器。这个功能在现有编解码器设计方案中已经实现得比较完善,在保持该特点的基础上,扩展设计中将这些功能以C+类成员函数的形式实现。2.3 编解码器与双端口测试器各部件的关系2.3.1 编解码器与单测试例执行器的关系在分布式并发多端口测试系统的设计思路中,编解码器运行于双端口测试器单测试例执行器(STCE)与测试支撑层(Test Supporter,TS)之间。在实际的软件编程实现中,STCE所执行的主要功能是完成PDU的发送、接收和提供数据接口给双端口测试管理模块(TTM),发送和接收PDU的实际工作是通过调用对应的编解码器来实现,被发送的被测PDU来自编解码器的输出数据,接收到的支撑层PDU却成为编解码器的输入数据。在具体实现中,编码器编码后的数据作为参数传递给单测试例执行器所提供的系统底层函数;而单测试例执行器所获取的支撑层PDU也以参数形式传递给解码器对应的协议分析函数进行解码。对于每个具体的被测协议,原有的编解码器给STCE提供具体的C函数库,接口复杂;而扩展后的编解码器对于每个具体的被测协议都给STCE提供统一的接口如send和receive,而对于具体协议的不同发包(send packet)和收包(receive packet)特性则通过C+类的多态性来解决。 2.3.2 编解码器与测试支撑层适配模块的关系协议测试涉及多层不同协议的测试,如典型的网络层的IP(v4和v6版本)协议,及以上的ICMP和IGMP,传输层TCP、UDP协议,甚至更高层协议如RIP协议。针对不同路由器的测试其支撑层可能不同,比如对于IP的测试支撑层可能是Ethernet MAC或者PPP等,如果直接将被测协议的PDU装载于支撑层PDU的“净荷”那么一旦改变被测路由器则可能需要不同的测试支撑层,这样必将导致被测协议的编解码器与下层协议有关,导致编解码器的开发更为复杂。为此,在TPT中加入测试支撑层适配模块从而屏蔽了对不同路由器同一协议的测试可能会要求不同支撑层的问题,实现被测协议编解码器与下层无关的要求。由于测试支撑层适配模块工作于被测协议的下一层因此可以完全掌控被测协议PDU甚至可以按照测试例的需要生成违法的PDU来测试路由器的判错能力。因此测试支撑层适配模块对编解码器的设计以至整个测试系统高效地运行起着极为重要的作用。第3章 测试支撑层环境3.1 测试支撑层环境与测试支撑层适配模块3.1.1 网络协议测试中支撑层适配模块的作用网络协议测试主要由一致性测试(Conformance Testing)、互操作性测试(Interoperable Testing)和性能测试(Performance Testing)以及鲁棒测试(Robustness Testing)又称强健性测试组成。这四种测试中,国际学术界目前能够给出理论框架和方法论的还只是第一种测试即协议一致性测试27。针对不同的协议测试,通常有两种测试方法,单层测试和多层测试。一致性测试中使用最为常用的是单层测试法。单层测试是指:测试N层协议的时候,以N层以下包括N-1层的协议都被测试为正确的前提下对第N层协议进行测试。即通过在测试系统的N层实体与被测路由器的N层实体之间交换N层的协议数单元(PDU)的过程来观测被测系统的协议行为,从而完成一致性测试的过程。对路由器或(3层交换机)/2层交换机来说,单层测试通常从路径选择/交换层(即网络层/数据链路层)开始进行单层测试,然后再对其他高层进行测试。多层测试在性能测试、互通测试中使用较广,它将被测对象的多层组合视为一个“黑匣子”进行测试,而在进行这些测试之前,被测系统必须进过严格地一致性测试。在一致性测试中,测试支撑环境是指被测层(第N层)以下的各种可能的协议层实现的抽象。例如:路由器的用户数据传输平台中,数据链路层可能是PPP、Ethernet MAC/LLC、ATM Cell或Frame Relay,为了使同一协议层的编解码器能够适应不同的支撑层协议同时也为了让TPT的设计更为紧凑简洁,我们引入了测试支撑层适配模块24。测试支撑层适配模块的作用在于,当进行第N层协议测试的时候支撑层适配模块可以完全将N层以下所有可能的支撑层抽象到支撑层适配模块中,从而实现N层测试与N层以下无关的目的。3.1.2 网络协议测试中支撑层环境的搭建在计算机网络中,网络协议以分层的形式开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合28。如图3-1所示: 应用层 传输层 网络层链路层 FTP、Telnet和RIPTCP和UDPIP、ICMP和IGMP设备驱动程序及接口卡图3-1 TCP/IP协议族的四个层次套接字接口TCP或UDP头TCP UDP套接字FreeBSD BPF原始套接字Linux PACKETWinPcap应用程序报文 TCP或UDP头IP头应用程序报文Ethernet头TCP头IP头应用程序报文IP头应用程序报文Ethernet头IP头应用程序报文Ethernet头应用程序报文BPFNPF图3-2 套接字 原始套接字 Linux Packet BPF NPF示意图根据计算机网络协议的分层原理,在协议测试过程中我们进一步分析端系统协议实现的层次结构29如图3-2所示:从图3-2可以看出,被测协议PDU可控数据“应用程序报文”从左到右所处的协议栈位置越靠近网络体系结构的底层,数据接口位置也越接近于底层。其中,TCP 套接字 UDP 套接字可以实现应用层协议的PDU编码而Linux PACKET、FreeBSD BPF(BSD Packet Filter-BPF)30、WinPcap NPF(Netgroup Packet Filter) 24都可以对网络协议栈3层协议PDU实现完全可控编码。通过分析WinPcap NPF可知,NPF是以微软公司和3COM公司联合提出的NDIS(Network Driver Interface Specification)31中的协议驱动程序标准设计的。NIDS提供三种网络驱动程序包括:协议驱动程序、中间驱动程序以及和网络接口卡打交道的小端口驱动程序。协议驱动程序通过中间驱动程序与小端口驱动程序交换数据,从而可以对包括数据链路层PDU的控制。NDIS提供了大量的操作函数,它为上层的协议驱动提供服务,屏蔽了下层各种网卡的差别,向下支持不同厂家生产的多种网卡,提供一个完备的NDIS库(Library),但库中所提供的各个函数都是工作在内核模式下,用户不宜直接操作,这就需要寻找另外的接口。WinPcap可以看作是针对网络层开发的一个协议驱动设备,足够支持网络层协议测试,同时相对NDIS而言WinPcap提供了更为简洁的用户级编程接口并且可以很好地工作于Windows平台,因此相对工作于Linux 平台下的Linux PACKET和工作于UNIX 平台下的FreeBSD BPF而言,NFP与同样是在Windows平台下开发的TPT最为匹配。在上一节已经讨论过:针对不同的被测协议,其测试支撑层环境也不相同。通过图3-2可以看到网络PDU分层操作控制的情况,因此我们可以根据所要测试的协议选择适当的支撑层工具,搭建符合测试的支撑层适配模块。3.2 以WinPcap为核心的测试支撑层环境3.2.1 WinPcap系统介绍WinPcap是一种应用于Win32平台的数据包俘获与网络分析的一种体系结构32,利用该库可以向开发人员屏蔽底层网络链路,直接获得网络流量数据,为Win32应用程序提供访问网络底层的能力,其主要思想来源于Unix系统中BSD 包俘获构架。WinPcap 基本体系结构如图3-3所示,由3个模块组成。图3-3 WinPcap系统应用程序应用程序Wpcap.dllPacket.dllNPFNIC driver(网卡驱动)其它协议栈用户级内核级物理网络Packet1 NPF包过滤器。数据包监听设备驱动程序,是架构的核心(在Win95/ 98中是一个VXD文件,在NT/2000中是一个SYS文件) ,它工作在内核级,主要功能是过滤数据包,在包上附加时间戳、数据包长度等信息。它直接从数据链路层取得网络数据包,不加修改地传给运行在用户层的应用程序,也允许用户发送原始数据包。2 Packet.dll是低级的动态连接库,工作在用户级,把应用程序和数据包监听设备驱动程序隔离开来,使得程序可以不加修改地在不同的Windows系统上运行。通过Packet.dll提供的能用来直接访问BPF驱动程序的包驱动API,利用“原始(raw)”模式发送和接收包。不同Windows 系统上的Packet.dll并不相同,但由于它提供了一套相同的调用接口,这样使得高级系统无关库不依赖于特定的Windows平台。3 Wpcap.dll是高级系统无

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论