网络传输质量测试工具的使用介绍

在产品的测试过程偶尔会遇到一些异常场景下的测试如延迟、丢包、乱序、节流、重发等测试,可能对有的一些测试可以通过专业的测试仪表能够模拟,但是如果再真实的网络环境测试一些网络异常情况下设备的处理情况,通过什么工具能够进行模拟呢?

下面给大家介绍2各种工具:一个是windows系统下的clumsy 另一个是linux系统下的tc网络流量控制工具。

Windows Clumsy工具

Clumsy,是基于C语言开发的一款开源的网络模拟工具,基于windows平台下人工操作不稳定的网络情况,来验证程序或者设备的在极端情况下的处理情况。可以在根据自己PC系统下情况在网上下载clumsy 32位或64位。

下载地址:http://jagt.github.io/clumsy/download.html

Clumsy提供的功能介绍

(1)延迟(Lag):把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况;

(2)丢包(Drop):随机丢弃一些数据;

(3)截流(Throttle):把一小段时间内的数据拦截下来后再在之后的同一时间一同发出去;

(4)重发(Duplicate):随机复制一些数据并与其本身一同发送;

(5)乱序(Out of order):打乱数据包发送的顺序;

(6)篡改(Tamper):随机修改小部分的包裹内容。

工具的使用

👉 presets 设置相应的条件:

支持过滤相应的源目的地址、协议、端口、报文方向(出/入)

👉  设置完presets后会在Filtering 显示过滤条件,根据自己的需要对ip地址、端口等进行修改,可以通过and、or进行条件过滤

👉 功能项参数选项

分别支持延迟、丢包、截流、重发、乱序、篡改。

Inbound/outbound  入或出方向的报文

Delay  延迟的时间

Chance 功能生效的概率

👉 点击clumsy的start 工具就正常运行

Linux TC工具

Netem是linux2.6以上内核版本提供的的一个网络模拟功能模块,该模块能够用来在良好的网络中,模拟复杂的网络传输的性能如低带宽、传输延迟、丢包、乱序等。

TC是linux系统的一个流控工具,来控制netem的工作模式,TC包含三个基本的构成块:队列规定qdisc 、策略控制class类、分类器filter

⏩ Qdisc:用来实现控制网络的收发速度,通过队列可以把网络的数据包缓存起来,然后根据用户的设置进行发送。无类别qdisc队列包含FIFO(先进先出)、RED(随机早期探测)、SFQ(随机公平队列)、TBF(令牌桶)  可分类qdisc基队列包含:CBQ(根据数据流特征进行QOS)、HTB(根据TBF实现带宽限制)、PRIO(对流量进行优先级管理)

⏩ Class:通过设置不同数据类型的数据包的出队列的优先级。

⏩ Filter:对数据包进行分类,然后决定根据何种QDisc进入队列。

Linux网络延迟的命令操作

命令:tc qdisc add/del dev x root netem y

🔹 Add/del 增加或删除相应的过滤条件

🔹 Dev x:表示相应的接口,

🔹 Netem 支持delay(延时)、loss(丢包率)、duplicate(重复包率)、corrupt(错包率)、reorder(乱序)、rate(速率)

延迟的测试情况:

TC的命令可以增加相应的过滤器命令以及相关的查看操作如下:

tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc[ qdisc specific parameters ]
tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specificparameters ]

tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priorityfiltertype [ filtertype specific parameters ] flowid flow-id

tc [-s | -d ] qdisc show [ dev DEV ]

tc [-s | -d ] class show dev DEV

tc filter show dev DEV

以上是两种模拟网络传输质量的工具使用方法,有兴趣了解的可以尝试一下,有问题欢迎沟通交流。

发表评论