dpdk LPM
DPDK LPM(Longest Prefix Match)是高性能前缀路由匹配库,用于数据包转发过程中快速查找与dstIP地址最长匹配的路由表项。
DPDK LPM查找时只需要提供目的IP,eBPF LPM查找时需要提供目的IP和子网掩码。
LPM实现
高性能:基于前缀树算法实现快速匹配。
线程安全:多线程并发安全。
内存管理:使用Memory Pool管理内存。
两级hash表:把32位IP地址分为2部分,前24位和后8位。
前24位对应1个2^24 entries的大hash表。
后8位对应2^8个2^8 entries的小hash表。
非常消耗内存,不推荐使用该LPM。
第1次根据前缀树查找大hash表。
1. 匹配上非24位掩码的路由表项时返回结果。
2. 匹配上24位掩码的路由表项后,不存在小hash表时返回结果。
第2次根据后8位查找小hash表。
1. 匹配上时返回结果。
2. 未匹配上时返回24位结果。
接口函数
rte_lpm_create:创建路由表
rte_lpm_free:释放路由表占用的空间
rte_lpm_add:添加路由
rte_lpm_delete:删除路由
rte_lpm_delete_all:销毁路由表
rte_lpm_lookup:路由查找实现
rte_lpm_find_existing:根据名字找到路由表
rte_lpm_is_rule_present:检查是否条目存在