首页 > 其他分享 >dpdk lpm

dpdk lpm

时间:2023-10-01 17:44:06浏览次数:40  
标签:rte HASH 算法 lpm dpdk 路由 路由表

DPDK LPM(Longest Prefix Match)是高性能前缀路由匹配库,用于数据包转发过程中快速查找与dstIP地址最长匹配的路由表项。

LPM特点

高性能:基于前缀树算法实现快速匹配。
线程安全:多线程并发安全。
灵活配置:支持动态配置路由表,可在运行时添加、删除或修改路由表项。
内存管理:使用Memory Pool管理内存。

算法设计

两级HASH表:基于HASH算法,把32bit的IP地址分为2个部分。
tbl24(24bit):1张2^24entries的HASH表。
tbl8(8bit):最多256张2^8entries的HASH表。

查询算法

当Netmask<=24bit时,查表一次得到NextHop;否则,查2次表,该场景概率低。

接口函数

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

标签:rte,HASH,算法,lpm,dpdk,路由,路由表
From: https://www.cnblogs.com/WJQ2017/p/17739055.html

相关文章

  • dpdk官方转发例子分析
    例子源码http://dpdk.org/browse/dpdk/tree/examples/skeleton/basicfwd.cmain函数主流程1.初始化环境抽象层EALintret=rte_eal_init(argc,argv);if(ret<0)rte_exit(EXIT_FAILURE,"ErrorwithEALinitialization\n");2.分配mempooldpdk使用mbuf保存packet,me......
  • DPDK基本原理
    内核处理网络数据包弊端中断处理处理大量网络数据包时,出现频繁的硬件中断,产生较高的性能开销。内存拷贝网络数据包从网卡到应用程序流程是,数据从网卡通过DMA传到内核缓冲区,从内核态拷贝到用户态。上下文切换硬件中断、多线程、锁竞争产生上下文切换开销。CPU缓存失效数据包处......
  • DPDK-22.11.2 [四] 官方basicfwd编译运行讲解
    编译安装dpdk绑定网卡驱动vfio必须有两个网口配置LD_LIBRARY_PATH和PKG_CONFIG_PATH编译运行basicfwd.c/*SPDX-License-Identifier:BSD-3-Clause*Copyright(c)2010-2015IntelCorporation*/#include<stdint.h>#include<stdlib.h>#include<inttypes.h>#incl......
  • DPDK-22.11.2 [三] 官方helloworld编译运行讲解
    先安装dpdk编译完成后,先运行ninjainstall把相关内容安装到指定目录。ls/home/dpdkinstallbinincludelib64sharebin——一些脚本(用于绑定驱动等),编译的测试程序,编译的常用工具include——需要的头文件lib64——编译的类库share——文档相关......
  • DPDK 22.11.2 使用建议
    驱动建议使用vfio-pci,依赖系统的vfioigb_uio从DPDKv20.02开始禁止编译。可以通过CONFIG_RTE_EAL_IGB_UIO打开编译。igb_uio计划迁移到其他项目。uio_pci_generic是linux系统提供的,不支持virtualfunction(VF)。如果想支持virtualfunction(VF),请使用igb_uio,依赖系统的uio。......
  • dpdk编译开发
    下载源码http://core.dpdk.org/download/编译http://core.dpdk.org/doc/quick-start/安装python3安装ninjayuminstallninja-build安装mesonpip3installmeson开始编译tarxfdpdk.tar.gzcddpdkmesonbuildninja-Cbuild确定配置好大页内存mkdir......
  • 解决启动dpdk时,报"VFIO group is not viable! Not all device in IOMMU group bound t
       问题如下图:    这个错误信息其实是linux内核的vfio驱动报出来的,主要原因是"在iommu分组中,不是所有的设备都被绑定到vfio驱动".所以,解决方案核心思想:将要使用的设备独立到一个iommu分组中。         步骤1:通过以下"list_iommu_group.sh"可以看......
  • 编译 pktgen-dpdk
    pktgen是一个linux的高性能发包测试工具,pktgen-dpdk是一个依赖dpdk的高性能发包工具,理论上比pktgen更好一些。pktgenDependency"libdpdk"notfound,triedpkgconfiga......
  • ovs-dpdk:revalidator源码解析
    revalidator是做什么的?需要知道哪些东西?有关于revalidator需要弄明白的是以下三个问题:通过ovs-vsctllistopen_vs可以看到other_config里面有两个变量线程数配置:n-han......
  • openeuler加载dpdk驱动模块
    虽然是openeulerarm架构加载dpdk网卡驱动,但是linux加载驱动模块的流程和方法是一样的,遇到的问题也是相似的,所以借这个机会把相关的内容介绍一下确认模块名称驱动模块开......