OpenStack Networking (Neutron)
Go to file
Rodolfo Alonso Hernandez ede6db6c4c Process DHCP events in order if related
When processing port events (create, update, delete), the port
provisioning (port creation) has priority over the other events [1].
As reported in the related bug, if a port deletion with an IP
address and another port creation with the same IP address arrive
to the DHCP agent, those events can be processed in the same queue.

Because of the creation event priority, even when this event arrived
after the deletion event, it will be processed first. That will
clash with the DHCP agent cache, that contains a port (not deleted
yet) with the same IP address. That will trigger an unwanted resync.

This patch implements a specific logic to store the events in
"ResourceProcessingQueue" (that uses "PriorityQueue" [2]). When
a port event arrives, the event comparison method checks the
(subnet, fixed_ips) tuple set of both elements. If there is a
coincidence, that means those ports are the same or are using
the same IP addreses (the race condition explained in the bug).
In this case, the priority is defined only by the timestamp;
that means the events are processed in order of arrival.

Because the Neutron server do not allow to have two ports in the
same subnet with the same IP address, the order of the events is
guaranteed. In the case explained in the bug, the deletion event
will be processed first.

[1]https://review.opendev.org/c/openstack/neutron/+/626830
[2]https://docs.python.org/3/library/queue.html#queue.PriorityQueue

Closes-Bug: #1913723

Change-Id: I89438feae3c0244f6da5e6a2a035d45b956ac247
2021-02-07 10:04:58 +00:00
api-ref Fix some typos 2016-06-28 22:46:19 +02:00
devstack [OVN] Use the OVN DevStack module 2020-08-26 10:09:28 +01:00
doc [OVN] Fix inconsistent IGMP configuration 2020-11-30 10:38:05 +00:00
etc Merge "Migrate "ethtool" to oslo.privsep" 2020-08-14 22:58:44 +00:00
neutron Process DHCP events in order if related 2021-02-07 10:04:58 +00:00
playbooks Convert neutron-grenade-ovn job to be zuulv3 2020-10-11 21:41:38 +02:00
rally-jobs [ci] Fix several rally task arguments 2020-05-06 14:56:27 +03:00
releasenotes Do not report ovs agent state if ovs is dead 2021-01-17 11:43:50 +00:00
roles [OVN] Use the OVN DevStack module 2020-08-26 10:09:28 +01:00
tools Merge "[OVN] Updates to tools/migrate_names.txt" 2020-09-17 21:17:44 +00:00
vagrant/ovn [OVN] Merge networking-ovn vagrant into neutron 2020-02-18 17:26:15 -05:00
zuul.d Merge "Limit usage of resources in the fullstack tests job" into stable/victoria 2021-01-29 19:10:02 +00:00
.coveragerc Cleanup coverage configuration 2016-10-17 17:06:19 +05:30
.gitignore Add etc/neutron/*.sample files to be ignored by git 2019-12-12 12:38:24 +01:00
.gitreview Update .gitreview for stable/victoria 2020-09-28 15:20:21 +00:00
.mailmap Add mailmap entry 2014-05-16 13:40:04 -04:00
.pylintrc Remove "six" library 2020-07-28 16:55:52 +00:00
.stestr.conf Fix post gate hook to accommodate for new os-testr 2017-09-12 14:20:12 -06:00
CONTRIBUTING.rst [Community goal] Add contributor and PTL guide 2020-03-03 04:43:26 +01:00
HACKING.rst Remove "six" library 2020-07-28 16:55:52 +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
README.rst Start README.rst with a better title 2019-11-19 17:42:57 +01:00
TESTING.rst Dropping lower constraints testing (stable Victoria) 2021-01-12 15:47:46 +00:00
bindep.txt Merge "Stop testing python 2" 2019-10-28 00:52:16 +00:00
plugin.spec Add OSP16.1 choice to migration plugin spec 2020-05-04 20:34:16 +03:00
requirements.txt Update requirements for recent pip failures 2020-12-14 11:35:53 +01:00
setup.cfg Remove translation sections from setup.cfg 2020-05-27 22:43:15 +08:00
setup.py Updated from global requirements 2017-03-04 11:19:58 +00:00
test-requirements.txt Update requirements for recent pip failures 2020-12-14 11:35:53 +01:00
tox.ini Merge "Limit usage of resources in the fullstack tests job" into stable/victoria 2021-01-29 19:10:02 +00:00

README.rst

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:

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

To learn how to contribute, please read the CONTRIBUTING.rst file.