如何使用tc netem模拟数据包丢失?

时间:2018-10-19 22:54:45

标签: filter controls network-traffic

我正在尝试使用服务器端口1234上的tc工具模拟5%的数据包丢失。这是我的步骤-

sudo tc qdisc del dev eth0 root
sudo tc qdisc add dev eth0 root handle 1: prio
sudo tc filter add dev eth0 parent 1: protocol ip prio 1 u32 flowid 1:1 match ip dport 1234 0xffff
sudo tc qdisc add dev eth0 parent 1:1 handle 1: netem loss 5%

以上命令期间没有错误。但是,当我将任何TCP通信发送到该端口时,没有观察到数据包丢失。 我在上述命令中做错了什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

有关类似情况,请参见https://serverfault.com/a/841865/342799

我在测试设备中拥有的命令可以丢弃5.5%的数据包:

# tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
# tc qdisc add dev eth0 parent 1:1 handle 10: netem loss 5.5% 25%
# DST_IP=1.2.3.4/32
# tc filter add \
  dev eth0 \
  parent 1: \
  protocol ip \
  prio 1 \
  u32 \
    match ip dst $DST_IP \
  flowid 1:1

要确认,请运行:

# ping -f -c 1000 $DST_IP

此设置之前和之后。

注意:如果您进行大量的ping通,几乎所有托管服务提供商都会开始限制您的流量。