CN111193640A - 采用策略分解和符号执行的有状态数据平面故障检测方法 - Google Patents

采用策略分解和符号执行的有状态数据平面故障检测方法 Download PDF

Info

Publication number
CN111193640A
CN111193640A CN201911368837.0A CN201911368837A CN111193640A CN 111193640 A CN111193640 A CN 111193640A CN 201911368837 A CN201911368837 A CN 201911368837A CN 111193640 A CN111193640 A CN 111193640A
Authority
CN
China
Prior art keywords
data stream
network
symbolic execution
test data
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.)
Granted
Application number
CN201911368837.0A
Other languages
English (en)
Other versions
CN111193640B (zh
Inventor
张鹏
胡刘郏
刘雨潇
吴慧
王换招
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201911368837.0A priority Critical patent/CN111193640B/zh
Publication of CN111193640A publication Critical patent/CN111193640A/zh
Application granted granted Critical
Publication of CN111193640B publication Critical patent/CN111193640B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了采用策略分解和符号执行的有状态数据平面故障检测方法,通过构建网络功能模型和分解上下文相关策略,使用符号执行引擎进行符号执行,生成原始测试用例;然后将原始测试用例翻译为符合数据流量规范的合法测试数据流;将测试数据流注入数据平面;比较实际测试数据流处理结果和测试数据流理论处理结果,从而实现有状态数据平面故障检测,对网络功能内部逻辑进行建模,能够对中间网络设备的内部逻辑进行验证,可以处理数据平面由于软件错误、硬件故障等产生的运行时故障;使用测试数据流进行检测,可以直接检测数据平面的状态,具有良好的可扩展性。利用策略分解和符号执行降低需要探索的状态空间大小,提高故障检测的可扩展性。

Description

采用策略分解和符号执行的有状态数据平面故障检测方法
技术领域
本发明涉及网络技术领域,具体涉及采用策略分解和符号执行的有状态数据平面故障检测方法。
背景技术
网络改变了工业时代以来人们的生产生活方式,改变了传统经济模式,带动了世界文明的进步。随着云计算、物联网、区块链和大数据等新兴技术的不断出现,网络承载的功能也越来越多。如今,网络已经不仅仅是将各种计算设备连接到一起的通信手段,其已经成为现代社会最重要的关键基础设施之一。
网络故障是网络管理员必须面对的问题。一个面向网络管理员的调查显示,80%的网络管理员管理的网络平均每个月至少出现10次以上的故障,35%的网络管理员每个月收到的故障报告超过100个。同时,54.4%的网络管理员表示解决一个故障报告的平均时间在30分钟以上,这其中接近一半的受访者需要的平均时间超过了一个小时。中间网络设备也已成为网络故障的重要来源之一。
软件定义网络(Software Defined Network,SDN)是一种新型网络架构,旨在改变已显得不合时宜,且难以进化发展的现有网络基础架构。软件定义网络打破了传统网络的垂直集成和分布式架构,将控制逻辑从交换机和路由器中抽离出来实现为逻辑上中心化的控制器或者网络操作系统。中心化的控制逻辑使得网络管理员和故障检测工具可以方便地获得整个网络的全局视图。这为网络故障检测带来了新的思路。
近年,关于有状态数据平面故障检测的方法有:
技术方案1:在公开发表的名为Symnet:Scalable Symbolic Execution forModern Networks的论文中作者提出了Symnet,其设计了一种网络建模语言SEFL来对整个网络进行建模,然后使用其构建的符号执行工具Symnet对SEFL语言编写的网络模型进行符号执行,在控制平面验证网络的可达性、隧道策略的安全型、有状态处理过程等。
技术方案2:在公开发表的名为Verifying Reachability in Networks withMutable Datapaths的论文中作者提出了VMN,其将中间网络设备建模为三部分:转发模型、抽象数据包类型集合和自动确定数据包属于哪种抽象的不可知实体(orcale)。通过不可知实体的概念将中间网络设备对数据包具体的分类逻辑从验证对象中排除,将研究目标集中在对分类后的抽象数据包类型的转发正确性验证上。以此模型为基础构建网络模型,然后在控制平面对网络的不变量(可达性、是否存在环路等)进行验证。
技术方案3:在公开发表的名为BUZZ:Testing Context-dependent Policies inStateful Networks的论文中作者提出了BUZZ,其构建了数据平面网络模型,使用抽象网络流量进行符号执行,以此为基础生成网络测试流量,对数据平面的正确性进行检测。
上述方案1存在的主要问题是:需要建模人员学习掌握SEFL语言,并使用SEFL语言对网络中存在的中间网络设备进行建模,通用性很差,会造成高额的网络维护成本。由于是在控制平面对网络配置进行验证,只能检测到控制平面的配置错误,而无法处理数据平面由于软件错误、硬件故障等产生的运行时故障。
上述方案2存在的主要问题是:由于其放弃了对中间网络设备内部处理逻辑的验证,使得其应用范围和实用性都大大缩减,远不能满足实际的网络故障检测需求。同样的,VMN只在控制平面对网络配置进行验证,无法验证数据平面的实际转发、处理行为是否和控制平面一致,这也限制了其检测能力,无法直接检测数据平面的状态。
上述方案3存在的主要问题是:由于其需要将整个数据平面作为整体进行测试,导致可扩展性很差,随着网络规模和网络策略复杂度的增加,其时间开销呈指数级增长,这限制了它的应用范围和实用性。
发明内容
本发明的目的在于克服上述现有技术中存在的问题,提供采用策略分解和符号执行的有状态数据平面故障检测方法,利用策略分解和符号执行降低需要探索的状态空间大小,提高故障检测的可扩展性。
为达到上述目的,本发明采用如下技术方案:
采用策略分解和符号执行的有状态数据平面故障检测方法,包括以下步骤:
步骤1、构建原子网络功能模型;
步骤2、分解上下文相关策略,获得原子网络功能独立策略;
步骤3、以步骤1获得的原子网络功能模型和步骤2中获得的原子网络功能独立策略为对象使用符号执行引擎进行符号执行,生成原始测试用例;
步骤4、将步骤3获得的原始测试用例根据目标网络拓扑信息翻译为符合数据流量规范的实际测试数据流;
步骤5、将步骤4获得的实际测试数据流注入数据平面进行处理;
步骤6、收集步骤5得到的处理后的实际测试数据流及其处理结果;
步骤7、以步骤1获得的原子网络功能模型和步骤2中获得的原子网络功能独立策略为对象,将步骤4获得的实际测试数据流注入原子网络功能模型,获得测试数据流理论处理结果;
步骤8、比较步骤6获得的实际测试数据流处理结果和步骤7获得的测试数据流理论处理结果,如果两个数据处理结果存在差异,则判断有状态数据平面发生了故障,否则判断有状态数据平面正常。
进一步的,步骤1中,原子网络功能模型的构建过程是:根据中间网络设备的功能模块,将中间网络设备的功能拆分为不可拆分的最小功能模块,每个最小功能模块都能够在没有其他模块辅助的情况下独立完成本模块的功能,最小功能模块的功能正交。
进一步的,设网络功能的状态由n个状态变量共同决定,每个状态有m个可能的值,原子网络功能模型中需要探索的状态空间大小是n1 m+n2 m+n3 m+…+nz m,z为划分的最小功能模块的数量。
进一步的,步骤2中,上下文相关网络策略划分为动态服务功能链策略和设备静态配置两种。
进一步的,将动态服务功能策略分解为每个设备的独立策略,以独立策略为基准分别检测服务功能链上每个设备的正确性,并对设备的独立策略或者静态配置根据正交功能模块进行划分。
进一步的,步骤3中,每个原子网络功能模型都有一个对应的测试程序,使用测试程序符号化测试数据流的相关域,并使用符号执行引擎将测试程序作为目标,最终实现对原子网路功能模型的符号执行。
进一步的,步骤4中,根据数据平面拓扑信息将软件测试用例转换为合法的数据包序列即可生成实际测试数据流。
进一步的,生成实际测试数据流具体包括初始数据包序列生成和初始数据包序列填充。
进一步的,步骤5中,生成实际测试数据流后,通过packet-out消息命令和中间网络设备直连的OpenFlow交换机将测试数据流注入数据平面中的中间网络设备。
进一步的,对步骤6获取的处理结果进行验证:验证服务端在注入测试数据流后等待一段时间,如果没有收到测试流的数据包,则认为数据包被丢弃。
与现有技术相比,本发明具有以下有益的技术效果:
本发明采用策略分解和符号执行的有状态数据平面故障检测方法,通过构建网络功能模型和分解上下文相关策略,使用符号执行引擎进行符号执行,生成原始测试用例;然后将原始测试用例翻译为符合数据流量规范的合法测试数据流;将测试数据流注入数据平面;收集被中间网络设备处理后的测试数据流及其处理结果;将模拟测试数据流注入原子网络功能模型,获得测试数据流的理论处理结果;比较实际测试数据流处理结果和测试数据流理论处理结果,从而实现有状态数据平面故障检测,构建网络功能模型具有学习成本低、使用门槛低的特点,降低网络维护成本;对网络功能内部逻辑进行建模,能够对中间网络设备的内部逻辑进行验证,可以处理数据平面由于软件错误、硬件故障等产生的运行时故障;使用测试数据流进行检测,可以直接检测数据平面的状态;通过策略分解和原子网络功能方法解决状态空间爆炸问题,具有良好的可扩展性。利用策略分解和符号执行降低需要探索的状态空间大小,提高故障检测的可扩展性。
进一步的,通过对符号执行的过程进行优化,可以进一步提高其执行效率。
附图说明
图1为本发明的工作流框图;
图2为一个有状态网络实例图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面结合图1对本发明作进一步说明,本发明提供了采用策略分解和符号执行的有状态数据平面故障检测方法,其工作流如图1所示,包括以下步骤:
步骤1、构建原子网络功能模型。根据中间网络设备的功能模块,将中间网络设备的功能拆分为不可拆分的最小功能模块,每个最小功能模块都可以在没有其他模块辅助的情况下独立完成本模块的功能;本申请将这种最小功能模块命名为原子网络功能。
根据符号执行状态空间大小的特点,将中间网络设备划分为多个功能正交的原子网络功能,针对原子网络功能进行故障检测。
直接对网络功能源代码进行建模是不可行的,一方面会影响到故障检测的能力,另一方面无法解决可扩展性问题。本发明采用对网络功能建模的方式来解决上述问题。网络功能建模的挑战主要有两点:1)表达性,原子网络功能模型必须能够表达网络功能的有状态行为和流量上下文,比如防火墙模型需要能够记录防火墙的状态变化和流量上下文的映射关系,从而判断是否允许相关数据包通过防火墙。2)可扩展性,不直接使用网络功能源代码的重要原因之一就是其可扩展性不足,所以构建的网络功能模型对于状态空间探索需要具有较好的可扩展性。
使用自动机的方式对网络功能进行建模有效解决了网络功能模型的表达性问题,但是仍然存在可扩展性的问题。设网络功能的状态由n个状态变量共同决定,每个状态有m个可能的值,那么原子网络功能模型的网络功能自动机模型就有nm个状态,很容易出现状态空间爆炸的情况,因此对单个网络功能的状态空间进行探索也需要面对可扩展性问题,需要使用合理的方法有效地减少功能模型的状态空间,减少状态空间探索时间,从而解决可扩展性的问题。根据对实际网络功能设计的观察,可以发现大部分的网络功能都不是一个完整的不可拆分的整体。相反的,一个网络功能一般是由多个子功能组成。比如前面提到的防火墙通常包含状态化包过滤模块、ACL模块、重定向模块等子功能。这些子功能都是不可拆分的最小功能模块,每个子功能都可以在没有其他模块辅助的情况下独立完成本模块的功能。本发明将这种子功能模块命名为原子网络功能。以原子网络功能为单元进行探索时,需要探索的状态空间大小不再是nm个,而是n1 m+n2 m+n3 m+…+nz m,其中n=n1+n2+n3+…+nz,z为划分的最小功能模块的数量。因为即使原子功能已经是最小的模块单位了,仍然可能出现一个原子功能中存在多个状态变量的情况,所以这里的状态空间大小不是n*m。
步骤2、分解上下文相关策略。
上下文相关网络策略划分为动态服务功能链策略和设备静态配置两种。图2是一个包含lightIPS(光入侵防御系统)和heavyIPS(重型入侵防御系统)的微型网络。该微型网络中,所有的网络流量都要先经过lightIPS,lightIPS会根据检测结果将数据流分为两类:可疑数据流和可信数据流。可信数据流直接通过网络,不需要进一步检测。可疑数据流会被提交给heavyIPS进行进一步的签名检测。HeavyIPS将数据流分为两类:高可信数据流和恶意数据流;高可信数据流可以继续在微型网络中转发,而恶意数据流会被heavyIPS直接丢弃。该动态服务功能链中,只有lightIPS判定为可疑的数据流需要经过heavyIPS,有效地降低了heavyIPS的负载,同时减少了对可信流量的时延影响。该例中的lightIPS和heavyIPS构成了一个最基础的动态服务功能链,根据lightIPS或者heavyIPS状态的不同,数据流经过的路径和处理结果也是不一样的。
设一个动态服务功能链策略同时包含NF1,NF2,NF3三个设备,每个设备的状态空间大小分别为n1,n2,n3;若以整个动态服务功能链为状态探索对象,那么状态空间就是三个设备状态空间的笛卡尔积,最终的状态空间大小N=n1*n2*n3。设n1,n2,n3均为100,那么N就是100万,是单个设备状态数的1万倍。如果功能链中的设备数量增加,总的状态空间大小就会指数级增加,造成状态空间爆炸。
将动态服务功能策略分解为每个设备的独立策略,以独立策略为基准分别检测服务功能链上每个设备的正确性,并对设备的独立策略或者静态配置根据正交功能模块进行划分。设动态服务功能链上负责将数据包从当前设备路由至下一个设备的无状态数据平面没有故障;如果服务功能链上的每个设备均没有检测到故障,则认为该服务功能链没有发生故障。使用分离检测方法,上述三个设备的动态服务功能链总状态空间N=n1*n2*n3。最终总状态数为300。由于这三个设备的状态空间是分离的,所以它们的状态空间是可以并行探索的,从而将状态空间探索的时间开销减少到和耗时最长的设备一致。最终只需要整体测试方式万分之一(102/106)的时间就可以完成对该动态服务功能链的检测。
网络中的设备通常包含多个独立的功能模块。以网络中最常见的防火墙为例,组成防火墙的功能模块有状态化包过滤模块、ACL模块、重定向模块等。这些模块的功能是相互独立的,即模块之间的状态是相互独立的。基于此,可以进一步地将设备划分为多个原子网络功能(下一节将详细介绍原子网络功能的概念)。因此需要对设备的独立策略或者静态配置文件进行分隔。因为这些模块之间是相互独立的,所以对独立策略和设备静态配置文件的分解是比较容易实现。但是分解时需要考虑一些特殊情况,比如ACL的deny规则会影响到重定向模块的功能,因为防火墙不会对被ACL禁止的数据包进行重定向。所以重定向原子功能的独立配置文件需要包含ACL配置。
步骤3、以步骤1获得的原子网络功能模型和步骤2中获得的原子网络功能独立策略为对象使用符号执行引擎进行符号执行,生成原始测试用例;
使用测试程序符号化测试数据流的相关域,并使用符号执行引擎将测试程序作为目标,最终实现对网路功能模型的符号执行。
每个原子网络功能模型都有一个对应的测试程序,测试程序会首先将数据包符号化,然后将符号化后的数据包序列按序输入到功能模型中。测试程序中有一个或者多个否定断言语句,这些语句声明了触发策略上下文的分支,比如lightIPS中对连接失败的TCP连接请求进行计数,当失败的TCP连接数达到10时,就会触发lightIPS的警报上下文,那么在lightIPS功能模型的测试程序中就会有一个否定断言语句,断言失败连接数不会达到10。KLEE在对测试程序进行符号执行时,会找到一个违反这个否定断言(失败的TCP连接数大于等于10)的执行分支,并生成一个符合该分支符号变量约束的具体测试用例。
虽然符号执行的效率远远高于其他方式,但是对一些较为复杂的模型,仍然需要较长时间。通过对符号执行的过程进行优化,可以进一步提高其执行效率。TestDP对符号执行过程的优化主要包括三点:
(1)减少符号变量数量。将数据包的所有域都符号化会使得KLEE为每个域维护一个符号变量,并为每个域找到一个具体值,这会增加KLEE执行的时间开销。而编写模型的测试程序时,根据目标网络功能模型的特点,只将可能会改变网络功能模型状态或者影响网络功能模型决策的相关域符号化,对其他域给定一个无意义的具体值。假设有一个TCP代理功能模型,该模型只关注源IP、目的IP、源端口、目的端口这4个域。那么在测试程序中,应当只符号化这4个域。其他域给定无意义的具体值。(在TestDP的实现中,使用0作为无意义的具体值)
(2)约束符号变量取值范围。模型中的一些数据包域的变量表示的取值范围要大于该域的实际可能取值范围。比如IP的flags域只有三个比特,但是在模型中需要使用8比特的数据结构。TCP包头的FIN也只有0和1两种可能的取值。根据数据包域的实际情况限制符号变量的取值范围,可以减少符号变量的值集合个数,从而减少执行空间大小。
(3)配置规则分离执行。部分网络功能模型会有静态配置规则,如果这些静态配置规则之间是相互独立的,可以分别以每条规则为基础进行测试数据包生成,确保为每个规则生成测试用例的同时,避免因为规则之间的状态交叉造成的状态空间过大。有些情况下会存在规则之间重叠的情况,比如ACL规则,假设一个规则是允许所有目的ip为192.168.0.0/16的数据包,而另一个优先级更高的规则是拒绝所有目的ip为192.168.1.0/24的数据包。对于这种情况,测试程序先对所有规则进行投影,为每个规则选取未和其他规则重叠的的子规则。使用子规则来生成测试用例。
步骤4、将步骤3获得的原始测试用例根据目标网络拓扑信息翻译为符合数据流量规范的实际测试数据流。根据模块的属性,自动地根据网络拓扑信息选择合适的域值填充测试数据流,为了确保测试数据流和真实数据流之间不会互相影响,测试数据流使用拓扑中存在的域值的补集填充。使用OpenFlow的Packet-out消息选择和中间网路设备直连的Openflow交换机注入测试数据流量。
通过分析目标网络拓扑信息,设计外网虚拟主机池和内网虚拟主机池,实现和真实数据流量互斥的数据域填充。
实际测试数据流生成就是根据数据平面拓扑信息将软件测试用例转换为合法的数据包序列,由初始数据包序列生成和初始数据包序列填充两个阶段组成。
首先是生成初始数据包序列,初始数据包包含一个合法的数据包所需要的全部域,但是只有软件测试用例包含的域会被赋值,其他域会被初始化为空值。在初始数据包序列生成阶段,根据软件测试用例中包含的域动态判断和选择数据包在TCP/IP协议栈每层使用的协议。这里的``判断”是指根据软件测试用例包含的域判断使用什么协议或者在哪几个协议中选择。比如,如果软件测试用例中包含目的IP地址域,网络层必须使用IP协议。部分软件测试用例中包含下一层协议的协议号,如IP层的协议字段,如果协议字段值为0x06,则传输层使用UDP协议,若字段值为0x11,则传输层使用TCP协议,类似的,0x01代表ICMP协议。上述情况都是可以根据软件测试用例包含的域或者相关域的值唯一确定。在某些情况下,无法根据上述信息唯一确定,所以需要进行选择。假设某个软件测试用例中只包含IP地址和目的端口号,那么显然,该测试用例既可以被转换成UDP数据包也可以被转换为TCP数据包。针对这种情况,TestDP根据协议的复杂度规定了协议选择的优先级。进行转换时,首先列出可选协议,然后从可选协议中选择优先级最高的协议作为转换目标。前述的软件测试用例在传输层的可选协议是UDP和TCP,而UDP的优先级要高于TCP,此时,TestDP会将软件测试用例转换为UDP数据包。
初始数据包序列由于很多域是空值,为了生成完整的数据包,需要给这些域赋值。因为中间网络设备都是有状态的,直接使用目标网络中已有主机的相关信息(如IP地址、MAC地址等)来填充测试数据包的相关域不是一个好的选择。直接使用目标网络中的主机信息填充测试数据流存在两个问题:
1)测试数据流可能干扰真实数据流。比如防火墙的状态化包过滤模块会为每个TCP连接维护一个状态,且只允许主机A主动向主机B发起来连接请求,禁止主机B主动连接主机A。正常情况下,主机B主动向A发起的连接请求会被防火墙屏蔽,即主机B的SYN请求包会被防火墙丢弃。假设测试数据流模拟了主机A和主机B之间的通信,由主机A主动发起连接请求,并在主机A和主机B之间建立了连接。连接建立后,防火墙的状态表中就多了一条A和B的的连接,且连接状态记录为已建立。此时,如果主机B使用相同端口向主机A发起连接请求,防火墙检索状态表发现主机A和主机B已经建立了连接,就会允许主机B的连接请求通过,主机B成功地和主机A建立了连接,违反了防火墙的隔离策略。用于检测防火墙正确性的数据流反而使得防火墙违反了网络策略,这个是不希望出现的情况。
2)真实数据流可能干扰测试数据流。还是以防火墙为例,如果主机A和主机B已经建立了连接,而测试数据流使用同样的端口模拟主机B主动和主机A建立连接的过程。由于主机A和B之间的连接在防火墙的状态表中的状态是已建立,防火墙会允许主机B的SYN请求包通过,而该测试数据流的正确处理结果应该是这个SYN请求包被丢弃,所以TestDP判定防火墙违反了隔离策略,而事实上,防火墙的行为是符合隔离策略的。
为了避免上述情况,TestDP采用了设置测试主机池的方法,测试主机池是由TestDP根据目标拓扑的信息生成的虚假主机信息。如果测试主机池的所有IP组成的集合为S1,目标网络拓扑中的所有设备的IP集合为S2。目标拓扑所用网段所有的IP的集合为S。TestDP生成测试IP池时会确保S1∪S2=S。生成测试主机池时会同时为每个IP生成对应的合法MAC,且该MAC地址不属于目标网络拓扑中的任何设备。上述的主机被称为内网主机池,部分中间网络设备(如防火墙)需要区分外网和内网,针对这些网络功能,TestDP还设计了外网主机池,由于外网主机这个概念事实上包含了除内部IP段的所有IP地址,而IPv4的地址总数有40多亿,所以让外网主机池包含所有外网IP是不合适的,也没有必要。TestDP根据内网IP段的IP规模随机生成10倍数量的外网IP,同时为每个IP生成对应的合法MAC地址来组成外网主机池。TestDP在对初始数据包序列的空值域进行填充时会根据模型设定从内网主机池或者外网主机池中随机选择主机,使用选中主机的IP或者MAC填充测试数据包序列。对于某些特殊的网络功能,如对防火墙的状态化包过滤模块进行测试时,测试数据包还必须可以通过防火墙ACL模块。TestDP以VeriDP使用的端口谓词算法作为基础,判断填充后的测试数据包是否可以通过ACL模块,如果不能通过,重新选择虚假主机,直到判断测试数据包可以通过ACL模块。最坏情况下,可能出现主机池中的所有主机都无法通过ACL模块(比如ACL模块中设置了只有白名单中的IP可以通过,而白名单只包含目标网络中的主机)。如果坚持不使用网络中的主机信息填充测试数据包序列,TestDP就无法生成测试数据流,这种情况下TestDP使用目标拓扑的主机信息。
由于中间网络设备的多样性(这也是造成有状态数据平面故障检测困难的重要原因),不同中间网络设备或者网络功能的测试数据包生成逻辑也是不同的。比如内网DHCP服务器不需要考虑外网主机池,而网络防火墙由于一般是工作在内外网的边界,所以需要同时考虑内网虚拟主机池和外网虚拟主机池。TestDP实现了一套测试数据流填充接口(如获取内网虚拟主机等)。以这些接口为基础可以根据网络功能的需求快速实现测试数据流填充算法。这种设计也确保了TestDP可以兼容新实现的网络功能模型。因为随着网络功能虚拟化技术的发展,新的网络功能不断地被开发出来,能够兼容新的网络功能模型是一个合格的有状态平面故障检测方法应该具备的特性。
步骤5、将步骤4获得的测试数据流注入数据平面;
生成实际测试数据流后,通过packet-out消息命令和中间网络设备直连的OpenFlow交换机将测试数据流注入数据平面中的中间网络设备。
步骤6、收集步骤5得到的处理后的测试数据流及其处理结果。
在和步骤5中的中间网络设备直连的交换机上下发流表,使得交换机收到中间网络设备处理后的实际测试数据流及其处理结果时将其发送给验证服务端(运行与SDN控制器中)。对于处理结果可能为静默丢包的网络功能(如防火墙ACL模块),验证服务端会在注入测试数据流后等待一段时间,如果没有收到测试流的数据包,就认为数据包被丢弃,以此作为测试流处理结果进行故障判断。
步骤7、以步骤1获得的原子网络功能模型和步骤2中获得的原子网络功能独立策略为对象,将步骤4获得的实际测试数据流注入原子网络功能模型,获得测试数据流的理论处理结果。
验证服务端通过将测试数据流注入网络功能模型模拟实际的处理过程获得理论数据流处理结果。
步骤8、比较步骤6获得的实际测试数据流处理结果和步骤7获得的测试数据流理论处理结果是否存在差异,从而判断是否发生了故障。
验证服务端将测试数据流在数据平面的处理结果和理论处理结果进行比较,步骤6获得的实际测试数据流处理结果和步骤7获得的测试数据流理论处理结果不一致,则判断网络功能发生故障。如果步骤6获得的实际测试数据流处理结果为全部正常转发,步骤7获得的测试数据流理论处理结果丢弃第2个数据包,两者不一致则判断网络功能发生了故障。

