CN104579837A - 一种OpenFlow协议一致性测试的方法和系统 - Google Patents
一种OpenFlow协议一致性测试的方法和系统 Download PDFInfo
- Publication number
- CN104579837A CN104579837A CN201510004799.6A CN201510004799A CN104579837A CN 104579837 A CN104579837 A CN 104579837A CN 201510004799 A CN201510004799 A CN 201510004799A CN 104579837 A CN104579837 A CN 104579837A
- Authority
- CN
- China
- Prior art keywords
- test
- data
- openflow
- openflow protocol
- protocol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 424
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000013507 mapping Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 abstract description 10
- 230000006870 function Effects 0.000 description 20
- 238000011161 development Methods 0.000 description 10
- 230000018109 developmental process Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000006399 behavior Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 239000000047 product Substances 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000010998 test method Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000033772 system development Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012812 general test Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种对OpenFlow协议进行一致性测试的系统和方法,包括:抽象测试套模块,包括:测试执行单元,用于将要发送的OpenFlow协议的测试数据发送给编解码模块;所述测试数据为抽象测试套模块指定的用于和被测系统之间的通信的OpenFlow协议数据;编解码器模块,用于对测试数据进行编码;适配器模块,包括数据发送单元,用于接收上述经过编码后的测试数据,并发送给被测系统的端口;其中,若接收的反馈消息数据为空或定时器单元超时则判定结果失败,若反馈消息的数据包正确则关闭定时器单元,并判断是否需要继续发送数据或者判定结果通过。
Description
技术领域
本发明涉及一种通信协议的一致性测试系统及其方法,具体涉及一种OpenFlow协议一致性的测试系统及其方法。
背景技术
信息技术的高速发展,特别是近年来在移动设备和内容、主机虚拟化、云服务等方向爆炸式的发展使得网络产业界开始重新审视传统网络的架构。传统的网络是分级的,由多级以太网交换机以树形结构构成网络。这样的设计在客户端-服务器技术占主流的时候是合适的,但是这样的静态架构无法满足现在企业数据中心、高校、运营商承载网等对动态计算和存储的需求。信息技术的发展趋势提出了对新的网络模式的需求。
软件定义网络(Software Defined Networking,SDN)是一种新兴的网络架构。在以前的网络架构中,对网络的控制是和每台独立的网络设备紧密地联系在一起,也就是说网络控制模块是集成在网络设备中的,设备制造商只提供有限的网络控制接口。在SDN架构中,网络控制和数据转发功能分离,并且网络管理人员可以对网络控制进行编程。把网络控制从网络设备中迁移到网络管理人员可控制的计算机设备,使得下层的设施可以被抽象为应用和网络服务,把网络设备看成是逻辑或者虚拟的实体。SDN是动态、易管理、成本高效和适应性强的网络架构,能够给网络管理员带来从未有过的可编程性、自动化和控制功能。
通过开放的标准来实现SDN能够极大地提高灵活性,同时降低服务开发和运营的成本,而且可以让网络管理人员集成最新的技术。为此在2011年由多家公司(Deutsche Telekom,Facebook,Google,Verizon,Microsoft,Yahoo!)成立了开放网络基金会(Open Networking Foundation,ONF)。ONF是一个非营利性机构,提出SDN标准和解决方案,致力于SDN的推广和发展。OpenFlow协议是由ONF提出的第一个专为SDN设计的标准接口,并且已经部署在了许多网络和网络产品中。伴随SDN的发展与普及,更多OpenFlow的研究将会展开,更多OpenFlow的产品将会推出。
OpenFlow标准是开放标准的协议能够让网络管理员通过基于软件的方式来实现传统网络中交换机和路由器的流控制功能。OpenFlow标准与传统网络的路由器和交换机不同,传统的设备包转发(数据路径)和路由选择(控制路径)在同一设备上。OpenFlow交换机将这两个功能分离开。数据路径部分在保留在交换机上,高层的路径选择功能被移动到分离的控制器上。OpenFlow交换机和OpenFlow控制器通信通过OpenFlow标准定义,包括packet-received,send-packet-out,modify-forwarding-table,get-stats等。
ONF规范包括OpenFlow标准(OpenFlow Standard),OpenFlow配置(OpenFlow Configuration),测试(Testing)和互操作性(Interoperability)。
OpenFlow交换机规范(OpenFlow Switch Specification)描述了对OpenFlow交换机的要求,规范包括了OpenFlow交换机的组件和基本功能,和远程控制器管理交换机的OpenFlow协议(OpenFlow Protocol)。OpenFlow交换机规范在2009年12月发布1.0.0版本,2011年2月发布1.1.0版本,2011年12月发布1.2.0版本,2012年6月发布1.3.0版本,2013年10月发布1.4.0版本,目前最新的版本为1.3.4和1.4.0。
ONF推出了OpenFlow一致性测试项目(ONF OpenFlow ConformanceTesting Program),为设备制造商提供OpenFlow规范一致性的认证。目前该项目发布了OpenFlow一致性测试规范(Conformance Test Specification forOpenFlow Switch Specification 1.0.1),但是并没有发布一致性测试工具。
ISO/IEC 9646(ITU-T X.290)为ISO与ITU协议提供了一致性测试基本方法框架,这是应用最为广泛的一致性测试方法理论。ISO/IEC 9646为测试集制定了设计步骤和描述方法,并为测试系统的实现提供了指导。协议一致性测试过程分三个阶段:测试准备阶段生成抽象测试套(Abstract Test Suite,简称ATS);测试操作阶段产生参数化的可执行测试套;测试执行阶段包括被测协议实现(Implementation Under Test,简称IUT)的协议实现一致性声明的分析和可执行测试套的执行,最终得到一个一致性测试的判决,生成一致性测试报告。其中抽象测试套的生成决定了测试的质量,是测试操作和测试执行的基础,是整个协议测试的核心。
发明内容
本发明所要解决的技术问题是提供一种针对OpenFlow协议进行一致性测试的方法和系统,使得对OpenFlow协议进行一致性测试简单化,缩短测试时间,并能够实现对OpenFlow协议自动化一致性测试。
本发明解决上述技术问题所采取的技术方案如下:
一种对OpenFlow协议进行一致性测试的系统,包括:
抽象测试套模块,包括:测试执行单元,用于将要发送的OpenFlow协议的测试数据发送给编解码模块;
所述测试数据为抽象测试套模块指定的用于和被测系统之间的通信的OpenFlow协议数据;
编解码器模块,用于对测试数据进行编码或者解码;
适配器模块,包括数据发送单元,用于接收经过编解码器模块编码后的测试数据,并发送给被测系统的端口;定时器单元,用于开启定时;
数据接收单元,用于接收来自被测系统返回的反馈消息,并将接收到的反馈消息交给编解码模块,所述编解码模块对反馈消息解码后,发送给测试执行单元;
所述测试执行单元,根据解码后的反馈消息判断测试是否通过,其中,若接收的反馈消息数据为空或定时器单元超时则判定结果失败,若反馈消息的数据包正确则关闭定时器单元,并判断是否需要继续发送数据或者判定结果通过。
进一步地,优选的是,所述抽象测试套模块,具体包括:
测试脚本单元,用于获取测试人员设定的OpenFlow协议测试数据定义和具体的测试逻辑;测试套单元,用于存储所有测试例,所述测试例用测试脚本语言描述。
进一步地,优选的是,所述测试脚本单元中,所述OpenFlow协议测试数据定义和具体的测试逻辑具体包括:测试人员根据OpenFlow协议的消息格式,定义出的测试中使用到的OpenFlow消息结构,且所述消息结构为根据模块所定义,消息结构使用记录类型进行嵌套定义;
所述测试套单元中,所述测试例,包括测试所需要的变量对端口进行操作的声明或定义。
进一步地,优选的是,还包括:
日志模块,包括:日志单元,用于获取执行执行测试例的测试结果;
输出单元,用于根据输出结果出生成测试日志,以PDF或者HTML方式提供给测试人员。
进一步地,优选的是,所述测试例中,具体包括:
测试例执行时测试所需要的变量,以及对测试系统和被测系统的端口进行映射的映射关系。
一种对OpenFlow协议进行一致性测试的方法,包括:
步骤1:将要发送的OpenFlow协议的测试数据进行编码;
其中,所述测试数据为抽象测试套模块指定的用于和被测系统之间的通信的OpenFlow协议数据;
步骤2:将上述经过编码后的测试数据发送给被测系统的端口,同时开启定时;
步骤3:接收来自被测系统返回的反馈消息,并将接收到的反馈消息解码,根据所述反馈消息判断是否通过;其中,若接收的反馈消息数据为空或定时超时则判定结果失败;
若反馈消息的数据包正确则关闭定时,并判断是否需要继续发送数据或者判定结果通过。
进一步地,优选的是,步骤1中,具体包括:
获取测试人员设定的OpenFlow协议测试数据定义和具体的测试逻辑;存储所有测试例,所述测试例用测试脚本语言描述。
进一步地,优选的是,步骤1中,所述OpenFlow协议测试数据定义和具体的测试逻辑具体包括:
测试人员根据OpenFlow协议的消息格式,定义出的测试中使用到的OpenFlow消息结构,且所述消息结构为根据模块所定义,消息结构使用记录类型进行嵌套定义;所述测试例,包括测试所需要的变量对端口进行操作的声明或定义。
进一步地,优选的是,还包括:
获取执行执行测试例的测试结果;根据输出结果出生成测试日志,以PDF或者HTML方式提供给测试人员。
进一步地,优选的是,还包括:
所述测试例中,具体包括:
测试例执行时测试所需要的变量,以及对测试系统和被测系统的端口进行映射的映射关系;
测试执行时,根据测试例定义所需要的变量,对被测试系统的端口进行操作,发送数据包。
本发明采取了上述方案以后,对OpenFlow协议一致性测试的测试将大大缩短测试时间,并且能够实现对OpenFlow协议自动地进行一致性测试,分析测试结果并形成测试报告,且可以实现多个厂家不同协议实现之间的设备互联互通。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其中,
图1为OpenFlow协议结构图;
图2为基于TTCN-3的一致性测试系统结构图;
图3为本发明OpenFlow协议一致性测试的方法的一个测试例的流程图;
图4是本发明OpenFlow协议一致性测试的系统的结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
由于协议标准是由自然语言定义的,协议实现者对协议文本可能有不同的认识和理解,同时在协议实现的过程中也可能出现错误,导致协议实现与协议标准不一致。因此需要一种方法来对协议实现进行判别,即协议测试(Protocol Testing)。协议测试一般包括一致性测试(Conformance Testing)、性能测试(Performance Testing)、互操作性测试(Interoperability Testing)和健壮性测试(Robustness Testing),其中最基础的就是一致性测试,即检测协议实现与协议标准是否一致的测试。
其中,协议的一致性测试旨在检测所实现的协议实体与协议规范的符合程度,它是指针对一个网络协议的实现,测试者根据协议说明,通过执行协议测试套对其进行测试,然后通过观察该实现在不同环境和条件下的反应行为,来验证该协议实现与相应的协议标准是否一致。协议的一致性测试是保证一个协议正确实现的关键。
一致性测试套是测试例的完整集合,可能组合到嵌套的测试组中,用于执行一个或多个OSI协议的动态一致性测试。测试例又分为一般的、抽象的和可执行的测试例。抽象测试套是有抽象测试例组成的测试套。抽象测试套具有分级结构,一个抽象测试套可以有多个测试组,每个测试组由若干个测试例组成,每个测试例可以有多个测试步,每个测试步由测试事件和/或其他测试步构成,测试事件是测试例在说明的抽象层次上不可分的最小单位。其中测试例是测试套的最重要的一级。测试例的生成方法的研究对协议测试十分重要。
协议一致性测试例设计的一般步骤如下:根据协议内容选择测试目标;根据测试目标构造测试例的实际拓扑结构;选择测试方法;设计测试例的测试序列。
本发明深入研究OpenFlow协议,使用测试脚本语言对协议进行描述,设计OpenFlow测试场景与测试例,搭建测试环境,实现一致性测试系统,具有较强的实用价值。
针对现在OpenFlow一致性测试技术的空白,本发明提供一种OpenFlow协议一致性的测试系统及其方法。协议一致性测试一般是通过协议一致性测试设备对被测设备进行测试,目的是为了验证被测设备的协议实现是否和协议标准一致。本发明结合自动化测试,提供一种适合OpenFlow协议的一致性测试系统。
图1为OpenFlow协议结构图;其中,各个模块具体包括:Controller控制器、OpenFlow Protocol OpenFlow协议、OpenFlow Channel OpenFlow信道、Group Table组表、Flow Table流表、Pineline流水线、OpenFlow SwitchOpenFlow交换机。
图2为基于TTCN-3的一致性测试系统结构图;
如图4所示,一种对OpenFlow协议进行一致性测试的系统,包括:
抽象测试套模块,包括:测试执行单元,用于将要发送的OpenFlow协议的测试数据发送给编解码模块;
所述测试数据为抽象测试套模块指定的用于和被测系统之间的通信的OpenFlow协议数据。或者,在测试工具开发过程中针对OpenFlow协议规范制定。
测试脚本单元,用于获取测试人员设定的OpenFlow协议测试数据定义和具体的测试逻辑;测试套单元,用于存储所有测试例,所述测试例用测试脚本语言描述。
进一步地,优选的是,所述测试脚本单元中,所述OpenFlow协议测试数据定义和具体的测试逻辑具体包括:测试人员根据OpenFlow协议的消息格式,定义出的测试中使用到的OpenFlow消息结构,且所述消息结构为根据模块所定义,消息结构使用记录类型进行嵌套定义;
所述测试套单元中,所述测试例,包括测试所需要的变量对端口进行操作的声明或定义。
其中,在进行测试的时候,首先要根据OpenFlow协议的消息格式,定义出测试中使用到的OpenFlow消息结构,测试中使用模板来定义具体的消息。其中,模板有两方面作用,其一是用于传送一个特定值的集合,其二是测试接收的值的集合是否与模板定义匹配,并且,消息结构使用记录类型进行嵌套定义。
其中,测试例定义所需要的变量,对端口进行操作,发送数据包,开启定时器,等待回复,对接收到的数据包进行解析和逻辑判断,若接收数据为空或定时器超时则判定结果失败,若数据包正确则关闭定时器,并判断是否需要继续发送数据或者判定结果通过。
编解码器模块,用于对测试数据进行编码;
编解码模块,主要负责测试数据的编码和解码工作,这些数据包括由执行的抽象测试套模块指定的用于和被测系统之间的通信的数据。在测试工具开发过程中需要针对协议规范制定特定的测试数据。
适配器模块,包括数据发送单元,用于接收上述经过编码后的测试数据,并发送给被测系统的端口;定时器单元,用于开启定时;
数据接收单元,用于接收来自被测系统返回的反馈消息,并将接收到的反馈消息交给编解码模块,所述编解码模块对反馈消息解码后,发送给测试执行单元;其中,若接收的反馈消息数据为空或定时器单元超时则判定结果失败,若反馈消息的数据包正确则关闭定时器单元,并判断是否需要继续发送数据或者判定结果通过。
在更具体地,所示适配器模块,系统适配器和平台适配器。
系统适配器主要完成与被测系统间的网络通信功能,用于发送和接收数据。平台适配器主要提供了计时器功能和一些无法由测试脚本代码实现的外部函数等。
进一步地,优选的是,还包括:
日志模块,包括:日志单元,用于获取执行执行测试例的测试结果;
输出单元,用于根据输出结果出生成测试日志,以PDF或者HTML方式提供给测试人员。
进一步地,优选的是,所述测试例中,具体包括:
测试例执行时测试所需要的变量,以及对测试系统和被测系统的端口进行映射的映射关系。
本发明填补了OpenFlow协议一致性测试系统的空白,具体来说,ONF成立并推出OpenFlow规范的目的就是为了能够在工业界标准化推广基于OpenFlow的SDN技术。各厂商的OpenFlow产品之间能否实现互连,满足协议一致性是首要条件。
本发明实现针对OpenFlow协议数据格式的编解码模块,由于在OpenFlow协议中,很重要的一部分是消息的结构,在openflow.h文件中详细描述了OpenFlow消息的结构。
消息的由基本的类型通过结构(struct)、枚举(enum)等类型构成更复杂的结构。在消息结构中有很多结构,如OpenFlow可扩展匹配格式(OpenFlowExtensible Match,OXM)的长度是不固定的,这给编解码模块的编写造成了较大困难。
通常的消息格式基于文本的或是基于二进制的,这样的编解码一般有比较通用的方式。
OpenFlow协议的一致性测试系统中编解码模块需要解决上述的问题,采用不同于文本或者二进制编解码的方式,实现可变类型长度的编解码。
由上述本发明提供的技术方案可以看出,本发明和现有的技术相比,使用了自动化测试脚本语言,将一致性测试系统模块化,大大简化了测试脚本的复杂度,灵活地实现不同OpenFlow设备的协议一致性测试,可以支持全部或者部分测试项的定制,可以进行针对性的测试。测试脚本可以更好的对测试数据和测试逻辑进行描述,加快了测试系统的开发时间,结合辅助模块可以实现对OpenFlow协议的一致性测试。
协议一致性测试是测试协议实现是否符合协议标准的测试,协议一致性测试可以验证协议实现与标准的一致性,是协议实现系统能够与其他系统通信的最基本条件。
本发明的OpenFlow协议的标准是ONF推出的OpenFlow交换机规范(OpenFlow Switch Specification)中的OpenFlow交换机协议(OpenFlow SwitchProtocol)。在OpenFlow交换机规范中规定OpenFlow控制器使用OpenFlow交换机协议来控制OpenFlow交换机。
OpenFlow协议交换机协议,即OpenFlow协议是用于控制器和交换机之间的通信。OpenFlow消息分为对称消息(Symmetric message),异步消息(Async message),控制器/交换机消息(Controller/switch message)等。
为了更好地达到一致性测试的目的,抽象测试套需要尽可能多地覆盖到协议规范的各个部分。通常的测试套生成方式可以由人工阅读协议标准制定一致性测试规范,或者通过测试序列生成技术生成测试序列。由于测试序列表现的是协议规范描述的功能和行为,因此它可以从协议模型中得到,协议模型则是对协议文本进行抽象化后的数学表示,用数学符号描述了协议中规定的各种功能行为,便于研究和处理。常见的协议抽象模型主要有Petri网、进程代数、有限状态机等。
TTCN-3协议,ISO 9646共包含七个部分,其中定义了树表结合表示法(Tree and Tabular Combined Notation,TTCN)。CTMF被设计为用于表达符合ISO层次模型通讯协议的一致性测试需求,是一种通用的一致性测试理论。TTCN测试技术在欧洲工业界、ETSI标准化和认证已经被成功地应用超过十年,TTCN-3(Testing and Test Control Notation-version 3)作为该测试技术的最新版本,是欧洲电信标准研究所(European Telecommunications StandardsInstitute,ETSI)推出的测试描述语言,适用于协议一致性测试,本发明设计的基于TTCN-3的OpenFlow抽象测试套,具有良好的扩展性和跨平台性。本发明开发出的OpenFlow一致性测试工具将可以用于对OpenFlow设备的一致性测试,为协议实现者提供支持,使协议实现符合协议的规范,对厂家设备进行认证等,对于基于OpenFlow的SDN技术的推广和发展将有推动作用。
相较于TTCN-2,TTCN-3不仅保留了其优势,而且增添了很多新的功能,包括以下重要特性:
1、能够对动态并发的测试例进行描述配置;
2、提供基于过程的操作和基于消息的通信两大通信方式;
3、能够对编码信息及其它属性(包括但不限于用户扩展性)进行描述;
4、能够对数据进行描述,提供强大匹配性的属性模板的功能;
5、类型和值的参数化;
6、赋值和测试判定的处理;
7、能够对测试套参数化处理,提供测试例选取机制;
8、允许其他语言的结合使用;
9、给定一套良好定义的语法,格式的互换方式以及静态语义含义;
10、提供多种不同的表示格式,如表格和图形;
11、提供精确的执行算法(即语言的操作语义)。
本发明中,使用TTCN-3描述的一系列测试例,其集合称为TTCN-3测试套(TTCN-3Test Suite)。一般来说,完整的TTCN-3测试套包括四个主要部分,它们是实际测试数据(Actual Test Data)、测试数据类型(Test Data Types)、测试配置(Test Configuration)和测试行为(Test Behavior)。
此外,在编写抽象测试套之前要有一致性测试规范,ONF发布的一致性测试规范中用文本分测试例描述了测试目的,测试拓扑,测试方法等内容,规范中包括了基本连接测试、基本OpenFlow协议消息、生成树、流修改消息、流匹配、计数器、行为、消息、异步消息、错误消息等10项测试,对于OpenFlow协议需要参考规范将测试套分为以上测试组,测试组内的每个具体的测试例将使用TTCN-3来描述。
在具体实现方面,抽象测试套需要定义的是协议一致性测试中所有需要用到的消息结构,包括消息名称,所包含的字段名称和长度,一些协议中还包括可能出现的可选项(option)。在消息结构定义好之后进行测试套的编写,将测试序列和测试数据合起来生成并描述抽象测试套。一个测试套中一般包含一个或多个测试例(Test Case)和测试控制(Test Control)。
具体来说,根据OpenFlow协议对OpenFlow的消息格式的定义,可以制定出对应的TTCN-3消息格式,如Hello消息可定义如下:
其中的每个域分别代表版本号、类型、长度、消息ID,uint8,uint16,uint32是根据基本的TTCN-3类型自己定义的数据类型,分别代表了8位、16位、32位无符号整型。
根据定义好的消息结构可以定义消息模板,如下:
分别给版本号、类型、长度、消息ID赋值,用于发送消息的数据源或者与接收消息进行匹配。
具体的测试逻辑是包含在测试例里面的,如下:
以上的示例表明,基于TTCN-3的一致性测试脚本结构清晰,开发时能够很好地把数据结构、数据内容、测试逻辑分开,能够方便地完成抽象测试套的开发。
在抽象测试套中将OpenFlow协议定义的消息格式用TTCN-3来表示,实际测试中需要将TTCN-3的数据类型和编码成OpenFlow消息的格式,同理需要把OpenFlow消息格式解码为TTCN-3表示的数据。
编解码模块需要深入分析OpenFlow协议中消息格式的定义,了解相关规则,正确编码和解码。在OpenFlow消息的结构定义中的数据是用基本类型有整型(uint8_t,uint16_t等),并用struct和enum等方式嵌套形成更复杂的结构,这些结构中TTCN-3中可以对应int,record,enumerated等类型。在OpenFlow协议中还定义了OpenFlow可扩展匹配格式(OpenFlow Extensible Match,OXM),是一种可变长度类型(Type-length-variable,TLV),在基于TTCN-3的系统下实现可变长度类型的编解码。
其中基本类型的编解码相对较简单,可以利用测试系统开发工具提供的基本编解码器来完成编解码功能。
对于TLV类型的编解码,需要在编解码模块里面加入对编解码类型的判定,根据不同的类型来选择不同的编解码逻辑。对应到C或者Java等通用编程语言,就是需要switch/case这样的语句来实现。
适配器模块,分为系统适配器(System Adapter)和平台适配器(PlatformAdapter)。系统适配器主要负责测试系统与被测系统的通信功能。OpenFlow作为应用层协议,传输层可以使用TCP协议,因此系统适配器的主要功能就是实现测试系统与被测系统的TCP传输,这一部分主要使用socket套接字来实现。
平台适配器实现定时器功能,另外可以通过外部函数的功能使用C/C++或者Java等通用编程语言来补充一些无法用TTCN-3实现的功能。
日志模块,捕捉测试例运行过程的测试事件并记录下来,供测试人员分析测试结果。测试系统开发工具已经预定义多达数十种测试事件,如测试例开始/结束、测试例出现错误、模板匹配开始、数据编码成功等。
日志模块的部分代码如下:
switch(event){//针对日志事件类型的switch语句
case t3rt_log_kind_event_testcase_started_c:{//测试例开始
//…针对测试例开始这一事件执行的操作
}
case t3rt_log_kind_event_testcase_ended_c:{//测试例结束
//…针对测试例结束这一事件执行的操作
}
//…一些其他的事件
}
通过执行针对某一事件的操作,可以记录下测试过程中的数据,并结合日志分析的工具,可以给测试执行人员提供清晰易懂的测试结果报告。
一致性测试系统,的配置包括了被测实现的选择,测试的拓扑结构,对测试系统和被测系统的配置等。
OpenFlow协议包括了OpenFlow控制器和OpenFlow交换机,所以被测实现可以是OpenFlow控制器或者OpenFlow交换机。如果被测实现是OpenFlow控制器,一致性测试系统则模拟OpenFlow交换机与之通信;如果被测实现是OpenFlow交换机,一致性测试系统则模拟OpenFlow控制器与之通信。
被测系统和测试系统通过TCP或TLS等建立连接,利用系统提供的相应接口就可以实现之间的连接。
实际测试执行中需要根据被测系统和测试系统的IP地址、端口等进行配置,使之能够正确的建立连接,进行一致性测试。
此外,与上面系统相对应,本发明还提供了一种对OpenFlow协议进行一致性测试的方法,包括:
步骤1:将要发送的OpenFlow协议的测试数据进行编码;
其中,所述测试数据为抽象测试套模块指定的用于和被测系统之间的通信的OpenFlow协议数据,或者,在测试工具开发过程中针对OpenFlow协议规范制定特定的测试数据;
步骤2:将上述经过编码后的测试数据发送给被测系统的端口,同时开启定时;
步骤3:接收来自被测系统返回的反馈消息,并将接收到的反馈消息解码,;其中,若接收的反馈消息数据为空或定时超时则判定结果失败;
若反馈消息的数据包正确则关闭定时,并判断是否需要继续发送数据或者判定结果通过。
优选实施例中,步骤1中,具体包括:
获取测试人员设定的OpenFlow协议测试数据定义和具体的测试逻辑;存储所有测试例,所述测试例用测试脚本语言描述。
优选实施例中,步骤1中,所述OpenFlow协议测试数据定义和具体的测试逻辑具体包括:
测试人员根据OpenFlow协议的消息格式,定义出的测试中使用到的OpenFlow消息结构,且所述消息结构为根据模块所定义,消息结构使用记录类型进行嵌套定义;所述测试例,包括测试所需要的变量对端口进行操作的声明或定义。
优选实施例中,还包括:
获取执行执行测试例的测试结果;根据输出结果出生成测试日志,以PDF或者HTML方式提供给测试人员。
优选实施例中,还包括:
所述测试例中,具体包括:
测试例执行时测试所需要的变量,以及对测试系统和被测系统的端口进行映射的映射关系;
测试执行时,根据测试例定义所需要的变量,对被测试系统的端口进行操作,发送数据包。
本发明采取了上述方案以后,对OpenFlow协议一致性测试的测试将大大缩短测试时间,并且能够实现对OpenFlow协议自动地进行一致性测试,分析测试结果并形成测试报告,且可以实现多个厂家不同协议实现之间的设备互联互通。
需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种对OpenFlow协议进行一致性测试的系统,包括:
抽象测试套模块,包括:测试执行单元,用于将要发送的OpenFlow协议的测试数据发送给编解码模块;
所述测试数据为抽象测试套模块指定的用于和被测系统之间的通信的OpenFlow协议数据;
编解码器模块,用于对测试数据进行编解码;
适配器模块,包括数据发送单元,用于接收经过编解码器模块编码后的测试数据,并发送给被测系统的端口;定时器单元,用于开启定时;
数据接收单元,用于接收来自被测系统返回的反馈消息,并将接收到的反馈消息交给编解码模块,所述编解码模块对反馈消息解码后,发送给测试执行单元;
所述测试执行单元,根据解码后的反馈消息判断测试是否通过;
其中,若接收的反馈消息数据为空或定时器单元超时则判定结果失败,若反馈消息的数据包正确则关闭定时器单元,并判断是否需要继续发送数据或者判定结果通过。
2.根据权利要求1所述的对OpenFlow协议进行一致性测试的系统,其特征在于,所述抽象测试套模块,具体包括:
测试脚本单元,用于获取测试人员设定的OpenFlow协议测试数据定义和具体的测试逻辑;测试套单元,用于存储所有测试例,所述测试例用测试脚本语言描述。
3.根据权利要求2所述的对OpenFlow协议进行一致性测试的系统,其特征在于,所述测试脚本单元中,所述OpenFlow协议测试数据定义和具体的测试逻辑具体包括:测试人员根据OpenFlow协议的消息格式,定义出的测试中使用到的OpenFlow消息结构,且所述消息结构为根据模块所定义,消息结构使用记录类型进行嵌套定义;
所述测试套单元中,所述测试例,包括测试所需要的变量对端口进行操作的声明或定义。
4.根据权利要求1或2所述的对OpenFlow协议进行一致性测试的系统,其特征在于,还包括:
日志模块,包括:日志单元,用于获取执行执行测试例的测试结果;
输出单元,用于根据输出结果出生成测试日志,以PDF或者HTML方式提供给测试人员。
5.根据权利要求2所述的对OpenFlow协议进行一致性测试的系统,其特征在于,所述测试例中,具体包括:
测试例执行时测试所需要的变量,以及对测试系统和被测系统的端口进行映射的映射关系。
6.一种对OpenFlow协议进行一致性测试的方法,包括:
步骤1:将要发送的OpenFlow协议的测试数据进行编码;
其中,所述测试数据为抽象测试套模块指定的用于和被测系统之间的通信的OpenFlow协议数据;
步骤2:将上述经过编码后的测试数据发送给被测系统的端口,同时开启定时;
步骤3:接收来自被测系统返回的反馈消息,并将接收到的反馈消息解码,根据解码后的反馈消息判断测试是否通过;其中,若接收的反馈消息数据为空或定时超时则判定结果失败;
若反馈消息的数据包正确则关闭定时,并判断是否需要继续发送数据或者判定结果通过。
7.根据权利要求6所述的对OpenFlow协议进行一致性测试的方法,其特征在于,步骤1中,具体包括:
获取测试人员设定的OpenFlow协议测试数据定义和具体的测试逻辑;存储所有测试例,所述测试例用测试脚本语言描述。
8.根据权利要求7所述的对OpenFlow协议进行一致性测试的方法,其特征在于,步骤1中,所述OpenFlow协议测试数据定义和具体的测试逻辑具体包括:
测试人员根据OpenFlow协议的消息格式,定义出的测试中使用到的OpenFlow消息结构,且所述消息结构为根据模块所定义,消息结构使用记录类型进行嵌套定义;所述测试例,包括测试所需要的变量对端口进行操作的声明或定义。
9.根据权利要求6或7所述的对OpenFlow协议进行一致性测试的方法,其特征在于,还包括:
获取执行执行测试例的测试结果;根据输出结果出生成测试日志,以PDF或者HTML方式提供给测试人员。
10.根据权利要求7所述的对OpenFlow协议进行一致性测试的方法,其特征在于,还包括:
所述测试例中,具体包括:
测试例执行时测试所需要的变量,以及对测试系统和被测系统的端口进行映射的映射关系;
测试执行时,根据测试例定义所需要的变量,对被测试系统的端口进行操作,发送数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510004799.6A CN104579837A (zh) | 2015-01-05 | 2015-01-05 | 一种OpenFlow协议一致性测试的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510004799.6A CN104579837A (zh) | 2015-01-05 | 2015-01-05 | 一种OpenFlow协议一致性测试的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104579837A true CN104579837A (zh) | 2015-04-29 |
Family
ID=53095101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510004799.6A Pending CN104579837A (zh) | 2015-01-05 | 2015-01-05 | 一种OpenFlow协议一致性测试的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104579837A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105515890A (zh) * | 2015-11-20 | 2016-04-20 | 中国石油天然气股份有限公司华北油田分公司 | OpenFlow协议一致性测试方法与设备 |
CN106572113A (zh) * | 2016-11-10 | 2017-04-19 | 全球能源互联网研究院 | 基于ttcn‑3语言的iec62351安全传输规约合规性规则生成系统及方法 |
CN115225503A (zh) * | 2022-05-16 | 2022-10-21 | 北京邮电大学 | OpenFlow流表项动态超时分配方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101232661A (zh) * | 2008-01-21 | 2008-07-30 | 中兴通讯股份有限公司 | 一种对基站进行协议一致性测试的系统和方法 |
CN101262482A (zh) * | 2008-03-19 | 2008-09-10 | 北京天地互连信息技术有限公司 | 一种TTCN语言实现的DHCPv6测试方法 |
US20100169581A1 (en) * | 2008-12-30 | 2010-07-01 | Gad Sheaffer | Extending cache coherency protocols to support locally buffered data |
CN101902757A (zh) * | 2009-12-02 | 2010-12-01 | 北京星河亮点通信软件有限责任公司 | 支持一致性测试的方法和系统 |
-
2015
- 2015-01-05 CN CN201510004799.6A patent/CN104579837A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101232661A (zh) * | 2008-01-21 | 2008-07-30 | 中兴通讯股份有限公司 | 一种对基站进行协议一致性测试的系统和方法 |
CN101262482A (zh) * | 2008-03-19 | 2008-09-10 | 北京天地互连信息技术有限公司 | 一种TTCN语言实现的DHCPv6测试方法 |
US20100169581A1 (en) * | 2008-12-30 | 2010-07-01 | Gad Sheaffer | Extending cache coherency protocols to support locally buffered data |
CN101902757A (zh) * | 2009-12-02 | 2010-12-01 | 北京星河亮点通信软件有限责任公司 | 支持一致性测试的方法和系统 |
Non-Patent Citations (1)
Title |
---|
杜泓庆,黄小红,何嘉杰: ""基于TTCN-3 的CoAP一致性测试"", 《通信学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105515890A (zh) * | 2015-11-20 | 2016-04-20 | 中国石油天然气股份有限公司华北油田分公司 | OpenFlow协议一致性测试方法与设备 |
CN106572113A (zh) * | 2016-11-10 | 2017-04-19 | 全球能源互联网研究院 | 基于ttcn‑3语言的iec62351安全传输规约合规性规则生成系统及方法 |
CN115225503A (zh) * | 2022-05-16 | 2022-10-21 | 北京邮电大学 | OpenFlow流表项动态超时分配方法及相关设备 |
CN115225503B (zh) * | 2022-05-16 | 2023-07-04 | 北京邮电大学 | OpenFlow流表项动态超时分配方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103198009B (zh) | 一种通用测试方法、系统及相应装置 | |
CN108885545B (zh) | 用于实时数据流编程语言的工具和方法 | |
Steffen et al. | Introduction to active automata learning from a practical perspective | |
KR100709664B1 (ko) | 자동 테스트 케이스 생성 방법 및 시스템 | |
Wenger et al. | Behavioral type-based monitoring for IEC 61499 | |
TWI626538B (zh) | 基礎架構規則產生技術 | |
CN104579837A (zh) | 一种OpenFlow协议一致性测试的方法和系统 | |
CN102750143A (zh) | 基于matlab com组件调用的dsp开发方法 | |
CN109947644A (zh) | 基于模型抽取的安全协议javascript语言实施的分析方法及装置 | |
CN116992805A (zh) | 基于生成式约束模型的芯片验证系统、方法及验证设备 | |
US20140359258A1 (en) | Declarative Configuration Elements | |
Kerraoui et al. | MATT: multi agents testing tool based nets within nets | |
CN116306479A (zh) | 基于uvm的以太网phy通用验证平台及验证方法 | |
Babac et al. | AgentTest: A specification language for agent-based system testing | |
CN113505061B (zh) | 自动测试软件平台 | |
CN110798371A (zh) | 一种私有通信协议的测试方法 | |
Mehlhop et al. | Model-aware simulation of IEC 61499 designs | |
Vlaovič et al. | Automated generation of Promela model from SDL specification | |
Szabó et al. | TITAN, TTCN-3 test execution environment | |
CN110377463A (zh) | 接口测试方法、装置、终端及计算机可读存储介质 | |
Baker et al. | Early UML model testing using TTCN-3 and the UML testing profile | |
CN116319245B (zh) | 面向5g协议的分布式测试系统 | |
Pona et al. | Formally-Verified ASN. 1 Protocol C-language Stack | |
Mariño et al. | The PROFIBUS formal specification: a comparison between two FDTs | |
CN117591104B (zh) | 模型的生成方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150429 |