← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1639186] [NEW] qos max bandwidth rules not working for neutron trunk ports

 

Public bug reported:

When using Qos together with Neutron trunk ports the max bandwidth
limits are not applied, neither for ovs-hybrid, nor for ovs-firewall

The reason is that a new ovs bridge is created to handle the trunk (parent + subport) ports.
For instance:
    Bridge "tbr-c5402c58-3"
        Port "tpt-e739265b-2b"
            Interface "tpt-e739265b-2b"
                type: patch
                options: {peer="tpi-e739265b-2b"}
        Port "qvoe739265b-2b"
            Interface "qvoe739265b-2b"
        Port "spt-17c950c4-f5"
            tag: 101
            Interface "spt-17c950c4-f5"
                type: patch
                options: {peer="spi-17c950c4-f5"}
        Port "tbr-c5402c58-3"
            Interface "tbr-c5402c58-3"
                type: internal

Then, the  _set_egress_bw_limit_for_port
(https://github.com/openstack/neutron/blob/master/neutron/agent/common/ovs_lib.py#L553)
is applied to tpi-e739265b-2b or spi-17c950c4-f5 (depending on if the
qos rule is applied to the parent or the subport ports, respectively).
However, these are of patch type, i.e., they are fully virtual and the
kernel does not know about them, therefore the QoS rules are not
applied.

To reproduce it:
- Enable QoS devstack local.conf: 
    enable_plugin neutron https://github.com/openstack/neutron
    enable_service q-qos
- Enable trunk in neutron.conf:
    service_plugins = ... qos,trunk  

- Create QoS rule
- Apply the qos rule to either parent or subport ports
- Test bandwidth limit (e.g., with iperf)

** Affects: neutron
     Importance: Undecided
         Status: New


** Tags: qos trunk

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

Title:
  qos max bandwidth rules not working for neutron trunk ports

Status in neutron:
  New

Bug description:
  When using Qos together with Neutron trunk ports the max bandwidth
  limits are not applied, neither for ovs-hybrid, nor for ovs-firewall

  The reason is that a new ovs bridge is created to handle the trunk (parent + subport) ports.
  For instance:
      Bridge "tbr-c5402c58-3"
          Port "tpt-e739265b-2b"
              Interface "tpt-e739265b-2b"
                  type: patch
                  options: {peer="tpi-e739265b-2b"}
          Port "qvoe739265b-2b"
              Interface "qvoe739265b-2b"
          Port "spt-17c950c4-f5"
              tag: 101
              Interface "spt-17c950c4-f5"
                  type: patch
                  options: {peer="spi-17c950c4-f5"}
          Port "tbr-c5402c58-3"
              Interface "tbr-c5402c58-3"
                  type: internal

  Then, the  _set_egress_bw_limit_for_port
  (https://github.com/openstack/neutron/blob/master/neutron/agent/common/ovs_lib.py#L553)
  is applied to tpi-e739265b-2b or spi-17c950c4-f5 (depending on if the
  qos rule is applied to the parent or the subport ports, respectively).
  However, these are of patch type, i.e., they are fully virtual and the
  kernel does not know about them, therefore the QoS rules are not
  applied.

  To reproduce it:
  - Enable QoS devstack local.conf: 
      enable_plugin neutron https://github.com/openstack/neutron
      enable_service q-qos
  - Enable trunk in neutron.conf:
      service_plugins = ... qos,trunk  

  - Create QoS rule
  - Apply the qos rule to either parent or subport ports
  - Test bandwidth limit (e.g., with iperf)

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