• 文章名称:OFART: OpenFlow-Switch Adaptive Random Testing
  • 发表时间:2017
  • 期刊来源:---

摘要

  • 问题:
    如果转发设备的正确性没有验证,这将影响这个网络。然而,手工进行每个测试将耗费大量时间,这意味着需要一个自动化工具。
  • 解决:
    本文提出ART(Adaptive Random Testing)技术,它从控制器角度把OpenFlow交换机看做黑盒,进行自动化测试。

1 介绍

软件让我们更好的控制管理网络,但是副作用是导致更多的缺陷,根据缺陷的严重车鞥度,会造成丢包到整个网络瘫痪的后果。故测试网络功能的正确性是非常重要的一项任务。
本文提出在控制器的视角对OpenFlow Switch看做黑盒进行功能性的测试方法。控制器为功能性的测试产生测试数据包,并且将数据包放到交换机,获取从交换机出来的结果,与理想结果进行对比。产生数据包的技术成为ART技术。我们使用一个框架集成自动测试执行、测试生成、测试选择以及测试结果对比功能,以减小时间耗费等。

2 背景

2.1 Black-Box Testing

黑盒测试不需要知道内部的构造知识,本文从控制器角度,将交换机看做黑盒。

2.2 Adaptive Random Testing

RT可以用于测试生成,因为它有最简单、流行的优势。缺点是,由于随机测试和选择,在错误检测和测试生成两者之间有平衡性能的问题。故提出ART,可以更高效地产生测试数据并且基于输入域的失败模式,同时有大量的方法。本文用FSCS-ART,在固定大小的测试候选集和执行测试之间以距离选择下一个测试。

2.3 Testing SDN-OpenFlow Switch

OFTEN被视为黑盒子,因此它通过状态空间探索技术进行集成网络测试并检测未发现的不一致性[13]。通过简单处理,我们提出对集成网络测试的方法。ModelCheck技术存在预先配置的开销,SOFT检查不同OpenFlow代理的功能等效性,以测试互操作性。各个不同的OpenFlow代理的功能等同性是检查它们是否通过符号执行返回相同的结果。

ATPG基于拓扑组织的信息产生测试数据包并且建议产生最小数据包的方法。FlowTest使用AI Planning Tool[15],InSP使用数据包模板表和流表产生数据包。J.Yao 提出一种黑盒测试方法及工具[4],基于OpenFlow switch配置,形式化模拟交换机为配置语言,基于此模型后建立Data Graph和Data Paths,再通过这两者创建测试样例,缺陷是交换机的状态经常改变,不能够立马用于交换机模型。

3 OFART: OpenFlow Switch Adaptive Random Testing

  • OFART包含三个部分:

    • Test Packet Generation
    • Test Selection
    • Test Execution

3.1 Overall

图1为OFART架构的整体描述。

首先test generators 创建数量为N的测试数据(Test Data),存于Test DB。Test Selector随机选择N个数据中的一个数据。然后依据选择的数据,建立Test Pattern(JSON格式写的测试脚本),发送给Tester,Test依据Test Pattern创建数据包,发给对应交换机,得到交换机处理的输出包,Test Executor将输出包与期望的数据包对比判定pass或者Fail。判定的结果将发送到Test Selector,Test Selector从Test DB选择10个候选test data,组成候选集(Candidate Set),并且与最近执行的数据具有距离值。如果结果为Pass,Test Selector选择最远距离的Test Data,如果结果为Fail,它将其存入Fail DB,再选择最近距离的Test Data。选择到的Test Data 将发送到Generator,并且制作为一个test pattern。如上图所示。

3.2 Adaptive Random Test Packet Generation

Test Pattern是JSON格式,用来测试RYU中的OpenFlow交换机。Test Pattern包含Prerequisite,Ingress Packet,Egress Packet。Test Generator通过ART技术,产生JSON格式的Test Paterr。接着Test Pattern发送给Tester,然后Tester将其翻译,并产生Test Packet给交换机。所有的过程称之为ARTPG(Adaptive Random Test Packet Generate ).

3.3 Similarity-Based Test Selection

FSCS-ART基于候选集和已经执行的测试之间的距离选择测试的数据。下一个数据将选择与上次执行测试数据最远距离的数据。Numerical Input Domain可以通过Euclidian distance测量距离,但是对于OFART,Test Data的每个因素有大量的范围和形态。。为了解决这个问题,我们基于测试相似性,在Tests之间定义了距离(distance)[为了解决这些问题,我们根据测试的相似性定义了测试之间的距离]。换言之,测试的子集之间有高度相似性,并且其他的功能有很低相似性,因此,测试高度相似性有短的权重:short distance,低相似性有短的权重:long distance。

Selector通过TestDB随机选择的测试数据发送给Generator。然后,在计算完选择的测试数据和随机选择10个候选测试数据集合的距离后,将当前首次的随机测试数据(刚开始没执行过的数据)暂时记为最远的测试,最近的测试。通过Generator和Test接收到一个测试结果(Pass/Fail)后,如果结果为Pass,将发送最远的测试数据给Generator,否则,发送最近的。

4 Evaluation

为了评估所提出的方法,我们使用F测量来测量有效性,F测量是检测第一缺陷所需的测试用例的数量。 在Open vSwitch的'SET_DL_DST'函数中注入缺陷以进行F测量。看OFART和随机测试检测出缺陷需要的测试样例以及时间。

