qos classes of type "default" are not being setup with the configured queuing discipline.
Bug recreation (variation: no classes)
vyos@vyos# set qos policy shaper TEST bandwidth 777mbit [edit] vyos@vyos# set qos policy shaper TEST default bandwidth 333mbit [edit] vyos@vyos# set qos interface eth1 egress TEST [edit] vyos@vyos# commit DEBUG/QoS: tc qdisc replace dev eth1 root handle 1: htb r2q 485 default 1 DEBUG/QoS: tc class replace dev eth1 parent 1: classid 1:1 htb rate 777000000 DEBUG/QoS: tc class replace dev eth1 parent 1:1 classid 1:1 htb rate 333000000 burst 15k quantum 1514 prio 20 DEBUG/QoS: tc qdisc replace dev eth1 parent 1:1 sfq {'bandwidth': '777mbit', 'default': {'bandwidth': '333mbit', 'burst': '15k', 'codel_quantum': '1514', 'flows': '1024', 'interval': '100', 'priority': '20', 'queue_type': 'fq-codel', 'target': '5'}} [edit] vyos@vyos# tc qdisc show dev eth1 qdisc htb 1: root refcnt 2 r2q 485 default 0x1 direct_packets_stat 0 direct_qlen 1000 qdisc sfq 8001: parent 1:1 limit 127p quantum 1514b depth 127 divisor 1024 [edit]
Bug recreation (variation: with classes)
vyos@vyos# set qos policy shaper TEST class 42 bandwidth 42mbit [edit] vyos@vyos# commit DEBUG/QoS: tc qdisc replace dev eth1 root handle 1: htb r2q 485 default 2b DEBUG/QoS: tc class replace dev eth1 parent 1: classid 1:1 htb rate 777000000 DEBUG/QoS: tc class replace dev eth1 parent 1:1 classid 1:2a htb rate 42000000 burst 15k quantum 1514 DEBUG/QoS: tc qdisc replace dev eth1 parent 1:2a sfq DEBUG/QoS: tc class replace dev eth1 parent 1:1 classid 1:2b htb rate 333000000 burst 15k quantum 1514 prio 20 DEBUG/QoS: tc qdisc replace dev eth1 parent 1:2b sfq {'bandwidth': '777mbit', 'class': {'42': {'bandwidth': '42mbit', 'burst': '15k', 'codel_quantum': '1514', 'flows': '1024', 'interval': '100', 'queue_type': 'fq-codel', 'target': '5'}}, 'default': {'bandwidth': '333mbit', 'burst': '15k', 'codel_quantum': '1514', 'flows': '1024', 'interval': '100', 'priority': '20', 'queue_type': 'fq-codel', 'target': '5'}} DEBUG/QoS: tc qdisc replace dev eth1 parent 1:2a fq_codel quantum 1514 flows 1024 interval 100 interval 100 target 5 DEBUG/QoS: tc filter replace dev eth1 parent 1: protocol all basic flowid 1:2a [edit] vyos@vyos# tc qdisc show dev eth1 qdisc htb 1: root refcnt 2 r2q 485 default 0x2b direct_packets_stat 0 direct_qlen 1000 qdisc sfq 8003: parent 1:2b limit 127p quantum 1514b depth 127 divisor 1024 qdisc fq_codel 8004: parent 1:2a limit 10240p flows 1024 quantum 1514 target 4us interval 99us memory_limit 32Mb ecn drop_batch 64 [edit]
This variant correctly configures the class '10' but not 'default'
Bug recreation (variation: with part of T5295 reverted + no classes)
# if 'default' in config: if 'class' in config: class_id_max = self._get_class_max_id(config) default_cls_id = int(class_id_max) +1 self._build_base_qdisc(config['default'], default_cls_id) #
vyos@vyos# commit DEBUG/QoS: tc qdisc replace dev eth1 root handle 1: htb r2q 485 default 1 DEBUG/QoS: tc class replace dev eth1 parent 1: classid 1:1 htb rate 777000000 DEBUG/QoS: tc class replace dev eth1 parent 1:1 classid 1:1 htb rate 333000000 burst 15k quantum 1514 prio 20 DEBUG/QoS: tc qdisc replace dev eth1 parent 1:1 sfq {'bandwidth': '777mbit', 'default': {'bandwidth': '333mbit', 'burst': '15k', 'codel_quantum': '1514', 'flows': '1024', 'interval': '100', 'priority': '20', 'queue_type': 'fq-codel', 'target': '5'}} [edit] vyos@vyos# tc qdisc show dev eth1 qdisc htb 1: root refcnt 2 r2q 485 default 0x1 direct_packets_stat 0 direct_qlen 1000 qdisc sfq 8001: parent 1:1 limit 127p quantum 1514b depth 127 divisor 1024 [edit]
Expected behavior (needed variation: with part of T5295 reverted + with classes)
vyos@vyos# set qos policy shaper TEST class 88 bandwidth 88mbit [edit] vyos@vyos# commit DEBUG/QoS: tc qdisc replace dev eth1 root handle 1: htb r2q 485 default 59 DEBUG/QoS: tc class replace dev eth1 parent 1: classid 1:1 htb rate 777000000 DEBUG/QoS: tc class replace dev eth1 parent 1:1 classid 1:58 htb rate 88000000 burst 15k quantum 1514 DEBUG/QoS: tc qdisc replace dev eth1 parent 1:58 sfq DEBUG/QoS: tc class replace dev eth1 parent 1:1 classid 1:59 htb rate 333000000 burst 15k quantum 1514 prio 20 DEBUG/QoS: tc qdisc replace dev eth1 parent 1:59 sfq {'bandwidth': '777mbit', 'class': {'88': {'bandwidth': '88mbit', 'burst': '15k', 'codel_quantum': '1514', 'flows': '1024', 'interval': '100', 'queue_type': 'fq-codel', 'target': '5'}}, 'default': {'bandwidth': '333mbit', 'burst': '15k', 'codel_quantum': '1514', 'flows': '1024', 'interval': '100', 'priority': '20', 'queue_type': 'fq-codel', 'target': '5'}} DEBUG/QoS: tc qdisc replace dev eth1 parent 1:58 fq_codel quantum 1514 flows 1024 interval 100 interval 100 target 5 DEBUG/QoS: tc filter replace dev eth1 parent 1: protocol all basic flowid 1:58 DEBUG/QoS: tc qdisc replace dev eth1 parent 1:59 fq_codel quantum 1514 flows 1024 interval 100 interval 100 target 5 [edit] vyos@vyos# tc qdisc show dev eth1 qdisc htb 1: root refcnt 2 r2q 485 default 0x59 direct_packets_stat 0 direct_qlen 1000 qdisc fq_codel 8005: parent 1:59 limit 10240p flows 1024 quantum 1514 target 4us interval 99us memory_limit 32Mb ecn drop_batch 64 qdisc fq_codel 8004: parent 1:58 limit 10240p flows 1024 quantum 1514 target 4us interval 99us memory_limit 32Mb ecn drop_batch 64 [edit]