neutron/neutron/plugins/ml2/drivers/l2pop
Oleg Bondarev b32db30874 l2 pop: check for more than 1 first active port on a node
With high concurrency more than 1 port may be activated on an
OVS agent at the same time (like VM port + a DVR port),
so the patch mitigates the condition by checking for 1 or 2
first active ports.

Given that the condition also contains "or self.agent_restarted(context)"
which makes it True first 180 sec (by default) after agent restart,
I believe the downside of changing 1 to 2 should be negligible.

Please see bug for more details on the issue.

Closes-Bug: #1789846
Change-Id: Ieab0186cbe05185d47bbf5a31141563cf923f66f
2018-08-31 11:16:19 +04:00
..
rpc_manager Removed deprecated class LocalVLANMapping 2016-11-07 20:24:06 +00:00
README Implement local ARP responder onto OVS agent 2014-05-19 21:42:11 +02:00
__init__.py Empty files should not contain copyright or license 2014-10-20 00:50:32 +00:00
db.py Integration of L3HARouterAgentPortBinding in ml2/drivers/l2pop/db.py 2017-11-01 09:31:05 +07:00
mech_driver.py l2 pop: check for more than 1 first active port on a node 2018-08-31 11:16:19 +04:00
rpc.py use common agent topics from neutron-lib 2018-03-13 11:35:50 -06:00

README

Neutron ML2 l2 population Mechanism Drivers

l2 population (l2pop) mechanism drivers implements the ML2 driver to improve
open source plugins overlay implementations (VXLAN with Linux bridge and
GRE/VXLAN with OVS). This mechanism driver is implemented in ML2 to propagate
the forwarding information among agents using a common RPC API.

More informations could be found on the wiki page [1].

VXLAN Linux kernel:
-------------------
The VXLAN Linux kernel module provide all necessary functionalities to populate
the forwarding table and local ARP responder tables. This module appears on
release 3.7 of the vanilla Linux kernel in experimental:
- 3.8: first stable release, no edge replication (multicast necessary),
- 3.9: edge replication only for the broadcasted packets,
- 3.11: edge replication for broadcast, multicast and unknown packets.

Note: Some distributions (like RHEL) have backported this module on precedent
      kernel version.

OpenvSwitch:
------------
The OVS OpenFlow tables provide all of the necessary functionality to populate
the forwarding table and local ARP responder tables.
A wiki page describe how the flow tables did evolve on OVS agents:
- [2] without local ARP responder
- [3] with local ARP responder. /!\ This functionality is only available since
                                    the development branch 2.1. It's possible
                                    to disable (enable by default) it through
                                    the flag 'arp_responder'. /!\


Note: A difference persists between the LB and OVS agents when they are used
      with the l2-pop mechanism driver (and local ARP responder available). The
      LB agent will drop unknown unicast (VXLAN bridge mode), whereas the OVS
      agent will flood it.

[1] https://wiki.openstack.org/wiki/L2population_blueprint
[2] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic
[3] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder