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]