RTE Table LPM for IPv4
This table uses the Longest Prefix Match (LPM) algorithm to uniquely associate data to lookup keys.
Use-case: IP routing table. Routes that are added to the table associate a next hop to an IP prefix. The IP prefix is specified as IP address and depth and cover for a multitude of lookup keys (i.e. destination IP addresses) that all share the same data (i.e. next hop). The next hop information typically contains the output interface ID, the IP address of the next hop station (which is part of the same IP network the output interface is connected to) and other flags and counters.
The LPM primitive only allows associating an 8-bit number (next hop ID) to an IP prefix, while a routing table can potentially contain thousands of routes or even more. This means that the same next hop ID (and next hop information) has to be shared by multiple routes, which makes sense, as multiple remote networks could be reached through the same next hop. Therefore, when a route is added or updated, the LPM table has to check whether the same next hop is already in use before using a new next hop ID for this route.
The comparison between different next hops is done for the first “entry_unique_size” bytes of the next hop information (configurable parameter), which have to uniquely identify the next hop, therefore the user has to carefully manage the format of the LPM table entry (i.e. the next hop information) so that any next hop data that changes value during run-time (e.g. counters) is placed outside of this area.
Definition in file rte_table_lpm.h.
|struct rte_table_ops rte_table_lpm_ops|
LPM table operations