标签搜索

Linux下网络模拟弱网环境可行方案

anker
2021-06-27 / 0 评论 / 13 阅读 / 正在检测是否收录...

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

评论 (0)

取消