Claims (10)

1.采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,包括以下步骤:
步骤1、构建原子网络功能模型;
步骤2、分解上下文相关策略,获得原子网络功能独立策略;
步骤3、以步骤1获得的原子网络功能模型和步骤2中获得的原子网络功能独立策略为对象使用符号执行引擎进行符号执行,生成原始测试用例;
步骤4、将步骤3获得的原始测试用例根据目标网络拓扑信息翻译为符合数据流量规范的实际测试数据流;
步骤5、将步骤4获得的实际测试数据流注入数据平面进行处理;
步骤6、收集步骤5得到的处理后的实际测试数据流及其处理结果;
步骤7、以步骤1获得的原子网络功能模型和步骤2中获得的原子网络功能独立策略为对象,将步骤4获得的实际测试数据流注入原子网络功能模型,获得测试数据流理论处理结果;
步骤8、比较步骤6获得的实际测试数据流处理结果和步骤7获得的测试数据流理论处理结果,如果两个数据处理结果存在差异,则判断有状态数据平面发生了故障,否则判断有状态数据平面正常。
2.根据权利要求1所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,步骤1中,原子网络功能模型的构建过程是:根据中间网络设备的功能模块,将中间网络设备的功能拆分为不可拆分的最小功能模块,每个最小功能模块都能够在没有其他模块辅助的情况下独立完成本模块的功能,最小功能模块的功能正交。
3.根据权利要求2所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,设网络功能的状态由n个状态变量共同决定,每个状态有m个可能的值,原子网络功能模型中需要探索的状态空间大小是n1 m+n2 m+n3 m+…+nz m,z为划分的最小功能模块的数量。
4.根据权利要求1所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,步骤2中,上下文相关网络策略划分为动态服务功能链策略和设备静态配置两种。
5.根据权利要求4所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,将动态服务功能策略分解为每个设备的独立策略,以独立策略为基准分别检测服务功能链上每个设备的正确性,并对设备的独立策略或者静态配置根据正交功能模块进行划分。
6.根据权利要求1所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,步骤3中,每个原子网络功能模型都有一个对应的测试程序,使用测试程序符号化测试数据流的相关域,并使用符号执行引擎将测试程序作为目标,最终实现对原子网路功能模型的符号执行。
7.根据权利要求1所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,步骤4中,根据数据平面拓扑信息将软件测试用例转换为合法的数据包序列即可生成实际测试数据流。
8.根据权利要求7所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,生成实际测试数据流具体包括初始数据包序列生成和初始数据包序列填充。
9.根据权利要求1所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,步骤5中,生成实际测试数据流后,通过packet-out消息命令和中间网络设备直连的OpenFlow交换机将测试数据流注入数据平面中的中间网络设备。
10.根据权利要求1所述的采用策略分解和符号执行的有状态数据平面故障检测方法,其特征在于,对步骤6获取的处理结果进行验证:验证服务端在注入测试数据流后等待一段时间,如果没有收到测试流的数据包,则认为数据包被丢弃。
CN201911368837.0A 2019-12-26 2019-12-26 采用策略分解和符号执行的有状态数据平面故障检测方法 Active CN111193640B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911368837.0A CN111193640B (zh) 2019-12-26 2019-12-26 采用策略分解和符号执行的有状态数据平面故障检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911368837.0A CN111193640B (zh) 2019-12-26 2019-12-26 采用策略分解和符号执行的有状态数据平面故障检测方法

