Reviewed: https://review.opendev.org/c/openstack/neutron/+/832662 Committed: https://opendev.org/openstack/neutron/commit/f7ab90baad83823cfb94bc8b9450cd915ea49c03 Submitter: "Zuul (22348)" Branch: master
commit f7ab90baad83823cfb94bc8b9450cd915ea49c03 Author: Slawek Kaplonski <[email protected]> Date: Tue Mar 8 16:44:59 2022 +0100 Fix ingress bandwidth limit in the openvswitch agent For ingress bandwidth limiting openvswitch agent is using QoS and queues from the Open vSwitch. There is always queue 0 used for that purpose. Initially, when this feature was implemented, we assumed that queue 0 is kind of the "default" queue to which all traffic will be send if there are no other queues. But that's not true thus ingress bandwidth limiting wasn't working properly with this agent. This patch fixes that issue but adding in the table=0 of the br-int additional OF rule to send all traffic to the queue 0. In this queue for some ports there can be QoS configured and then it will be applied for the port. If port don't have any QoS configured, nothing will happen and all will work like before this patch. Biggest problem with that solution was the case when also ports with minimum bandwidth are on the same node becuase such ports are using different queues (queue number is the same as ofport number of the tap interface). In case when traffic is going from the port with minimum bandwidth QoS to the port which has ingress bw limit configured, traffic is going only through br-int and will use queue 0 to apply ingress bw limit properly. In case when traffic from port with minimum bandwidth set needs to go out from the host, it will always use physical bridge (minimum bandwidth is only supported for the provider networks) and proper queue will be set for such traffic in the physical bridge. To be able to set proper queue in the physical bridge, this patch adds additional OF rule to the br-int to set queue_num value in the pkt_mark field [1] as this seems to be only field which can "survive" passing bridges. [1] https://man7.org/linux/man-pages/man7/ovs-fields.7.html Closes-Bug: #1959567 Change-Id: I1e31565475f38c6ad817268699b165759ac05410 ** Changed in: neutron Status: In Progress => 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/1959567 Title: QoS Ingress bandwidth limit with OVS backend may not work as expected Status in neutron: Fix Released Bug description: According to the OVS faq https://docs.openvswitch.org/en/latest/faq/qos/ Q: I configured Quality of Service (QoS) in my OpenFlow network by adding records to the QoS and Queue table, but the results aren’t what I expect. A: Did you install OpenFlow flows that use your queues? This is the primary way to tell Open vSwitch which queues you want to use. If you don’t do this, then the default queue will be used, which will probably not have the effect you want. According to info from the OVS developer, Ilya Maximets "OVS doesn't define what the "default queue" is. [...] So, using the set_queue action is a correct way to configure QoS, even if the queue 0 is currently a "default queue". It's not guaranteed that it always will be." Because of that Neutron OVS agent should configure correct OF rules to send traffic to the required QoS queue always. To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1959567/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

