Existing ingress qdisc gets removed from port
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
openvswitch |
New
|
Undecided
|
Unassigned | ||
openvswitch (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
[Environment]
OpenvSwitch
Ubuntu Bionic
[Description]
The current netdev linux bridge implementation removes the tc ingress qdisc for an existing ovs bridge port.
This issue is reproducible without neutron with a bare ovs bridge + a libvirt definition.
Consider the following ovs bridge.
root@bionic-
b936ab43-
Bridge "ovs-br0"
Port "ens7"
Interface "ens7"
Port "ovs-br0"
Interface "ovs-br0"
type: internal
ovs_version: "2.9.2"
root@bionic-
3: ens7: <BROADCAST,
link/ether 52:54:00:84:60:6e brd ff:ff:ff:ff:ff:ff
4: ovs-system: <BROADCAST,
link/ether ba:5b:46:3a:dd:ff brd ff:ff:ff:ff:ff:ff
5: ovs-br0: <BROADCAST,
link/ether 3a:bf:0b:5c:87:4a brd ff:ff:ff:ff:ff:ff
16: vnet1: <BROADCAST,
link/ether fe:54:00:ae:17:05 brd ff:ff:ff:ff:ff:ff
root@bionic-
qdisc htb 1: root refcnt 2 r2q 10 default 1 direct_packets_stat 0 direct_qlen 1000
qdisc sfq 2: parent 1:1 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
root@bionic-
class htb 1:1 root leaf 2: prio rate 1024Kbit ceil 2048Kbit burst 256Kb cburst 1599b
root@bionic-
root@bionic-
Following is the interface definition:
<interface type='bridge'>
<mac address=
<source bridge='ovs-br0'/>
<virtualport type='openvswitch'>
<parameters interfaceid=
</virtualport>
<bandwidth>
<inbound average='128' peak='256' burst='256'/>
<outbound average='128' peak='256' burst='256'/>
</bandwidth>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</interface>
---- 2nd case
Through a direct linux bridge (not managed by ovs)
<interface type='bridge'>
<mac address=
<source bridge='virbr0'/>
<bandwidth>
<inbound average='128' peak='256' burst='256'/>
<outbound average='128' peak='256' burst='256'/>
</bandwidth>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
root@bionic-
qdisc htb 1: root refcnt 2 r2q 10 default 1 direct_packets_stat 0 direct_qlen 1000
qdisc sfq 2: parent 1:1 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
qdisc ingress ffff: parent ffff:fff1 ----------------
root@bionic-
class htb 1:1 root leaf 2: prio rate 1024Kbit ceil 2048Kbit burst 256Kb cburst 1599b
root@bionic-
filter protocol all pref 49152 u32 chain 0
filter protocol all pref 49152 u32 chain 0 fh 800: ht divisor 1
filter protocol all pref 49152 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 flowid :1 not_in_hw
match 00000000/00000000 at 0
police 0x1 rate 1024Kbit burst 256Kb mtu 64Kb action drop overhead 0b
ref 1 bind 1
[Suggested solution]
If no tc rate limits have been provided for the port and there is an existing
ingress qdisc already set that differs from provided limits, avoid resetting the existing ingress qdisc.
description: | updated |