Creating QoS filters based on a mark seems to have been broken sometime between the releases of 1.4.0-epa2 and 1.4.0-epa3.
In EPA3, when matching on a mark, the tc filter is not created:
Test config:
set qos interface eth1 egress 'test' set qos policy shaper test class 10 bandwidth '3mbit' set qos policy shaper test class 10 description 'test2' set qos policy shaper test class 10 match Netflix_shape description 'NF' set qos policy shaper test class 10 match Netflix_shape mark '51' set qos policy shaper test default bandwidth '100%' set qos policy shaper test default burst '15k' set qos policy shaper test default queue-type 'fq-codel' set qos policy shaper test description 'test1'
1.4.0-epa2:
l0crian@NPB7# run show ver | match Version: Version: VyOS 1.4.0-epa2 l0crian@NPB7# sudo tc filter show dev eth1 filter parent 1: protocol all pref 1 fw chain 0 filter parent 1: protocol all pref 1 fw chain 0 handle 0x33 classid 1:a action order 1: police 0x1 rate 3Mbit burst 15Kb mtu 2Kb action reclassify overhead 0b ref 1 bind 1
1.4.0-epa3 (and rolling)
l0crian@R86S# run show version | match Version: Version: VyOS 1.4.0-epa3 l0crian@R86S# sudo tc filter show dev eth1 [edit] ################################################# vyos@vyos# run show version | match Version: Version: VyOS 1.5-rolling-202405121403 vyos@vyos# sudo tc filter show dev eth1 [edit]
Additionally, filtering on ether may never have been implemented in code. It does not create filter entries for any version I tested from 1.4 through rolling.