CN110674027B - 面向p4编程语言的sdn数据平面软件一致性测试系统及方法 - Google Patents
面向p4编程语言的sdn数据平面软件一致性测试系统及方法 Download PDFInfo
- Publication number
- CN110674027B CN110674027B CN201910758596.4A CN201910758596A CN110674027B CN 110674027 B CN110674027 B CN 110674027B CN 201910758596 A CN201910758596 A CN 201910758596A CN 110674027 B CN110674027 B CN 110674027B
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- information
- programming language
- data plane
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 311
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000004891 communication Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 14
- 230000009471 action Effects 0.000 claims description 30
- 238000007781 pre-processing Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000000875 corresponding effect Effects 0.000 description 4
- 238000005538 encapsulation Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出了一种面向P4编程语言的SDN数据平面软件一致性测试系统,包括:配置模块,测试用例生成模块,通信模块和测试结果处理模块。本发明设计了面向P4编程语言的SDN数据平面软件一致性测试系统,特点在于设计了面向P4编程语言的SDN数据平面软件一致性测试过程一体化,设计了批量生成测试用例的方法,基于gRPC框架实现测试用例发送、测试服务调用、测试用例结果接收过程。本发明通过比对测试结果与预期输出结果,分析得出被测网络设备具体实现与P4程序描述一致程度,保证了面向P4编程语言的SDN数据平面软件在错综复杂的网络环境中与用户需求表现一致性,其目的在于保障控制器与P4网络设备之间的互操作性。
Description
技术领域
本发明涉及SDN(Software-Defined Networking)以及计算机网络技术领域,尤其实现一种面向P4编程语言的SDN数据平面软件一致性测试系统及方法。
背景技术
近年来软件定义网络(Software Defined Networking,简称SDN)的发展如火如荼,SDN发展的目的在于解决架构复杂且分散的传统网络出现的问题,使网络具有更强的灵活性。OpenFlow协议作为SDN的南向协议,一时间成为流行的标准用于网络控制平面和数据平面的交互,然而OpenFlow只是为我们提供了一种填充一组众所周知的表的方法,因此OpenFlow协议的可扩展性、可编程性较差。
针对此问题,斯坦福大学的Nick教授及其团队研究出P4高级编程语言。P4编程语言是一种具有协议独立性、可重新配置性以及可移植性的语言。传统网络功能呈“自下而上”构建,而面向P4编程语言的可编程网络则呈现“自上而下”的网络功能。P4和OpenFlow协议的主要区别在于OpenFlow协议功能固定,协议更新时间长,而P4程序以一种更灵活且可编程的方式告诉交换机如何识别、如何处理数据包。
P4程序有五个重要组成部分,分别是首部(Headers)、解析器(Parsers)、动作(Tables)、表(Actions)、控制程序(ControlProgram)。首部定义了成员字段的顺序和结构,指定了成员字段域宽和域值约束;解析器是把数据包中的头和元数据解析出来,解析器是以有限状态机的形式实现;表是匹配动作表(Match-Action Tables)的简称,匹配动作表是执行数据包处理的机制。P4程序定义了表的匹配字段(Key)、匹配方式以及匹配成功后执行的对应动作;控制程序用来规定应用于数据包的匹配动作表的执行顺序。
装载了P4程序的网络设备基本的工作机制为:接收数据包;解析器以有限状态机的形式解析数据包包头,从初始状态开始,每一种状态解析一种协议,从低层协议解析匹配首部定义的协议进而转移到高层协议字段,最终转移至目标状态;依据定义好的首部(Headers)类型确定偏移量,解析数据包数据,形成首部(Headers)实例;控制程序(ControlProgram)依次对流水线(Pipeline)中表的匹配字段和数据包头的目的地址进行匹配,当按照给定的匹配方式类型匹配成功时,就会执行对应的动作,如果匹配不成功则会执行默认动作(DefaultAction);逆解析器将Header实例转成数据包。
匹配动作表(Match-Action Tables)是面向P4编程语言的SDN实现的关键载体,也是体现P4编程语言特性的重要部分。用户可以直接把自己对处理数据包的需求编写成P4程序来部署网络设备,因而网络架构师、程序员可以通过控制网络设备,指定转发行为,填充定义表来实现SDN,而确定装载P4程序的网络设备是否真正实现用户需求则需要对目标网络设备进行一致性测试。
协议一致性测试本质上是在将测试用例发送给协议实现单元,通过比较实际输出和预期输出的一致程度,分析得出网络设备协议实现与标准描述一致程度,进而保证了协议在错综复杂的网络环境中的表现一致性。协议一致性测试已经不仅仅是SDN发展的重要支撑,还是协议落地的重要保障。面向P4编程语言的SDN数据平面软件一致性测试目的在于保障控制器与网络设备之间的互操作性。
发明内容
本发明提供了面向P4编程语言的SDN数据平面软件一致性测试系统,如图2所示,系统输入为用户自定义或服务提供商提供的P4程序:经过配置模块,搭建P4一致性测试系统环境;经过测试用例生成模块,系统自动生成了针对特定P4程序的测试用例及P4数据平面描述文件;经过通信模块,对目标网络设备注入P4程序数据平面描述并进行一致性测试;经过测试用例处理模块,分析得出被测网络设备具体实现与P4程序描述一致程度,进而保证了面向P4编程语言的SDN数据平面软件在错综复杂的网络环境中与用户需求表现一致性。
本发明提出了一种面向P4编程语言的SDN数据平面软件一致性测试系统,,包括:配置模块,测试用例生成模块,通信模块和测试结果处理模块;其中,
所述配置模块用于与目标网络设备建立连接,设置gRPC服务监听端口信息、用户权限信息;
所述测试用例生成模块包括:
P4程序编译单元,用于接收导入系统的P4程序,将用户输入到系统的P4程序编译成解析单元所需要的P4信息文件和通信模块所需要的P4数据平面描述文件;所述P4数据平面描述文件包括JSON格式的网络设备配置文件和运行时的API;
解析单元,用于获取目标网络设备控制命令集,依据每条控制命令格式从所述P4程序编译单元生成的P4信息文件中解析出表名、匹配字段、动作、动作参数信息;
测试用例生成单元,用于划分测试用例类型,将所述解析单元解析的命令字段信息依据每种测试用例类型构造测试用例,生成P4一致性测试用例集,与测试用例格式、预设条件、预期结果一并写入测试文档;
所述通信模块包括:
发送单元,用于先将编译单元生成的JSON格式的网络设备配置文件和P4运行时的API序列化编码成Protocol Buffer协议文件,gRPC基于HTTP/2.0协议将Protocol Buffer协议文件封装成IP/MAC数据包并发送至目标网络设备;再封装测试用例为IP/MAC数据包,gRPC基于Streaming模式服务调用向目标网络设备发送测试用例IP/MAC数据包请求报文;
接收单元,用于接收目标网络设备传回的基于Protocol Buffer协议的服务应答响应报文,gRPC反序列化解码服务调用返回的参数、测试结果信息,记录测试结果日志;
所述测试结果处理模块,用于提取所述接收单元测试结果信息,将测试结果与预期结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS。
本发明中,所述发送单元监测用户是否输入测试用例,若用户有编辑输入测试用例,选择用户输入测试用例进行预处理操作,否则,选择测试用例生成模块批量生成的测试用例进行预处理操作,封装测试用例为IP/MAC数据包,采用gRPC框架向目标网络设备发送测试用例IP/MAC数据包请求报文并基于Streaming模式进行服务调用。
本发明中,所述系统面向P4中间节点编程语言,自动化生成P4一致性测试用例,采用gRPC框架进行通讯,基于Streaming模式进行服务调用。
基于以上系统,本发明还提出了一种面向P4编程语言的SDN数据平面软件一致性测试方法,所述方法包括以下步骤:
S1.与目标网络设备建立连接,设置gRPC服务监听端口信息、用户权限信息;
S2.测试用例生成:
步骤S201.用户将开发人员或厂家提供的P4程序导入P4一致性测试系统;
步骤S202.编译器编译生成P4信息文件、JSON格式网络设备配置文件和运行时API;
步骤S203.解析单元获取目标网络设备控制命令集,依次将控制命令格式插入命令格式列表;
步骤S204.依据每条控制命令格式,解析单元从P4信息文件中解析所需TABLE_NAME、ACTION_NAME、MATCH_KEY、PARAMETERS字段信息;
步骤S205.测试用例生成单元依据控制命令集划分测试用例类型,依次将命令合法、表名不合法、动作不合法、参数不合法测试用例类型插入测试用例类型列表;
步骤S206.测试用例生成单元以测试用例类型列表中每一条测试用例类型为类别,将解析单元解析的命令字段信息依据每种测试用例类型构造测试用例,生成P4一致性测试用例集;
步骤S207.依次将测试用例格式、预设条件、测试用例、预期结果一并写入测试文档;
S3.通信步骤:
步骤S301.将编译单元生成的P4数据平面描述文件转码成Protocol Buffer注入目标网络设备;
步骤S302.监测测试用例输入,若用户有编辑输入测试用例,选择用户输入测试用例进行预处理操作,否则,从测试用例生成模块生成的测试用例集中选择测试用例进行预处理操作,封装测试用例为IP/MAC数据包,gRPC基于Streaming模式服务调用向目标网络设备发送测试用例IP/MAC数据包请求报文;
步骤S303.gRPC端口监听IP/MAC数据包,若接收到目标网络设备传回的基于Protocol Buffer协议的服务应答响应报文,gRPC反序列化解码测试结果信息;否则,继续监听;
S4.提取接收单元测试结果信息,将测试结果与预期结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS。具体包括:
步骤S401.从接收单元提取实际输出AO结果至测试结果队列;
步骤S402.查阅测试用例生成模块生成的一致性测试文档,将实际输出AO结果与期望输出EO结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS;
步骤S403.若当前测试结果队列不为空,转至S401;否则,测试结束,将测试文档输出给用户。
本发明提供的技术方案具有以下特点:
本发明所面向的P4编程语言具有协议独立性、可重新配置性以及可移植性。用户可以直接把自己对处理数据包的需求编写成P4程序来部署网络设备,因而网络架构师、程序员可以通过控制网络设备,指定转发行为,填充定义表来实现SDN,而确定装载P4程序的网络设备是否真正实现用户需求则需要对目标网络设备进行一致性测试,因此面向P4编程语言的SDN数据平面软件一致性测试具有重要意义。
本发明设计了面向P4编程语言的SDN数据平面软件一致性测试系统,特点在于设计了面向P4编程语言的SDN数据平面软件一致性测试过程一体化,设计了批量生成测试用例的方法,基于gRPC框架实现测试用例发送、测试服务调用、测试用例结果接收过程。
本发明通过比对测试结果与预期输出结果,分析得出被测网络设备具体实现与P4程序描述一致程度,保证了面向P4编程语言的SDN数据平面软件在错综复杂的网络环境中与用户需求表现一致性,其目的在于保障控制器与P4网络设备之间的互操作性。
本发明主要应用在SDN环境中,涉及的技术主要有:SDN,一致性测试、P4(Programming Protocol-Independent Packet Processors)中间节点编程语言,gRPC框架。
附图说明
图1面向P4编程语言的SDN数据平面软件一致性测试系统模块图。
图2面向P4编程语言的SDN数据平面软件一致性测试系统流程图。
图3面向P4编程语言的SDN数据平面软件一致性测试系统工作时序图。
图4面向P4编程语言的SDN数据平面软件一致性测试系统工作环境图。
图5面向P4编程语言的SDN数据平面软件一致性测试系统数据流图。
图6面向P4编程语言的SDN数据平面软件一致性测试用例生成算法映射图。
具体实施方式
本发明实施例提供了面向P4编程语言的SDN数据平面软件一致性测试系统,为了使从事本技术领域的人员对本发明的理解更加清晰明了,以下将结合具体实施和附图来详细说明本发明的详细说明。所描述的P4程序、网络设备及测试用例仅仅是本发明中选取的实验实例,而不是指本发明的全部应用。在本发明的基础上,没有创造性劳动所获得其他一切成果,均属于本发明保护的范围。
本发明提供的面向P4编程语言的SDN数据平面软件一致性测试系统,如图2所示,包括:
S1.配置模块,用于与目标网络设备建立连接,设置gRPC服务监听端口信息、用户权限信息;
S2.测试用例生成模块,包括:
P4程序编译单元,用于接收导入系统的P4程序,将用户输入到系统的P4程序编译成解析单元所需要的P4信息文件(.p4info文件)和通信模块所需要的P4数据平面描述文件;所述P4数据平面描述文件包括JSON格式的网络设备配置文件和运行时的API;P4信息文件(.p4info文件)用于描述P4程序对应的表、动作等信息;JSON格式文件描述了输入系统的P4程序中首部(Headers)、解析器(Parsers)、动作(Tables)、表(Actions)、控制程序(ControlProgram)等信息,用于将这些信息注入目标网络设备。
解析单元,用于获取目标网络设备控制命令集,依据每条控制命令格式从所述P4程序编译单元生成的P4信息文件(.p4info文件)中解析出表名、匹配字段、动作、动作参数等信息。
测试用例生成单元,用于划分测试用例类型,将解析单元解析的命令字段信息依据每种测试用例类型构造测试用例,生成P4一致性测试用例集,与测试用例格式、预设条件、预期结果一并写入测试文档;所述测试用例格式即命令格式,预期结果即返回结果,测试用例格式、预设条件、预期结果是依赖于具体网络设备的。系统开发人员提供针对每一种网络设备的命令格式、预设条件、返回结果在开发者文档中。
其步骤如下:
步骤S201.用户将开发人员或厂家提供的P4程序导入P4一致性测试系统;
步骤S202.编译器编译生成P4信息文件(.p4info文件)、JSON格式网络设备配置文件和运行时API;
步骤S203.解析单元获取目标网络设备控制命令集,依次将控制命令格式插入命令格式列表;
步骤S204.依据每条控制命令格式,解析单元从P4信息文件(.p4info文件)中解析所需TABLE_NAME、ACTION_NAME、MATCH_KEY、PARAMETERS字段信息;
步骤S205.测试用例生成单元依据控制命令集划分测试用例类型,依次将命令合法、表名不合法、动作不合法、参数不合法等测试用例类型插入测试用例类型列表;
步骤S206.测试用例生成单元以测试用例类型列表中每一条测试用例类型为类别,将解析单元解析的命令字段信息依据每种测试用例类型构造测试用例,生成P4一致性测试用例集;
步骤S207.依次将测试用例格式、预设条件、测试用例、预期结果一并写入测试文档;
S3.通信模块,包括:
发送单元,用于将编译单元生成的JSON格式的网络设备配置文件和P4运行时的API序列化编码成Protocol Buffer协议文件,gRPC基于HTTP/2.0协议将Protocol Buffer协议文件封装成IP/MAC数据包并发送至目标网络设备;封装测试用例为IP/MAC数据包,gRPC基于Streaming模式服务调用向目标网络设备发送测试用例IP/MAC数据包请求报文;
接收单元,用于接收目标网络设备传回的基于Protocol Buffer协议的服务应答响应报文,gRPC反序列化解码服务调用返回的参数、测试结果信息,记录测试结果日志;
其步骤如下:
步骤S301.将编译单元生成的P4数据平面描述文件转码成Protocol Buffer注入目标网络设备;
步骤S302.监测测试用例输入,若用户有编辑输入测试用例,选择用户输入测试用例进行预处理操作,否则,从测试用例生成模块生成的测试用例集中选择测试用例进行预处理操作,封装测试用例为IP/MAC数据包,gRPC基于Streaming模式服务调用向目标网络设备发送测试用例IP/MAC数据包请求报文;
步骤S303.gRPC端口监听IP/MAC数据包,若接收到目标网络设备传回的基于Protocol Buffer协议的服务应答响应报文,gRPC反序列化解码测试结果信息;否则,继续监听;
S4.测试结果处理模块,包括:用于提取接收单元测试结果信息,将实际输出AO结果与期望输出EO结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS;
其步骤如下:
步骤S401.从接收单元提取实际输出AO结果至测试结果队列;
步骤S402.查阅测试用例生成模块生成的一致性测试文档,将实际输出AO结果与期望输出EO结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS;
步骤S403.若当前测试结果队列不为空,转至S401;否则,测试结束,将测试文档输出给用户。
实施例
如图1所示为面向P4编程语言的SDN数据平面软件一致性测试系统的模块图,整个系统主要分为四个模块:配置模块、测试用例生成模块、通信模块、测试结果处理模块。如图2所示为面向P4编程语言的SDN数据平面软件一致性测试系统的数据流程图,可分为六个主要步骤:①配置一致性测试系统环境,与目标网络设备建立连接,设置日志信息、gRPC服务监听端口信息、用户权限信息;②生成P4数据平面描述文件和测试用例集③基于ProtocolBuffer序列化编码发送P4数据平面描述文件至目标网络设备;④基于Protocol Buffer序列化编码发送测试用例至目标网络设备;⑤接收目标网络设备测试结果message;⑥比对测试结果与期望结果一致性。从图4中可以看到面向P4编程语言的SDN数据平面软件一致性测试系统工作的网络环境图。整个网络由一致性测试系统设备、网络设备(如交换机、路由器)组成,一致性测试系统设备通过定义网络设备来决定用于主机之间通信的数据包的处理方式,一致性测试系统和网络设备之间通过gRPC机制进行通信。
为进一步描述本发明的执行过程,结合图3扩展讲述一下。
本发明提供了面向P4编程语言的SDN数据平面软件一致性测试系统,如图3时序图所示,系统的配置模块与目标网络设备建立连接,设置日志信息、gRPC服务监听端口信息、用户权限信息;用户将P4程序导入系统,测试用例生成模块编译单元编译P4程序生成P4信息文件(.p4info文件)和JSON格式数据平面描述文件,解析单元解析P4信息文件(.p4info文件)中字段信息,测试用例生成单元生成测试用例;通信模块先后发送P4数据平面描述文件和用户编辑或选取测试用例集中的测试用例发送给目标网络设备,接收测试结果应答,解析测试结果信息;测试结果处理模块比对期望输出与实际输出结果信息,判定结果PASS或FAILED结果给用户。
匹配动作表(Match-Action Tables)是面向P4编程语言的SDN实现的关键载体,也是体现P4编程语言特性的重要部分。用户可以通过控制网络设备,指定转发行为,填充定义表来实现SDN。现选取advanced_tunnel.p4文件为实例进行一致性测试说明:
advanced_tunnel.p4代码片段说明了ipv4_lpm表及表中动作ipv4_forward、drop。动作ipv4_forward定义了数据包转发操作,动作drop定义了丢弃动作。
本发明提供的面向P4编程语言的SDN数据平面软件一致性测试系统,如图2所示,具体包括:
S1.配置模块,用于与目标网络设备建立连接,设置日志信息、gRPC服务监听端口信息、用户权限信息。
S2.测试用例生成模块,包括:
P4程序编译单元,用于接收导入系统的P4程序,将用户输入到系统的P4程序编译成解析单元所需要的P4信息文件(.p4info文件)和通信模块所需要的P4数据平面描述文件;所述P4数据平面描述文件包括JSON格式的网络设备配置文件和运行时的API;P4信息文件(.p4info文件)用于描述P4程序对应的表、动作等信息;JSON格式文件描述了输入系统的P4程序中首部(Headers)、解析器(Parsers)、动作(Tables)、表(Actions)、控制程序(ControlProgram)等信息,用于将这些信息注入目标网络设备;
解析单元,用于获取目标网络设备控制命令集,依据每条控制命令格式从所述P4程序编译单元生成的P4信息文件(.p4info文件)中解析出表名、匹配字段、动作、动作参数等信息;
测试用例生成单元,用于划分测试用例类型,将解析单元解析的命令字段信息依据每种测试用例类型构造测试用例,生成P4一致性测试用例集,与测试用例格式、预设条件、预期结果一并写入测试文档;
其步骤如下:
步骤S201.用户将开发人员或厂家提供的P4程序导入一致性测试系统;
步骤S202.P4程序编译单元选择p4c项目编译生成的适用于目标网络设备的编译器编译P4程序;
步骤S203.编译器编译生成用于测试用例生成模块所需的P4信息文件(.p4info文件)和通信模块所需的的JSON格式网络设备配置文件和运行时API。
步骤S204.解析单元获取目标网络设备控制命令集,依次将命令格式插入命令格式列表;
步骤S205.测试用例生成单元依据控制命令集划分测试用例类型,依次将命令合法、表名不合法、动作不合法、参数不合法等测试用例类型插入测试用例类型列表;
步骤S206.顺序遍历测试用例类型列表,若表项不空,定位当前测试用例类型,转至步骤S207;若表项为空,程序结束;
步骤S207.顺序遍历命令格式列表,若表项不空,转至步骤S208;若表项为空,返回步骤S206;
步骤S208.解析单元依据每条控制命令格式,从P4信息文件(.p4info文件)中解析所需TABLE_NAME、ACTION_NAME、MATCH_KEY、PARAMETERS字段信息,测试用例生成单元依据每种测试用例类型构造测试用例,插入测试用例集,返回步骤S207;
步骤S209.依次将测试用例格式、预设条件、测试用例、预期结果一并写入测试文档;
实例程序advanced_tunnel.p4经过编译生成P4信息文件(.p4info文件)和P4数据平面描述文件代码片段分别如下表所示:
以下测试用例选自advanced_tunnel.p4程序生成的类别为动作名不存在的测试用例集:
其中命令格式CF(CommandFormat)为“table_add ipv4_lpmmyTunnel_ingress0xffffffff/32=>0x00x0”,前提条件PC(Precondition)为“The entity to be addedshould not be duplicate”,测试用例TC(TestCase)为“table_add ipv4_lpm myTunnel_ingress 0xffffffff/32=>0x0 0x0”,期望输出结果EO(ExpectedOutput)为“Entry hasbeen added with handle N”。TC中table_add和ipv4_lpm代表向ipv4_lmp表插入表项,0xffffffff/32代表匹配字段是32位的0xffffffff,匹配成功则向表中插入参数为0x0和0x0的动作myTunnel_ingress。
S3.通信模块,包括:
发送单元,用于将编译单元生成的JSON格式的网络设备配置文件和P4运行时的API序列化编码成Protocol Buffer协议文件,gRPC基于HTTP/2.0协议将Protocol Buffer协议文件封装成IP/MAC数据包并发送至目标网络设备;封装测试用例为IP/MAC数据包,gRPC基于Streaming模式服务调用向目标网络设备发送测试用例IP/MAC数据包请求报文;
其步骤如下:
步骤S301.将编译单元生成的JSON格式的网络设备配置文件和P4运行时的API序列化编码成ProtocolBuffer协议文件;
步骤S302.基于HTTP/2协议将Protocol Buffer协议文件成封装成IP/MAC数据包;
步骤S303.基于Streaming模式服务调用与目标网络设备建立连接,发送IP/MAC数据包请求报文;
步骤S304.监测测试用例输入,若用户有编辑输入测试用例,选择用户输入测试用例进行预处理操作,否则,从测试用例生成模块生成的测试用例集中选择测试用例进行预处理操作,将测试用例序列化编码为Protocol Buffer协议文件,转至步骤S302;
接收单元,用于接收目标网络设备传回的基于Protocol Buffer协议的服务应答响应报文,gRPC反序列化解码服务调用返回的参数、测试结果信息,记录测试结果日志;
具体来说,gRPC端口监听IP/MAC数据包,若接收到目标网络设备传回的基于Protocol Buffer协议的服务应答响应报文,gRPC反序列化解码测试结果信息,记录测试结果信息;否则,继续监听;
gRPC框架采用HTTP2.0进行通信,其通信服务可采用C++、Java、Go、Ruby等多种编程语言实现。目标网络设备执行测试用例,返回测试结果应答Message;
反序列化测试结果Message,提取测试结果信息。
S4.测试结果处理模块,包括:用于提取接收单元测试结果信息,将实际输出AO结果与期望输出EO结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS;
其步骤如下:
步骤S401.从接收单元提取实际输出AO结果至测试结果队列;
步骤S402.获取测试用例生成模块生成的测试文档中期望输出EO结果,将实际输出AO结果与期望输出EO结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS;
步骤S403.将测试结果写入测试文档;
步骤S404.若当前测试结果队列不为空,转至S401;否则,测试结束,将测试文档输出给用户;
由于P4文件中没有定义动作myTunnel_ingress,动作不存在,故无法插入动作。测试结果处理模块对比期望输出EO(Expected Output)和实际输出AO(Actual Output),结果不一致,判定测试结果为FAILED。
最后应说明的是:以上所述仅为用以说明本发明的实施例,并不用于限制本发明。虽然根据前述实施例对本发明进行了详细的说明,本领域的技术人员依然能修改前述实施例的技术方案,或对其中部分技术特征进行等同替换。在本发明的精神和范围下,任何修改、替换和改进等,均在本发明保护范围之内。
Claims (5)
1.一种面向P4编程语言的SDN数据平面软件一致性测试系统,其特征在于,包括:配置模块,测试用例生成模块,通信模块和测试结果处理模块;其中,
所述配置模块用于与目标网络设备建立连接,设置gRPC服务监听端口信息、用户权限信息;
所述测试用例生成模块包括:
P4程序编译单元,用于接收导入系统的P4程序,将用户输入到系统的P4程序编译成解析单元所需要的P4信息文件和通信模块所需要的P4数据平面描述文件;所述P4数据平面描述文件包括JSON格式的网络设备配置文件和运行时的API;
解析单元,用于获取目标网络设备控制命令集,依据每条控制命令格式从所述P4程序编译单元生成的P4信息文件中解析出表名、匹配字段、动作、动作参数信息;
测试用例生成单元,用于划分测试用例类型,将所述解析单元解析的命令字段信息依据每种测试用例类型构造测试用例,生成P4一致性测试用例集,与测试用例格式、预设条件、预期结果一并写入测试文档;
所述通信模块包括:
发送单元,用于先将编译单元生成的JSON格式的网络设备配置文件和P4运行时的API序列化编码成Protocol Buffer协议文件,gRPC基于HTTP/2.0协议将Protocol Buffer协议文件封装成IP/MAC数据包并发送至目标网络设备;再封装测试用例为IP/MAC数据包,gRPC基于Streaming模式服务调用向目标网络设备发送测试用例IP/MAC数据包请求报文;
接收单元,用于接收目标网络设备传回的基于Protocol Buffer协议的服务应答响应报文,gRPC反序列化解码服务调用返回的参数、测试结果信息,记录测试结果日志;
所述测试结果处理模块,用于提取所述接收单元测试结果信息,将测试结果与预期结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS。
2.根据权利要求1所述的面向P4编程语言的SDN数据平面软件一致性测试系统,其特征在于,所述发送单元监测用户是否输入测试用例,若用户有编辑输入测试用例,选择用户输入测试用例进行预处理操作,否则,选择测试用例生成模块批量生成的测试用例进行预处理操作,封装测试用例为IP/MAC数据包,采用gRPC框架向目标网络设备发送测试用例IP/MAC数据包请求报文并基于Streaming模式进行服务调用。
3.根据权利要求1所述的面向P4编程语言的SDN数据平面软件一致性测试系统,其特征在于,所述系统面向P4中间节点编程语言,自动化生成P4一致性测试用例,采用gRPC框架进行通讯,基于Streaming模式进行服务调用。
4.一种面向P4编程语言的SDN数据平面软件一致性测试方法,其特征在于,采用如权利要求1-3之任一项所述的面向P4编程语言的SDN数据平面软件一致性测试系统,所述方法包括以下步骤:
S1.与目标网络设备建立连接,设置gRPC服务监听端口信息、用户权限信息;
S2.测试用例生成:
步骤 S201.用户将开发人员或厂家提供的P4程序导入P4一致性测试系统;
步骤 S202.编译器编译生成P4信息文件、JSON格式网络设备配置文件和运行时API;
步骤 S203.解析单元获取目标网络设备控制命令集,依次将控制命令格式插入命令格式列表;
步骤 S204.依据每条控制命令格式,解析单元从P4信息文件中解析所需TABLE_NAME、ACTION_NAME、MATCH_KEY、PARAMETERS字段信息;
步骤 S205.测试用例生成单元依据控制命令集划分测试用例类型,依次将命令合法、表名不合法、动作不合法、参数不合法测试用例类型插入测试用例类型列表;
步骤 S206.测试用例生成单元以测试用例类型列表中每一条测试用例类型为类别,将解析单元解析的命令字段信息依据每种测试用例类型构造测试用例,生成P4一致性测试用例集;
步骤 S207.依次将测试用例格式、预设条件、测试用例、预期结果一并写入测试文档;
S3.通信步骤:
步骤S301.将编译单元生成的P4数据平面描述文件转码成Protocol Buffer注入目标网络设备;
步骤S302.监测测试用例输入,若用户有编辑输入测试用例,选择用户输入测试用例进行预处理操作,否则,从测试用例生成模块生成的测试用例集中选择测试用例进行预处理操作,封装测试用例为IP/MAC数据包,gRPC基于Streaming模式服务调用向目标网络设备发送测试用例IP/MAC数据包请求报文;
步骤S303.gRPC端口监听IP/MAC数据包,若接收到目标网络设备传回的基于ProtocolBuffer协议的服务应答响应报文,gRPC反序列化解码测试结果信息;否则,继续监听;
S4.提取接收单元测试结果信息,将测试结果与预期结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS。
5.如权利要求4所述的面向P4编程语言的SDN数据平面软件一致性测试方法,其特征在于,所述步骤S4具体包括:
步骤S401.从接收单元提取实际输出AO结果至测试结果队列;
步骤S402.查阅测试用例生成模块生成的一致性测试文档,将实际输出AO结果与期望输出EO结果对比,若反馈信息为空或反馈信息不一致,则判断测试结果为FAILED,若反馈数据包正确,则判断测试结果为PASS;
步骤S403.若当前测试结果队列不为空,转至S401;否则,测试结束,将测试文档输出给用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910758596.4A CN110674027B (zh) | 2019-08-16 | 2019-08-16 | 面向p4编程语言的sdn数据平面软件一致性测试系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910758596.4A CN110674027B (zh) | 2019-08-16 | 2019-08-16 | 面向p4编程语言的sdn数据平面软件一致性测试系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110674027A CN110674027A (zh) | 2020-01-10 |
CN110674027B true CN110674027B (zh) | 2021-07-27 |
Family
ID=69075348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910758596.4A Active CN110674027B (zh) | 2019-08-16 | 2019-08-16 | 面向p4编程语言的sdn数据平面软件一致性测试系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110674027B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111211931B (zh) * | 2020-02-20 | 2022-06-10 | 深圳市风云实业有限公司 | 一种基于可重构技术的报文转发系统 |
CN113704079B (zh) * | 2020-05-22 | 2024-06-18 | 北京沃东天骏信息技术有限公司 | 基于Protobuf的接口测试方法和装置 |
CN112187561B (zh) * | 2020-08-19 | 2022-05-27 | 深圳市广和通无线股份有限公司 | 通信模块测试方法、装置、计算机设备和存储介质 |
CN114201500A (zh) * | 2020-09-02 | 2022-03-18 | 中兴通讯股份有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN113132156B (zh) * | 2021-03-31 | 2022-08-12 | 中国人民解放军战略支援部队信息工程大学 | 存储-计算-传输一体化的网络功能基础平台结构及方法 |
CN113835941A (zh) * | 2021-09-06 | 2021-12-24 | 锐捷网络股份有限公司 | 基于可编程芯片的用例测试方法及装置 |
CN116302971A (zh) * | 2023-02-07 | 2023-06-23 | 北京大学 | 一种针对可编程数据平面可扩展的测试生成方法 |
AT527044B1 (de) * | 2023-08-18 | 2024-10-15 | Avl List Gmbh | Verfahren und Vorrichtung zur Konformitätsprüfung eines Kommunikationsgerätes |
CN117155991B (zh) * | 2023-10-27 | 2023-12-29 | 中科星图测控技术股份有限公司 | 基于配置的gRPC-gateway代理网关生成方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101232661A (zh) * | 2008-01-21 | 2008-07-30 | 中兴通讯股份有限公司 | 一种对基站进行协议一致性测试的系统和方法 |
CN101620566A (zh) * | 2009-07-23 | 2010-01-06 | 北京航空航天大学 | 一种动态随机测试方法 |
CN104468277A (zh) * | 2014-12-18 | 2015-03-25 | 国家电网公司 | 变电站网络与通讯协议的一致性测试的方法及装置 |
CN109032920A (zh) * | 2018-06-05 | 2018-12-18 | 北京奇安信科技有限公司 | 一种用于对协议接口进行测试的方法及装置 |
CN109656791A (zh) * | 2018-11-01 | 2019-04-19 | 北京奇安信科技有限公司 | 一种基于Jmeter的gRPC性能测试方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9927995D0 (en) * | 1999-11-27 | 2000-01-26 | Koninkl Philips Electronics Nv | Method for conformance testing of radio communication equipment |
-
2019
- 2019-08-16 CN CN201910758596.4A patent/CN110674027B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101232661A (zh) * | 2008-01-21 | 2008-07-30 | 中兴通讯股份有限公司 | 一种对基站进行协议一致性测试的系统和方法 |
CN101620566A (zh) * | 2009-07-23 | 2010-01-06 | 北京航空航天大学 | 一种动态随机测试方法 |
CN104468277A (zh) * | 2014-12-18 | 2015-03-25 | 国家电网公司 | 变电站网络与通讯协议的一致性测试的方法及装置 |
CN109032920A (zh) * | 2018-06-05 | 2018-12-18 | 北京奇安信科技有限公司 | 一种用于对协议接口进行测试的方法及装置 |
CN109656791A (zh) * | 2018-11-01 | 2019-04-19 | 北京奇安信科技有限公司 | 一种基于Jmeter的gRPC性能测试方法及装置 |
Non-Patent Citations (3)
Title |
---|
Andres Nötzli.p4pktgen:Automated test case generation for P4 programs.《SOSR’18: Proceedings of the Symposium on SDN Research》.2018, * |
Tutorial: P4 and P4Runtime Technical Introduction and Use Cases for Service Providers;Carmelo Cascone Open Networking Foundation;《https://events19.linuxfoundation.org/wp-content/uploads/2017/12/Tutorial-P4-and-P4Runtime-Technical-Introduction-and-Use-Cases-for-Service-Providers-Carmelo-Cascone-Open-Networking-Foundation.pdf》;20180927;第1-52页 * |
基于SDN技术的系统集成测试研究;费越;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150815(第8期);第I139-119页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110674027A (zh) | 2020-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110674027B (zh) | 面向p4编程语言的sdn数据平面软件一致性测试系统及方法 | |
CN114115834B (zh) | 一种软硬件协同编译处理方法及系统 | |
US6697967B1 (en) | Software for executing automated tests by server based XML | |
CN109614147B (zh) | 一种phy寄存器读写方法和装置 | |
US7818732B2 (en) | Transfer syntax notational system and method | |
CN100389572C (zh) | 一种远程调用通信组件的系统及方法 | |
CN114024871B (zh) | 一种芯片验证方法、系统、计算机设备及可读存储介质 | |
CN111555915A (zh) | 一种基于插件配置的动态网元控制系统 | |
CN111159019B (zh) | 一种应用程序的测试方法、测试控制终端以及测试终端 | |
CN113572726B (zh) | 一种多模态网络控制-数据平面一致性校验方法及装置 | |
da Silva et al. | Extern objects in p4: an rohc header compression scheme case study | |
KR20140106857A (ko) | 프로토콜 적합성 검증 방법, 이를 실행하는 장치 및 이를 실행하는 시스템 | |
Wang et al. | {ProFactory}: Improving {IoT} Security via Formalized Protocol Customization | |
CN106550026B (zh) | 一种网络通信装置及方法 | |
CN116319245B (zh) | 面向5g协议的分布式测试系统 | |
CN116582364B (zh) | 数据访问方法、系统、装置、电子设备及可读存储介质 | |
WO2021189898A1 (zh) | 数据的协议转化方法、系统、电子设备及存储介质 | |
CN113852516B (zh) | 交换机诊断程序生成方法、系统、终端及存储介质 | |
WO2023071717A1 (zh) | 一种运维操作方法、系统及网络设备 | |
Löscher et al. | Property-based testing of sensor networks | |
CN104579837A (zh) | 一种OpenFlow协议一致性测试的方法和系统 | |
CN106354966B (zh) | 芯片ide工程文件转换及快速配置仿真调试环境的方法 | |
CN100382516C (zh) | 对IPv6主协议进行一致性测试的方法和装置 | |
CN118714059B (zh) | 测试网关设备的方法、装置和存储介质 | |
WO2024164602A1 (zh) | 一种应用适配处理方法、装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |