1 .网络异常的分类
在系统运行过程中,可能会出现各种网络问题。 其中,主要可能出现的问题有:
网络延迟:如果网络信息流过大,设备可能会反应迟缓,导致数据传输延迟;
网络丢包:网络丢包是在数据传输过程中,数据包由于各种原因在通道上丢失的现象;
网络限制:如果数据传输量达到网络带宽上限,则数据包可能在被设备截获后发出。
网络重发(在网络不稳定的情况下,发送侧有可能判断由于分组丢失引起的分组的一部分的重发;
数据顺序混乱(在数据传输中数据包到达接收侧的时间可能不一致,数据包的顺序可能会混乱
数据篡改:在数据传输过程中可能会连接并篡改数据。
2.Windows下网络异常的模拟方法
在Windows中可以使用clumsy进行网络异常的模拟
clumsy首先根据用户选择的过滤器侦听指定的网络数据。 在过滤器中,可以设置感兴趣的协议(tcp/udp )、端口号、要接收的端口还是要发送的端口。 也可以通过简单的逻辑语句进一步缩小范围。 激活clumsy后,将只处理满足这些标准的网络数据,不感兴趣的数据将成功从系统传输。
过滤器的网络包被拦截后,可以选择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 @ localhost network-scripts ] # ifconfig
eno16777736:
flags=4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500
inet 192.168.75.132 net mask 255.255.255.0 broadcast
192.168.75.255
inet 6fe 80:336020 c :29 ff :29 f e7c :8 d 22 prefixlen 64 scope id
0x20link
ether 00:0 c :29:7 c :8 d :22 txqueuelen 1000 (以太网)。
rx packets 19535字节2592045 (2.4 MIB ) )。
rxerrors0dropped0over runs0frame 0
tx packets 31019 bytes 38969412 (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即可。