linux下使用tc命令可以快速模拟网络延迟、丢包等情况。
使用以下命令,让网卡
eth0
延迟200 ± 10毫秒,波动概率30%。设置后可用ping
命令测试结果。>tc qdisc add dev eth0 root netem delay 200ms 10ms 30%
其中,
QDisc
(排队规则)是queueing discipline
的简写。netem
是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。tc
命令是流量控制traffic control
的简写。root
是根队列名称。
使用以下命令关闭
>tc qdisc del dev eth0 root
使用以下命令可以让网卡丢包,该命令将
eth0
网卡的传输设置为随机丢掉 1% 的数据包,成功率为 30% 。或者延迟200ms有50%概率波动20ms幅度,丢包率为20%>tc qdisc add dev eth0 root netem loss 1% 30% >tc qdisc add dev ens33 root netem delay 200ms 20ms 50% loss 20%
查看已有规则:
# tc -s qdisc ls dev eth0 qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 467921 bytes 2473 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 # tc qdisc add dev eth0 root netem delay 200ms 10ms 30% # tc -s qdisc ls dev eth0 qdisc netem 8002: root refcnt 2 limit 1000 delay 200.0ms 10.0ms 30% Sent 4743 bytes 47 pkt (dropped 0, overlimits 0 requeues 0) backlog 102b 1p requeues 0
参考以下资料,可进一步研究模拟重复包、坏包、限流支持等:
1. Linux官方TC工具手册
2.Linux官方tc-netem手册
2. TC(Traffic Control)命令—linux自带高级流控
3. 模拟网络延迟、丢包等
4.TC(traffic control)工具在模拟网络异常测试中的应用
评论 (0)