Go to file
Anuradha Karuppiah 456a4697e5 bgpd: prevent type-5 route creation if bgp_vrf->l3_vni is 0
After a router reboot the L3 network via it converges before the L2
network. This is because MLAG intentionally holds down bridge-access
and vxlan-network ports for some time (MLAG init-delay) to prevent traffic
from switching to a router that is not fully ready. This also means that
routes (from vrf-peering sessions) that qualify for evpn type-5
advertisments are available long before the L3-VNI is available for that
tenant VRF. In these windows bgpd was adding these evpn-type-5 routes with
a L3-VNI of 0 (which was not fixed up after the L3-VNI became available) -

BGP routing table entry for 100.0.0.1:2:[5]:[0]:[0]:[32]:[200.1.1.1]
Paths: (1 available, best #1)
  Advertised to non peer-group peers:
  MSP1(uplink-1) MSP2(uplink-2)
  Route [5]:[0]:[0]:[32]:[200.1.1.1] VNI 0 >>>>>>>>
  65001 65535
    36.0.0.9 from 0.0.0.0 (27.0.0.9)
      Origin incomplete, metric 0, valid, sourced, local, bestpath-from-AS 65001, best
      Extended Community: ET:8 RT:5544:4001 Rmac:44:38:39:ff:ff:01
      AddPath ID: RX 0, TX 327
      Last update: Wed Feb 27 18:37:10 2019

Fix is to defer creating type-5 routes till the L3-VNI is available for
that tenant VRF (this was already being done for most cases; fixup takes
care of some that missed the check).

Ticket: CM-24022

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2019-03-05 10:40:26 -08:00
.github .github: add core guidelines to issue template 2018-12-13 17:12:23 +00:00
alpine *: get rid of most daemons.conf references 2018-12-06 23:05:48 +01:00
babeld build: fix a whole bunch of *FLAGS 2019-01-30 19:13:51 +01:00
bfdd *: Rename backet to bucket 2019-02-25 16:22:36 +00:00
bgpd bgpd: prevent type-5 route creation if bgp_vrf->l3_vni is 0 2019-03-05 10:40:26 -08:00
debian debian: remove superseded systemd lintian override 2019-02-19 21:34:27 +01:00
doc Merge pull request #3836 from opensourcerouting/debian/master-kill-backports 2019-02-23 18:23:21 -05:00
docker docker: quick and dirty debian 9 img 2019-02-15 07:42:23 -05:00
eigrpd eigrp, rip, ripng, lib: unlink if_rmap from vrf 2019-02-19 21:11:37 +01:00
fpm build: disable empty libfrrfpm_pb 2018-12-13 21:14:39 +01:00
gdb bgpd: Convert binfo to path 2018-10-09 14:26:30 -04:00
include Revert "include: Add linux header mroute.h to our build" 2019-01-31 01:37:14 +01:00
isisd isisd: strncpy -> strlcpy 2019-02-26 20:50:13 +00:00
ldpd build: fix a whole bunch of *FLAGS 2019-01-30 19:13:51 +01:00
lib Merge pull request #3877 from qlyoung/remove-strncpy 2019-03-01 17:06:29 -03:00
m4 *: spelchek 2018-10-25 20:10:57 +02:00
nhrpd nhrpd: strncpy -> strlcpy 2019-02-26 20:50:17 +00:00
ospf6d ospf6d: reset the global ospf6 pointer 2019-02-15 17:42:13 +01:00
ospfclient build: fix a whole bunch of *FLAGS 2019-01-30 19:13:51 +01:00
ospfd ospfd: strncpy -> strlcpy 2019-02-26 20:50:17 +00:00
pbrd *: Rename backet to bucket 2019-02-25 16:22:36 +00:00
pimd pimd: strncpy -> strlcpy 2019-02-26 20:50:17 +00:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
ports *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python python: make DEFPY provide the text token of fixed parameters 2019-01-21 11:11:00 -02:00
qpb *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
redhat redhat: Require newer libyang (> 0.16.74) for embedded extensions 2019-02-20 05:09:03 -08:00
ripd Merge pull request #3877 from qlyoung/remove-strncpy 2019-03-01 17:06:29 -03:00
ripngd eigrp, rip, ripng, lib: unlink if_rmap from vrf 2019-02-19 21:11:37 +01:00
sharpd Merge pull request #3797 from donaldsharp/allow_in_dir_build 2019-02-18 13:09:29 +01:00
snapcraft *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
solaris *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
staticd build: fix a whole bunch of *FLAGS 2019-01-30 19:13:51 +01:00
tests *: Rename backet to bucket 2019-02-25 16:22:36 +00:00
tools Merge pull request #3872 from dslicenc/frr-reload-vrf-context 2019-02-27 11:16:38 -05:00
vtysh vtysh: hide old BGP vpnv(4|6) commands 2019-02-28 11:15:15 -03:00
watchfrr watchfrr: build in defaults for -r/-s/-k 2019-02-19 21:34:31 +01:00
yang build: fix a whole bunch of *FLAGS 2019-01-30 19:13:51 +01:00
zebra zebra: When installing a new route always use REPLACE 2019-03-01 13:56:12 -05:00
.clang-format lib: introduce new northbound API 2018-10-27 16:16:12 -02:00
.dir-locals.el .dir-locals.el: show trailing whitespace 2017-11-07 12:05:09 -05:00
.dockerignore tests/topotests: Change docker build context 2018-12-01 16:54:58 +01:00
.gitignore debian: cleanly split off from dist tarball 2019-02-19 21:31:18 +01:00
bootstrap.sh autoreconf -i 2007-02-06 19:28:28 +00:00
buildtest.sh config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
changelog-auto.in debian: cleanly split off from dist tarball 2019-02-19 21:31:18 +01:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac Merge pull request #3836 from opensourcerouting/debian/master-kill-backports 2019-02-23 18:23:21 -05:00
COPYING *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
COPYING-LGPLv2.1 build: remove LGPL v2.0, add LGPL v2.1 2016-11-15 17:19:38 +09:00
defaults.h *: reindent 2017-07-17 14:04:07 +02:00
Makefile.am debian: cleanly split off from dist tarball 2019-02-19 21:31:18 +01:00
README.md README.md: update list of supported protos 2019-02-15 17:57:13 +00:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00

FRRouting

FRR is free software that implements and manages various IPv4 and IPv6 routing protocols. It runs on nearly all distributions of Linux and BSD as well as Solaris and supports all modern CPU architectures.

FRR currently supports the following protocols:

  • BGP
  • OSPFv2
  • OSPFv3
  • RIPv1
  • RIPv2
  • RIPng
  • IS-IS
  • PIM-SM/MSDP
  • LDP
  • BFD
  • Babel
  • PBR
  • OpenFabric
  • EIGRP (alpha)
  • NHRP (alpha)

Installation & Use

Packages are available for various distributions on our releases page.

Snaps are also available here.

Instructions on building and installing from source for supported platforms may be found here.

Once installed, please refer to the user guide for instructions on use.

Community

The FRRouting email list server is located here and offers the following public lists:

Topic List
Development dev@lists.frrouting.org
Users & Operators frog@lists.frrouting.org
Announcements announce@lists.frrouting.org

For chat, we currently use Slack. Please email the mailing list to request an invite as we do not issue automatic invites.

Contributing

FRR maintains developer's documentation which contains the project workflow and expectations for contributors. Some technical documentation on project internals is also available.

We welcome and appreciate all contributions, no matter how small!

Security

To report security issues, please use our security mailing list:

security [at] lists.frrouting.org