DPDK LPM6 介绍

本文介绍了DPDK中的LPM6库如何支持IPv6路由查找,重点讨论了LPM6与LPM的区别,包括使用1级tbl24和最多13级tbl8的数据结构。尽管LPM6可能导致更多内存访问,但它通过减少内存占用来平衡查找效率,尤其针对IPv6的128位地址。LPM6的添加表项、查找过程以及表项规模限制等方面与LPM相似,理解tbl24、tbl8和前缀扩展是掌握LPM6的关键。
摘要由CSDN通过智能技术生成

IPv6,ip地址的长度扩充到了128bits,DPDK中通过LPM6的库来支持IPv6。LPM6的实现和LPM非常类似。推荐阅读上一篇文章https://blog.csdn.net/blizzardoner/article/details/96196041来理解基本的LPM实现方法。

与LPM相似,LPM6也使用了tbl24和tbl8两个数据结构来实现查找规则,差别是LPM中使用1级tbl24,1级tbl8来完成最多32bit的LPM查找,而LPM6中则使用1级tbl24和最多13级tbl8来实现查找规则。对于IPv6来讲,大多数子网长度应该是小于等于48bits的,所以一般情况下查找需要小于4次内存访问,1次tbl24,3次tbl8。那么问题来了,为什么不使用两级tbl24,而是一级tbl24加上3级tbl8呢?每个tbl8所占用的内存为1KBytes,3级tbl8占用3KBytes,而每个tbl24占用64MBytes,所以是红tbl8将会极大程度上节省内存空间,代价是可能有比较多次的内存访问。

解下来我们依次看看LPM6的实现细节:

第一,表象的组成:

  • 一个tbl24,有2^24个表项组成,占用64MBytes内存空间
  • 若干个tbl8,有2^8个表象组成,每个tbl8占用1KBytes内存空间
/** Tbl entry structure. It is the same for both tbl24 and tbl8 */
struct rte_lpm6_tbl_entry {
	uint32_t next_hop:	2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值