Page MenuHomeVyOS Platform

QoS test cannot pass for 1.3
Closed, ResolvedPublicBUG

Description

QoS configuration test cannot pass for 1.3

Local VM test

vyos@r1#              commit
[ traffic-policy shaper FS ]
Interface eth0 speed cannot be determined (assuming 10mbit)

[ traffic-policy shaper M2 ]
Interface eth1 speed cannot be determined (assuming 10mbit)
Error: TC classifier not found.
We have an error talking to the kernel
Command failed -:11
Interface eth1 speed cannot be determined (assuming 10mbit)
TC command failed. at /opt/vyatta/sbin/vyatta-qos.pl line 236.
qdisc add dev eth1 handle 1:0 root dsmark indices 16 default_index 11 set_tc_index
class change dev eth1 classid 1:b dsmark mask 0xff value 0
class change dev eth1 classid 1:a dsmark mask 0 value 160
filter add dev eth1 parent 1: prio 1 protocol all u32 match ip dsfield 128 0xff flowid 1:a
qdisc add dev eth1 parent 1:1 handle 11: htb r2q 10 default b
class add dev eth1 parent 11: classid 11:1 htb rate 10000000
class add dev eth1 parent 11:1 classid 11:b htb rate 10000000 burst 15k
qdisc add dev eth1 parent 11:b sfq
class add dev eth1 parent 11:1 classid 11:a htb rate 10000000 burst 15k
qdisc add dev eth1 parent 11:a sfq
filter add dev eth1 parent 11: protocol ip prio 1 handle 128 tcindex classid 11:a

[[traffic-policy]] failed
[ interfaces ethernet eth2 traffic-policy out MY-HTB ]
Error: TC classifier not found.
We have an error talking to the kernel
Command failed -:21
TC command failed. at /opt/vyatta/sbin/vyatta-qos.pl line 236.
qdisc add dev eth2 handle 1:0 root dsmark indices 64 default_index 51 set_tc_index
class change dev eth2 classid 1:33 dsmark mask 0 value 32
class change dev eth2 classid 1:1e dsmark mask 0xff value 0
filter add dev eth2 parent 1: prio 1 protocol all u32 match ip src 10.1.1.0/24 flowid 1:1e
class change dev eth2 classid 1:28 dsmark mask 0xff value 0
filter add dev eth2 parent 1: prio 1 protocol all u32 match ip dsfield 128 0xff match ip src 10.2.1.0/24 flowid 1:28
class change dev eth2 classid 1:32 dsmark mask 0 value 224
filter add dev eth2 parent 1: prio 1 protocol all u32 match ip dsfield 160 0xff flowid 1:32
qdisc add dev eth2 parent 1:1 handle 41: htb r2q 10 default 33
class add dev eth2 parent 41: classid 41:1 htb rate 10000000
class add dev eth2 parent 41:1 classid 41:33 htb rate 1000000 ceil 10000000 burst 15k prio 7
qdisc add dev eth2 parent 41:33 sfq
class add dev eth2 parent 41:1 classid 41:1e htb rate 1000000 ceil 5000000 burst 15k prio 5
qdisc add dev eth2 parent 41:1e sfq
filter add dev eth2 parent 41: prio 1 protocol all u32 match ip src 10.1.1.0/24 flowid 41:1e
class add dev eth2 parent 41:1 classid 41:28 htb rate 9000000 ceil 10000000 burst 15k prio 5
qdisc add dev eth2 parent 41:28 sfq
filter add dev eth2 parent 41: prio 2 protocol all u32 match ip dsfield 128 0xff match ip src 10.2.1.0/24 flowid 41:28
class add dev eth2 parent 41:1 classid 41:32 htb rate 10000000 burst 15k
qdisc add dev eth2 parent 41:32 sfq
filter add dev eth2 parent 41: protocol ip prio 3 handle 160 tcindex classid 41:32