Publications (2)

Publication Number Publication Date
CN111193640A true CN111193640A (zh) 2020-05-22
CN111193640B CN111193640B (zh) 2021-07-13

Family

ID=70709574

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911368837.0A Active CN111193640B (zh) 2019-12-26 2019-12-26 采用策略分解和符号执行的有状态数据平面故障检测方法

Country Status (1)

Country Link
CN (1) CN111193640B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930630A (zh) * 2020-08-17 2020-11-13 电信科学技术第十研究所有限公司 基于数据流的大数据测试用例的生成方法及装置
CN114257426A (zh) * 2021-12-09 2022-03-29 山石网科通信技术股份有限公司 背景流量生成方法、装置、电子设备和存储介质
CN115051984A (zh) * 2021-11-22 2022-09-13 厦门大学 一种分布式数据平面验证方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708045A (zh) * 2012-04-13 2012-10-03 电子科技大学 一种缓解路径爆炸的动态符号执行方法
CN107979499A (zh) * 2018-01-26 2018-05-01 福州大学 基于有状态数据平面的网络多点故障恢复方法
CN109905275A (zh) * 2019-01-28 2019-06-18 华南理工大学 一种基于sdn分层架构的控制平面故障检测与处理方法
CN110515857A (zh) * 2019-09-02 2019-11-29 华东师范大学 一种基于动态符号执行的测试用例生成方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708045A (zh) * 2012-04-13 2012-10-03 电子科技大学 一种缓解路径爆炸的动态符号执行方法
CN107979499A (zh) * 2018-01-26 2018-05-01 福州大学 基于有状态数据平面的网络多点故障恢复方法
CN109905275A (zh) * 2019-01-28 2019-06-18 华南理工大学 一种基于sdn分层架构的控制平面故障检测与处理方法
CN110515857A (zh) * 2019-09-02 2019-11-29 华东师范大学 一种基于动态符号执行的测试用例生成方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SEYED K. FAYAZ, TIANLONG YU, YOSHIAKI TOBIOKA, SAGAR CHAKI: "BUZZ: Testing Context-Dependent Policies in Stateful Networks", 《PROCEEDINGS OF THE 13TH USENIX SYMPOSIUM ON NETWORKED SYSTEMS DESIGN AND IMPLEMENTATION》 *
SEYED K. FAYAZ, YOSHIAKI TOBIOKA, SAGAR CHAKI, VYAS SEKAR: "Scalable Testing of Context-Dependent Policies over Stateful Data Planes with Armstrong", 《COMPUTER SCIENCE》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930630A (zh) * 2020-08-17 2020-11-13 电信科学技术第十研究所有限公司 基于数据流的大数据测试用例的生成方法及装置
CN111930630B (zh) * 2020-08-17 2024-01-05 电信科学技术第十研究所有限公司 基于数据流的大数据测试用例的生成方法及装置
CN115051984A (zh) * 2021-11-22 2022-09-13 厦门大学 一种分布式数据平面验证方法
CN114257426A (zh) * 2021-12-09 2022-03-29 山石网科通信技术股份有限公司 背景流量生成方法、装置、电子设备和存储介质
CN114257426B (zh) * 2021-12-09 2024-05-03 山石网科通信技术股份有限公司 背景流量生成方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN111193640B (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
Panda et al. Verifying reachability in networks with mutable datapaths
CN111193640B (zh) 采用策略分解和符号执行的有状态数据平面故障检测方法
Moon et al. Alembic: Automated model inference for stateful network functions
Panda et al. Verifying isolation properties in the presence of middleboxes
CN110808865A (zh) 一种被动工控网络拓扑发现方法及工控网络安全管理系统
CN107196871B (zh) 一种基于别名规约树的流规则冲突检测方法及系统
US20220329617A1 (en) Method for automatic derivation of attack paths in a network
Melis et al. A policy checker approach for secure industrial sdn
Xuewei et al. An approach of discovering causal knowledge for alert correlating based on data mining
Basile et al. Inter‐function anomaly analysis for correct SDN/NFV deployment
CN111698110B (zh) 一种网络设备性能分析方法、系统、设备及计算机介质
Singh et al. SecureFlow: Knowledge and data-driven ensemble for intrusion detection and dynamic rule configuration in software-defined IoT environment
Chowdhary et al. Intent-driven security policy management for software-defined systems
Ján et al. Intrusion detection system behavior as resource-oriented formula
Tahir et al. A novel DDoS floods detection and testing approaches for network traffic based on linux techniques
Hussein et al. SDN verification plane for consistency establishment
Zhang et al. An effective method to generate attack graph
Song et al. Full-life cycle intent-driven network verification: Challenges and approaches
CN111431732B (zh) 一种对计算机网络数据平面进行增量验证的方法与系统
Zhang et al. Toward comprehensive network verification: Practices, challenges and beyond
Patzer et al. Context-aware software-defined networking for automated incident response in industrial networks
Tortora et al. A model for the specification and interpretation of visual languages
Din et al. Anomaly free on demand stateful software defined firewalling
Saint-Hilaire et al. Ontology-based attack graph enrichment
Aryan et al. A parallel approach for detecting OpenFlow rule anomalies based on a general formalism

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