网络测试包选择方法、装置及电子设备

文档序号:31440108发布日期:2022-09-07 09:25阅读:56来源:国知局
网络测试包选择方法、装置及电子设备

1.本发明涉及测试技术领域,尤其涉及一种网络测试包选择方法、装置及电子设备。


背景技术:

2.网络数据平面的故障诊断是通过测试网络转发设备来分析理论网络转发行为与实际网络转发行为不一致的原因。网络转发设备的异常行为表现包括可达性失效。网络管理员通常使用ping工具生成网络测试包进行网络故障的诊断,然而,ping工具生成的网络测试包较为随机,对于网络结构较为复杂的待测网络,ping工具的故障诊断能力较差。


技术实现要素:

3.本发明实施例提供一种网络测试包选择方法、装置及电子设备,以解决现有ping工具的故障诊断能力较差的问题。
4.为解决上述技术问题,本发明是这样实现的:
5.第一方面,本发明实施例提供了一种网络测试包选择方法,所述方法包括:
6.确定待测网络的网络可达表,所述网络可达表包括多个表项,所述多个表项中的每个表项均包括网络包头空间、入端口、出端口以及至少一个网络规则,其中,网络包头在所述网络包头空间内的网络包从所述入端口进入所述待测网络,经由对应的网络规则从对应的出端口离开所述待测网络;
7.基于所述网络可达表从网络包集合中选择多个网络测试包;
8.其中,所述网络包集合为所述每个表项对应的网络包的集合,所述多个网络测试包被划分为多个测试包集合,所述多个测试包集合与所述网络可达表中的多个网络规则一一对应,每个所述测试包集合用于对所述测试包集合对应的网络规则进行故障定位。
9.可选的,所述基于所述网络可达表从网络包集合中选择多个网络测试包,包括:
10.确定网络规则集合,所述网络规则集合为所述网络可达表中的网络规则的并集;
11.分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
12.根据所述网络包集合中的每个网络包对应的筛选值,从所述网络包集合中选择网络测试包,并从所述网络包集合中删除选择的网络测试包,更新所述网络规则集合为基于选择的网络测试包划分得到的网络规则子集合,并返回执行分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值的步骤,直至基于选择的网络测试包划分得到的网络规则子集合中每个子集仅包括一个网络规则。
13.可选的,所述分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值,包括:
14.基于第一划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
15.其中,所述第一划分算法为:
[0016][0017]
h为第一指标值,s为网络包划分得到的网络规则子集合,ni为s中的第i个子集包括的网络规则的数量,n表示s中的网络规则的总数,i为正整数,所述每个网络包对应的筛选值基于所述每个网络包对应的第一指标值确定。
[0018]
可选的,所述分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值,包括:
[0019]
基于第二划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0020]
其中,所述第二划分算法为:
[0021][0022]
其中,g为第二指标值,q为网络包划分的网络规则集合,mj为q中的第j个子集包括的网络规则的数量,m表示q中的网络规则的总数,j为正整数,m
jl
和m
jr
分别为对第j个子集进行划分得到的两个子集包括的网络规则的数量,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指标值确定。
[0023]
可选的,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指标值与第一系数的乘积确定,所述第一系数基于所述每个网络包可划分的子集的数量确定。
[0024]
可选的,所述确定网络规则集合之后,所述方法还包括:
[0025]
建立最大堆;
[0026]
所述根据所述网络包集合中的每个网络包对应的筛选值,从所述网络包集合中选择网络测试包,包括:
[0027]
根据所述网络包集合中的每个网络包对应的筛选值确定所述最大堆中的节点的元素值,每个所述节点表征一个网络包;
[0028]
对所述最大堆进行堆操作,基于堆操作结果从所述网络包集合中选择网络测试包。
[0029]
可选的,所述根据所述网络包集合中的每个网络包对应的筛选值确定所述最大堆中的节点的元素值,包括:
[0030]
计算所述网络包集合中的每个网络包对应的筛选值与扰动量的和,所述扰动量大于0且小于或等于所述筛选值;
[0031]
基于所述每个网络包对应的筛选值与扰动量的和确定所述最大堆中的节点的元素值。
[0032]
第二方面,本发明实施例提供了一种网络测试包选择装置,所述装置包括:
[0033]
确定模块,用于确定待测网络的网络可达表,所述网络可达表包括多个表项,所述多个表项中的每个表项均包括网络包头空间、入端口、出端口以及至少一个网络规则,其中,网络包头在所述网络包头空间内的网络包从所述入端口进入所述待测网络,经由对应的网络规则从对应的出端口离开所述待测网络;
[0034]
选择模块,用于基于所述网络可达表从网络包集合中选择多个网络测试包;
[0035]
其中,所述网络包集合为所述每个表项对应的网络包的集合,所述多个网络测试包被划分为多个测试包集合,所述多个测试包集合与所述网络可达表中的多个网络规则一一对应,每个所述测试包集合用于对所述测试包集合对应的网络规则进行故障定位。
[0036]
可选的,所述选择模块包括:
[0037]
确定单元,用于确定网络规则集合,所述网络规则集合为所述网络可达表中的网络规则的并集;
[0038]
计算单元,用于分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0039]
选择单元,用于根据所述网络包集合中的每个网络包对应的筛选值,从所述网络包集合中选择网络测试包,并从所述网络包集合中删除选择的网络测试包,更新所述网络规则集合为基于选择的网络测试包划分得到的网络规则子集合,并返回执行分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值的步骤,直至基于选择的网络测试包划分得到的网络规则子集合中每个子集仅包括一个网络规则。
[0040]
可选的,所述计算单元具体用于:
[0041]
基于第一划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0042]
其中,所述第一划分算法为:
[0043][0044]
h为第一指标值,s为网络包划分得到的网络规则子集合,ni为s中的第i个子集包括的网络规则的数量,n表示s中的网络规则的总数,i为正整数,所述每个网络包对应的筛选值基于所述每个网络包对应的第一指标值确定。
[0045]
可选的,所述计算单元具体用于:
[0046]
基于第二划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0047]
其中,所述第二划分算法为:
[0048][0049]
其中,g为第二指标值,q为网络包划分的网络规则集合,mj为q中的第j个子集包括的网络规则的数量,m表示q中的网络规则的总数,j为正整数,m
jl
和m
jr
分别为对第j个子集进行划分得到的两个子集包括的网络规则的数量,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指标值确定。
[0050]
可选的,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指标值与第一系数的乘积确定,所述第一系数基于所述每个网络包可划分的子集的数量确定。
[0051]
可选的,所述选择模块还包括:
[0052]
建立单元,用于建立最大堆;
[0053]
所述选择单元包括:
[0054]
确定子单元,用于根据所述网络包集合中的每个网络包对应的筛选值确定所述最
大堆中的节点的元素值,每个所述节点表征一个网络包;
[0055]
选择子单元,对所述最大堆进行堆操作,基于堆操作结果从所述网络包集合中选择网络测试包,并从所述网络包集合中删除选择的网络测试包,更新所述网络规则集合为基于选择的网络测试包划分得到的网络规则子集合,并返回执行分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值的步骤,直至基于选择的网络测试包划分得到的网络规则子集合中每个子集仅包括一个网络规则。
[0056]
可选的,所述确定子单元具体用于:
[0057]
计算所述网络包集合中的每个网络包对应的筛选值与扰动量的和,所述扰动量大于0且小于或等于所述筛选值;
[0058]
基于所述每个网络包对应的筛选值与扰动量的和确定所述最大堆中的节点的元素值。
[0059]
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现第一方面所述的网络测试包选择方法的步骤。
[0060]
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的网络测试包选择方法的步骤。
[0061]
本发明实施例中,确定待测网络的网络可达表,所述网络可达表包括多个表项,所述多个表项中的每个表项均包括网络包头空间、入端口、出端口以及至少一个网络规则,其中,网络包头在所述网络包头空间内的网络包从所述入端口进入所述待测网络,经由对应的网络规则从对应的出端口离开所述待测网络;基于所述网络可达表从网络包集合中选择多个网络测试包;其中,所述网络包集合为所述每个表项对应的网络包的集合,所述多个网络测试包被划分为多个测试包集合,所述多个测试包集合与所述网络可达表中的多个网络规则一一对应,每个所述测试包集合用于对所述测试包集合对应的网络规则进行故障定位。这样,相对于随机生成网络测试包,基于网络可达表选择网络测试包,选择的网络测试包能够较好地对待测网络中的网络规则进行故障定位,从而能够提高网络故障诊断能力。
附图说明
[0062]
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0063]
图1是本发明实施例提供的一种网络测试包选择方法的流程图;
[0064]
图2是本发明实施例提供的一个网络数据平面实例的示意图;
[0065]
图3是本发明实施例提供的一种网络规则集合划分的示意图;
[0066]
图4是本发明实施例提供的另一种网络规则集合划分的示意图;
[0067]
图5是本发明实施例提供的一种最大堆的结构示意图;
[0068]
图6是本发明实施例提供的另一种网络测试包选择方法的流程图;
[0069]
图7是本发明实施例提供的一种网络测试包选择装置的结构示意图;
[0070]
图8是本发明实施例提供的另一种网络测试包选择装置的结构示意图;
[0071]
图9是本发明实施例提供的另一种网络测试包选择装置的结构示意图;
[0072]
图10是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
[0073]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0074]
本发明实施例中,提出了一种网络测试包选择方法、装置及电子设备,以解决现有ping工具的故障诊断能力较差的问题。
[0075]
参见图1,图1是本发明实施例提供的一种网络测试包选择方法的流程图,如图1所示,所述方法包括以下步骤:
[0076]
步骤101、确定待测网络的网络可达表,所述网络可达表包括多个表项,所述多个表项中的每个表项均包括网络包头空间、入端口、出端口以及至少一个网络规则,其中,网络包头在所述网络包头空间内的网络包从所述入端口进入所述待测网络,经由对应的网络规则从对应的出端口离开所述待测网络。
[0077]
其中,可以使用网络数据平面验证工具确定待测网络的网络可达表。所述网络可达表可以为网络数据平面验证工具生成的端到端全对可达表。示例地,网络数据平面验证工具可以为包头空间分析(header space analysis,hsa)工具。hsa工具是一款主流且开源的验证工具,它提供的源代码结构完整、功能丰富且方便易用。以采用has工具生成网络可达表为例,可以获取网络数据平面的关键文件,关键文件可以包括转发信息库(forward information database,fib)表、访问控制表(access control lists,acl)、配置文件及网络拓扑等;利用hsa解析关键文件可以生成关于网络数据平面转发的抽象模型;在抽象模型上运行hsa提供的可达性分析功能可以生成端到端全对可达表。
[0078]
示例地,网络可达表可以如表1所示:
[0079]
表1
[0080][0081]
在表1中,header(头)指的是网络包头空间,网络包头空间可以是一个关于{0,1,x}的头空间;ingress port表征入端口;egress port表征出端口;rule history(历史规则)为表征至少一个网络规则的序列。一条表项<hi,p
i1
,p
i2
,[r
i1
,r
i2
,...]>可以用于表征,网络包头空间hi从边缘端口p
i1
进入待测网络后将从边缘端口p
i2
离开待测网络,并且在这个过程中所经过的网络规则历史序列为[r
i1
,r
i2
,...]。也就是说,将hi从p
i1
注入待测网络后,经过[r
i1
,r
i2
,...]的转发处理后,能够从p
i2
流出待测网络。i为正整数。
[0082]
需要说明的是,利用hsa生成网络可达表的方法可以是,在hsa的抽象模型上,向选
定的用于测试的端口处分别注入一个全通配的包头h,包头h的头空间为all-x。假设包头h进入测试端口e
in
,h会被e
in
对应的网络拓扑转移函数处理。经过网络拓扑转移函数处理后,h会转换为一个网络包头空间中的区域,并最终从测试端口e
out
流出。在该过程中,每到一个网络拓扑转移函数,h便会被网络拓扑转移函数中相应的网络规则所处理,因此,伴随h的处理过程,一个相应的网络规则的历史序列[r1,r2,...]可以被生成。然后,利用hsa提供的包头回溯方法可以对h从e
out
作逆转换后回到e
in
,逆转换后输出的包头h