[[interfaces ethernet eth2 traffic-policy out]] failed
[ interfaces ethernet eth1 traffic-policy out M2 ]
Interface eth1 speed cannot be determined (assuming 10mbit)
Error: TC classifier not found.
We have an error talking to the kernel
Command failed -:11
Interface eth1 speed cannot be determined (assuming 10mbit)
TC command failed. at /opt/vyatta/sbin/vyatta-qos.pl line 236.
qdisc add dev eth1 handle 1:0 root dsmark indices 16 default_index 11 set_tc_index
class change dev eth1 classid 1:b dsmark mask 0xff value 0
class change dev eth1 classid 1:a dsmark mask 0 value 160
filter add dev eth1 parent 1: prio 1 protocol all u32 match ip dsfield 128 0xff flowid 1:a
qdisc add dev eth1 parent 1:1 handle 11: htb r2q 10 default b
class add dev eth1 parent 11: classid 11:1 htb rate 10000000
class add dev eth1 parent 11:1 classid 11:b htb rate 10000000 burst 15k
qdisc add dev eth1 parent 11:b sfq
class add dev eth1 parent 11:1 classid 11:a htb rate 10000000 burst 15k
qdisc add dev eth1 parent 11:a sfq
filter add dev eth1 parent 11: protocol ip prio 1 handle 128 tcindex classid 11:a

[[interfaces ethernet eth1 traffic-policy out]] failed
[ interfaces ethernet eth0 traffic-policy out FS ]
Interface eth0 speed cannot be determined (assuming 10mbit)

Commit failed
[edit]
vyos@r1#

CI

