Go to file
David Ahern 55870dfe7f Improve batch and dump times by caching link lookups
ip route uses ll_name_to_index and ll_index_to_name to convert between
device names and indices. At the moment both use for the ioctl based glibc
functions if_nametoindex and if_indextoname and does not cache the result.
When using a batch file or dumping large number of routes this means the
same device lookups can be done repeatedly adding unnecessary overhead
(socket + ioctl + close for each device lookup).

Add a new function, ll_link_get, to send a netlink based RTM_GETLINK. If
successful, cache the result in idx_head and name_head so future lookups
can re-use the entry. Update ll_name_to_index and ll_index_to_name to use
ll_link_get and only fallback to the glibc functions if it fails.

With this change the time to install 720,022 routes with 2 ecmp nexthops
where the nexthop device is given is reduced from 31.4 seconds to 19.2
seconds. A dump of those routes drops from 13.3 to 2.8 seconds.

Signed-off-by: David Ahern <dsahern@gmail.com>
2019-02-22 18:51:20 -08:00
bash-completion tc: gred: support controlling RED flags 2018-11-24 07:11:36 -08:00
bridge bridge: fdb: Fix FDB dump with strict checking disabled 2019-02-05 15:27:28 -08:00
devlink Merge branch 'iproute2-master' into next 2019-02-22 18:50:39 -08:00
doc/actions doc: remove trailing whitespace 2018-12-19 12:02:38 -08:00
etc/iproute2 iproute2: Add support for a few routing protocols 2018-06-11 11:18:30 -07:00
examples examples: Remove cbq.init-v0.7.3 2018-12-18 10:52:35 -08:00
genl genl: remove dead code 2018-11-19 11:42:44 -08:00
include ll_map: Add function to remove link cache entry by index 2019-02-22 18:51:15 -08:00
ip ip link: Drop cache entry on any changes 2019-02-22 18:51:18 -08:00
lib Improve batch and dump times by caching link lookups 2019-02-22 18:51:20 -08:00
man Merge branch 'iproute2-master' into next 2019-02-22 18:50:39 -08:00
misc Merge branch 'iproute2-master' into next 2019-02-22 18:50:39 -08:00
netem doc: remove trailing whitespace 2018-12-19 12:02:38 -08:00
rdma rdma: Add unbound workqueue to list of poll context types 2019-01-21 08:19:44 -08:00
schema bridge: add json schema for bridge fdb show 2016-07-20 12:02:02 -07:00
tc Merge branch 'iproute2-master' into next 2019-02-22 18:50:39 -08:00
testsuite Merge branch 'iproute2-master' into iproute2-next 2019-01-04 12:22:47 -08:00
tipc tipc: fix misalignment printout in non-JSON output 2018-12-07 09:24:01 -08:00
.clang-format clang-format: add configuration file 2019-01-17 13:38:23 -08:00
.gitignore Remove leftovers from removed Latex documentation 2018-02-13 16:43:19 -08:00
configure configure: fix typo in check_xt_old_internal_h 2019-01-07 14:42:01 -08:00
COPYING Update address of FSF in license 2008-03-08 13:31:03 -08:00
Makefile Makefile: check manpages for syntax errors 2019-01-14 08:01:51 -08:00
README README: update libdb build dependency information 2018-05-01 19:29:03 -07:00
README.devel README: update location of git repositories, remove broken info link 2018-02-13 16:42:51 -08:00
README.distribution README cleanup's 2012-01-03 15:04:55 -08:00
README.iproute2+tc doc: remove trailing whitespace 2018-12-19 12:02:38 -08:00
README.lnstat doc: remove trailing whitespace 2018-12-19 12:02:38 -08:00

This is a set of utilities for Linux networking.

Information:
    https://wiki.linuxfoundation.org/networking/iproute2

Download:
    http://www.kernel.org/pub/linux/utils/net/iproute2/

Stable version repository:
    git://git.kernel.org/pub/scm/network/iproute2/iproute2.git

Development repository:
    git://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git

How to compile this.
--------------------
1. libdbm

arpd needs to have the berkeleydb development libraries. For Debian
users this is the package with a name like libdbX.X-dev.
DBM_INCLUDE points to the directory with db_185.h which
is the include file used by arpd to get to the old format Berkeley
database routines.  Often this is in the db-devel package.

2. make

The makefile will automatically build a config.mk file which
contains definitions of libraries that may or may not be available
on the system such as: ATM, ELF, MNL, and SELINUX.

3. To make documentation, cd to doc/ directory , then
   look at start of Makefile and set correct values for
   PAGESIZE=a4		, ie: a4 , letter ...	(string)
   PAGESPERPAGE=2	, ie: 1 , 2 ...		(numeric)
   and make there. It assumes, that latex, dvips and psnup
   are in your path.

4. This package includes matching sanitized kernel headers because
   the build environment may not have up to date versions. See Makefile
   if you have special requirements and need to point at different
   kernel include files.

Stephen Hemminger
stephen@networkplumber.org

Alexey Kuznetsov
kuznet@ms2.inr.ac.ru