可以作为网络可达表中header表列所需要的结果。
[0083]
作为一种具体的实施方式中,如图2所示,以一个简单的网络数据平面实例进行说明,网络中的每个交换设备均有相应的简化的fib表,并且a设备的边缘连接了两个测试终端ta和tb;c设备连接了测试终端tc;d设备连接了测试终端td。连接了测试终端的边缘端口可以成为计算端到端全对可达表时的入端口或出端口。利用hsa计算端到端全对可达表的一般性方法,可以计算该网络数据平面下的端到端全对可达表。例如,根据fib表配置情况,从ta到tb将有一条表项生成,该表项的入端口为ta、出端口为tb,经过规则r1,并且该表项的网络包头空间为:00001010,00000001,xxxxxxxx,xxxxxxxx。该网络数据平面下的端到端全对可达表如表2所示:
[0084]
表2
[0085][0086]
表2所示的端到端全对可达表中一共有四个表项,利用端到端全对可达表中的网络包对待测网络进行测试的过程可以如下,以端到端全对可达表中的第三个表项为例,可以从该表项的header中采样一个网络包头,例如一个有效的网络包头为ip_dst=10.2.0.1,可以令测试终端tb发送该网络包头对应的测试数据包到测试终端tc,tc能够抓取到ip_dst=10./8下的所有网络包,若测试终端tc能够在给定时间内接收到测试数据包,则可以认为测试数据包从tb来,并且途径r2、r3、r5、link ab以及link bc。由于用hsa生成端到端全对可达表,且采样并收发网络测试包的整个过程均是自动化,从而能够实现自动化测试。
[0087]
步骤102、基于所述网络可达表从网络包集合中选择多个网络测试包;
[0088]
其中,所述网络包集合为所述每个表项对应的网络包的集合,所述多个网络测试包被划分为多个测试包集合,所述多个测试包集合与所述网络可达表中的多个网络规则一一对应,每个所述测试包集合用于对所述测试包集合对应的网络规则进行故障定位。
[0089]
需要说明的是,网络可达表提供了待测网络中所有可能的测试包原型,每一个表项对应一个测试包原型,可以在网络可达表的基础上选择一定数量的表项作为最终的用于测试待测网络的网络数据平面的网络测试包。为便于说明,可以将表项直接看作网络包,一
个表项对应一个网络包。可以使用1-识别选择算法从网络包集合中选择多个网络测试包,其所选出的测试包能够对待测网络中的可达规则实现1-识别级的故障定位。对于一个网络规则,如果当网络中只有这一个网络规则出现问题时,其问题能够被定位到,则关于这个网络规则的故障是可以被1-识别的。
[0090]
另外,在选择了网络测试包之后,选择的网络测试包在下发到待测网络中测试之前,可以进行包头采样。由于网络可达表中header列中的网络包头是以关于{0,1,x}的表达式被保存的,以利用hsa生成网络可达表为例,根据hsa的运算特性,网络包头是以∪{ai}-∪{bj}的形式存在的。∪{ai}-∪{bj}所表示的是一个网络包头空间下的某个范围,为了发送网络测试包,需要从∪{ai}-∪{bj}中采样一个点。采样的方法可以采用以下两种,第一种可以将∪{ai}-∪{bj}完全展开,可以通过hsa进行集合运算完全展开。第二种可以采取解sat(布尔可满足性问题)的形式直接从∪{ai}-∪{bj}中采样,由于在实际运用中,∪{ai}通常只有一项,所以只需要考虑a-∪{bj}。对于sat表达式,采用的是合取范式的形式,a-∪{bj}表示成合取sat表达式的方法可以是,首先将a中的表达式翻译为a1∧a2∧a3∧

