diff options
| author | vivek <vivek@cumulusnetworks.com> | 2018-08-20 19:20:06 +0000 | 
|---|---|---|
| committer | vivek <vivek@cumulusnetworks.com> | 2018-08-20 19:20:06 +0000 | 
| commit | f07e1c99d68907188adc66a674eb566febd00031 (patch) | |
| tree | 68c7c3fc7bd0e6c73667d52a53fac3be55831347 /bgpd/bgp_evpn.h | |
| parent | 8b44d564c3a513c3af6fb0c440321971f03a5c8e (diff) | |
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>
Diffstat (limited to 'bgpd/bgp_evpn.h')
| -rw-r--r-- | bgpd/bgp_evpn.h | 2 | 
1 files changed, 1 insertions, 1 deletions
diff --git a/bgpd/bgp_evpn.h b/bgpd/bgp_evpn.h index 91d4c9fac4..b002be3d3d 100644 --- a/bgpd/bgp_evpn.h +++ b/bgpd/bgp_evpn.h @@ -132,7 +132,7 @@ extern int bgp_evpn_local_macip_del(struct bgp *bgp, vni_t vni,  				    struct ethaddr *mac, struct ipaddr *ip);  extern int bgp_evpn_local_macip_add(struct bgp *bgp, vni_t vni,  				    struct ethaddr *mac, struct ipaddr *ip, -				    uint8_t flags); +				    uint8_t flags, uint32_t seq);  extern int bgp_evpn_local_l3vni_add(vni_t vni, vrf_id_t vrf_id,  				    struct ethaddr *rmac,  				    struct in_addr originator_ip, int filter);  | 
