]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
4 years agozebra: extract neigbor processing from remote_macip_add
Pat Ruddy [Fri, 24 Apr 2020 12:48:31 +0000 (13:48 +0100)]
zebra: extract neigbor processing from remote_macip_add

extract the neighbor part of process_remote_macip_add into a new
function process_neigh_remote_macip_add in zebra_evpn_neigh.c.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: extract neighbor functions from zebra_vxlan.c
Pat Ruddy [Thu, 23 Jul 2020 22:30:23 +0000 (15:30 -0700)]
zebra: extract neighbor functions from zebra_vxlan.c

Move neighbor processing functions to new zebra_evpn_neigh.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: clone zebra_vxlan.c to zebra_evpn_neigh.c
Pat Ruddy [Thu, 23 Apr 2020 09:22:17 +0000 (10:22 +0100)]
zebra: clone zebra_vxlan.c to zebra_evpn_neigh.c

clone zebra_vxlan.c to create a file zebra_evpn_neigh.c for neighbor
dB functions whilst retaining the history of zebra_vxlan.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: extract gateway mac add from zebra_vxlan.c
Pat Ruddy [Wed, 22 Apr 2020 15:30:52 +0000 (16:30 +0100)]
zebra: extract gateway mac add from zebra_vxlan.c

extract mac_gateway add code from zevi_gw_macip_add and move it to
a new generic function zebra_evpn_mac_gw_macip_add in zebra_evpn_mac.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: extract local mac del from zebra_vxlan.c
Pat Ruddy [Wed, 22 Apr 2020 15:12:08 +0000 (16:12 +0100)]
zebra: extract local mac del from zebra_vxlan.c

extract generic local mac add code from zebra_vxlan_local_mac_del
into a new function zebra_evpn_del_local_mac in zebra_evpn_mac.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: extract local mac add code from vxlan
Pat Ruddy [Thu, 23 Jul 2020 22:04:53 +0000 (15:04 -0700)]
zebra: extract local mac add code from vxlan

extract the local mac add code from zebra_vxlan_local_mac_add_update
and create a new generic local mac add function
zebra_evpn_add_update_local_mac

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: split out mac_add code from process_remote_macip_add
Pat Ruddy [Wed, 22 Apr 2020 11:37:08 +0000 (12:37 +0100)]
zebra: split out mac_add code from process_remote_macip_add

Move MAC add code from process_remote_macip_add in zebra_vxlan.c
to a generic function process_mac_remote_macip_add in
zebra_evpn_mac.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: extract evpn mac functions from zebra_vxlan.c
Pat Ruddy [Thu, 23 Jul 2020 21:58:45 +0000 (14:58 -0700)]
zebra: extract evpn mac functions from zebra_vxlan.c

Move MAC dB specific functions to zebra_evpn_mac.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: clone zebra_vxlan.c to zebra_evpn_mac.c
Pat Ruddy [Tue, 21 Apr 2020 14:12:09 +0000 (15:12 +0100)]
zebra: clone zebra_vxlan.c to zebra_evpn_mac.c

clone zebra_vxlan.c to create a file zebra_evpn_mac.c for MAC dB
functions whilst retaining the history of zebra_vxlan.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agozebra: rename vni to evpn where appropriate
Pat Ruddy [Thu, 23 Jul 2020 21:51:10 +0000 (14:51 -0700)]
zebra: rename vni to evpn where appropriate

The main zebra_vni_t hash structure has been renamed to zebra_evpn_t
to allow for other transport underlays. Rename functions and variables
to reflect this change.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agotests: remove ifindex from VNI JSON comparison
Pat Ruddy [Tue, 2 Jun 2020 10:47:24 +0000 (11:47 +0100)]
tests: remove ifindex from VNI JSON comparison

Since the values of ifindices cannot be relied upon across
distributions, simpy remove them from the VNI JSON being compared.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agotests: add EVPN IP learning tests
Pat Ruddy [Fri, 17 Apr 2020 11:29:13 +0000 (12:29 +0100)]
tests: add EVPN IP learning tests

add tests to check IP address/MAC address associations are learned
from netlink NEWNEIGH messages and are propagated to the remote PE

Signed-off-by: Pat Ruddy <pat@voltanet.io>
4 years agoMerge pull request #6829 from qlyoung/fix-vrrp-northbound-autocreated-uaf
Renato Westphal [Tue, 11 Aug 2020 23:28:30 +0000 (20:28 -0300)]
Merge pull request #6829 from qlyoung/fix-vrrp-northbound-autocreated-uaf

Fix vrrp northbound autocreated uaf

4 years agoMerge pull request #6874 from chiragshah6/mdev
Renato Westphal [Tue, 11 Aug 2020 23:27:00 +0000 (20:27 -0300)]
Merge pull request #6874 from chiragshah6/mdev

zebra: fix crash in vrf-vni mapping

4 years agoMerge pull request #6895 from mjstapp/fix_topo_vpls_timeout
Donald Sharp [Tue, 11 Aug 2020 21:21:08 +0000 (17:21 -0400)]
Merge pull request #6895 from mjstapp/fix_topo_vpls_timeout

tests: add time to ldp vpls testcase

4 years agovrrpd: log errmsg, stricter nb validation 6829/head
Quentin Young [Tue, 11 Aug 2020 18:24:56 +0000 (14:24 -0400)]
vrrpd: log errmsg, stricter nb validation

* When failing a config transaction due to a VRID conflict, describe the
  error in the provided space
* When validating, allow the NB userdata lookup for interface object to
  soft fail; but when applying, assert if it does not exist

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
4 years agoMerge pull request #6820 from donaldsharp/random_stuff
Mark Stapp [Tue, 11 Aug 2020 20:07:58 +0000 (16:07 -0400)]
Merge pull request #6820 from donaldsharp/random_stuff

