Go to file
Ameya Dharkar 44f7f1320c zebra: Address sequencing issue while sending RMAC via FPM
Issue:
For consecutive messages such as
MAC1 -> VTEP1 add
MAC1 -> VTEP2 add
MAC1 -> VTEP1 add

Final state, i.e. (MAC1 -> VTEP1 add) should be sent via FPM.
But, with current code, FPM will send (MAC1 -> VTEP2 add)

RCA:
When FPM receives (MAC1, VTEP1), it stores it in the FPM processing queue and
hash table.

When FPM receives (MAC1, VTEP2), this entry is stored as another node as hash
table key is (mac, vtep and vni)

IF FPM again receives (MAC1, VTEP1), we fetch this node in the hash table
which is already enqueued.

When the FPM queue is processed, we will send FPM message for (MAC1, VTEP1)
first and then for (MAC1, VTEP2)

This sequencing issue happened because the key of the table is (MAC, VTEP, VNI)

Fix:
Change the key of the hash table to (MAC, VNI)
So, every time we receive a new update for (MAC1, VNI1), we will find a node in
the processing queue corresponding to MAC1 if present.
We will update this same node for every operation related to (MAC1, VNI1)

Thus, at the time when FPM processes this node, it will have latest MAC1 info.

Signed-off-by: Ameya Dharkar <adharkar@vmware.com>
2020-04-10 17:59:31 -07:00
.github .github: move pr template to subdir 2019-03-29 16:51:58 +00:00
alpine *: use the current project name (FRRouting) 2020-03-25 17:38:56 -04:00
babeld *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
bfdd bfdd: fix -Wundef warning 2020-03-30 11:22:58 +02:00
bgpd Merge pull request #6176 from NaveenThanikachalam/memleaks 2020-04-10 13:55:52 -04:00
debian debian: 7.2.1 prep 2020-04-07 16:47:18 +02:00
doc doc: document lsp-mtu knob for IS-IS 2020-04-07 20:11:18 -04:00
docker Merge pull request #5606 from ton31337/fix/docker_centos8_image_name 2020-01-06 11:24:15 -06:00
eigrpd *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
fpm *: Replace sizeof something to sizeof(something) 2020-03-08 21:44:53 +02:00
gdb bgpd: Convert binfo to path 2018-10-09 14:26:30 -04:00
grpc build: fix "make tags" 2019-09-17 16:35:12 +02:00
include include: add kernel header for seg6/seg6local 2020-01-09 09:53:04 +09:00
isisd isisd, yang: unified lsp-timers command 2020-04-06 17:38:27 +02:00
ldpd *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
lib *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
m4 build: Add Python 3.8 2020-03-11 14:56:10 +01:00
mlag zebra: Do not build mlag protobuf support if version 3 is not avail 2019-12-15 09:37:51 -05:00
nhrpd *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
ospf6d *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
ospfclient *: Replace s_addr 0 => INADDR_ANY 2020-02-06 09:00:12 +02:00
ospfd *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
pbrd pbrd: convert gotos in set vrf command to returns 2020-03-19 14:30:42 -04:00
pimd Merge pull request #6027 from sarav511/vrfloop 2020-04-10 14:02:28 -04:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python bgpd/bmp: BMP implementation 2019-08-30 19:22:23 +02:00
qpb build: fix "make tags" 2019-09-17 16:35:12 +02:00
redhat redhat: Update frr.spec.in to move all systems to Python3 except CentOS 6 2020-01-25 00:44:34 +01:00
ripd lib, *: add a common time interval formatting api 2020-03-09 11:12:32 -04:00
ripngd bgpd, lib, ripngd: Add agg_node_get_prefix 2020-03-24 07:51:41 -04:00
sharpd sharpd: support backup nexthops 2020-03-27 09:39:14 -04:00
snapcraft snapcraft: Add vrrpd to the snapcraft package 2019-11-19 10:46:33 +01:00
solaris doc: rename man pages to frr-* 2020-01-15 14:05:11 +01:00
staticd *: use the current project name (FRRouting) 2020-03-25 17:38:56 -04:00
tests tests: Added new tests to bgp-basic-functionality-topo1 2020-04-09 09:23:59 +00:00
tools tools: Add coccinelle script to catch typecasts to same type 2020-04-08 17:15:10 +03:00
vrrpd *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
vtysh vtysh: don't warn when saving conf the first time 2020-04-03 00:56:57 -04:00
watchfrr watchfrr: change some messages from errors to info 2020-03-30 14:25:37 -04:00
yang Merge pull request #6185 from opensourcerouting/build-assorted-20200408 2020-04-08 13:29:45 -04:00
zebra zebra: Address sequencing issue while sending RMAC via FPM 2020-04-10 17:59:31 -07:00
.clang-format *: frr_elevate_privs -> frr_with_privs 2019-09-03 17:18:35 +02:00
.dir-locals.el tools: fix emacs configuration file 2019-11-04 11:45:52 -03:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.gitignore git: Skip .kitchen files 2020-03-15 22:27:33 +02: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 build: fix git detection for worktrees 2020-04-08 16:30:12 +02: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
Makefile.am lib: new defaults logic 2019-12-06 15:13:32 +01:00
README.md README.md: Add FRR Icon 2019-10-29 12:42:06 -04:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00

Icon

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
  • VRRP
  • EIGRP (alpha)
  • NHRP (alpha)

Installation & Use

For source tarballs, see the releases page.

For Debian and its derivatives, use the APT repository at https://deb.frrouting.org/.

Instructions on building and installing from source for supported platforms may be found in the developer docs.

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. You can join by clicking the "Slack" link under the Participate section of our website.

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