[OVN] min-BW rule, defined in the LSP.options field, must be accompanied with a max-BW value

Bug #2015376 reported by Rodolfo Alonso
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Triaged
High
Rodolfo Alonso

Bug Description

The QoS values defined in the LSP.options field are directly translated to a TC command and set in the interface. There are 3 values [1]:
* qos_min_rate
* qos_max_rate
* qos_burst

Neutron is currently using "qos_min_rate" only. The max-BW and DSCP QoS rules are defined with QoS registers that match an input/output port traffic.

As specified in [2], the "rate" parameter ("qos_max_rate") is mandatory. The "ceil" parameter ("qos_min_rate") is not. Neutron needs to provide a default "qos_max_rate" for any port where "qos_min_rate" is configured (as commented, we are only using "qos_min_rate").

[1]https://github.com/ovn-org/ovn/blob/1bec9e3ddd8500793b52e11c3dc1f41ef1f48591/ovn-nb.xml#L1155-L1168
[2]https://man7.org/linux/man-pages/man8/tc-htb.8.html

Tags: ovn qos
tags: added: ovn qos
Changed in neutron:
status: New → Triaged
Revision history for this message
Bence Romsics (bence-romsics) wrote (last edit ):

Don't we have the relationships the other way around?

guaranteed bw - qos_min_rate in ovn - rate in tc
shaped bw - qos_max_rate in ovn - ceil in tc

But anyway I see your point. This must break setting ceil without rate. But while broken I guess this can be worked around by providing both in the API.

In a fix we can provide a minimal (0 if allowed) rate when there's no user input coming from the API.

Changed in neutron:
importance: Undecided → High
Changed in neutron:
assignee: nobody → Rodolfo Alonso (rodolfo-alonso-hernandez)
Revision history for this message
Rodolfo Alonso (rodolfo-alonso-hernandez) wrote :

Hi Bence:

The "tc" [1] defines only "rate" as mandatory (disregard the "burst" parameter, check the parameter description down in this page). That means:
* If we define max-bw, only "qos_max_rate" is needed (and maybe burst)
* If we define min-bw, we need "qos_min_rate" and a value of "qos_max_rate" ("qos_max_rate" >= "qos_min_rate" always).

In any case, in Neutron we only use "LSP.options.qos_xxx_rate" for min-bw rules. For max-bw and DSCP we use QoS registers that filter the traffic depending on the ingress/egress port and apply the needed traffic shaping (actually policing). This is why we can't fix that providing max-bw in the API, this rule will generate a OVN QoS register but won't populate the "LSP.options.qos_max_rate".

In this case we should provide a default "LSP.options.qos_max_rate" value, big enough not to interfere with the traffic egressing the interface.

Regards.

[1]https://man7.org/linux/man-pages/man8/tc-htb.8.html

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.