Hello mates
This is another day i'm trying to resolve this issue related to ingress QoS.
What you did that make the problem appear.
We using OpenStack Neutron + OVS to add connectivity for our instances and we have to add QoS which handled by OVS. Our actions are to create QoS policy with ingress/egress rules with type bandwidth-limit but ingress QoS isn't working at all. Looking back to our normally working cluster i've noticed about linux interface options difference. In normally working environment all of our instances interfaces have next options:
$ tc class show dev tap15614faf-92
class htb 1:1 parent 1:fffe prio 0 rate 12Kbit ceil 102400Kbit burst 1563b cburst 1561b
class htb 1:fffe root rate 102400Kbit ceil 102400Kbit burst 1497b cburst 1497b
But another cluster have issue with noqueue option assigned to instance interfaces
tapf3690fb2-dd: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system
$ tc qdisc show dev tapf3690fb2-dd
qdisc noqueue 8004: root refcnt 2
qdisc ingress ffff: parent ffff:fff1 ----------------
$ tc class show dev tapf3690fb2-dd (output is empty)
Digging deeper we started to look logs for some errors and we got some. When we trying to anyway edit or create QoS policy or interfaces with that QoS policy we seeing weird logs
bridge|WARN|could not open network device tapdef3cecd-ba (No such device)
netdev_linux|DBG|unknown qdisc "noqueue"
bridge|INFO|bridge br-int: added interface tapdef3cecd-ba on port 16
I suspect that this is somehow is root of the problem why ingress rules aren't working.
What you expected to happen.
Expected behavior is ingress rules are actually being created without errors.
What actually happened.
Ingress QoS rules aren't working or even added to tc qdisc/class
$ cat /proc/version
Linux version 5.4.0-131-generic (also tried 5.4.0-120-generic as on working environment) ([buildd@lcy02-amd64-108](mailto:buildd@lcy02-amd64-108)) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #147-Ubuntu SMP Fri Oct 14 17:07:22 UTC 2022
$ ovs-dpctl show
lookups: hit:6731384 missed:162168 lost:16
flows: 233
masks: hit:50191740 total:18 hit/pkt:7.28
port 0: ovs-system (internal)
port 1: br-ex (internal)
port 2: eno49
port 3: br-int (internal)
port 4: br-tun (internal)
port 5: tapd405d07c-e3 (internal)
port 6: tapf3690fb2-dd
Hello mates This is another day i'm trying to resolve this issue related to ingress QoS.
What you did that make the problem appear. We using OpenStack Neutron + OVS to add connectivity for our instances and we have to add QoS which handled by OVS. Our actions are to create QoS policy with ingress/egress rules with type bandwidth-limit but ingress QoS isn't working at all. Looking back to our normally working cluster i've noticed about linux interface options difference. In normally working environment all of our instances interfaces have next options:
But another cluster have issue with noqueue option assigned to instance interfaces
Digging deeper we started to look logs for some errors and we got some. When we trying to anyway edit or create QoS policy or interfaces with that QoS policy we seeing weird logs
More catched logs when new port created
I suspect that this is somehow is root of the problem why ingress rules aren't working.
What you expected to happen. Expected behavior is ingress rules are actually being created without errors.
What actually happened. Ingress QoS rules aren't working or even added to tc qdisc/class
Some handy detais about environment:
ovsdb content located in gist by url https://gist.github.com/frct1/4b26949b97fc88d86471f05b51b68a97
Thank you very much for any possible suggestions or workarounds!