悠哉杂学 - 网络测试
type: channel
link: https://uinit.cn/index.php/tag/网络测试/
items: 网络异常模拟测试工具

网络异常模拟测试工具
type: item
date: 2021-06-24T19:31:00+08:00
description: 1.网络异常的分类在系统的运行过程中，可能会遇到各种各样的网络问题，其中主要可能出现的问题有网络延迟：当网络信息流过大时，可能导致设备反应缓慢，造成数据传输延迟；网路掉包：网路掉包是在数据传输的过程中，数据包由于各种原因在信道中丢失的现象；网络节流：当数据传输量达到网络带宽上限时，数据包可能会被设备拦截下来在之后发出；网络重发：当网络不稳定是可能会导致发送端判断数据包丢失导致部分数据包重发；数据乱序：当数据传输有可能出现数据包到达接收端时间不一致，导致数据包乱序问题；数据篡改：数据传输的过程中可能出现数据被连接篡改的情况。2.Windows下网络异常的模拟方法Windows下可以使用clumsy来进行网络异常的模拟clumsy 首先根据用户选择的 filter 来拦截指定的网络数据。在 filter 中可以设定你感兴趣的协议(tcp/udp)，端口号，是接收还是发出的端口。你也可以通过简单的逻辑语句来进一步缩小范围。当 clumsy 被激活时，只有符合这些标准的网络数据会被进行处理，而你不感兴趣的数据仍然会由系统正常传输。当被 filter 的网络数据包被拦截后，你可以选择clumsy 提供的功能来有目的性的调整网络情况：延迟(Lag)，把数据包缓存一段时间后再发出，这样能够模拟网络延迟的状况。掉包(Drop)，随机丢弃一些数据。节流(Throttle)，把一小段时间内的数据拦截下来后再在之后的同一时间一同发出去。重发(Duplicate)，随机复制一些数据并与其本身一同发送。乱序(Out of order)，打乱数据包发送的顺序。篡改(Tamper)，随机修改小部分的包裹内容。在测试时，该工具的filtering使用默认即可，Presets选择localhost ipv4 all，然后配置相应的功能单击start按钮，等待按钮变成stop以及按钮旁边出现小绿点时，工具则启用成功。比如使用工具模拟网路延时，网络延时3000ms还可以使用工具模拟网络掉包，随机将10%的数据包丢弃再比如使用工具模拟网络节流，将10%的数据节流1000ms、使用工具模拟网络重发，将10%的数据集重发两次、使用工具模拟网络乱序，将10%的数据乱序、使用工具模拟网络篡改，篡改10%的数据。测试的过程中可以检查业务处理是否正确，比如检查数据库数据是否正确，数据库与文件库是否一致，文件库是否出现较多的垃圾文件，垃圾文件是否有清理机制等等。3.Linux下的网络异常模拟方法netem是Linux2.6及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中，模拟出复杂的互联网传输性能，诸如低宽带，传输延迟，丢包等等情况。使用Liunx 2.6（或以上）版本内核的很多发行版Linux都开启了该内核功能，比如Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian等等。tc是Linux系统中的一个工具，全名为traffic control（流量控制）。tc可以用来控制netem的工作模式，也就是说，如果想使用netem，需要至少两个条件，一个是内核中的netem功能被包含，另一个是要有tc。模拟网络异常方法：1、首先查看网卡，可使用ipconfig命令查看[root@localhostnetwork-scripts]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.75.132 netmask 255.255.255.0 broadcast 192.168.75.255 inet6fe80::20c:29ff:fe7c:8d22 prefixlen 64 scopeid 0x20 ether 00:0c:29:7c:8d:22 txqueuelen 1000 (Ethernet) RX packets 19535 bytes2592045 (2.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 31019 bytes38969412 (37.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 红字表明的就是网卡的设备号 2、模拟网络异常可通过以下命令，其中eth0可根据自己的网卡设备号进行替换：网络延迟 tc qdisc add dev etho rootnetem delay 100ms 该命令将eth0网卡的传输设置为延迟100毫秒发送。 模拟更真实的情况，延迟值可能会有一定的波动性，可以使用以下命令来模拟 Tc qdisc add dev…