neutron/neutron
venkata anil 26d8702b9d 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

Closes-bug: #1522980
Closes-bug: #1602614
Change-Id: Ie1f5289390b3ff3f7f3ed7ffc8f6a8258ee8662e
2016-09-08 22:30:16 +00:00
..
agent Use bridge_lib's FdbInterface calls instead of execute util 2016-09-04 11:17:01 +00:00
api Merge "Add the l3 agent 'host' when logging routers" 2016-09-02 00:09:33 +00:00
callbacks Reduce the number of debug traces emitted by registry callbacks 2016-09-07 20:10:16 -07:00
cmd Merge "Adding support of releasing DHCPv6 leases" 2016-09-01 07:33:35 +00:00
common Merge "debtcollector for globals" 2016-08-31 10:35:55 +00:00
conf Config: change deprecation for max_fixed_ips_per_port to Ocata 2016-09-06 23:26:12 -07:00
core_extensions Respond negatively to tenant detachment of enforced QoS policies 2016-05-16 21:54:15 +00:00
db l2pop fdb flows for HA router ports 2016-09-08 22:30:16 +00:00
debug Replace device owners hard coded strings to neutron_lib constants 2016-07-12 04:11:35 -04:00
extensions Merge "Only schedule routers from drivers that need it" 2016-09-07 19:04:04 +00:00
hacking Fix check_asserttruefalse syntax validator 2016-08-11 13:49:47 +00:00
ipam Switch to neutron-lib for model_base 2016-08-31 11:12:18 -04:00
locale Imported Translations from Zanata 2016-08-19 07:27:43 +00:00
notifiers Fix deprecation warnings 2016-08-26 22:16:06 -04:00
objects Convert OVO fields to primitives for to_dict() 2016-09-07 03:50:27 -07:00
pecan_wsgi Merge "Pecan: Handle member actions" 2016-08-30 13:00:38 +00:00
plugins l2pop fdb flows for HA router ports 2016-09-08 22:30:16 +00:00
quota Merge "Except if tracked resource registered as countable" 2016-09-08 07:04:25 +00:00
scheduler Merge "Only schedule routers from drivers that need it" 2016-09-07 19:04:04 +00:00
server Revert "Revert "Remove threading before process forking"" 2016-06-02 21:26:08 +00:00
services Merge "Ensure UnknownProvisioningError can be printed" 2016-09-08 15:29:07 +00:00
tests l2pop fdb flows for HA router ports 2016-09-08 22:30:16 +00:00
__init__.py Hacking rule to check i18n usage 2016-03-30 21:28:37 -04:00
_i18n.py Move i18n to _i18n, as per oslo_i18n guidelines 2015-12-01 19:29:10 -07:00
auth.py Consume ConfigurableMiddleware from oslo_middleware 2015-10-08 17:59:43 +00:00
context.py Use context from_environ to load contexts 2016-07-12 13:49:41 +10:00
manager.py Pecan: bind attribute map to controllers 2016-05-26 06:13:53 +00:00
neutron_plugin_base_v2.py Revert "Revert "Remove threading before process forking"" 2016-06-02 21:26:08 +00:00
opts.py Include [agent] extensions option into ovs/linuxbridge agent files 2016-08-24 16:41:03 +00:00
policy.py Fix deprecation warnings 2016-08-26 22:16:06 -04:00
service.py Merge "Use dispose_pool() from oslo.db" 2016-08-26 22:03:41 +00:00
version.py
worker.py Remove notification for process event 2016-06-28 11:49:31 -07:00
wsgi.py Merge "Use dispose_pool() from oslo.db" 2016-08-26 22:03:41 +00:00