Instances miss neutron QoS on their ports after unrescue and soft reboot
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Medium
|
Miguel Lavalle |
Bug Description
Instances lose neutron QoS on their ports after unrescue and soft reboot
Description
===========
After some operations with instance: such as unrescue and soft reboot
libvirt domains are created, but neutron doesn't set QoS on ports for VM.
So user can avoid QoS per-port limitation and utilise all
hosts bandwidth.
This doesn't happen after live migration, migration, hard reboot, rescue, shutdown with start.
This problem doesn't happen for operations which ends up calling _create_
https:/
In unrescue and soft reboot libvirt driver calls _create_domain() directly and don't execute plug_vifs():
https:/
Steps to reproduce
====
1. Create instance with port in neutron network
2. Create QoS in neutron:
$ neutron qos-policy-create limited_1000mbps
$ neutron qos-bandwidth-
3. Update port of the instance, assign policy:
$ neutron port-update --qos-policy limited_1000mbps PORT_UUID
4. Ensure, that QoS rule is applied to the port:
$ /sbin/tc -s qdisc show dev tap47eaf544-39
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 383621004 bytes 262469 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc ingress ffff: parent ffff:fff1 ----------------
Sent 173850 bytes 1515 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
5. 1) Execute nova rescue and then nova unrescue for the instance
or
2) Execute nova reboot (without parameter --hard)
6. See, that after tap interface recreation during libvirt domain start
QoS are gone:
$ /sbin/tc -s qdisc show dev tap47eaf544-39
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 1537 bytes 19 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
Expected result
===============
QoS rules are applied to the port, like in step 4.
Actual result
=============
QoS rules are gone, tap interface is not limited:
$ /sbin/tc -s qdisc show dev tap47eaf544-39
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 1537 bytes 19 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
Environment
===========
1. Exact version of OpenStack:
OpenStack Pike
nova 16.1.4
neutron 11.0.5
2. Which networking type did you use?
Neutron with Open vSwitch
description: | updated |
summary: |
- Instances misses neutron QoS on their ports after unrescue and soft - reboot + Instances miss neutron QoS on their ports after unrescue and soft reboot |
tags: | added: libvirt |
tags: | added: qos |
description: | updated |
description: | updated |
description: | updated |
Changed in neutron: | |
importance: | Undecided → Medium |
Changed in neutron: | |
assignee: | nobody → Miguel Lavalle (minsel) |
no longer affects: | nova |
Changed in neutron: | |
status: | Confirmed → Fix Released |
It looks like the bug in the Neutron. Similar bug was fixed in commit https:/ /github. com/openstack/ neutron/ commit/ 60cb0911712ad11 688b4d09e5c01ac 39c49f5aea
Same thing happens with QoS, but QoS plugin never restores lost QoS rules: https:/ /github. com/openstack/ neutron/ blob/stable/ pike/neutron/ agent/l2/ extensions/ qos.py# L257