After some digging in openvswitch code. My wild guess is that vlan tag
reconfiguring triggered iface_configure_qos (vswitchd/bridge.c), which
in turn called netdev_set_policing to reset ingress policing rate.
Although there's no ingress_policing_rate set in my case, existing
ingress qdisc still remove by default.
Could some openvswitch guy help to confirm and suggest how to fix or
workaround? It seems to be a bug of incompatible with existing ingress
qdisc settings.
Thanks,
--
Qiu Yu
On Wed, Jul 17, 2013 at 8:09 PM, Qiu Yu <unicell(a)gmail.com> wrote:
With outbound QoS setting in Libvirt XML, libvirt will add a tc
ingress qdisc for traffic shaping. Then if you set VLAN tag to that
tap device, this qdisc will automatically gone by no reason.
Could anyone shed some lights where should I look into? I'm really
confused and got no clue here. Thanks!
Steps to reproduce
--
# virsh start instance-name
# virsh dumpxml instance-name
...
<interface type='bridge'>
<mac address='fa:16:3e:b9:8f:2a'/>
<source bridge='br-int'/>
<virtualport type='openvswitch'>
<parameters interfaceid='0a2b02ca-4824-4bda-baa9-05fff7a3146d'/>
</virtualport>
<target dev='tap0a2b02ca-48'/>
<model type='virtio'/>
<bandwidth>
<outbound average='256' peak='512' burst='512'/>
</bandwidth>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x03'
function='0x0'/>
</interface>
...
# tc qdisc ls dev tap0a2b02ca-48
qdisc htb 1: root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc sfq 2: parent 1:1 limit 127p quantum 1514b perturb 10sec
qdisc ingress ffff: parent ffff:fff1 ---------------- (<-- already showed up)
# ovs-vsctl set port tap0a2b02ca-48 tag=1
# tc qdisc ls dev tap0a2b02ca-48
qdisc htb 1: root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc sfq 2: parent 1:1 limit 127p quantum 1514b perturb 10sec
(<-- ingress qdisc is gone)
After that, if add this qdisc manually and re-set vlan tag, problem no
longer exists. But it can always be reproduced after "virsh destroy /
start" cycle.
# tc qdisc add dev tap0a2b02ca-48 handle ffff: ingress
# ovs-vsctl clear port tap0a2b02ca-48 tag
# ovs-vsctl set port tap0a2b02ca-48 tag=1
# tc qdisc ls dev tap0a2b02ca-48
qdisc htb 1: root refcnt 2 r2q 10 default 1 direct_packets_stat 0
qdisc sfq 2: parent 1:1 limit 127p quantum 1514b perturb 10sec
qdisc ingress ffff: parent ffff:fff1 ---------------- (<-- still exists)
Other information
--
# ovs-vsctl --version
ovs-vsctl (Open vSwitch) 1.9.2
Compiled May 27 2013 14:19:16
# uname -r
2.6.32-358.111.1.openstack.el6.x86_64
# virsh --version (This is a version I built from libvirt upstream
origin/v0.9.11-stable branch)
0.9.11.9
--
Qiu Yu