Bug 2077681

Summary: [RFE] [P1] Implement QoS minimum bandwidth rules for ML2/OVN
Product: Red Hat OpenStack Reporter: Ihar Hrachyshka <ihrachys>
Component: openstack-neutronAssignee: Rodolfo Alonso <ralonsoh>
Status: CLOSED WONTFIX QA Contact: Bharath M V <bmv>
Severity: high Docs Contact:
Priority: high    
Version: 17.1 (Wallaby)CC: apevec, bcafarel, chrisw, ctrautma, dalvarez, ekuris, gurpsing, hakhande, ihrachys, jamsmith, jiji, lhh, majopela, mariel, mburns, mheib, mmichels, ralonsoh, scohen, spower, yinxu
Target Milestone: z4Keywords: FutureFeature, RFE, TestOnly, Triaged
Target Release: ---Flags: gurpsing: needinfo-
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-neutron-18.5.1-1.20220823091141.464e88f.el9ost ovn22.03-22.03.0-74.el8fdp ovn23.06-23.06.0-141.el9fdp Doc Type: Release Note
Doc Text:
RHOSP 17.1 does not support QoS minimum bandwidth in environments with the ML2/OVN mechanism driver.
Story Points: ---
Clone Of: 2060310 Environment:
Last Closed: 2024-10-30 08:15:27 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2060310    
Bug Blocks:    

Description Ihar Hrachyshka 2022-04-21 21:57:51 UTC
This bug is to track Neutron OVN driver side of the implementation for qos min bandwidth limit API support.

+++ This bug was initially created as a clone of Bug #2060310 +++

The goal of this RFE is to add QoS minimum bandwidth guarantee rule support in core OVN. This new functionality should close the parity gap between Neutron ML2/OVS and ML2/OVN.

The scope of this RFE is limited to ports connected to physical networks (flat, VLAN); that means, VM ports that will egress traffic through a physical bridge.


Neutron ML2/OVS
===============
Now in ML2/OVS we provide minimum bandwidth only for those ports connected to physical networks (flat, VLAN). The QoS min-BW rules for a VM port are set in the physical bridge port where the VM port traffic leaves the node. The rationale for this is that the min-BW rules pretend to guarantee a certain BW for the VM traffic where the traffic is aggregated; this is in the physical port interface. [1] is the ML2/OVS implementation.

In ML2/OVS, the physical bridge interface port has a QoS register associated. This QoS register has several Queue registers, one per VM port. Each Queue register has a specific "queue-num" associated and the corresponding "other-config:min-rate" value.


Proposal
========
This RFE proposes to add a new parameter in DB NB "QoS.bandwdth" enumerate: ["rate", "burst", "minimum"]. The "match", "direction" and "priority" columns should work as now. In order to identify the egress port (physical bridge port), this RFE proposed to add a reference in "external_ids" (this is just an idea that could wrong due to my lack of knowledge in OVN internals).


Please, for more information you can reach me in IRC (ralonsoh), mail and this BZ.

Regards and thank you in advance.

[1]https://github.com/openstack/neutron/blob/b072cbf05f079519e379b2bfebe27846ae612275/neutron/plugins/ml2/drivers/openvswitch/agent/extension_drivers/qos_driver.py#L179-L190

--- Additional comment from Daniel Alvarez Sanchez on 2022-03-03 15:07:21 UTC ---

One important note is that, at the moment OVN is implementing QoS via netdev [0] and not using OVS meters when the parameters are applied to the LSP.options column [1] (instead of to the QoS table).

If we want HW offload, since OVS meters are not yet supported we could take a similar approach using either netdev/iproute to allow for HW offload?


[0] https://github.com/ovn-org/ovn/blob/5f7a985de0707539e4df1eab4c4150b24dbce622/controller/binding.c#L221
[1] https://github.com/ovn-org/ovn/blob/b988d5fa62d9dbecacb2c45defab8e7edde4c533/ovn-nb.xml#L1031-L1039

--- Additional comment from Ihar Hrachyshka on 2022-04-20 12:20:35 UTC ---

(In reply to Daniel Alvarez Sanchez from comment #1)
> One important note is that, at the moment OVN is implementing QoS via netdev
> [0] and not using OVS meters when the parameters are applied to the
> LSP.options column [1] (instead of to the QoS table).
> 
> If we want HW offload, since OVS meters are not yet supported we could take
> a similar approach using either netdev/iproute to allow for HW offload?
> 
> 
> [0]
> https://github.com/ovn-org/ovn/blob/5f7a985de0707539e4df1eab4c4150b24dbce622/
> controller/binding.c#L221
> [1]
> https://github.com/ovn-org/ovn/blob/b988d5fa62d9dbecacb2c45defab8e7edde4c533/
> ovn-nb.xml#L1031-L1039

This series should give us hw offload for ovs metering: https://patchwork.ozlabs.org/project/openvswitch/list/?series=293970

Comment 21 Lon Hohberger 2023-08-16 10:34:22 UTC
According to our records, this should be resolved by openstack-neutron-18.6.1-1.20230518200971.el9ost.  This build is available now.