@EggGump
2019-03-12T20:38:21.000000Z
字数 1864
阅读 887
security
当前特别需要自动化的网络测试工具
step1:生成一个all-pairs reachability table
举个例子:
图6所示,如果在处注入all-x test packets,包会通过A传递,它会将10.0/16发送到B,将10.1/16发送到C,B再将10.0/16,tcp=80发送到,C发送10.1/16到,在表4第一行可见。
step2:抽样,抽取测试包,使每一个rule都会被至少一个包测试到。
step3:压缩,找到一个最小的测试包集,它们的rule history可以覆盖所有的rule(经典的最小集覆盖问题,可由贪心算法求得。)
定义:R(r,pk) = 1,(包pk在规则r下成功验证) 否则 R(r,pk)=0
包在规则下验证失败有两种情况:行为错误,包头匹配错误,这里只考虑行为错误(包被错误地处理)。我们只能在边缘观察到包,所以重新定义:
阻塞:对每一对终端进行延迟测量,若延迟大于某个阈值,则定位延迟链路。
可用带宽:对每一个链路,队列,或服务类构造测试包进行测试(iperf/netperf或其他测试方法),可用带宽不应低于某一阈值。
严格的优先级:利用测试包阻塞低优先级类,再测试高优先级类,其带宽不应变化。
使用python编写测试包生成器生成All-pairs reachability包,并用Min-Set-Cover算法获得包含所有测试规则的最小测试包。
假设前提是网络上有测试代理,网络监控器构造测试包,并指导代理发送测试包,代理通过IP proto域或TCP/UDP端口号区分测试包。如果测试失败,则从保留包集中选择其他测试包来定位错误。
在i7,3.2GHz,6G memory,8线程运行ATPG工具,在stanford 和Internet2两个网络中进行测试。
规则重复率的累积分布函数:
使用mininet模拟网络,并使用仿真主机发送和接收由ATPG生成的测试包。
* 交付错误:手动替换交付规则观察结果
* 阻塞:限制链路30M/s,创建两个20M/s的UDP flow观察吞吐量,如图9左下,延迟如图9右下。
* 可用带宽:使用之前的链路,把UDP流降低至20M/s,并使用Pathload监控链路带宽,可以找到该链路瓶颈:bbra-yoza。
* 优先级:重复阻塞实验,当低优先级阻塞时,高优先级测试不受影响,高优先级阻塞时,均阻塞。