neutron/neutron/plugins/ml2/drivers/l2pop
Édouard Thuleau befa0b9184 Implement local ARP responder onto OVS agent
With ML2 plugin and l2-pop mechanism driver, it's possible to locally
answer to the ARP request of the VM and avoid ARP broadcasting emulation
on overlay which is costly.

When this functionality is enabled, the OVS flows logic evolves to [1].
This functionality was introduce in 2.1 OVS branch [2].

A README is added to describe l2-pop mechanism driver and the agents
particularities.

[1] https://wiki.openstack.org/wiki/Ovs-flow-logic#OVS_flows_logic_with_local_ARP_responder
[2] http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=f6c8a6b163af343c66aea54953553d84863835f7

DocImpact: New OVS agent flag 'arp_responder' set to false by default
Closes-Bug: #1237427
Change-Id: Ic28610faf2df6566d8d876fcd7aed333647970e2
2014-05-19 21:42:11 +02:00
..
README Implement local ARP responder onto OVS agent 2014-05-19 21:42:11 +02:00
__init__.py Add l2 population base classes 2013-09-12 01:06:51 +02:00
config.py Add l2 population base classes 2013-09-12 01:06:51 +02:00
constants.py Vxlan / L2population support to Linuxbridge Agent 2013-09-12 02:51:37 +02:00
db.py Enable flake8 E711 and E712 checking 2014-04-09 23:03:57 -04:00
mech_driver.py Send fdb remove message when a port is migrated 2014-03-14 10:17:55 +01:00
rpc.py Fix l2 pop doesn't propagate ip address updates 2013-09-26 05:20:17 +02: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