OpenStack Networking (Neutron)
Go to file
venkata anil c06ff65dbb l2pop fdb flows for HA router ports
This patch makes L3 HA failover not depended on neutron components
(during failover).

All HA agents(active and backup) call update_device_up/down after wiring
the ports. But l2pop driver is called for only active agent as port
binding in DB reflects active agent. Then l2pop creates unicast and
multicast flows for active agent.
On failover, flows to new active agent is created. For this to happen -
all of database, messaging server, neutron-server and destination L3
agent should be active during failover. This creates two issues -
1) When any of the above resources(i.e neutron-server, .. ) are dead,
   flows between new master and other agents won't be created and
   L3 Ha failover is not working. In same scenario, L3 Ha failover will
   work if l2pop is disabled.
2) Packet loss during failover is higher as above neutron resources
   interact multiple times, so will take time to create l2 flows.

In this change, we allow plugin to notify l2pop when update_device_up/down
is called by backup agents also. Then l2pop will create flood flows to
all HA agents(both active and slave). L2pop won't create unicast flow for
this port, instead unicast flow is created by learning action of table 10
when keepalived sends GARP after assigning ip address to master router's
qr-xx port. As flood flows are already created and unicast flow is
dynamically added, L3 HA failover is not depended on l2pop.

This solves two isses
1) with L3 HA + l2pop, failover will work even if any of above agents
   or processes dead.
2) Reduce failover time as we are not depending on neutron to create
   flows during failover.
We use L3HARouterAgentPortBinding table for getting all HA agents of a
router port. HA router port on slave agent is also considered for l2pop
distributed_active_network_ports and agent_network_active_port_count

Conflicts:
        neutron/db/l3_hamode_db.py
        neutron/plugins/ml2/drivers/l2pop/db.py
        neutron/plugins/ml2/drivers/l2pop/mech_driver.py
        neutron/plugins/ml2/rpc.py
        neutron/tests/unit/plugins/ml2/drivers/l2pop/test_db.py
        neutron/tests/unit/plugins/ml2/drivers/l2pop/test_mech_driver.py
        neutron/tests/unit/plugins/ml2/test_rpc.py

Closes-bug: #1522980
Closes-bug: #1602614
Change-Id: Ie1f5289390b3ff3f7f3ed7ffc8f6a8258ee8662e
(cherry picked from commit 26d8702b9d)
2016-10-12 12:32:22 +00:00
bin Close XenAPI sessions in neutron-rootwrap-xen-dom0 2016-03-23 14:56:26 +00:00
devstack Define localstatedir for ovs compilation 2016-05-26 17:41:24 +00:00
doc Refactor the rpc callback version discovery mechanism 2016-06-09 13:43:08 +00:00
etc LinuxBridge agent's QoS driver bw limit for egress traffic 2016-04-19 11:53:50 +00:00
neutron l2pop fdb flows for HA router ports 2016-10-12 12:32:22 +00:00
rally-jobs Changes in rally-jobs/README.rst 2015-06-04 10:34:15 -04:00
releasenotes Allow SR-IOV agent to start when number of vf is 0 2016-09-08 07:44:39 +00:00
tools Fix zuul_cloner errors during tox job setup 2016-04-08 03:13:53 +00:00
.coveragerc Change ignore-errors to ignore_errors 2015-09-21 14:31:29 +00:00
.gitignore Automatically generate neutron core configuration files 2015-11-27 15:22:59 +00:00
.gitreview Update .gitreview for stable/mitaka 2016-03-16 18:15:06 +01:00
.mailmap Add mailmap entry 2014-05-16 13:40:04 -04:00
.pylintrc Start using neutron-lib for shared constants and exceptions 2016-02-10 16:41:18 -07:00
.testr.conf .testr.conf: revert workaround of testtools bug 2016-02-19 14:29:07 +01:00
CONTRIBUTING.rst Workflow documentation is now in infra-manual 2014-12-05 03:30:37 +00:00
HACKING.rst Using LOG.warning replace LOG.warn 2016-03-10 11:02:45 -08: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
MANIFEST.in Include alembic versions directory to the package 2015-10-21 07:26:24 +00:00
README.rst Update the URLs to the Cloud Admin Guide 2015-08-24 17:24:34 +02:00
TESTING.rst Delete 118~ API tests from Neutron 2016-03-10 15:34:08 -05:00
babel.cfg Use babel to generate translation file 2013-01-24 00:20:32 +08:00
openstack-common.conf remove openstack-common.conf 2016-01-08 12:58:59 +08:00
requirements.txt Updated from global requirements 2016-06-10 23:16:13 +00:00
run_tests.sh Remove check for bash usage 2015-04-07 15:15:33 +00:00
setup.cfg Install dibbler.filters rootwrap file 2016-09-21 19:48:13 +00:00
setup.py Updated from global requirements 2015-09-21 18:56:49 +00:00
test-requirements.txt Updated from global requirements 2016-09-06 09:18:32 +00:00
tox.ini Allow tox to be run with python 3 2016-07-25 22:23:16 +00:00

README.rst

Welcome!

You have come across a cloud computing network fabric controller. It has identified itself as "Neutron." It aims to tame your (cloud) networking!

External Resources:

The homepage for Neutron is: http://launchpad.net/neutron. Use this site for asking for help, and filing bugs. Code is available on git.openstack.org at <http://git.openstack.org/cgit/openstack/neutron>.

The latest and most in-depth documentation on how to use Neutron is available at: <http://docs.openstack.org>. This includes:

Neutron Administrator Guide

http://docs.openstack.org/admin-guide-cloud/networking.html

Networking Guide

http://docs.openstack.org/networking-guide/

Neutron API Reference:

http://docs.openstack.org/api/openstack-network/2.0/content/

Current Neutron developer documentation is available at:

http://wiki.openstack.org/NeutronDevelopment

For help on usage and hacking of Neutron, please send mail to <mailto:openstack-dev@lists.openstack.org>.

For information on how to contribute to Neutron, please see the contents of the CONTRIBUTING.rst file.