Page MenuHomeVyOS Platform

QoS settings does not support multi-queue interfaces
Open, NormalPublicBUG

Description

Hello,

I noticed that the QoS configuration do not adapt "tc qdisc" settings for multi-queued interfaces.
For example, in my setup I have eth0 with 2 hardware queues:

admin@vyos:~$ ethtool -l eth0
Channel parameters for eth0:
Pre-set maximums:
RX:		n/a
TX:		n/a
Other:		n/a
Combined:	2
Current hardware settings:
RX:		n/a
TX:		n/a
Other:		n/a
Combined:	2

By default, vyos/linux automatically configure multi-queued interfaces with the mq qdisc as root qdisc and creates a number of child qdiscs (in my case 2):

admin@vyos:~$ tc qdisc show dev eth0
qdisc mq 0: root 
qdisc pfifo 0: parent :2 limit 1000p
qdisc pfifo 0: parent :1 limit 1000p

The problem I noticed is that if I change the qdisc in VyOS, it replaces the root qdisc on a multi-queued interface, when it actually should change the child qdiscs.

admin@vyos:~$ show configuration commands | match qos
set qos interface eth0 egress 'CAKE'
set qos policy cake CAKE
admin@vyos:~$ tc qdisc show dev eth0
qdisc cake 1: root refcnt 3 bandwidth unlimited diffserv3 triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0

Details

Version
1.5-stream-2025-Q2
Is it a breaking change?
Behavior change
Issue type
Bug (incorrect behavior)