mirror_frr/zebra
vivek f07e1c99d6 bgpd, zebra: EVPN extended mobility support
Implement procedures similar to what is specified in
https://tools.ietf.org/html/draft-malhotra-bess-evpn-irb-extended-mobility
in order to support extended mobility scenarios in EVPN. These are scenarios
where a host/VM move results in a different (MAC,IP) binding from earlier.
For example, a host with an address assignment (IP1, MAC1) moves behind a
different PE (VTEP) and has an address assignment of (IP1, MAC2) or a host
with an address assignment (IP5, MAC5) has a different assignment of (IP6,
MAC5) after the move. Note that while these are described as "move" scenarios,
they also cover the situation when a VM is shut down and a new VM is spun up
at a different location that reuses the IP address or MAC address of the
earlier instance, but not both. Yet another scenario is a MAC change for an
attached host/VM i.e., when the MAC of an attached host changes from MAC1 to
MAC2. This is necessary because there may already be a non-zero sequence
number associated with MAC2. Also, even though (IP, MAC1) is withdrawn before
(IP, MAC2) is advertised, they may propagate through the network differently.

The procedures continue to rely on the MAC mobility extended community
specified in RFC 7432 and already supported by the implementation, but
augment it with a inheritance mechanism that understands the relationship
of the host MACIP (ARP/neighbor table entry) to the underlying MAC (MAC
forwarding database entry). In FRR, this relationship is understood by the
zebra component which doubles as the "host mobility manager", so the MAC
mobility sequence numbers are determined through interaction between bgpd
and zebra.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:   Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2018-08-20 19:20:06 +00:00
..
.gitignore *: globally ignore clippy-generated source 2018-03-09 17:52:15 -05:00
client_main.c zebra: fix error-prone array iterator 2018-04-17 13:58:24 -04:00
connected.c lib, zebra: Allow protocols to use Distance as part of RR semantics 2018-07-29 12:43:23 -04:00
connected.h zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
debug.c zebra: PBR show debugging IPSET/IPTABLE hooks declared 2018-05-25 15:49:38 +02:00
debug.h zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
GNOME-PRODUCT-ZEBRA-MIB Initial revision 2002-12-13 20:15:29 +00:00
GNOME-SMI Initial revision 2002-12-13 20:15:29 +00:00
if_ioctl_solaris.c *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
if_ioctl.c *: rename ferr_zlog -> flog_err_sys 2018-08-14 20:02:05 +00:00
if_netlink.c *: frr_elevate_privs whitespace fixes 2018-08-14 20:02:05 +00:00
if_netlink.h zebra: Remove unnecessary function parameter 2018-05-24 09:14:43 -04:00
if_sysctl.c build: zebra: remove *_method Makefile hacks 2017-07-31 23:03:30 +02:00
interface.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
interface.h zebra: Notice when our neighbor entry is removed and fight back 2018-04-09 08:04:39 -04:00
ioctl_solaris.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
ioctl_solaris.h *: reindent 2017-07-17 14:04:07 +02:00
ioctl.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
ioctl.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
ipforward_proc.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
ipforward_solaris.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
ipforward_sysctl.c *: frr_elevate_privs whitespace fixes 2018-08-14 20:02:05 +00:00
ipforward.h *: reindent 2017-07-17 14:04:07 +02:00
irdp_interface.c zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
irdp_main.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
irdp_packet.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
irdp.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
kernel_netlink.c zebra: fix warnings from frr_elevate_privs() 2018-08-14 20:02:05 +00:00
kernel_netlink.h Refactor code for new fuzzing netlink flag 2018-07-24 13:39:25 -04:00
kernel_socket.c *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
kernel_socket.h zebra: cleanup blackhole support 2017-08-28 05:07:51 +02:00
label_manager.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
label_manager.h lib, zebra: fix formatting and style 2018-05-08 18:37:05 +02:00
main.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
Makefile build: convert zebra/ to non-recursive build 2017-07-31 23:03:30 +02:00
redistribute.c lib, zebra: Allow protocols to use Distance as part of RR semantics 2018-07-29 12:43:23 -04:00
redistribute.h zebra, libs: use const prefix ptrs in apis 2018-07-11 09:22:49 -04:00
rib.h lib, zebra: Allow protocols to use Distance as part of RR semantics 2018-07-29 12:43:23 -04:00
router-id.c lib,zebra: fix json output when vrf1 when not active 2018-07-27 10:17:03 -04:00
router-id.h *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
rt_netlink.c Merge pull request #2122 from donaldsharp/zebra_nhs 2018-08-08 08:07:24 -07:00
rt_netlink.h Merge pull request #2283 from donaldsharp/ignore_some_more 2018-05-27 11:02:15 -04:00
rt_socket.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
rt.h bgpd: support evpn nd ext community 2018-07-17 13:06:41 -07:00
rtadv.c Merge pull request #2448 from qlyoung/error-reference-cards 2018-08-16 16:39:40 +02:00
rtadv.h Revert "zebra: implement draft-bz-v4goawayflag-00" 2018-04-02 15:26:06 -04:00
rtread_getmsg.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
rtread_netlink.c *: PBR - netlink interaction and basic definitions 2018-03-09 11:07:41 -05:00
rtread_sysctl.c *: PBR - netlink interaction and basic definitions 2018-03-09 11:07:41 -05:00
rule_netlink.c zebra: Format log for address family check 2018-07-25 14:08:24 -04:00
rule_netlink.h zebra: Remove unnecessary function parameter 2018-05-24 09:14:43 -04:00
rule_socket.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
subdir.am zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
table_manager.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
table_manager.h zebra: use hooks for client lifecycle callbacks 2018-04-22 22:50:24 -04:00
testrib.conf zebra: Build the test client, can be useful, and add IPv6 to testrib.conf 2016-05-26 01:13:58 +00:00
zapi_msg.c *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
zapi_msg.h zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
zebra_errors.c *: rename ferr_ref -> log_ref 2018-08-14 20:02:05 +00:00
zebra_errors.h *: rename ferr_ref -> log_ref 2018-08-14 20:02:05 +00:00
zebra_fpm_dt.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_fpm_netlink.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_fpm_private.h *: reindent 2017-07-17 14:04:07 +02:00
zebra_fpm_protobuf.c zebra: Set "has" flags on optional scalar fields of FPM protobuf messages 2018-03-29 19:09:43 +03:00
zebra_fpm.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
zebra_l2_null.c *: reindent 2017-07-17 14:04:07 +02:00
zebra_l2.c *: use the FOR_ALL_INTERFACES abstraction from babeld 2017-10-10 09:05:46 -03:00
zebra_l2.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_memory.c *: reindent 2017-07-17 14:04:07 +02:00
zebra_memory.h zebra: Refactor 'struct rib' to be 'struct route_entry' 2017-06-01 08:00:05 -04:00
zebra_mpls_netlink.c zebra: Add enum dp_req_result to lsp install/deletes 2018-05-30 08:05:29 -04:00
zebra_mpls_null.c zebra: Add enum dp_req_result to lsp install/deletes 2018-05-30 08:05:29 -04:00
zebra_mpls_openbsd.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
zebra_mpls_vty.c zebra: Remove zebra_static.c and .h 2018-07-29 12:37:26 -04:00
zebra_mpls.c Merge pull request #2846 from donaldsharp/backet_data 2018-08-16 11:32:41 -04:00
zebra_mpls.h zebra: use hooks for client lifecycle callbacks 2018-04-22 22:50:24 -04:00
zebra_mroute.c zebra: refactor zserv names, consolidate events 2018-05-29 19:06:16 +00:00
zebra_mroute.h zebra: standardize ZAPI message handler args 2018-03-12 14:57:05 -04:00
zebra_netns_id.c *: rename ferr_zlog -> flog_err_sys 2018-08-14 20:02:05 +00:00
zebra_netns_id.h zebra: upon startup, a NSID is assigned to default netns 2018-02-27 11:11:24 +01:00
zebra_netns_notify.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
zebra_netns_notify.h zebra: collect and get netnamespaces information 2018-02-27 11:11:24 +01:00
zebra_ns.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
zebra_ns.h zebra: ns_table list is extended to support multiple NETNS 2018-06-01 15:24:13 +02:00
zebra_pbr.c zebra: add information about which port is monitored 2018-07-24 12:17:57 +02:00
zebra_pbr.h zebra: show pbr iptable per iptable 2018-07-24 12:17:57 +02:00
zebra_ptm_redistribute.c zebra: refactor zserv names, consolidate events 2018-05-29 19:06:16 +00:00
zebra_ptm_redistribute.h *: reindent 2017-07-17 14:04:07 +02:00
zebra_ptm.c Merge pull request #2856 from opensourcerouting/bfd-work 2018-08-16 18:48:51 -04:00
zebra_ptm.h bfdd: re-route PTM-BFD daemon messages 2018-08-08 18:25:04 -03:00
zebra_pw.c zebra: fix "no pseudowire IFNAME" on vtysh 2018-08-13 18:59:31 -03:00
zebra_pw.h zebra: use hooks for client lifecycle callbacks 2018-04-22 22:50:24 -04:00
zebra_rib.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
zebra_rnh.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
zebra_rnh.h staticd: Start the addition of a staticd 2018-07-29 12:37:24 -04:00
zebra_routemap.c *: ALLOC calls cannot fail 2018-08-11 17:14:58 +02:00
zebra_routemap.h libs, daemons: use const in route-map apply 2018-07-23 10:34:35 -04:00
zebra_snmp.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_vrf.c zebra: Remove zebra_static.c and .h 2018-07-29 12:37:26 -04:00
zebra_vrf.h staticd: Start the addition of a staticd 2018-07-29 12:37:24 -04:00
zebra_vty.c Merge pull request #2799 from adharkar/frr-zebra_cli 2018-08-08 20:27:49 +02:00
zebra_vxlan_null.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_vxlan_private.h bgpd, zebra: EVPN extended mobility support 2018-08-20 19:20:06 +00:00
zebra_vxlan.c bgpd, zebra: EVPN extended mobility support 2018-08-20 19:20:06 +00:00
zebra_vxlan.h bgpd: support evpn nd ext community 2018-07-17 13:06:41 -07:00
zebra.conf.sample *: Remove cvs control points 2017-12-05 17:28:12 -05:00
zserv.c *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
zserv.h zebra: dont delete pthreads from under themselves 2018-07-30 23:06:27 +00:00