Some ad-hoc work that is independent of actual bug fixes/feature work I am doing

4 years agovrrpd: fix improper NB query during validation
Quentin Young [Thu, 30 Jul 2020 20:44:46 +0000 (16:44 -0400)]
vrrpd: fix improper NB query during validation

We were querying the NB for an interface and expecting it to exist, but
we were doing this during a validation run when the interface hasn't yet
been created, resulting in an abort. Adjust validation checks to handle
this scenario.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
4 years agovrrpd: don't allow autocreated vr's in NB layer
Quentin Young [Tue, 2 Jun 2020 19:33:05 +0000 (15:33 -0400)]
vrrpd: don't allow autocreated vr's in NB layer

Changing properties on an autoconfigured VRRP instance results in its
pointer being stored as a userdata in the NB tree, leading to UAF when
autoconfigure deletes the instance and then later NB operations take
place using the now-stale pointer.

Ticket: CM-29850
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
4 years agoMerge pull request #6755 from xThaid/dplane_batching
Donald Sharp [Tue, 11 Aug 2020 17:59:12 +0000 (13:59 -0400)]
Merge pull request #6755 from xThaid/dplane_batching

zebra: dataplane batching

4 years agoMerge pull request #6885 from GalaxyGorilla/ospf_sr_ri_fix
Donald Sharp [Tue, 11 Aug 2020 17:13:28 +0000 (13:13 -0400)]
Merge pull request #6885 from GalaxyGorilla/ospf_sr_ri_fix

ospfd: fix processing of SR RI LSAs

4 years agoMerge pull request #6894 from mjstapp/fix_sa_vxlan
Donald Sharp [Tue, 11 Aug 2020 17:12:08 +0000 (13:12 -0400)]
Merge pull request #6894 from mjstapp/fix_sa_vxlan

zebra: clean up SA warning in vxlan code

4 years agoMerge pull request #6893 from DmitriyEshenko/dmvpn-example
Donald Sharp [Tue, 11 Aug 2020 17:05:24 +0000 (13:05 -0400)]
Merge pull request #6893 from DmitriyEshenko/dmvpn-example

docs: Add dmvpn example

4 years agoMerge pull request #6870 from donaldsharp/test_fixups
Mark Stapp [Tue, 11 Aug 2020 16:40:52 +0000 (12:40 -0400)]
Merge pull request #6870 from donaldsharp/test_fixups

Test fixups

4 years agodoc: Update sharp watch command documentation slightly 6820/head
Donald Sharp [Sat, 11 Jul 2020 01:59:23 +0000 (21:59 -0400)]
doc: Update sharp watch command documentation slightly

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agosharpd: Cleanup help text
Donald Sharp [Sat, 11 Jul 2020 01:52:54 +0000 (21:52 -0400)]
sharpd: Cleanup help text

Help text was a bit inconsistent/wrong.  Fix it like you mixed it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agozebra: Only note time of first nht registration
Donald Sharp [Sat, 11 Jul 2020 01:48:05 +0000 (21:48 -0400)]
zebra: Only note time of first nht registration

We were noticing registration time of the last nht time.
Let's just store the original time, although I am a bit
dubious about the usefulness of this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #6801 from ton31337/feature/force_maximum-prefix_for_filtered_routes
Russ White [Tue, 11 Aug 2020 15:52:05 +0000 (11:52 -0400)]
Merge pull request #6801 from ton31337/feature/force_maximum-prefix_for_filtered_routes

bgpd: Add a knob to force maximum-prefix even for filtered routes

4 years agotests: add time to ldp vpls testcase 6895/head
Mark Stapp [Tue, 11 Aug 2020 13:33:39 +0000 (09:33 -0400)]
tests: add time to ldp vpls testcase

Add some more wait time to an LDP vpls testcase - it seems to have
trouble in the CI sometimes.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agozebra: clean up SA warning in vxlan code 6894/head
Mark Stapp [Tue, 11 Aug 2020 12:39:25 +0000 (08:39 -0400)]
zebra: clean up SA warning in vxlan code

Resolve an SA warning in the vxlan code.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agodocs: Add dmvpn example 6893/head
DmitriyEshenko [Mon, 10 Aug 2020 19:45:50 +0000 (22:45 +0300)]
docs: Add dmvpn example

Signed-off-by: Dmitriy Eshenko <dmitriy.eshenko@vyos.io>
4 years agoMerge pull request #6888 from qlyoung/doc-ebgp-mulithop
Donald Sharp [Tue, 11 Aug 2020 12:20:11 +0000 (08:20 -0400)]
Merge pull request #6888 from qlyoung/doc-ebgp-mulithop

doc: document effect of ebgp-multihop

4 years agoMerge pull request #6886 from opensourcerouting/grpc-doc
Quentin Young [Mon, 10 Aug 2020 20:53:48 +0000 (16:53 -0400)]
Merge pull request #6886 from opensourcerouting/grpc-doc

doc: initial documentation for gRPC

4 years agodoc: add documentation for the dataplane batching 6755/head
Jakub Urbańczyk [Mon, 10 Aug 2020 18:34:31 +0000 (20:34 +0200)]
doc: add documentation for the dataplane batching

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
4 years agotests: zebra netlink testcases
Jakub Urbańczyk [Mon, 3 Aug 2020 18:23:56 +0000 (20:23 +0200)]
tests: zebra netlink testcases

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
4 years agozebra: design changes in netlink batching code
Jakub Urbańczyk [Mon, 3 Aug 2020 14:51:56 +0000 (16:51 +0200)]
zebra: design changes in netlink batching code

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
4 years agozebra: remove old kernel one-update-at-a-time api
Jakub Urbańczyk [Thu, 30 Jul 2020 22:15:51 +0000 (00:15 +0200)]
zebra: remove old kernel one-update-at-a-time api