,ai均是a中不为x的位,i为正整数;对于∪{bj},由于其在集合减运算之后,所以先将-∪{bj}看作∧{-bj},这样对于-bk属于{-bj},其具有的表达式可以翻译为-b
k1
∨-b
k2
∨-b
k3


,为析取的形式,其中的b
kq
均是bk中不为x的位,q为正整数。所以a-∪{bj}翻译过来的最终形式为a1∧a2∧a3∧...∧(-b
11
∨-b
12
∨-b
13
∨...)∧...。通过采用主流开源的sat solver(sat求解器)能够在较短的时间内获得一个可用的网络包头,从而能够得到网络测试包。
[0091]
本发明实施例中,确定待测网络的网络可达表,所述网络可达表包括多个表项,所述多个表项中的每个表项均包括网络包头空间、入端口、出端口以及至少一个网络规则,其中,网络包头在所述网络包头空间内的网络包从所述入端口进入所述待测网络,经由对应的网络规则从对应的出端口离开所述待测网络;基于所述网络可达表从网络包集合中选择多个网络测试包;其中,所述网络包集合为所述每个表项对应的网络包的集合,所述多个网络测试包被划分为多个测试包集合,所述多个测试包集合与所述网络可达表中的多个网络规则一一对应,每个所述测试包集合用于对所述测试包集合对应的网络规则进行故障定位。这样,相对于随机生成网络测试包,基于网络可达表选择网络测试包,选择的网络测试包能够较好地对待测网络中的网络规则进行故障定位,从而能够提高网络故障诊断能力。
[0092]
可选的,所述基于所述网络可达表从网络包集合中选择多个网络测试包,包括:
[0093]
确定网络规则集合,所述网络规则集合为所述网络可达表中的网络规则的并集;
[0094]
分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0095]
根据所述网络包集合中的每个网络包对应的筛选值,从所述网络包集合中选择网络测试包,并从所述网络包集合中删除选择的网络测试包,更新所述网络规则集合为基于选择的网络测试包划分得到的网络规则子集合,并返回执行分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值的步骤,直至基于选择的网络测试包划分得到的网络规则子集合中每个子集仅包括一个网络规则。
[0096]
其中,对网络规则实现1-识别的网络测试包的选择方法可以如下:将网络可达表中的rule history中的历史序列做集合并运算得到网络规则集合r0,网络规则集合r0中包括待测网络中的所有可达规则;选择网络包集合中的一个网络包pi,其历史序列rhi是关于
集合r0的真子集,因此,pi可以对r0做一个划分,使得存在于rhi中的网络规被划分到一个新的集合r1中,不断地重复划分的过程,直到不再有新的网络包能够对当前存在的规则集合展开进一步地划分为止。最终,经过迭代划分后得到的网络规则集合包括多个目标子集,每个所述目标子集均包括一个网络规则,每个所述目标子集与每个所述测试包集合一一对应。从而,所选择的网络测试包对网络规则集合实现了1-识别。
[0097]
作为一种具体的实施方式,以一个简化的网络可达表为例,已选择网络测试包p1,p2及p3,如表3所示,网络可达表中仅示出该三个网络包和网络规则间的关系。
[0098]
表3
[0099] r1r2r3r4p111
ꢀꢀ
p2 11 p3
ꢀꢀꢀ1[0100]
表3中,画竖线表示网络规则是网络包对应的网络规则的历史序列中的元素。例如,网络包p1的网络规则的历史序列中包括r1和r2。表3中一共有三个网络包和四个网络规则。对网络规则集合(r1,r2,r3,r4)划分的过程可以如图3所示,首先采用网络包p1对网络规则集合(r1,r2,r3,r4)进行划分,得到网络规则集合((r1,r2),(r3,r4))。再采用网络包p2对经过p1划分得到的网络规则集合继续划分,得到网络规则集合((r1),(r2),(r3),(r4)),r2与测试包集合(p1,p2)对应,表征在仅有r2出故障时,通过测试包集合(p1,p2)能够定位到该故障;r1与测试包集合(p1)对应,表征在仅有r1出故障时,通过测试包集合(p1)能够定位到该故障;r3与测试包集合(p2)对应,表征在仅有r3出故障时,通过测试包集合(p2)能够定位到该故障。最后采用网络包p3对经过p2划分得到的网络规则集合继续划分,得到网络规则集合((r1),(r2),(r3),(r4)),r4与测试包集合(p3)对应,表征在仅有r4出故障时,通过测试包集合(p3)能够定位到该故障。以p1、p2及p3作为测试待测网络的网络测试包为例,在将网络包p1、p2及p3投入待测网络中时,若仅有p3在对应的出端口无法被抓取到,则表征r4出现故障;若仅有p2在对应的出端口无法被抓取到,则表征r3出现故障;若仅有p1在对应的出端口无法被抓取到,则表征r1出现故障;若仅有p1及p2在对应的出端口无法被抓取到,则表征r2出现故障。
[0101]
基于表3对网络规则集合进行迭代划分后,存在四个目标子集,每个目标子集中均含有一个网络规则,并且三个网络包均有被选到。可以看到,目标子集下的覆盖模式之间是不同的,每个目标子集只含有一个网络规则,所以每个网络规则将会是1-识别的。
[0102]
需要说明的是,每次划分所使用的网络包将决定最终所选择的网络测试包的数量。在选出具有1-识别性的网络测试包的同时,选择的网络测试包的数量越少越好,从而能够减小对待测网络中正常流量的干扰。可以通过划分算法选择网络测试包,从而能够使得最终从所述网络包集合中选择的网络测试包的数量最少。
[0103]
该实施方式中,确定网络规则集合,所述网络规则集合为所述网络可达表中的网络规则的并集;分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;根据所述网络包集合中的每个网络包对应的筛选值,从所述网络包集合中选择网络测试包,并从所述网络包集合中删除选择的网络测试包,更新所述网络规则集合为基于选择的网络测试包划分得到的网络规则子集合,并返回执行分别计算基于网络包集
合中的每个网络包对所述网络规则集合进行划分所对应的筛选值的步骤,直至基于选择的网络测试包划分得到的网络规则子集合中每个子集仅包括一个网络规则,从而使得选择的网络测试包关于网络规则具有故障1-识别性,故障定位能力较强。
[0104]
可选的,所述分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值,包括:
[0105]
基于第一划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0106]
其中,所述第一划分算法为:
[0107][0108]
h为第一指标值,s为网络包划分得到的网络规则子集合,ni为s中的第i个子集包括的网络规则的数量,n表示s中的网络规则的总数,i为正整数,所述每个网络包对应的筛选值基于所述每个网络包对应的第一指标值确定。
[0109]
其中,所述每个网络包对应的筛选值可以等于所述每个网络包对应的第一指标值,可以将筛选值最小的网络包确定为网络测试包。h(s)在s上的意义为,接下来最少还需要选择的网络测试包数量的期望。对于s中的第i个子集,log(ni)可以表征理论上还需要的能够将第i个子集中的规则全部划分开的最少网络包数量,用ni/n作为权重,将所有的子集所具有的最少网络包数量加权,得到该期望。示例地,packet|g1可以用于表征网络包packet对网络规则集合g1进行划分后得到的网络规则子集合。在迭代划分的过程中,若选择网络包packet对上一次划分得到网络规则集合g1进行划分,则可以将对g1划分后得到的网络规则子集合packet|g1理论计算的h(packet|g1)值作为网络包packet的第一指标值v(packet),示例地,在s为网络规则集合packet|g1时:
[0110][0111]
其中,v(packet)可以用于表征若选择网络包packet之后,划分后得到的网络规则集合packet|g1理论期望上最少还需要多少网络包来完成接下来的划分工作。在迭代划分过程的每次选择中,可以采用网络包集合中的每个网络包计算v(packet)值,可以将v(packet)最小的网络包选择出来,作为网络测试包。
[0112]
该实施方式中,基于第一划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值,从而能够选择出较少的网络测试包实现较强的故障定位能力。
[0113]
可选的,所述分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值,包括:
[0114]
基于第二划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0115]
其中,所述第二划分算法为:
[0116][0117]
其中,g为第二指标值,q为网络包划分的网络规则集合,mj为q中的第j个子集包括
的网络规则的数量,m表示q中的网络规则的总数,j为正整数,m
jl
和m
jr
分别为对第j个子集进行划分得到的两个子集包括的网络规则的数量,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指标值确定。
[0118]
其中,所述每个网络包对应的筛选值可以等于所述每个网络包对应的第二指标值,可以将筛选值最大的网络包确定为网络测试包。第二划分算法可以是在第一划分算法的基础上的变形算法。示例地,在q=g1时:
[0119][0120]
需要说明的是,第一划分算法的算法时间复杂度为o(pn2),p为网络可达表中的表项总数,也就是可选网络包的总数,n为网络可达表中的网络规则的总数,第一划分算法具有较高的算法时间复杂度,第二划分算法可以在第一划分算法的基础上进一步提高计算速度。在迭代划分的过程中,一个被选择的网络包实际上只会对部分规则子集构成有效的划分,而g(g1)和h(packet|g1)在本质上是等价的,g(g1)的最大值意味着h(packet|g1)的最小值,记网络包packet有效划分的规则子集的数量最大为a,对于g(g1),第二划分算法的算法时间复杂度为o(pna)。通常而言,a的值会远小于n,因为a实际上由规则历史序列的最大长度决定,而规则历史序列的长度与网络拓扑的直径,也就是网络所具有的最大跳数有关,网络拓扑的直径远小于网络规则的总数,因此,计算的时间将会被有效的缩短。可以用w(packet)表征对网络包packet采用第二划分算法计算的g(g1)值,在迭代划分过程的每次选择中,可以对网络包集合中的每个网络包计算w(packet)值,可以将w(packet)值最大的网络包选择出来,作为网络测试包。
[0121]
示例地,如图4所示,在网络规则集合g1中,被网络包packet所划分的规则子集被划分成了左右两个子集,该左右两个子集包括的网络规则的数量分别为g(g1)中m
jl
和m
jr

