tc prio 数据包的优先级

tc prio 数据包的优先级

我想使用 tc prio 队列规则按特定顺序调度数据包。我想将数据包以最高优先级发送到目标端口 5555,将数据包以中等优先级发送到目标端口 6666,将所有其他数据包以最低优先级发送到目标端口。我希望根据此而不是基于 TOS 字段进行排序。因此,我定义了 3 个频段,如下所示:

  • tc qdisc 添加 dev eth1 根句柄 1:prio 带 3 priomap 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3
  • tc qdisc 添加 dev eth1 父 1:1 pfifo
  • tc filter add dev eth1 parent 1: 协议 ip prio 1 u32 匹配 ip dport 5555 0xffff flowid 1:1
  • tc qdisc 添加 dev eth1 父 1:2 pfifo
  • tc filter add dev eth1 parent 1: 协议 ip prio 2 u32 匹配 ip dport 6666 0xffff flowid 1:2
  • tc qdisc 添加 dev eth1 父 1:4 pfifo
  • tc 过滤器添加 dev eth1 父级 1:协议 ip prio 3 u32 匹配 ip dst 0.0.0.0/0 flowid 1:3

其中 eth1 是出口接口。

如果不设置 TOS 字段,此方法是否可行?此外,为了进行测试,我使用 iperf 在 100Mbps eth1 接口上以 500M 的速率向端口 8888 发送 UDP 流量,然后当此流量运行时,我开始向端口 5555 发送流量,该端口在 100M 时具有最高优先级。但看起来并不是所有流量都首先通过端口 5555,并且端口 8888 的数据包被丢弃了。

有人能帮助澄清 prio 排队纪律应该如何运作吗?

谢谢,vijaya

相关内容