CentOS虚拟机下模拟TCP网络丢包
之前测试项目时想要测试http请求中断无返回等场景下客户端表现,用Fiddler等抓包工具测过,又想能不能在更底层测试下http接口的异常,就想到了http是基于TCP的,那么如果能模拟TCP的网络异常是不是就能达到测试http接口异常的目的了呢?理想很丰满但最终现实是没必要!对,完全没必要!
因为http本身在网络协议中就位于TCP的上层,http协议本身就会对收到的TCP进行高级处理,TCP丢包、乱序、重发 http协议本身都会有相应的约定的方式去处理!所以模拟TCP网络丢包异常等在什么情况下才有测试或研究价值呢?那就是本身有TCP对接协议需求的时候!比如有个新项目是通过TCP与服务器进行通信的,你要测试服务器或客户机在TCP网络发包异常时能不能正常处理或者说约定的TCP协议是否能否抵抗这种异常网络。不管能不能解决网络问题,其实也需要确保TCP协议能结合收发TCP数据包的应用层来解决这些问题!
好,下面模拟TCP异常的方法网上教程一堆,我就CV小改了一下
- 查看ip地址及对应接口
ifconfig命令查询,ip地址是192.168.204.128 接口ens33(记住这个ens33,你的可能不一样)

接口enss33模拟延迟1000ms |
tc qdisc add dev ens33 root netem delay 1000ms |

查看流量管理:tc qdisc show

删除策略:sudo tc qdisc del dev ens33 root netem

模拟延迟波动:
# tc qdisc add dev ens33 root netem delay 100ms 10ms
该命令将 ens33 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送。 还可以更进一步加强这种波动的随机性
修改丢包率 |
修改丢包率:tc qdisc add dev ens33 root netem loss 10% 删除策略:tc qdisc del dev ens33 root netem |

网络丢包成功率: # tc qdisc add dev ens33 root netem loss 10% 90% 该命令将 ens33 网卡的传输设置为随机丢掉 10% 的数据包,成功率为 90% 模拟包重复: # tc qdisc add dev ens33 root netem duplicate 1% 该命令将 ens33 网卡的传输设置为随机产生 1% 的重复数据包 模拟包损坏: # tc qdisc add dev ens33 root netem corrupt 0.2% 该命令将 ens33 网卡的传输设置为随机产生 0.2% 的损坏的数据包 。 (内核版本需在 2.6.16 以上) 模拟包乱序(貌似不能用): # tc qdisc change dev ens33 root netem delay 10ms reorder 25% 50% 该命令将 ens33 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟10 秒。 新版本中,如下命令也会在一定程度上打乱发包的次序:# tc qdisc add dev ens33 root netem delay 100ms 10ms 查看网卡配置: # tc qdisc show dev ens33 该命令将 查看并显示 ens33 网卡的相关传输配置 查看丢包率: # tc -s qdisc show dev ens33
基于互联网精神,在注明出处的前提下本站文章可自由转载!
本文链接:https://ranjuan.cn/centos-mock-tcp-error/
赞赏
微信赞赏
支付宝赞赏
发表评论