OFART的性能比随机测试高。

5 Conclusion

本文使用ART技术,为了让SDN交换机进行功能测试,提出了一个框架自动化这个测试。。在开发函数中系统地验证回归测试和测试程序时,可以使用OFART。测试员使用框架进行测试将简单很多。运用ART技术,特使是基于Failure Pattern进行处理的,因此这要比随机选择的方式要高效,并且通过自动化,在重复动作功能的测试耗费时间将降低。

存在的疑问

  • 初始的测试数据包怎么得到? 文中提到是由test generator创建N个Test Data,具体的话还是不知道怎么创建的。
  • 可以对带状态功能进行测试吗? 个人觉得如果可以,那与控制器交互频率也太高了,每个状态的变化都是一次发包接收包检验包的操作,开销大。另外做的随机选择好像就没有必要了,而且不能够做到完全覆盖测试。根据数据包的产生和随机选择数据包来看,不是针对带状态功能的测试,而是普通交换机的功能测试。

OFART: OpenFlow-Switch Adaptive Random Testing的更多相关文章

  1. OpenFlow Switch学习笔记(六)——Instructions和Actions

    本文主要重点讨论OpenFlow Switch规范的指令集,它们深刻影响着数据包在Switch中的处理行为,下面开始从以下几个部分谈起. 1.Instructions 每一个Flow Entry里都包 ...

  2. OpenFlow Switch学习笔记(五)——Group Table、Meter Table及Counters

    本文主要详述OpenFlow Switch的另外两个主要组件——Group Table和Meter Table,它们在整个OpenFlow Swtich Processing中也起到了重要作用. 1. ...

  3. OpenFlow Switch学习笔记(四)——Matching

    这次我们着重详述来自于网络中的数据包在OpenFlow Switch中与Flow Entries的具体匹配过程,以及当出现Table Miss时的处理方式,下面就将从这两方面说起. 1.Matchin ...

  4. OpenFlow Switch学习笔记(三)——Flow Tables

    这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow Tables,以了解其内部的 matching 以及 action handling 机制.下文将会分为几个部分来逐步详述O ...

  5. OpenFlow Switch学习笔记(二)——OpenFlow Ports

    OpenFlow Ports是OpenFlow Switch与剩余网络之间传递Packet的网络接口.OpenFlow Switches之间通过OpenFlow Ports彼此相互逻辑连接.一个Ope ...

  6. OpenFlow Switch学习笔记(一)——基础概念

    OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...

  7. DDoS ATTACK PROCESSING APPARATUS AND METHOD IN OPENFLOW SWITCH

    An OpenFlow switch in an OpenFlow environment includes an attack determination module to collect sta ...

  8. OpenFlow Switch 1.3 规范

    目录 文章目录 目录 OpenFlow 架构 OpenFlow 标准和规范 OpenFlow 的端口(Port) OpenFlow 的流表(Flow Table) OpenFlow 的组表(Group ...

  9. OpenFlow Switch学习笔记(七)——Matching Fields

    Matching Fields in_port=port Matches OpenFlow port port dl_vlan=vlan Matches IEEE 802.1q Virtual LAN ...

随机推荐

  1. 【Android自动化】Subprocess.check_output()简单用法

    # -*- coding:utf-8 -*- import os import sys import subprocess from uiautomator import device as d cm ...

  2. 洛谷 P4707 【重返现世】

    题目分析 题目就是求第K种原料的出现期望时间. 考虑广义min-max容斥. \(\text{kthmax}(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-k}\bin ...

  3. Spring配置之context:annotation与、component-scan以及annotation-driven

    spring boot帮助我们隐藏了大量的细节,有些配置spring boot都是开启的,因此当我们查看遗留项目使用spring时候遇见问题一定细心排查 <!-- context:annotat ...

  4. header头

    <?php header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在 heade ...

  5. windows 下配置 Nginx 常见问题

    因为最近的项目需要用到负载均衡,不用考虑,当然用大名鼎鼎的Nginx啦.至于Nginx的介绍,这里就不多说了,直接进入主题如何在Windows下配置. 我的系统是win7旗舰版的,到官网下载最新版本 ...

  6. WorldWind源码剖析系列:代理助手类ProxyHelper

    代理助手类ProxyHelper通过平台调用的互操作技术封送了若干Win32结构体和函数.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: 内嵌类型WINHTTP_AUTOPROX ...

  7. js 函数作为参数+接受任意数量参数

    javascript中的函数是“复合数据类型”,又成为“引用类型”.引用类型的变量指向存储单元中存放的是它们的实际存放地址.函数名是对函数的一种引用.var a=max_num ;a()就可以调用fu ...

  8. 探讨CAN总线的抗干扰能力

    探讨CAN总线的抗干扰能力 CAN总线经近20年的发展已步入壮年期,它不仅在汽车领域的应用占据一定优势,在其他工业应用上也生机勃勃.枝繁叶茂.究竟是什么原因使它这么成功?当人们发现它的局限性,又面临新 ...

  9. UWP ListView 绑定 单击 选中项 颜色

    refer: https://www.cnblogs.com/lonelyxmas/p/7650259.html using System; using System.Collections.Gene ...

  10. Java入门知识1

    1. 获取标准屏幕的输入时,需导入java.util.Scanner包. 2. 主类的名称与.java的文件名需一致. 3. 文件中主类设置为public,其他类前面无需加访问级别. 4. 继承时,使 ...