neutron/neutron/tests/fullstack
Slawek Kaplonski 6af566a89a 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
(cherry picked from commit f7ab90baad)
(cherry picked from commit 5573230d30)
2022-03-31 10:41:09 +02:00
..
agents Clean duplicated QoS bandwidth related methods in ovs_lib module 2022-03-31 10:40:41 +02:00
resources Allow to manually define the gateway IP when using subnet pools 2021-02-27 10:06:35 +00:00
schedulers HA race condition test for DHCP scheduling 2019-11-18 14:09:32 +01:00
servers Remove "six" library 2020-07-28 16:55:52 +00:00
README Moved fullstack test doc content to TESTING.rst 2015-12-03 17:02:54 -05:00
__init__.py Avoid eventlet monkey patching for the tempest plugin 2016-04-29 22:47:24 -05:00
base.py [fullstack] find ip based on allocation_pool 2019-11-12 14:56:34 +01:00
test_agent_bandwidth_report.py Enhance agent's resources_synced check 2020-02-11 15:09:24 +01:00
test_connectivity.py Drop of_interface option 2019-05-24 10:33:48 +02:00
test_dhcp_agent.py [fullstack] Use delete_port attribute of destroy VM 2021-01-18 12:53:46 +01:00
test_firewall.py Drop of_interface option 2019-05-24 10:33:48 +02:00
test_l3_agent.py Improve terminology in the Neutron tree 2020-08-19 16:47:53 -04:00
test_logging.py Drop of_interface option 2019-05-24 10:33:48 +02:00
test_mtu.py Check mtu on network update 2019-12-16 15:04:47 +00:00
test_port_shut_down.py [OVS] Shut down the port on changing the admin-state to false 2018-01-04 01:44:01 -05:00
test_ports_api.py Rehome api tests for propagate_uplink_status 2020-10-13 10:57:57 +00:00
test_ports_binding.py [Follow Up] Add Smart NIC representor port to integration bridge 2019-06-24 06:58:18 +00:00
test_ports_rebind.py Make port binding attempt after agent is revived 2018-10-22 18:43:33 +02:00
test_qos.py Fix ingress bandwidth limit in the openvswitch agent 2022-03-31 10:41:09 +02:00
test_securitygroup.py Add normalized_cidr column to SG rules 2021-01-07 12:23:59 +01:00
test_segmentation_id.py Add fullstack tests for update network's segmentation_id 2019-07-11 16:20:15 +02:00
test_subnet.py Ensure gateway is set for prefix delegated subnets 2022-03-21 05:56:14 +00:00
test_trunk.py Fullstack: init trunk agent's driver only when necessary 2017-11-03 16:49:12 +00:00

README

Please see neutron/TESTING.rst.