08:04:48  DEBUG - ======================================================================
08:04:48  DEBUG - FAIL: test_qos_basic (__main__.TestConfigQosBasic)
08:04:48  DEBUG - ----------------------------------------------------------------------
08:04:48  DEBUG - Traceback (most recent call last):
08:04:48  DEBUG -   File "/usr/bin/vyos-configtest", line 50, in test_config_load
08:04:48  DEBUG -     self.session.commit()
08:04:48  DEBUG - vyos.configsession.ConfigSessionError: [ traffic-policy shaper FS ]
08:04:48  DEBUG - Interface eth0 speed cannot be determined (assuming 10mbit)
08:04:48  DEBUG - 
08:04:48  DEBUG - [ traffic-policy shaper M2 ]
08:04:48  DEBUG - Interface eth1 speed cannot be determined (assuming 10mbit)
08:04:48  DEBUG - Error: TC classifier not found.
08:04:48  DEBUG - We have an error talking to the kernel
08:04:48  DEBUG - Command failed -:11
08:04:48  DEBUG - Interface eth1 speed cannot be determined (assuming 10mbit)
08:04:48  DEBUG - TC command failed. at /opt/vyatta/sbin/vyatta-qos.pl line 236.
08:04:48  DEBUG - qdisc add dev eth1 handle 1:0 root dsmark indices 16 default_index 11 set_tc_index
08:04:48  DEBUG - class change dev eth1 classid 1:b dsmark mask 0xff value 0
08:04:48  DEBUG - class change dev eth1 classid 1:a dsmark mask 0 value 160
08:04:48  DEBUG - filter add dev eth1 parent 1: prio 1 protocol all u32 match ip dsfield 128 0xff flowid 1:a
08:04:48  DEBUG - qdisc add dev eth1 parent 1:1 handle 11: htb r2q 10 default b
08:04:48  DEBUG - class add dev eth1 parent 11: classid 11:1 htb rate 10000000
08:04:48  DEBUG - class add dev eth1 parent 11:1 classid 11:b htb rate 10000000 burst 15k
08:04:48  DEBUG - qdisc add dev eth1 parent 11:b sfq
08:04:48  DEBUG - class add dev eth1 parent 11:1 classid 11:a htb rate 10000000 burst 15k
08:04:48  DEBUG - qdisc add dev eth1 parent 11:a sfq
08:04:48  DEBUG - filter add dev eth1 parent 11: protocol ip prio 1 handle 128 tcindex classid 11:a
08:04:48  DEBUG - 
08:04:48  DEBUG - [[traffic-policy]] failed
08:04:48  DEBUG - [ interfaces ethernet eth2 traffic-policy out MY-HTB ]
08:04:48  DEBUG - Error: TC classifier not found.
08:04:48  DEBUG - We have an error talking to the kernel
08:04:48  DEBUG - Command failed -:21
08:04:48  DEBUG - TC command failed. at /opt/vyatta/sbin/vyatta-qos.pl line 236.
08:04:48  DEBUG - qdisc add dev eth2 handle 1:0 root dsmark indices 64 default_index 51 set_tc_index
08:04:48  DEBUG - class change dev eth2 classid 1:33 dsmark mask 0 value 32
08:04:48  DEBUG - class change dev eth2 classid 1:1e dsmark mask 0xff value 0
08:04:48  DEBUG - filter add dev eth2 parent 1: prio 1 protocol all u32 match ip src 10.1.1.0/24 flowid 1:1e
08:04:48  DEBUG - class change dev eth2 classid 1:28 dsmark mask 0xff value 0
08:04:48  DEBUG - filter add dev eth2 parent 1: prio 1 protocol all u32 match ip dsfield 128 0xff match ip src 10.2.1.0/24 flowid 1:28
08:04:48  DEBUG - class change dev eth2 classid 1:32 dsmark mask 0 value 224
08:04:48  DEBUG - filter add dev eth2 parent 1: prio 1 protocol all u32 match ip dsfield 160 0xff flowid 1:32
08:04:48  DEBUG - qdisc add dev eth2 parent 1:1 handle 41: htb r2q 10 default 33
08:04:48  DEBUG - class add dev eth2 parent 41: classid 41:1 htb rate 10000000
08:04:48  DEBUG - class add dev eth2 parent 41:1 classid 41:33 htb rate 1000000 ceil 10000000 burst 15k prio 7
08:04:48  DEBUG - qdisc add dev eth2 parent 41:33 sfq
08:04:48  DEBUG - class add dev eth2 parent 41:1 classid 41:1e htb rate 1000000 ceil 5000000 burst 15k prio 5
08:04:48  DEBUG - qdisc add dev eth2 parent 41:1e sfq
08:04:48  DEBUG - filter add dev eth2 parent 41: prio 1 protocol all u32 match ip src 10.1.1.0/24 flowid 41:1e
08:04:48  DEBUG - class add dev eth2 parent 41:1 classid 41:28 htb rate 9000000 ceil 10000000 burst 15k prio 5
08:04:48  DEBUG - qdisc add dev eth2 parent 41:28 sfq
08:04:48  DEBUG - filter add dev eth2 parent 41: prio 2 protocol all u32 match ip dsfield 128 0xff match ip src 10.2.1.0/24 flowid 41:28
08:04:48  DEBUG - class add dev eth2 parent 41:1 classid 41:32 htb rate 10000000 burst 15k
08:04:48  DEBUG - qdisc add dev eth2 parent 41:32 sfq
08:04:48  DEBUG - filter add dev eth2 parent 41: protocol ip prio 3 handle 160 tcindex classid 41:32
08:04:48  DEBUG - 
08:04:48  DEBUG - [[interfaces ethernet eth2 traffic-policy out]] failed
08:04:48  DEBUG - [ interfaces ethernet eth1 traffic-policy out M2 ]
08:04:48  DEBUG - Interface eth1 speed cannot be determined (assuming 10mbit)
08:04:48  DEBUG - Error: TC classifier not found.
08:04:48  DEBUG - We have an error talking to the kernel
08:04:48  DEBUG - Command failed -:11
08:04:48  DEBUG - Interface eth1 speed cannot be determined (assuming 10mbit)
08:04:48  DEBUG - TC command failed. at /opt/vyatta/sbin/vyatta-qos.pl line 236.
08:04:48  DEBUG - qdisc add dev eth1 handle 1:0 root dsmark indices 16 default_index 11 set_tc_index
08:04:48  DEBUG - class change dev eth1 classid 1:b dsmark mask 0xff value 0
08:04:48  DEBUG - class change dev eth1 classid 1:a dsmark mask 0 value 160
08:04:48  DEBUG - filter add dev eth1 parent 1: prio 1 protocol all u32 match ip dsfield 128 0xff flowid 1:a
08:04:48  DEBUG - qdisc add dev eth1 parent 1:1 handle 11: htb r2q 10 default b
08:04:48  DEBUG - class add dev eth1 parent 11: classid 11:1 htb rate 10000000
08:04:48  DEBUG - class add dev eth1 parent 11:1 classid 11:b htb rate 10000000 burst 15k
08:04:48  DEBUG - qdisc add dev eth1 parent 11:b sfq
08:04:48  DEBUG - class add dev eth1 parent 11:1 classid 11:a htb rate 10000000 burst 15k
08:04:48  DEBUG - qdisc add dev eth1 parent 11:a sfq
08:04:48  DEBUG - filter add dev eth1 parent 11: protocol ip prio 1 handle 128 tcindex classid 11:a
08:04:48  DEBUG - 
08:04:48  DEBUG - [[interfaces ethernet eth1 traffic-policy out]] failed
08:04:48  DEBUG - [ interfaces ethernet eth0 traffic-policy out FS ]
08:04:48  DEBUG - Interface eth0 speed cannot be determined (assuming 10mbit)
08:04:48  DEBUG - 
08:04:48  DEBUG - Commit failed
08:04:48  DEBUG - 
08:04:48  DEBUG - 
08:04:48  DEBUG - During handling of the above exception, another exception occurred:
08:04:48  DEBUG - 
08:04:48  DEBUG - Traceback (most recent call last):
08:04:48  DEBUG -   File "/usr/bin/vyos-configtest", line 53, in test_config_load
08:04:48  DEBUG -     self.fail()
08:04:48  DEBUG - AssertionError: None
08:04:48  DEBUG - 
08:04:48  DEBUG - ----------------------------------------------------------------------
08:04:48  DEBUG - Ran 16 tests in 942.149s
08:04:48  DEBUG - 
08:04:48  DEBUG - FAILED (failures=1)
08:04:48  DEBUG - vyos@vyos:~$ echo EXITCODE:$?
08:04:48  DEBUG - echo EXITCODE:$?
08:04:48  ERROR - Configtest failed :/ - check debug output
08:04:48  ERROR - Unknown error occured while VyOS!

