1、网络异常的分类

          在系统的运行过程中,可能会遇到各种各样的网络问题,其中主要可能出现的问题有

          网络延迟:当网络信息流过大时,可能导致设备反应缓慢,造成数据传输延迟;

          网络掉包:网络掉包是在数据传输的过程中,数据包由于各种原因在信道中丢失的现象;

          网络节流:当数据传输量达到网络带宽上限时,数据包可能会被设备拦截下来之后发出;

          网络重发:当网络不稳定时可能会导致发送端判断数据包丢失导致部分数据包重发;

          数据乱序:当数据传输有可能出现数据包到达接收端时间不一致,导致数据包乱序问题;

          数据篡改:数据传输的过程中可能出现数据被连接篡改的情况。

2、Windows下网络异常的模拟方法

          windows下可以使用clumsy来进行网络异常的模拟

          clumsy首先根据用户选择的filter来拦截指定的网络数据。在filter中可以设定你感兴趣的协议(tcp/udp),端口号,是接收还是发出的端口,你也可以通过简单的逻辑语句来进一步缩小范围。当clumsy被激活时,只有符合这些标准的网络数据会被进行处理,而你不感兴趣的数据仍然会由系统正常传输。

         当被filter的网络数据包被拦截后,你可以选择clumsy提供的功能来有目的性的调整网络情况:

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

         节流(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<link>

                   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 eth0 root netem delay 100ms 10ms

                      该命令将eth0网卡的传输设置为延迟100ms ±  10ms(90~110ms之间的任意值)发送

                网络丢包

                       tc qdisc add dev eth0 root netem loss 1%

                       该命令将eth0网卡的传输设置为随机丢掉1%的数据包

                数据包重复

                       tc qdisc add dev eth0 root netem duplicate 1%

                       该命令将eth0网卡的传输设置为随机产生1%的重复数据包。

                数据包损坏

                       tc qdisc add dev eth0 root netem corrupt 0.2%

                       该命令将eth0网卡的传输设置为随机产生0.2%的损坏的数据包。

                 数据包乱序

                       tc  qdisc change dev eth0 root netem delay 10ms reorder 25% 50%

                       该命令将eth0网卡的传输设置为:有25%的数据包(50%相关)会被立即发送,其他的延迟10秒。

                查看已经配置的网络条件

                       tc qdisc show dev eth0z

                        如果需要删除已配置的条件,则将以上命令中的add更改为del即可。

  

转载自微信公众号:gloryroadtrain