26d8702b9d
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 Closes-bug: #1522980 Closes-bug: #1602614 Change-Id: Ie1f5289390b3ff3f7f3ed7ffc8f6a8258ee8662e |
||
---|---|---|
api-ref | ||
bin | ||
devstack | ||
doc | ||
etc | ||
neutron | ||
rally-jobs | ||
releasenotes | ||
tools | ||
.coveragerc | ||
.gitignore | ||
.gitreview | ||
.mailmap | ||
.pylintrc | ||
.testr.conf | ||
CONTRIBUTING.rst | ||
HACKING.rst | ||
LICENSE | ||
MANIFEST.in | ||
README.rst | ||
TESTING.rst | ||
babel.cfg | ||
requirements.txt | ||
run_tests.sh | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
tox.ini |
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
- Neutron Developer Guide
- Networking Guide
- Neutron API Reference:
- Current Neutron developer documentation is available at:
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.