文档首页> Linux系统> Linux centos 模拟网络丢包与延迟的方法

Linux centos 模拟网络丢包与延迟的方法

发布时间:2022-05-15 18:28        更新时间:2022-12-26 14:18

Linux centos 模拟网络丢包与延迟的方法

模拟丢包
下面命令可以模拟丢包,从 eth0 网口出去的包将随机丢失 3%:

  1. sudo tc qdisc add dev eth0 root netem loss 3%


模拟延迟
下面命令,从 eth0 网口出去的包将延迟 140ms:

  1. sudo tc qdisc add dev eth0 root netem delay 140ms


特定场景下的丢包和延迟
注意,上面我们介绍的命令,是针对整个 eth0 网口起作用的,也就是说,只要是从 eth0 出去的所有的包,都会产生随机丢包或者延迟。但有时候,我们只想让丢包和延迟作用于某个目的地址,那要怎么做呢?

  1. sudo tc qdisc add dev eth0 root handle 1: prio
  2. sudo tc qdisc add dev eth0 parent 1:3 handle 30: netem loss 3% delay 140ms
  3. sudo tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 199.91.72.192 match ip dport 36000 0xffff flowid 1:3


上面的命令,我们告诉 tc,对发往 199.91.72.192:36000 的网络包产生 3% 的丢包和 140ms 的延迟,而发往其它目的地址的网络包将不受影响。

删除规则
好了,模拟完丢包和延迟之后,要记得删除掉规则:

  1. sudo tc qdisc del dev eth0 root