The old one is replaced by the api that is suitable for the batching.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
4 years agozebra: netlink message batching
Jakub Urbańczyk [Wed, 15 Jul 2020 13:14:08 +0000 (15:14 +0200)]
zebra: netlink message batching

Integrate existing functions with batching infrastructure.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
4 years agoMerge pull request #6887 from donaldsharp/pim_sec_addr_fixup
Jafar Al-Gharaibeh [Mon, 10 Aug 2020 19:40:57 +0000 (14:40 -0500)]
Merge pull request #6887 from donaldsharp/pim_sec_addr_fixup

pimd: Allow multiple secondary addresses to work

4 years agodoc: initial documentation for gRPC 6886/head
Rafael Zalamena [Sun, 9 Aug 2020 21:04:30 +0000 (18:04 -0300)]
doc: initial documentation for gRPC

Give the FRR users some examples of gRPC usage in scripts to let them
start experimenting with the new configuration interface provided by
YANG/northbound.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
4 years agodoc: document effect of ebgp-multihop 6888/head
Quentin Young [Mon, 10 Aug 2020 19:32:38 +0000 (15:32 -0400)]
doc: document effect of ebgp-multihop

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
4 years agozebra: add netlink message batching infrastructure
Jakub Urbańczyk [Wed, 15 Jul 2020 13:13:18 +0000 (15:13 +0200)]
zebra: add netlink message batching infrastructure

Add helpers to batch several messages into one single netlink datagram.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
4 years agozebra: remove "PENDING" dplane request state
Jakub Urbańczyk [Wed, 15 Jul 2020 13:12:22 +0000 (15:12 +0200)]
zebra: remove "PENDING" dplane request state

This request state is redundant with new message batching interface.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
4 years agozebra: prepare dplane for batching
Jakub Urbańczyk [Wed, 15 Jul 2020 13:11:21 +0000 (15:11 +0200)]
zebra: prepare dplane for batching

Extend kernel interface to allow the data plane to send many kernel
updates at once.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
4 years agoMerge pull request #6783 from opensourcerouting/feature/sr-te
Russ White [Mon, 10 Aug 2020 19:31:35 +0000 (15:31 -0400)]
Merge pull request #6783 from opensourcerouting/feature/sr-te

lib, zebra: Add SR-TE policy infrastructure to zebra

4 years agopimd: Allow multiple secondary addresses to work 6887/head
Donald Sharp [Mon, 10 Aug 2020 14:32:17 +0000 (10:32 -0400)]
pimd: Allow multiple secondary addresses to work

Suppose you have more than 2 addresses on a pim interface:
lo              up      default         10.255.0.1/32
                                        10.255.0.101/32
                                        10.255.0.254/32

A `show ip pim int lo` gives us this:

eva# show ip pim interface lo
Interface  : lo
State      : up
Address    : 10.255.0.1 (primary)
             10.255.0.101/32

When we go look at the code that pulls secondary addresses in
we are using a prefix_cmp to know if we know about a secondary already
but were expecting true values instead of -1/0/1 being returned.

Modify code so that pim sees all secondary addresses

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoospfd: fix processing of SR RI LSAs 6885/head
GalaxyGorilla [Mon, 10 Aug 2020 10:25:16 +0000 (10:25 +0000)]
ospfd: fix processing of SR RI LSAs

Router Information are contained in opaque LSAs and when such a LSA
is received a new SR node for the advertising router is created.

However, the RI related data is currently not set when such a SR node
already exists. This can happen when e.g. link and prefix information
arrive before the RI and therefore an SR node is created.

This is now fixed by setting the data everytime the RI is received,
independent of the SR node already existing or not.

Signed-off-by: GalaxyGorilla <sascha@netdef.org>
4 years agoMerge pull request #6483 from sylane/router-id-v6
Donald Sharp [Mon, 10 Aug 2020 12:39:51 +0000 (08:39 -0400)]
Merge pull request #6483 from sylane/router-id-v6

zebra: add IPv6 router-id

4 years agoMerge pull request #6877 from opensourcerouting/misc-docstring-fix
Donatas Abraitis [Sun, 9 Aug 2020 18:49:03 +0000 (21:49 +0300)]
Merge pull request #6877 from opensourcerouting/misc-docstring-fix

bgpd,lib: add missing doc strings

4 years agoMerge pull request #6879 from LabNConsulting/working/lb/valgrind-supp-libyang
Donald Sharp [Sun, 9 Aug 2020 00:15:16 +0000 (20:15 -0400)]
Merge pull request #6879 from LabNConsulting/working/lb/valgrind-supp-libyang

bgpd: suppress new libyang_1.0 related loss reports

4 years agobgpd: suppress new libyang_1.0 related loss reports 6879/head
Lou Berger [Sat, 8 Aug 2020 21:56:18 +0000 (17:56 -0400)]
bgpd: suppress new libyang_1.0 related loss reports

Signed-off-by: Lou Berger <lberger@labn.net>
4 years agozebra: fix crash in vrf-vni mapping 6874/head
Chirag Shah [Thu, 6 Aug 2020 18:18:42 +0000 (11:18 -0700)]
zebra: fix crash in vrf-vni mapping

As part of PR 6758 vrf vni converted to transactional cli.
Handle a scenario where vrf is not created yet (inactive) and vni
is mapped to the inactive vrf.

Testing Done:

bharat(config-vrf)# do show vrf
vrf vrf1 id 11 table 1001
vrf vrf5 inactive (configured)

