OpenStack Networking (Neutron)
Go to file
Felix Huettner b5f5f3def3 ovn-l3 scheduler: calculate load of chassis per priority
previously we calculated the "load" of a chassis across the highest
priority of each of the chassis. This can lead to suboptimal results in
the following situation:
* you have gateway chassis: hv1, hv2, hv3
* you have routers:
   * g1: with priority 3 on hv1, priority 2 on hv2, priority 1 on hv3
   * g2: with priority 3 on hv1, priority 2 on hv2, priority 1 on hv3
   * g3: with priority 3 on hv3, priority 2 on hv2, priority 1 on hv1
   * g4: with priority 3 on hv3, priority 2 on hv2, priority 1 on hv1

When now creating a new router the previous algorythm would have placed
prio 3 of it either on hv1 or hv3 since their count of highest
priorities (2 of prio 3) is lower than the count of the higest priority
of hv2 (4 of prio 2). So it might have looked like:
* g5: with priority 3 on hv3, priority 2 on hv1, priority 1 on hv3
(This case has been implemented as `test_least_loaded_chassis_per_priority2`).

However this is actually a undesired result. In OVN the gateway chassis
with the highest priority actually hosts the router and processes all of
its external traffic. This means it is highly important that the highest
priority is well balanced.

To do this now we no longer blindly use the count of routers of the
highest priority per chassis, but we only count the routers of the
priority we are currently searching a chassis for. This ensures that in
the above case we would have picked hv2 for priority 3, since it has not
actually active router running.

The algorithm implemented now is based upon the assumption, that amount
of priorities scheduled per router is equal over all routers. This means
it will perform suboptimally if some phyiscal network is available on 5
gateway chassis, while another one is only available on 2. (It is
however unclear if the previous implementation would have been better
there).

In this commit we also adopt the testcases in test_l3_ovn_scheduler to match
to this assumption. Previously the distribution data used for testing
had been unrelasitic as it mostly scheduled one gateway chassis for each
router.

It also fixes the previously broken priority calculation in the
testcase, that would just assign prio 0 to all gateways.

Partial-Bug: #2023993
Change-Id: If2afcd546a1da9964704bcebbfa39d8348e14fe8
2024-01-17 12:04:09 +01:00
api-ref Fix some typos 2016-06-28 22:46:19 +02:00
devstack Remove note about migration from lib/neutron-legacy to lib/neutron 2022-12-20 11:05:05 +01:00
doc Merge "Add info about metering agent gap in the ML2/OVN backend" 2024-01-11 12:47:51 +00:00
etc Remove ovn.ini example file 2023-09-06 15:19:30 -04:00
neutron ovn-l3 scheduler: calculate load of chassis per priority 2024-01-17 12:04:09 +01:00
playbooks Limit tox version to <4 2022-12-10 20:43:54 +01:00
rally-jobs [ci] Fix several rally task arguments 2020-05-06 14:56:27 +03:00
releasenotes Forbid the subnet gateway IP deletion if a router interface is attached 2024-01-17 13:33:41 +00:00
roles Restore the tempest nftables jobs in experimental and periodic queues 2023-10-11 13:27:17 +00:00
tools Use compiled OVN version v23.09.0 2023-09-25 10:10:38 -04:00
vagrant/ovn Fix local neutron folder path in ovn/sparse/Vagrantfile 2020-11-03 17:02:34 +01:00
zuul.d update OVS_BRANCH to be compatible with ovn main branch 2024-01-16 13:04:19 +05:30
.coveragerc Cleanup coverage configuration 2016-10-17 17:06:19 +05:30
.gitignore Ignore reno artefacts (RELEASENOTES.rst and reno.cache) 2023-01-18 04:52:03 +01:00
.gitreview OpenDev Migration Patch 2019-04-19 19:38:27 +00:00
.mailmap Add mailmap entry 2014-05-16 13:40:04 -04:00
.pylintrc Merge "Fix pylint "W" missing-timeout warnings" 2023-12-02 00:55:55 +00:00
.stestr.conf Fix post gate hook to accommodate for new os-testr 2017-09-12 14:20:12 -06:00
bindep.txt Fix bindep for Debian bookworm 2023-08-21 13:57:00 +00:00
CONTRIBUTING.rst [Community goal] Add contributor and PTL guide 2020-03-03 04:43:26 +01:00
HACKING.rst Follow up for replacing assertItemsEqual 2021-06-03 16:04:07 +00:00
LICENSE Adding Apache Version 2.0 license file. This is the official license agreement under which Quantum code is available to 2011-08-08 12:31:04 -07:00
plugin.spec Update url and package name 2023-03-28 06:59:20 +00:00
README.rst Doc: make the contributor guide more visible 2022-07-14 13:08:56 +02:00
requirements.txt Cleanup setup.py and requirements 2024-01-12 17:44:09 +09:00
setup.cfg Update python classifier in setup.cfg 2024-01-09 19:04:32 -08:00
setup.py Cleanup setup.py and requirements 2024-01-12 17:44:09 +09:00
test-requirements.txt Cleanup setup.py and requirements 2024-01-12 17:44:09 +09:00
TESTING.rst Amend documentation for fullstack tests 2022-12-08 14:29:34 +01:00
tox.ini Use convert_version_to_tuple() throughout tree 2023-10-20 18:03:21 -04:00

OpenStack Neutron

image

Neutron is an OpenStack project to provide "network connectivity as a service" between interface devices (e.g., vNICs) managed by other OpenStack services (e.g., Nova).

To learn more about neutron:

If you would like to contribute to Neutron, please read the file CONTRIBUTING.rst or see the Neutron contributor guide:

https://docs.openstack.org/neutron/latest/contributor/contributing.html

Get in touch via email. Use [Neutron] in your subject.