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:检查是否条目存在

参考资料

https://blog.csdn.net/Jmilk/article/details/129673463

posted on 2023-10-01 17:37  王景迁  阅读(334)  评论(0)    收藏  举报

导航