bharat(config)# vrf vrf5
bharat(config-vrf)# vni 5005

bharat(config-vrf)# do show vrf vni
VRF                                   VNI        VxLAN IF             L3-SVI               State Rmac
vrf5                                  5005       None                 None                 Down  None

bharat(config-vrf)# no vni 5005
bharat(config-vrf)# do show vrf vni
VRF                                   VNI        VxLAN IF             L3-SVI               State Rmac

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
4 years agolib: fix missing doc string in route map 6877/head
Rafael Zalamena [Fri, 7 Aug 2020 17:37:02 +0000 (14:37 -0300)]
lib: fix missing doc string in route map

Add the missing route map doc string for call command.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
4 years agobgpd: fix missing doc string in evpn
Rafael Zalamena [Fri, 7 Aug 2020 17:32:58 +0000 (14:32 -0300)]
bgpd: fix missing doc string in evpn

Add the missing EVPN doc string in the show command.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
4 years agoMerge pull request #6875 from opensourcerouting/bgpd-fsm-legacy-cleanup
Donald Sharp [Fri, 7 Aug 2020 16:44:48 +0000 (12:44 -0400)]
Merge pull request #6875 from opensourcerouting/bgpd-fsm-legacy-cleanup

bgpd: fsm legacy thread reset cleanup

4 years agoMerge pull request #6517 from vishaldhingra/submodule
Donald Sharp [Fri, 7 Aug 2020 15:09:25 +0000 (11:09 -0400)]
Merge pull request #6517 from vishaldhingra/submodule

lib: Add support to load submodules in embedded modules framework

4 years agoMerge pull request #6872 from vincentbernat/fix/bgp4mib-vrf
Donatas Abraitis [Fri, 7 Aug 2020 15:04:47 +0000 (18:04 +0300)]
Merge pull request #6872 from vincentbernat/fix/bgp4mib-vrf

bgpd: implement bgpPeerTable accross VRFs

4 years agobgpd: fsm legacy thread reset cleanup 6875/head
David Schweizer [Thu, 6 Aug 2020 14:58:45 +0000 (16:58 +0200)]
bgpd: fsm legacy thread reset cleanup

* Removed old timer thread resets, since this has been taken care of
  after execution of the threads by the thread_fetch function in
  lib/thread.c for quite some time now.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
4 years agolib, zebra: Add SR-TE policy infrastructure to zebra 6783/head
Sebastien Merle [Mon, 20 Jul 2020 11:43:54 +0000 (13:43 +0200)]
lib, zebra: Add SR-TE policy infrastructure to zebra

For the sake of Segment Routing (SR) and Traffic Engineering (TE)
Policies there's a need for additional infrastructure within zebra.
The infrastructure in this PR is supposed to manage such policies
in terms of installing binding SIDs and LSPs. Also it is capable of
managing MPLS labels using the label manager, keeping track of
nexthops (for resolving labels) and notifying interested parties about
changes of a policy/LSP state. Further it enables a route map mechanism
for BGP and SR-TE colors such that learned BGP routes can be mapped
onto SR-TE Policies.

This PR does not introduce any usable features by now, it is just
infrastructure for other upcoming PRs which will introduce 'pathd',
a new SR-TE daemon.

Co-authored-by: Renato Westphal <renato@opensourcerouting.org>
Co-authored-by: GalaxyGorilla <sascha@netdef.org>
Signed-off-by: Sebastien Merle <sebastien@netdef.org>
4 years agolib: add possibility to search non-recursively for NB node entries
GalaxyGorilla [Tue, 10 Mar 2020 09:30:20 +0000 (09:30 +0000)]
lib: add possibility to search non-recursively for NB node entries

Signed-off-by: GalaxyGorilla <sascha@netdef.org>
4 years agozebra: Fix selection of label chunks in label manager
GalaxyGorilla [Thu, 27 Feb 2020 12:57:13 +0000 (12:57 +0000)]
zebra: Fix selection of label chunks in label manager

For allocating a new label range the label manager will loop
the existing label chunks and compare the start and end labels
with the label range in question. In case a label range should
be re-allocated to the existing label chunk, the end label
of the chunk is not honored correctly, e.g. the new label
range has to be a true subset of the existing label chunk.

This is very easy reproducable by re-allocating a single label.
e.g. a label range of size 1.

This problem is fixed by allowing the mentioned 'end' labels to
be equal.

Signed-off-by: GalaxyGorilla <sascha@netdef.org>
4 years agolib: add generic struct ipaddr comparison function
Sebastien Merle [Wed, 11 Dec 2019 15:40:39 +0000 (16:40 +0100)]
lib: add generic struct ipaddr comparison function

Signed-off-by: Sebastien Merle <sebastien@netdef.org>
4 years agoMerge pull request #6616 from mobash-rasool/yang-fix
Renato Westphal [Thu, 6 Aug 2020 22:07:56 +0000 (19:07 -0300)]
Merge pull request #6616 from mobash-rasool/yang-fix

ospfd: YANG Model definition for OSPFv2

4 years agotests: `no learning` is not accepted 6870/head
Donald Sharp [Thu, 30 Jul 2020 13:43:42 +0000 (09:43 -0400)]
tests: `no learning` is not accepted

The vxlan `ip... ` command is failing because we are passing in
`no learning` and that is failing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agotests: Add some small clues to what dut is having the issue
Donald Sharp [Thu, 30 Jul 2020 13:42:52 +0000 (09:42 -0400)]
tests: Add some small clues to what dut is having the issue

Add a bit of a clue to the test_evpn_type5_topo1.py script
to what dut is failing, when things go south.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agozebra: Fix off by one error in no vni command
Donald Sharp [Thu, 6 Aug 2020 12:29:34 +0000 (08:29 -0400)]
zebra: Fix off by one error in no vni command

