如何使用网桥和 qdisc 确定流量的优先级?

如何使用网桥和 qdisc 确定流量的优先级?

我正在尝试优先考虑网络中基于 Linux 的软件桥上的流量。当我在本地(在托管网桥的计算机上)生成流量时,流量的优先级正确。但是,“远程”流量(来自通过网桥的其他节点)没有优先级(对所有发送方分配相同的带宽)。也许有人知道为什么?

针对 I350 网络适配器 (Linux 5.1.8-1-MANJARO #1 SMP PREEMPT Sun Jun 9 20:44:14 UTC 2019 x86_64 GNU/Linux) 的网桥设置如下:

brctl addbr br0
ip link set dev enp1s0f0 promisc on
ip link set dev enp1s0f1 promisc on
ip link set dev enp1s0f2 promisc on
ip link set dev enp1s0f3 promisc on

brctl addif br0 enp1s0f0
brctl addif br0 enp1s0f1
brctl addif br0 enp1s0f2
brctl addif br0 enp1s0f3

ip link set dev br0 up

tc qdisc del dev enp1s0f0  root
tc qdisc add dev enp1s0f0  root prio
tc qdisc del dev enp1s0f1  root
tc qdisc add dev enp1s0f1  root prio
tc qdisc del dev enp1s0f2  root
tc qdisc add dev enp1s0f2  root prio
tc qdisc del dev enp1s0f3  root
tc qdisc add dev enp1s0f3  root prio

ip addr add 192.168.1.1/24 dev br0

UDP 流量是使用 iperf3 并通过适当设置 TOS 字段生成的,例如

Low-Prio Sender: iperf3 -c 192.168.1.140 -u -b 100m -S 0x2 -p 5201 -t 30
Hi-Prio Sender : iperf3 -c 192.168.1.140 -u -b 100m -S 0x0 -p 5202 -t 30

Prio 地图保留默认设置: priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

答案1

与此同时,我已经设法找到解决方案:)

如果您遇到类似的问题,请使用代理 ARP 桥接网络连接(因此强制执行第 3 层)而不是 brctl

您可以在这里找到详细的教程:https://wiki.debian.org/BridgeNetworkConnectionsProxyArp

TOS 允许“在媒体访问控制 (MAC) 级别实现服务质量 (QoS)”https://en.wikipedia.org/wiki/IEEE_802.1Q根据 OSI 模型,此类机制经常被归类为第 2 层https://en.wikipedia.org/wiki/OSI_model

然而,由于 ToS/DSCP 属于 IP 标头,因此它们似乎在第 3 层上处理传入(“远程”)数据

相关内容