I'm trying to prioritize traffic over the Linux-based software bridge in my network. When I generate traffic locally (on the machine hosting the bridge), the traffic is correctly prioritized. However, the "remote" traffic (from other nodes passing through the bridge) is not prioritized (same bandwidth distribution to all senders). Maybe someone knows why?
Bridge is set up as follows for the I350 network adapter (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 traffic is generated with iperf3 and by setting the TOS field appropriately e.g.
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 map is left with default settings: priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Prioritization works for remote traffic if I explicitly classify the traffic:
tc filter add dev enp1s0f1 parent 1: protocol ip prio 10 u32 match ip dst 192.168.1.140 match ip dport 5201 0xffff flowid 1:1
tc filter add dev enp1s0f1 parent 1: protocol ip prio 20 u32 match ip dst 192.168.1.140 match ip dport 5202 0xffff flowid 1:2
but not with default settings.... Maybe it is a Layer 2/ Layer 3 issue?