← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1784006] Re: Instances miss neutron QoS on their ports after unrescue and soft reboot

 

** Changed in: neutron
       Status: Confirmed => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1784006

Title:
  Instances miss neutron QoS on their ports after unrescue and soft
  reboot

Status in neutron:
  Fix Released

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_domain_and_network():
     https://github.com/openstack/nova/blob/stable/pike/nova/virt/libvirt/driver.py#L5392

     In unrescue and soft reboot libvirt driver calls _create_domain() directly and don't execute plug_vifs():
     https://github.com/openstack/nova/blob/stable/pike/nova/virt/libvirt/driver.py#L2547

     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-limit-rule-create limited_1000mbps --max-kbps 1000000 --max-burst-kbps 160000

    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

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1784006/+subscriptions



References