[0122]
该实施方式中,基于第二划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值,能够降低算法时间复杂度,提高计算速度。
[0123]
可选的,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指标值与第一系数的乘积确定,所述第一系数基于所述每个网络包可划分的子集的数量确定。
[0124]
其中,所述每个网络包对应的筛选值可以等于所述每个网络包对应的第二指标值与第一系数的乘积,可以将筛选值最大的网络包确定为网络测试包。对于网络包packet,用w(packet)表征对网络包packet采用第二划分算法计算的第二指标值,所述每个网络包对应的第二指标值与第一系数的乘积可以表示为:
[0125]
gain(packet)=w(packet)*ω(r)
[0126]
其中,ω(r)是关于能够被网络包packet分割的子集的数量r的函数,计算ω(r)可以得到第一系数。ω(r)可以按照实际需求设计,示例地,ω(r)可以设计为gain(packet)值较大的网络包意味着其具有的w(packet)值较大或者其能够分割的规则子集的数量较多,从而可以使最终选择的网络测试包的总数减少。在迭代划分过程的每次选择中,可以对网络包集合中的每个网络包计算gain(packet)值,可以将gain(packet)值最大的网络包选择出来,作为网络测试包。
[0127]
该实施方式中,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指
标值与第一系数的乘积确定,所述第一系数基于所述每个网络包可划分的子集的数量确定,能够进一步减少最终选择的网络测试包的总数。
[0128]
可选的,所述确定网络规则集合之后,所述方法还包括:
[0129]
建立最大堆;
[0130]
所述根据所述网络包集合中的每个网络包对应的筛选值,从所述网络包集合中选择网络测试包,包括:
[0131]
根据所述网络包集合中的每个网络包对应的筛选值确定所述最大堆中的节点的元素值,每个所述节点表征一个网络包;
[0132]
对所述最大堆进行堆操作,基于堆操作结果从所述网络包集合中选择网络测试包。
[0133]
其中,每个网络包对应的筛选值可以为gain(packet)。可以将所述每个网络包对应的筛选值gain(packet)作为最大堆(max-heap)中的元素值,以最大堆中维护的是每个网络包对应的筛选值gain(packet)为例,在迭代划分过程的每次选择中,一个网络测试包被选择出来的条件为,如果某个网络包在堆顶,并在弹出、更新gain值、再推入堆后,堆顶仍为该网络包,则可以选择该网络包作为网络测试包,并将该网络包再次弹出堆。示例地,如图5所示,最大堆中每个节点可以存放一个二元组,该二元组的元素值包括了一个网络包对应的筛选值gain(packet)以及该网络包的标识packet,堆的调整建立在二元组的gain(packet)值上。
[0134]
作为一种具体的实施方式,如图6所示,可以初始化一个最大堆,计算网络可达表中所有网络包的初始gain值,并以gain值为根推入最大堆中;可以判断最大堆是否为空,若最大堆不为空,则弹出最大堆堆顶的网络包;判断弹出的网络包是否能划分规则子集;若弹出的网络包能划分规则子集,则判断弹出的网络包是否与上一次弹出的是同一个网络包;若弹出的网络包与上一次弹出的不是同一个网络包,则更新弹出的网络包在当前网络规则集合下的gain值并再次推入最大堆中;若弹出的网络包与上一次弹出的是同一个网络包,则选择该网络包作为网络测试包。
[0135]
需要说明的是,迭代划分结束的条件可以为,最大堆中不再有可供选择的网络包或者每个规则子集均无法再被划分,以上策略可以称作lazy update(缓冲更新)。lazy update策略能够加速网络测试包选择,一个网络包所具有的规则历史序列越长越可能在每一轮的更新时取得gain值的最大值,在初始化最大堆时,网络包在堆中的位置基本由规则历史序列的长度决定,即长度越长越处在堆的上部。因此,每次选择时,基本只需要做少量的堆的弹出和推入操作,再加上堆的弹出和推入操作的时间复杂度较低,为所以lazy update策略能够有效加速网络测试包的选择。
[0136]
该实施方式中,根据所述网络包集合中的每个网络包对应的筛选值确定所述最大堆中的节点的元素值,每个所述节点表征一个网络包;对所述最大堆进行堆操作,基于堆操作结果从所述网络包集合中选择网络测试包。这样,采用lazy update策略能够有效加速网络测试包的选择。
[0137]
可选的,所述根据所述网络包集合中的每个网络包对应的筛选值确定所述最大堆中的节点的元素值,包括:
[0138]
计算所述网络包集合中的每个网络包对应的筛选值与扰动量的和,所述扰动量大
于0且小于或等于所述筛选值;
[0139]
基于所述每个网络包对应的筛选值与扰动量的和确定所述最大堆中的节点的元素值。
[0140]
其中,可以引入一个扰动量ε,0<ε<<gain(packet),计算每个网络包对应的筛选值与扰动量的和:
[0141]
heap_gain(packet)=gain(packet)+ε
[0142]
其中,由于网络包的gain值有聚类的特点,即多个网络包在给定的规则集合下,具有相同的gain值。可以在gain值上引入扰动量,可以将所述每个网络包对应的heap_gain(packet)值作为最大堆中的元素值。最大堆中每个节点可以存放一个二元组,该二元组的元素值包括了一个网络包对应的heap_gain(packet)值以及该网络包的标识packet。在该实施方式中,最大堆中维护的是每个网络包对应的heap_gain(packet)值。扰动量能够保证每个网络包在具有不同的heap_gain值的同时,又不破坏本该具有的关于gain值的相对大小变化。ε的上界可以由关于gain的最小差决定。示例地,根据gain的计算公式,可以计算f(x)=log(n)-(n-x)/nlog(n-x)-x/nlog(x),n表示的是网络可达表中网络规则的总数,可以推导出gain关于n的最小差为:经推导可知,g(n)是单调递减的(n≥4),所以最小差根据具体的网络规则集合决定。为了方便计算,ε的上界可以定为远小于最小差的值,比如g(n)/100。通过引入扰动量ε,堆在弹出和推入的过程中将很快遇到满足选取条件的网络测试包。这一策略可以称作gain perturbation(增益扰动)。
[0143]
该实施方式中,计算所述网络包集合中的每个网络包对应的筛选值与扰动量的和,所述扰动量大于0且小于或等于所述筛选值;基于所述每个网络包对应的筛选值与扰动量的和确定所述最大堆中的节点的元素值。这样,通过增益扰动策略,能够进一步有效加速网络测试包的选择。
[0144]
参见图7,图7是本发明实施例提供的一种网络测试包选择装置的结构示意图,如图7所示,网络测试包选择装置200包括:
[0145]
确定模块201,用于确定待测网络的网络可达表,所述网络可达表包括多个表项,所述多个表项中的每个表项均包括网络包头空间、入端口、出端口以及至少一个网络规则,其中,网络包头在所述网络包头空间内的网络包从所述入端口进入所述待测网络,经由对应的网络规则从对应的出端口离开所述待测网络;
[0146]
选择模块202,用于基于所述网络可达表从网络包集合中选择多个网络测试包;
[0147]
其中,所述网络包集合为所述每个表项对应的网络包的集合,所述多个网络测试包被划分为多个测试包集合,所述多个测试包集合与所述网络可达表中的多个网络规则一一对应,每个所述测试包集合用于对所述测试包集合对应的网络规则进行故障定位。
[0148]
可选的,如图8所示,所述选择模块202包括:
[0149]
确定单元2021,用于确定网络规则集合,所述网络规则集合为所述网络可达表中的网络规则的并集;
[0150]
计算单元2022,用于分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0151]
选择单元2023,用于根据所述网络包集合中的每个网络包对应的筛选值,从所述网络包集合中选择网络测试包,并从所述网络包集合中删除选择的网络测试包,更新所述
网络规则集合为基于选择的网络测试包划分得到的网络规则子集合,并返回执行分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值的步骤,直至基于选择的网络测试包划分得到的网络规则子集合中每个子集仅包括一个网络规则。
[0152]
可选的,所述计算单元2022具体用于:
[0153]
基于第一划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0154]
其中,所述第一划分算法为:
[0155][0156]
h为第一指标值,s为网络包划分得到的网络规则子集合,ni为s中的第i个子集包括的网络规则的数量,n表示s中的网络规则的总数,i为正整数,所述每个网络包对应的筛选值基于所述每个网络包对应的第一指标值确定。
[0157]
可选的,所述计算单元2022具体用于:
[0158]
基于第二划分算法分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值;
[0159]
其中,所述第二划分算法为:
[0160][0161]
其中,g为第二指标值,q为网络包划分的网络规则集合,mj为q中的第j个子集包括的网络规则的数量,m表示q中的网络规则的总数,j为正整数,m
jl
和m
jr
分别为对第j个子集进行划分得到的两个子集包括的网络规则的数量,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指标值确定。
[0162]
可选的,所述每个网络包对应的筛选值基于所述每个网络包对应的第二指标值与第一系数的乘积确定,所述第一系数基于所述每个网络包可划分的子集的数量确定。
[0163]
可选的,如图9所示,所述选择模块202还包括:
[0164]
建立单元2024,用于建立最大堆;
[0165]
所述选择单元2023包括:
[0166]
确定子单元20231,用于根据所述网络包集合中的每个网络包对应的筛选值确定所述最大堆中的节点的元素值,每个所述节点表征一个网络包;
[0167]
选择子单元20232,对所述最大堆进行堆操作,基于堆操作结果从所述网络包集合中选择网络测试包,并从所述网络包集合中删除选择的网络测试包,更新所述网络规则集合为基于选择的网络测试包划分得到的网络规则子集合,并返回执行分别计算基于网络包集合中的每个网络包对所述网络规则集合进行划分所对应的筛选值的步骤,直至基于选择的网络测试包划分得到的网络规则子集合中每个子集仅包括一个网络规则。
[0168]
可选的,所述确定子单元20231具体用于:
[0169]
计算所述网络包集合中的每个网络包对应的筛选值与扰动量的和,所述扰动量大于0且小于或等于所述筛选值;
[0170]
基于所述每个网络包对应的筛选值与扰动量的和确定所述最大堆中的节点的元
素值。
[0171]
网络测试包选择装置能够实现图1的方法实施例中实现的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0172]
如图10所示,本发明实施例还提供了一种电子设备300,包括:处理器301、存储器302及存储在所述存储器302上并可在所述处理器301上运行的程序,所述程序被所述处理器301执行时实现上述网络测试包选择方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0173]
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述网络测试包选择方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如rom、ram、磁碟或者光盘等。
[0174]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0175]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0176]
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1