DPDK  2.2.0
Data Structures | Variables
rte_table_lpm.h File Reference
#include <stdint.h>
#include "rte_table.h"

Go to the source code of this file.

Data Structures

struct  rte_table_lpm_params
struct  rte_table_lpm_key

Variables

struct rte_table_ops rte_table_lpm_ops

Detailed Description

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.

Variable Documentation

struct rte_table_ops rte_table_lpm_ops

LPM table operations

Examples:
ip_pipeline/pipeline/pipeline_routing_be.c.