Commit: e2bcfa3946aadc62af53cf53ff8d2f9fe7e5bab1

Introduced a off by one error in the `no vni XXX` command:
@@ -2337,12 +2336,10 @@ DEFUN (no_vrf_vni_mapping,
        "VNI-ID\n"
        "prefix-routes-only\n")
 {
-       int ret = 0;
        int filter = 0;
-       char err[ERR_STR_SZ];
-       vni_t vni = strtoul(argv[2]->arg, NULL, 10);

        ZEBRA_DECLVAR_CONTEXT(vrf, zvrf);
+       vni_t vni = strtoul(argv[1]->arg, NULL, 10);

        assert(vrf);
        assert(zvrf);

Fix it.

Fixes: #6867
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #6873 from mjstapp/fix_topo_retry_sigterm
Donald Sharp [Thu, 6 Aug 2020 20:28:25 +0000 (16:28 -0400)]
Merge pull request #6873 from mjstapp/fix_topo_retry_sigterm

tests: stop daemons consistently in mem leak path

4 years agoMerge pull request #6587 from AnuradhaKaruppiah/evpn-mh-pr-1
Rafael Zalamena [Thu, 6 Aug 2020 19:49:14 +0000 (19:49 +0000)]
Merge pull request #6587 from AnuradhaKaruppiah/evpn-mh-pr-1

EVPN Multihoming part-1

4 years agobgpd: implement bgpPeerTable accross VRFs 6872/head
Vincent Bernat [Thu, 6 Aug 2020 15:23:06 +0000 (17:23 +0200)]
bgpd: implement bgpPeerTable accross VRFs

Currently, bgpPeerTable only looks the default BGP instance. Most
vendors return all the available peers in this table. This commit
exposes all BGP instances.

The other tables are unchanged as it doesn't make sense to expose
routes from random VRFs into a single table. Vendors are using SNMP
contexts for that but we don't have support for it. Therefore, do
nothing.

Fix #6077

Signed-off-by: Vincent Bernat <vincent@bernat.ch>
4 years agotests: stop daemons consistently in mem leak path 6873/head
Mark Stapp [Thu, 6 Aug 2020 15:47:12 +0000 (11:47 -0400)]
tests: stop daemons consistently in mem leak path

When the topotest mem-leak reporting is enabled, use the same
two-step daemon stop procedure that's used in
the topogen.stop_topology path.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agoospfd: YANG Model definition for OSPFv2 6616/head
Mobashshera Rasool [Fri, 19 Jun 2020 09:05:49 +0000 (09:05 +0000)]
ospfd: YANG Model definition for OSPFv2

Initial version of OSPF configuration Yang.

Raised new PR with review comment fixes on top of PR
https://github.com/FRRouting/frr/pull/6055

Revision History:
1. Fixed review comments.
2. Removed ospf list with id as key, name can be used as key
3. Corrected the alignment

Co-authored-by : Santosh P K <sapk@vmware.com>
Co-authored-by : Mobashshera Rasool <mrasool@vmware.com>
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
4 years agoMerge pull request #6871 from CHKDSK88/doc_openwrt
Donald Sharp [Thu, 6 Aug 2020 13:51:03 +0000 (09:51 -0400)]
Merge pull request #6871 from CHKDSK88/doc_openwrt

doc: Update instructions for building for OpenWrt

4 years agoMerge pull request #6854 from mjstapp/sharp_lsp_update
Donald Sharp [Thu, 6 Aug 2020 13:43:12 +0000 (09:43 -0400)]
Merge pull request #6854 from mjstapp/sharp_lsp_update

sharpd: support 'update lsp' zapi testing

4 years agoMerge pull request #6859 from mjstapp/fix_dplane_sa_again
Donald Sharp [Thu, 6 Aug 2020 13:42:33 +0000 (09:42 -0400)]
Merge pull request #6859 from mjstapp/fix_dplane_sa_again

zebra: fix coverity SA warning in dataplane

4 years agodoc: Update instructions for building for OpenWrt 6871/head
Pawel Dembicki [Thu, 6 Aug 2020 12:32:38 +0000 (14:32 +0200)]
doc: Update instructions for building for OpenWrt

Frr was added to official OpenWrt repo. No need to use
unofficial sources from Github PR.

Signed-off-by: Pawel Dembicki <p.dembicki@wb.com.pl>
4 years agoMerge pull request #6866 from chiragshah6/mdev
Renato Westphal [Thu, 6 Aug 2020 00:00:24 +0000 (21:00 -0300)]
Merge pull request #6866 from chiragshah6/mdev

lib: yang afi-safi identityref translation

4 years agoMerge pull request #6864 from volta-networks/fix_ldp_oc_withdraw
Renato Westphal [Wed, 5 Aug 2020 23:59:22 +0000 (20:59 -0300)]
Merge pull request #6864 from volta-networks/fix_ldp_oc_withdraw

ldpd: ldp-oc withdraw fix

4 years agolib: yang afi-safi identityref translation 6866/head
Chirag Shah [Wed, 5 Aug 2020 21:38:49 +0000 (14:38 -0700)]
lib: yang afi-safi identityref translation

Add more afi safis in conversion to-from string
to indentityref.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
4 years agoldpd: ldp-oc withdraw fix 6864/head
lynne [Wed, 5 Aug 2020 19:22:08 +0000 (15:22 -0400)]
ldpd: ldp-oc withdraw fix

When LDP is configured in Order Control mode and we receive a
label withdraw message, we should only resend label withdraws to
peers that are the NH for that fec being withdrawn.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
4 years agoMerge pull request #6847 from donaldsharp/time_to_rerun
Donatas Abraitis [Wed, 5 Aug 2020 14:34:46 +0000 (17:34 +0300)]
Merge pull request #6847 from donaldsharp/time_to_rerun

Time to rerun

4 years agoMerge pull request #6850 from mobash-rasool/pim-fixes
Donald Sharp [Wed, 5 Aug 2020 14:03:50 +0000 (10:03 -0400)]
Merge pull request #6850 from mobash-rasool/pim-fixes

pimd: crash fix when RP is removed

4 years agotopotests: initial set of tests for evpn multihoming 6587/head
Anuradha Karuppiah [Thu, 16 Jul 2020 21:09:03 +0000 (14:09 -0700)]
topotests: initial set of tests for evpn multihoming

The base topology is a two level CLOS with two racks. There are
two PEs/TORs in each rack that provide active-active redundancy to
two dual-attached servers in the rack. And EVPN-PIM is used for
flooded traffic.
Reference: evpn-mh-topo-tests.pdf

Tests have been added for the following functionality -
1. ES management
2. EAD/Type-1 route handling
3. Type-2 route with non-zero ESI
4. MAC sync and remote MAC (with remote-ES destination) handling

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agozebra: add ESI to the "show evpn mac vni <> mac <> json" output
Anuradha Karuppiah [Mon, 20 Jul 2020 15:37:46 +0000 (08:37 -0700)]
zebra: add ESI to the "show evpn mac vni <> mac <> json" output

Sample output -
=============
anuradhak-VirtualBox# anuradhak-VirtualBox# show evpn mac vni 1000 mac 00:00:00:00:00:22 json

{
  "00:00:00:00:00:22":{
    "type":"remote",
    "remoteVtep":"0.0.0.0",
    "localSequence":0,
    "remoteSequence":0,
    "detectionCount":0,
    "isDuplicate":false,
    "syncNeighCount":0,
    "esi":"03:44:38:39:ff:ff:02:00:00:02", >>>>>>>>>>>>>>>>
    "neighbors":"none"
  }
}

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agobgpd, lib: move EVPN route type def to lib and use it in the prefix macros
Anuradha Karuppiah [Tue, 14 Jul 2020 01:21:27 +0000 (18:21 -0700)]
bgpd, lib: move EVPN route type def to lib and use it in the prefix macros

Use route names instead of route type number in the EVPN prefix
macros.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agobgpd, zebra: remove strcpy, strlen and sprintf calls
Anuradha Karuppiah [Tue, 16 Jun 2020 00:24:39 +0000 (17:24 -0700)]
bgpd, zebra: remove strcpy, strlen and sprintf calls

Replace with safe copy functions - strlcpy, strlcat, strnlen and
snprintf.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agozebra: remove linux/ifbridge.h from rt_netlink.c
Anuradha Karuppiah [Fri, 17 Apr 2020 18:37:42 +0000 (11:37 -0700)]
zebra: remove linux/ifbridge.h from rt_netlink.c

It is causing build failures because of conflicts with netinet.
Instead I have re-defined the MAC-SYNC UAPIs in the re_netlink.c

This is clearly a hack that needs to be re-visited.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agozebra: support for MAC-IP sync routes
Anuradha Karuppiah [Sun, 29 Mar 2020 15:43:55 +0000 (08:43 -0700)]
zebra: support for MAC-IP sync routes

MAC-IP routes are used for syncing local entries across redundant
switches in an EVPN-MH setup. A path from a peer that has a local
ES as destination is tagged as a SYNC path. The SYNC path results in the
addition of local MAC and/or local neigh entry in zebra and in the
dataplane.

Implementation overview
=======================
1. Three new flags "local-inactive", "peer-active" and "peer-proxy"
are maintained per-local-MAC and per-local-Neigh entry.
2. The "peer-XXX" flags are set and cleared via SYNC path updates
from BGP. Proxy sync paths result in the setting of "peer-proxy" flag
(and non-proxies result in the "peer-active").
3. A neigh entry that has a "peer-XXX" flag set is programmed as
"static" in the dataplane.
4. A MAC entry that has a "peer-XXX" flag set or is referenced by
a sync-neigh entry (that has a "peer-XXX" flags set) is programmed
as "static" in the dataplane.
5. The sync-seq number is used to normalize the MM seq number across
all the redundant switches i.e. the max MM seq number across all
switches is used by each of the switches. This commit also includes
the changes needed for extended MM seq syncing.
6. A MAC/neigh entry has to be local-active or peer-active to sent to
BGP. An entry that is NOT local-active is sent with the proxy flag (so
BGP can "proxy" advertise it).
7. The "peer-active" flag is aged out by zebra by using a hold_timer
(this is instead of being abruptly dropped on SYNC path delete). This
age-out is needed to handle peer-switch restart (procedures are specified
in draft-rbickhart-evpn-ip-mac-proxy-adv). The holdtime needs to be
sufficiently long to allow an external neighmgr daemon or the dataplane
component to independently probe and establish local reachability of a
host. The MAC and neigh hold time values are configurable.
PS: In the future this probing may happen in FRR itself.

CLI changes to display sync info
================================
MAC
===
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
root@torm-11:mgmt:~# net show evpn mac vni 1000
Number of MACs (local and remote) known for this VNI: 6
Flags: N=sync-neighs, I=local-inactive, P=peer-active, X=peer-proxy
MAC               Type   Flags Intf/Remote ES/VTEP            VLAN  Seq #'s
00:02:00:00:00:25 local        vlan1000                       1000  0/0
02:02:00:00:00:02 local  PI    hostbond1                      1000  0/0
02:02:00:00:00:06 remote       03:00:00:00:00:02:11:00:00:01        0/0
02:02:00:00:00:01 local  X     hostbond1                      1000  0/0
00:00:00:00:00:11 local  PI    hostbond1                      1000  0/0
02:02:00:00:00:05 remote       03:00:00:00:00:02:11:00:00:01        0/0
root@torm-11:mgmt:~#
root@torm-11:mgmt:~# net show evpn mac vni 1000 mac 00:00:00:00:00:11
MAC: 00:00:00:00:00:11
 ESI: 03:00:00:00:00:01:11:00:00:01
 Intf: hostbond1(58) VLAN: 1000
 Sync-info: neigh#: 0 local-inactive peer-active >>>>>>>>>>>>
 Local Seq: 0 Remote Seq: 0
 Neighbors:
    No Neighbors
root@torm-11:mgmt:~#
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
neigh
=====
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
root@torm-11:mgmt:~# net show evpn arp vni 1003
Number of ARPs (local and remote) known for this VNI: 4
Flags: I=local-inactive, P=peer-active, X=peer-proxy
Neighbor             Type   Flags State    MAC               Remote ES/VTEP                 Seq #'s
2001:fee1:0:3::6     local        active   00:02:00:00:00:25                                0/0
45.0.3.66            local  P     active   00:02:00:00:00:66                                0/0
45.0.3.6             local        active   00:02:00:00:00:25                                0/0
fe80::202:ff:fe00:25 local        active   00:02:00:00:00:25                                0/0
root@torm-11:mgmt:~#
root@torm-11:mgmt:~# net show evpn arp vni 1003 ip 45.0.3.66
IP: 45.0.3.66
 Type: local
 State: active
 MAC: 00:02:00:00:00:66
 Sync-info: peer-active >>>>>>>>>>>>>>>>
 Local Seq: 0 Remote Seq: 0
root@torm-11:mgmt:~#
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agozebra: debug flags for MAC-IP sync
Anuradha Karuppiah [Sat, 28 Mar 2020 17:16:30 +0000 (10:16 -0700)]
zebra: debug flags for MAC-IP sync

Filters for zebra debug logs.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agobgpd: local path changes to display the SYNC info
Anuradha Karuppiah [Sat, 28 Mar 2020 17:15:06 +0000 (10:15 -0700)]
bgpd: local path changes to display the SYNC info

Sample output -
root@torm-11:mgmt:~# net show bgp l2vpn evpn route vni 1000 mac 00:00:00:00:00:11
BGP routing table entry for [2]:[0]:[48]:[00:00:00:00:00:11]
Paths: (5 available, best #5)
  Not advertised to any peer
  Route [2]:[0]:[48]:[00:00:00:00:00:11] VNI 1000
  Imported from 27.0.0.16:14:[2]:[0]:[48]:[00:00:00:00:00:11], VNI 1000
  4435 5551
    27.0.0.16 from spine-2(swp4) (27.0.0.14)
      ESI 03:00:00:00:00:01:11:00:00:01 local-es
      Origin IGP, valid, external
      Extended Community: RT:5551:1000 RT:5551:4001 ET:8 Rmac:00:02:00:00:00:2d
      Last update: Fri Mar 27 02:26:35 2020

>>>>>>>>>>>>>>>>>>>> SNIP >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  Route [2]:[0]:[48]:[00:00:00:00:00:11] VNI 1000/4001
  Local
    27.0.0.15 from 0.0.0.0 (27.0.0.15)
      ESI 03:00:00:00:00:01:11:00:00:01 local-es peer-info: (active MM: 0) >>>
      Origin IGP, weight 32768, valid, sourced, local, bestpath-from-AS Local, best (EVPN local ES path)
      Extended Community: ET:8 RT:5550:1000 RT:5550:4001 Rmac:00:02:00:00:00:25
      Last update: Fri Mar 27 02:26:35 2020

Displayed 5 paths for requested prefix
root@torm-11:mgmt:~#

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agobgpd: Type-2/MAC-IP SYNC route handling
Anuradha Karuppiah [Sat, 28 Mar 2020 17:12:04 +0000 (10:12 -0700)]
bgpd: Type-2/MAC-IP SYNC route handling

SYNC routes are paths rxed from a local-ES peer. These routes result in
the installation of local dataplane entries i.e. with access port as
destination (vs. the remote-VTEP destination that results in the packet
being sent via the VxLAN overlay).

If a SYNC path is selected as the best path it is always turned around
into a local path which immediately lowers the status of the SYNC path
to non-best. However we need to keep track of the highest MM seq-number
and peer activity to continue advertising the local path. In order to
do that we need information from the "second-best" SYNC path to be
bubbled up to the local best path. This "SYNC" info is then consolidated
and sent to zebra which is responsible for the MM handling and local
path management.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agobgpd: evpn path selection changes for MAC-IP SYNC route handling
Anuradha Karuppiah [Sat, 28 Mar 2020 16:51:14 +0000 (09:51 -0700)]
bgpd: evpn path selection changes for MAC-IP SYNC route handling

When a SYNC route i.e. a route with a local ES as destination is
rxed on a switch (say L11) from an ES peer (say L12) a local
MAC/neigh entry is created on L11 with the local access port
as dest port.

Creation of the local entry triggers a local path advertisement from
L11. This could be a "locally-active" path or a "locally-inactive"
path. Inactive paths are advertised with the proxy bit.

To ensure that the local entry is not deleted by a SYNC route it is
given absolute precedence over peer-paths.

If there are two non-local paths with the same dest ES and same MM
seq number the non-proxy path is preferred. This is done to ensure
that we don't lose track of the peer-activity.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agobgpd: extended-community and attrs for MAC-IP SYNC route handling
Anuradha Karuppiah [Sat, 28 Mar 2020 16:35:08 +0000 (09:35 -0700)]
bgpd: extended-community and attrs for MAC-IP SYNC route handling

A new proxy flag has been added to the already existing NA extended
community to allow proxy advertisment of a local host by a VTEP that is
yet to indpendently establish local reachability.
Reference: draft-rbickhart-evpn-ip-mac-proxy-adv

The extendend mac-mobility sequence number needs to be synced across
the ES peers. However we cannot let a ES-peer path win over a local
path on the same ES. To accomplish that some parameters such as the
MM seq number are bubbled up from the non-best path to the local path.
This mechanism is explained further in the path-selection patch.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agolib: MAC-IP flags used by zebra and BGP for SYNC route handling
Anuradha Karuppiah [Thu, 26 Mar 2020 13:20:07 +0000 (06:20 -0700)]
lib: MAC-IP flags used by zebra and BGP for SYNC route handling

1. BGP informs zebra if a MAC-IP is a SYNC path and if it active on the
ES peer.
2. Zebra sends paths that are "local-inactive" with the proxy flag to
BGP.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agolinux: UAPI for MAC sync
Anuradha Karuppiah [Wed, 25 Mar 2020 13:10:54 +0000 (06:10 -0700)]
linux: UAPI for MAC sync

MAC entries rxed from an ES-peer need to be marked as static to prevent them
from being aged out. However, for static entries, we still need to track
local activity to independently (independent of BGP) establish that a host
is still attached to the ES.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agolib, bgpd: Remove unused variable from structure
Donald Sharp [Sat, 13 Jun 2020 17:49:38 +0000 (13:49 -0400)]
lib, bgpd: Remove unused variable from structure

The `struct evpn_ead_addr` structure had a prefix length
associated with it.  This value was only ever set never
used.  Remove this from our system.  The other
nice thing about this change is that it puts back
the sizeof struct route_node to 192 bytes.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agozebra: Stub rt_socket functions for L2 NHG programming
Anuradha Karuppiah [Fri, 17 Apr 2020 21:59:29 +0000 (14:59 -0700)]
zebra: Stub rt_socket functions for L2 NHG programming

Stub functions to keep the BSD builds working. No new functionality.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agozebra: CLI commands to display ethernet segments
Anuradha Karuppiah [Sat, 28 Mar 2020 00:34:06 +0000 (17:34 -0700)]
zebra: CLI commands to display ethernet segments

1. ES sample display
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
torm-11# show evpn es
Type: L local, R remote
ESI                            Type ES-IF                 VTEPs
00:00:00:00:00:00:00:00:00:00       -
03:00:00:00:00:01:11:00:00:01  LR   hostbond1             27.0.0.16
03:00:00:00:00:01:22:00:00:02  LR   hostbond2             27.0.0.16
03:00:00:00:00:01:22:00:00:03  LR   hostbond3             27.0.0.16
03:00:00:00:00:02:11:00:00:01  R    -                     27.0.0.17,27.0.0.18
03:00:00:00:00:02:22:00:00:02  R    -                     27.0.0.17,27.0.0.18
03:00:00:00:00:02:22:00:00:03  R    -                     27.0.0.17,27.0.0.18
torm-11#
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

2. ES-EVI sample display
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
torm-11# show evpn es-evi
Type: L local, R remote
VNI      ESI                            Type
1005     03:00:00:00:00:01:11:00:00:01  L
1005     03:00:00:00:00:01:22:00:00:02  L
1005     03:00:00:00:00:01:22:00:00:03  L
1002     03:00:00:00:00:01:11:00:00:01  L
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agozebra: triggers for maintaining a list of access vlans per-ES
Anuradha Karuppiah [Sat, 28 Mar 2020 00:32:46 +0000 (17:32 -0700)]
zebra: triggers for maintaining a list of access vlans per-ES

The linux kernel sends the VLAN list per-access port as bitmap. This
needs to be translated into a per-ES VNI list for generation of
EAD-EVI routes.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agozebra: Ethernet segment management and support for MAC-ECMP
Anuradha Karuppiah [Sat, 28 Mar 2020 00:14:45 +0000 (17:14 -0700)]
zebra: Ethernet segment management and support for MAC-ECMP

1. Local ethernet segments are configured in zebra by attaching a
local-es-id and sys-mac to a access interface -
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
!
interface hostbond1
 evpn mh es-id 1
 evpn mh es-sys-mac 00:00:00:00:01:11
!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
This info is then sent to BGP and used for the generation of EAD-per-ES
routes.

2. Access VLANs associated with an (ES) access port are translated into
ES-EVI objects and sent to BGP. This is used by BGP for the
generation of EAD-EVI routes.

3. Remote ESs are imported by BGP and sent to zebra. A list of VTEPs
is maintained per-remote ES in zebra. This list is used for the creation
of the L2-NHG that is used for forwarding traffic.

4. MAC entries with a non-zero ESI destination use the L2-NHG associated
with the ESI for forwarding traffic over the VxLAN overlay.

Please see zebra_evpn_mh.h for the datastruct organization details.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
4 years agozebra: support for adding L2NHG and mac-ecmp in the linux kernel
Anuradha Karuppiah [Fri, 27 Mar 2020 23:36:24 +0000 (16:36 -0700)]
zebra: support for adding L2NHG and mac-ecmp in the linux kernel

Multihoming support requires a new dataplane feature, MAC-ECMP, to
bridge traffic to remote ESs that are attached to more than one
active VTEP.

As a part of this support indirection has also been added via
L2-NHGs. Using a nexthop group allows for fast failover
of MAC entries when an access port attached to a remote-ES goes
down i.e. instead of updating many MAC entries this becomes a
single NHG update to the dataplane.

Note: Some of the code here needs to be reworked to the new
dataplane model.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>