[dpdk-dev] [PATCH v4 0/4] lib/rib: Add Routing Information Base library

Medvedkin Vladimir medvedkinv at gmail.com
Fri Apr 27 00:03:30 CEST 2018


This patch series introduces new library librte_rib which potentially could
replace librte_lpm.

RIB is an alternative to current LPM library.
It solves the following problems
 - Increases the speed of control plane operations against lpm such as
   adding/deleting routes
 - Adds abstraction from dataplane algorithms, so it is possible to add
   different ip route lookup algorythms such as DXR/poptrie/lpc-trie/etc
   in addition to current dir24_8
 - It is possible to keep user defined application specific additional
   information in struct rte_rib_node which represents route entry.
   It can be next hop/set of next hops (i.e. active and feasible),
   pointers to link rte_rib_node based on some criteria (i.e. next_hop),
   plenty of additional control plane information.

v4:
  fix various bugs
  make struct rte_rib opaque
  make inline functions instead of macro
  remove RTE_RIB_MALLOC node allocation type
  add new lookup functions
  remove rte_dir24_8_lookup()
  add rte_dir24_8_get_lookup()
  add meson support
  add fib configuration


Medvedkin Vladimir (4):
  Add RIB library
  Add dir24_8 implementation for rib library
  Add autotests for RIB library
  Add support for lpm and rib bulk lookup

 config/common_base                 |   6 +
 doc/api/doxy-api.conf              |   1 +
 examples/l3fwd/l3fwd_lpm.c         | 132 +++++++
 examples/l3fwd/meson.build         |   2 +-
 lib/Makefile                       |   2 +
 lib/librte_rib/Makefile            |  23 ++
 lib/librte_rib/meson.build         |   6 +
 lib/librte_rib/rte_dir24_8.c       | 725 +++++++++++++++++++++++++++++++++++++
 lib/librte_rib/rte_dir24_8.h       |  47 +++
 lib/librte_rib/rte_rib.c           | 520 ++++++++++++++++++++++++++
 lib/librte_rib/rte_rib.h           | 302 +++++++++++++++
 lib/librte_rib/rte_rib_version.map |  18 +
 lib/meson.build                    |   2 +-
 mk/rte.app.mk                      |   1 +
 test/test/Makefile                 |   5 +
 test/test/meson.build              |   8 +
 test/test/test_rib.c               | 308 ++++++++++++++++
 test/test/test_rib_generate_rt.c   | 297 +++++++++++++++
 test/test/test_rib_generate_rt.h   |  38 ++
 test/test/test_rib_lpm_comp.c      | 189 ++++++++++
 test/test/test_rib_perf.c          | 145 ++++++++
 21 files changed, 2775 insertions(+), 2 deletions(-)
 create mode 100644 lib/librte_rib/Makefile
 create mode 100644 lib/librte_rib/meson.build
 create mode 100644 lib/librte_rib/rte_dir24_8.c
 create mode 100644 lib/librte_rib/rte_dir24_8.h
 create mode 100644 lib/librte_rib/rte_rib.c
 create mode 100644 lib/librte_rib/rte_rib.h
 create mode 100644 lib/librte_rib/rte_rib_version.map
 create mode 100644 test/test/test_rib.c
 create mode 100644 test/test/test_rib_generate_rt.c
 create mode 100644 test/test/test_rib_generate_rt.h
 create mode 100644 test/test/test_rib_lpm_comp.c
 create mode 100644 test/test/test_rib_perf.c

-- 
1.8.3.1



More information about the dev mailing list