> -----Original Message----- > From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Vladimir Medvedkin > > This is heavily reworked version of previous RIB library series: > https://mails.dpdk.org/archives/dev/2018-April/099492.html > > Current lpm implementation while provides really good lookup > performance has number of problems. > One of them is very low speed for control plane operations > such as add or delete a route. > Another disadvantage is fixed number of bits for userdata > (24 for v4 and 21 for v6) > Also it is hard to introduce changes in existing LPM code or add new > algorithms without breaking ABI. > > This patch series tries to solve this problems by: > Introduce two new libraries - RIB and FIB. > RIB that is Routing Information Base. > It implements a control plane struct containing routes in a tree and > provides fast add/del operations for routes. Also it allows to perform > fast subtree traversals (i.e. retrieve existing subroutes for a given > prefix). This structure will be used as a control plane helper > structure > for FIB implementation. > Also it might be used standalone in other different places such as > bitmaps for example. >
Great! > Second library is FIB that is Forwarding Information Base. It > represents > dataplane related struct and algorithms for longest prefix match. > Internally it consists of two parts - RIB (control plane ops) and > implementation for the dataplane tasks. > Initial version provides two implementations for both ipv4 and ipv6: > dummy (uses RIB as a dataplane) and DIR24_8 (same as current LPM) > Due to proposed design it allows to extend FIB with new algorithms in > future > (for example DXR, poptrie, etc). The feedback following here is meant as a comment, not an objection. Feel free to ignore! This FIB library is designed for IP based forwarding only. How about forwarding based on other criteria? E.g. the FIB in a standard Ethernet switch is based on VLAN+MAC. Such a FIB would probably require a different library, based on a hash structure, and would also require a compare-and-set function callable from the data plane in order to provide wire speed learning. So I suggest that the documentation highlights that this FIB library is for IP based forwarding. Optionally also reconsider the name of the library and its functions, structures etc.. > > From our measurements we saw 10x speedup for control plane operations > comparing with current LPM library (depending on prefix length > distribution) > > ToDo: > - introduce new performance measurement app. > - add documentation. > - add support into existing examples (l3fwd) > Med venlig hilsen / kind regards - Morten Brørup