finally, I have found that it is ovs bug.
when reboot vm, libvirt will call ovs-vsctl del-port,
this cmd will cause other port's tc ingress rule automatically remove.
http://openvswitch.org/pipermail/discuss/2015-July/018318.html
I have reported a bug for ovs, and they have admitted it.
anyway, thank you for your reply.
At 2015-08-03 15:34:11, "Michal Privoznik" <mprivozn(a)redhat.com> wrote:
On 20.07.2015 10:43, ychen wrote:
> hi:
> when I use openstack devstack to test QOS, wired phenomenon appeared,
> I set qos ingress rule in tapB, but when I reboot tapA, the ingress rule of tapB
automatically removed, but the egress rule is still exist.
> Test enviroment:
> Linux: ubuntu 14.04.1 LTS
> kernel: 3.13.0-32-generic
> libvirt: 1.2.2
> openstack: havana
>
>
> 1. use nova to create vm A and vm B. for the configuration of the libvirt xml, see
the last paragraph in the end.
> 2. use tc cmd to create qos rule for vm A and vm B
> tc qdisc add dev tap3d0d2c4a-0b ingress //vmA
> tc qdisc add dev tap896d5066-69 ingress //vmB
>
>
> 3. then use cmd
> "sudo virsh destory 142a08db-6e25-4a03-be13-7073104b0745 " to first
shutdown vm1
> then I see ingress rule of vmB disappeared :(
>
Interesting. With the latest libvirt I am unable to reproduce - there's
a check and QoS is cleared out only if set in domain XML. Since your
domain XML lacks it, I guess it's either already fixed or not libvirt fault.
Michal