DPDK LPM 介绍

本文介绍了DPDK中的LPM(最长前缀匹配)算法,用于IPv4路由查找,通过DDR-24-8算法实现常数级别查找性能。核心在于tbl24和tbl8数据结构,以及prefix-expansion技术。通过牺牲空间换取查找速度,最多两次访存即可完成查找。理解这三个关键点能掌握DPDK LPM的核心。
摘要由CSDN通过智能技术生成

DPDK 是目前比较流行的数据面加速的解决方案,提供了一些在数据转发面比较有用的库,比如本文中提到的LPM,LPM是longest prefix match的缩写,中文的意思是最长匹配。这是在数据转发面比较常用的一个概念,意思就是有多个匹配项的时候,最长匹配的那一项将做为最终的查找结果。

DPDK LPM的库主要是针对长度为32位的key,其实就是针对IPv4的路由查找所量身定制的。

LPM的库支持的方法主要有三个,分别是添加/删除/查找。通过空间换时间的方式,可以将查找的时间复杂度缩减到O(1)的量级。

接下来我们就来看看实现的具体细节,通过什么样的数据结构设计来实现常数级别的查找性能。 

2019-07-16 未完待续

DPDK中的LPM算法,使用DDR-24-8的算法,通过牺牲空间的方法来换取查找性能的提升。大多数情况下,路由的子网掩码长度都是小于等于24的,满足这个条件的路由查找都可以通过一次访存来实现。如果是大于24的,则需要两次访存来实现。由此可见,DPDK中实现的LPM的查找性能很大程度上取决于所要访问的内存是否在CPU的cache中。

主要的数据结构由下面两部分构成:

  • 一个有2^24表项的数组,我们暂且将这个表称为tbl24。
  • 一群有2^8表项的数组,这个为tbl8。

tbl24由IP地址的前24位来进行索引,tbl8由IP地址的后8位来进行索引。理论上来讲,每一个tbl24中的表项都可以指向一个tbl8的数组,最终有可能退化成2^32个表项。然而这个对于内存资源来说是太大了。相反的,这个方法利用了IP路由的特点,大多数路由的掩码都是小于等于24的。通过设计两层表项的结构,可以在提高查找性能的情况下,尽可能小的耗用内存。</

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值