Go to file
Christian Hopps fd396924d6 northbound: KISS always batch yang config (file read), it's faster
The backoff code assumed that yang operations always completed quickly.
It checked for > 100 YANG modeled commands happening in under 1 second
to enable batching. If 100 yang modeled commands always take longer than
1 second batching is never enabled. This is the exact opposite of what
we want to happen since batching speeds the operations up.

Here are the results for libyang2 code without and with batching.

| action        |  1K rts |  2K rts | 1K rts | 2K rts | 20k rts |
|               | nobatch | nobatch |  batch |  batch |   batch |
| Add IPv4      |    .881 |    1.28 |   .703 |   1.04 |    8.16 |
| Add Same IPv4 |    28.7 |     113 |   .590 |   .860 |    6.09 |
| Rem 1/2 IPv4  |    .376 |    .442 |   .379 |   .435 |    1.44 |
| Add Same IPv4 |    28.7 |     113 |   .576 |   .841 |    6.02 |
| Rem All IPv4  |    17.4 |    71.8 |   .559 |   .813 |    5.57 |

(IPv6 numbers are basically the same as iPv4, a couple percent slower)

Clearly we need this. Please note the growth (1K to 2K) w/o batching is
non-linear and 100 times slower than batched.

Notes on code: The use of the new `nb_cli_apply_changes_clear_pending`
is to commit any pending changes (including the current one). This is
done when the code would not correctly handle a single diff that
included the current changes with possible following changes. For
example, a "no" command followed by a new value to replace it would be
merged into a change, and the code would not deal well with that. A good
example of this is BGP neighbor peer-group changing. The other use is
after entering a router level (e.g., "router bgp") where the follow-on
command handlers expect that router object to now exists. The code
eventually needs to be cleaned up to not fail in these cases, but that
is for future NB cleanup.

Signed-off-by: Christian Hopps <chopps@labn.net>
2021-06-02 14:05:26 +00:00
.github .github: improve bug report template 2020-10-20 16:12:03 -04:00
alpine alpine: add missing libelf-dev dependency 2021-04-16 13:02:15 -04:00
babeld babeld: Allow babeld to actually register to use distribute-list 2021-05-04 16:23:37 -04:00
bfdd lib: adapt to version 2 of libyang 2021-05-13 16:24:48 -04:00
bgpd northbound: KISS always batch yang config (file read), it's faster 2021-06-02 14:05:26 +00:00
debian lib: adapt to version 2 of libyang 2021-05-13 16:24:48 -04:00
doc doc: fix redundant index once again 2021-05-31 18:29:34 +03:00
docker docker: fix ubuntu containers 2021-05-27 15:57:03 +03:00
eigrpd northbound: KISS always batch yang config (file read), it's faster 2021-06-02 14:05:26 +00:00
fpm build: make builddir include path consistent 2021-04-21 15:42:33 +02:00
gdb bgpd: Convert binfo to path 2018-10-09 14:26:30 -04:00
grpc build: fix protobuf out-of-tree build 2021-04-21 11:13:25 +02:00
include nhrpd: cleaning netlink gre information 2021-04-30 10:33:18 +02:00
isisd northbound: KISS always batch yang config (file read), it's faster 2021-06-02 14:05:26 +00:00
ldpd ldpd: make allowing broken-lsps to be installed with pop operation configurable 2021-05-03 09:02:36 -04:00
lib northbound: KISS always batch yang config (file read), it's faster 2021-06-02 14:05:26 +00:00
m4 grpc: improve checks for GRPC C++ requirements 2021-05-22 00:01:06 +00:00
mlag zebra: Do not build mlag protobuf support if version 3 is not avail 2019-12-15 09:37:51 -05:00
nhrpd Merge pull request #8237 from pguibert6WIND/nhrp_use_zebra_2 2021-05-05 07:57:04 -04:00
ospf6d ospf6: fix memory leak in ospf6_abr_examin_summary 2021-05-27 12:57:25 +01:00
ospfclient *: require semicolon after FRR_DAEMON_INFO & co. 2021-03-17 06:18:39 +01:00
ospfd ospfd: Fix quick interface down up event handling in ospf 2021-05-25 14:43:40 -04:00
pathd Merge pull request #8665 from volta-networks/fix_pathd_coverity 2021-05-19 14:16:00 +02:00
pbrd Merge pull request #8675 from wesleycoakley/pbr-table-range-core-fix 2021-05-25 14:09:41 -04:00
pceplib pceplib: Clean scan-build static analyzer messages. 2021-05-05 12:11:53 +02:00
pimd Merge pull request #8671 from donaldsharp/pim_possible_crash 2021-05-21 10:16:03 -05:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python *: make sure config.h or zebra.h is first 2021-04-23 12:06:35 +02:00
qpb build: fix assert() use in .pb-c.c files 2021-05-03 18:48:33 +02:00
redhat lib: adapt to version 2 of libyang 2021-05-13 16:24:48 -04:00
ripd northbound: KISS always batch yang config (file read), it's faster 2021-06-02 14:05:26 +00:00
ripngd northbound: KISS always batch yang config (file read), it's faster 2021-06-02 14:05:26 +00:00
sharpd sharpd: add v4 redistribute watching 2021-05-03 19:38:38 -04:00
snapcraft snapcraft: Update rtrlib to 0.7.0 2021-01-07 02:16:19 +01:00
staticd Merge pull request #8740 from mjstapp/fix_static_ret 2021-05-28 11:35:43 +03:00
tests northbound: KISS always batch yang config (file read), it's faster 2021-06-02 14:05:26 +00:00
tools Merge pull request #6317 from rgirada/fix_route_dump 2021-05-28 18:12:17 -03:00
vrrpd lib: adapt to version 2 of libyang 2021-05-13 16:24:48 -04:00
vtysh lib: adapt to version 2 of libyang 2021-05-13 16:24:48 -04:00
watchfrr lib: adapt to version 2 of libyang 2021-05-13 16:24:48 -04:00
yang bgpd: fix default for extended-nexthop-capability 2021-05-23 20:30:04 +00:00
zebra Merge pull request #6317 from rgirada/fix_route_dump 2021-05-28 18:12:17 -03:00
.clang-format lib: adapt to version 2 of libyang 2021-05-13 16:24:48 -04: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
.git-blame-ignore-revs tools: Ignore mass renaming of topotests for git blame 2021-05-11 14:14:26 +03:00
.gitignore build: add pceplib test output to gitignore 2021-03-31 08:27:11 -04:00
.travis.yml lib: libyang2 add missed conversion 2021-05-17 22:13:59 -04:00
bootstrap.sh build: turn on automake warnings (& symlinks) 2021-04-21 15:42:37 +02:00
buildtest.sh config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
changelog-auto.in Revert "debian: Adjust tarsource.sh to use native debian/changelog" 2020-11-19 17:12:41 -05:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac grpc: improve checks for GRPC C++ requirements 2021-05-27 12:04:33 +00: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: libyang2 add missed conversion 2021-05-17 22:13:59 -04:00
README.md doc: Update Documentation to note Solaris Unsupported status 2020-09-21 10:02:20 -04:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
version.h build: make builddir include path consistent 2021-04-21 15:42:33 +02: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 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