To reproduce:

set traffic-policy shaper M2 bandwidth 'auto'
set traffic-policy shaper M2 class 10 bandwidth '100%'
set traffic-policy shaper M2 class 10 burst '15k'
set traffic-policy shaper M2 class 10 match ADDRESS10 ip dscp 'CS4'
set traffic-policy shaper M2 class 10 queue-type 'fair-queue'
set traffic-policy shaper M2 class 10 set-dscp 'CS5'
set traffic-policy shaper M2 default bandwidth '10mbit'
set traffic-policy shaper M2 default burst '15k'
set traffic-policy shaper M2 default queue-type 'fair-queue'
set interfaces ethernet eth1 traffic-policy out 'M2'
commit

Details

Difficulty level
Hard (possibly days)
Version
VyOS 1.3-stable-202304260442
Why the issue appeared?
Issues in third-party code
Is it a breaking change?
Perfectly compatible
Issue type
Bug (incorrect behavior)

Related Objects

Event Timeline

Viacheslav updated the task description. (Show Details)
Viacheslav edited projects, added VyOS 1.3 Equuleus (1.3.3); removed VyOS 1.4 Sagitta.

this is cause by

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.4.235&id=7a6fb69bbcb21e9ce13bdf18c008c268874f0480

tcindex classifier is removed by upstream kernel, so

08:04:48 DEBUG - filter add dev eth1 parent 11: protocol ip prio 1 handle 128 tcindex classid 11:a

fails.

Reverted Kernel back to 5.4.234 for upcoming 1.3.3. release.

c-po changed the task status from Open to In progress.May 12 2023, 5:29 AM
c-po changed Difficulty level from Unknown (require assessment) to Hard (possibly days).
c-po changed Why the issue appeared? from Will be filled on close to Issues in third-party code.
c-po changed Is it a breaking change? from Unspecified (possibly destroys the router) to Perfectly compatible.
In T5186#148559, @c-po wrote:

Reverted Kernel back to 5.4.234 for upcoming 1.3.3. release.

Is it the same bug as T5048 ?

In T5186#148559, @c-po wrote:

Reverted Kernel back to 5.4.234 for upcoming 1.3.3. release.

Is it the same bug as T5048 ?

Nope - it's a different software train (QoS migrated from Perl to Python)