From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [RFC] Add RIB library Date: Tue, 11 Jul 2017 13:31:43 -0700 Message-ID: <20170711133143.77f02240@xeon-e3> References: <1499801585-10031-1-git-send-email-medvedkinv@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org To: Medvedkin Vladimir Return-path: Received: from mail-pg0-f48.google.com (mail-pg0-f48.google.com [74.125.83.48]) by dpdk.org (Postfix) with ESMTP id E48EA2E8B for ; Tue, 11 Jul 2017 22:31:45 +0200 (CEST) Received: by mail-pg0-f48.google.com with SMTP id t186so1613579pgb.1 for ; Tue, 11 Jul 2017 13:31:45 -0700 (PDT) In-Reply-To: <1499801585-10031-1-git-send-email-medvedkinv@gmail.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, 11 Jul 2017 19:33:04 +0000 Medvedkin Vladimir wrote: > Hi, > > I want to introduce new library for ip routing lookup that have some advantages > over current LPM library. In short: > - Increases the speed of control plane operations against lpm such as > adding/deleting routes > - Adds abstraction from dataplane algorythms, 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_v4_node which represents route entry. > It can be next hop/set of next hops (i.e. active and feasible), > pointers to link rte_rib_v4_node based on some criteria (i.e. next_hop), > plenty of additional control plane information. > - For dir24_8 implementation it is possible to remove rte_lpm_tbl_entry.depth > field that helps to save 6 bits. > - Also new dir24_8 implementation supports different next_hop sizes > (1/2/4/8 bytes per next hop) > > It would be nice to hear your opinion. The draft is below. > > Medvedkin Vladimir (1): > lib/rib: Add Routing Information Base library > > config/common_base | 6 + > doc/api/doxy-api.conf | 1 + > lib/Makefile | 2 + > lib/librte_rib/Makefile | 43 ++++ > lib/librte_rib/rte_dir24_8.c | 411 +++++++++++++++++++++++++++++++++++++++ > lib/librte_rib/rte_dir24_8.h | 144 ++++++++++++++ > lib/librte_rib/rte_rib.c | 454 +++++++++++++++++++++++++++++++++++++++++++ > lib/librte_rib/rte_rib.h | 260 +++++++++++++++++++++++++ > 8 files changed, 1321 insertions(+) > create mode 100644 lib/librte_rib/Makefile > 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 > In network paralance a RIB is usually a full route table and FIB is the forwarding table in use. You probably don't want to call this a RIB. It looks more like an abstraction above FIB. https://networkengineering.stackexchange.com/questions/38588/rib-vs-fib-differences http://aftabsiddiqui.com/index.php/ip-routing-table-rib-and-forwarding-table-fib/