DPDK
文章平均质量分 68
legend050709ComeON
愚公移山
展开
-
Hardware and its habit
这也是对局部性原理的应用,当一个指令或数据被访问过之后,与它相邻地址的数据有很大概率也会被访问,将更多可能被访问的数据存入缓存,可以提高缓存命中率。使用全相联映射或组相联映射的 Cache 中,主内存块与 Cache 块没有固定的映射关系,当新的内存块需要加载到 Cache 中时(且 Cache 块没有空闲位置),则需要替换到 Cache 块上的数据。恩,所谓的空间局部性。最初,由于受到芯片集成工艺的限制,片内缓存不可能很大,因此 L2 / L3 缓存都是设计在主板上,而不是在芯片内的。转载 2023-03-18 18:23:51 · 97 阅读 · 0 评论 -
共享数据结构无锁释放之epoch-based reclame
epoch based reclaim转载 2023-03-18 17:02:52 · 361 阅读 · 0 评论 -
CAS的ABA问题
cas转载 2023-03-05 20:08:43 · 126 阅读 · 0 评论 -
多线程共享数据结构的无锁释放
多线程原创 2023-03-05 19:44:01 · 435 阅读 · 0 评论 -
DPDK中的无锁共享数据结构
无锁数据结构原创 2023-03-01 20:19:54 · 472 阅读 · 0 评论 -
DPDK项目中数组&rte_ring&mempool结合使用
dpdk 数组、rte_ring、mempool、lpm、acl原创 2023-02-08 22:04:59 · 587 阅读 · 1 评论 -
DPDK中的流量分叉(flow bifurcation)
目录flow bifurcation介绍流量分叉的优点流量分叉的实现流量分叉的应用场景减少网卡的数量DPDK程序中控制流量和业务流量分离参考flow bifurcation介绍流量分叉的优点流量分叉的实现流量分叉的应用场景减少网卡的数量正常情况下,在一个机器上部署DPDK程序,需要2块网卡:管理口:登陆机器,管理机器。业务口:一个单卡双口的网卡作为DPDK程序转发流量的业务口。如果使用基于SR-IOV的 flow bifurcation,只需要一块卡即可。利用网卡的SR-转载 2022-05-19 22:51:32 · 1301 阅读 · 0 评论 -
DPDK程序 exception path 的实现方案
目录背景exception path定义实现 exception path 的方案传统的 Tun/Tap 或者 pcap PMDKNI(Kernel NIC Interface)基于 SR-IOV 的 Flow Bifurcation。virtio_user 作为 exception path 用于与内核通信。背景exception path定义DPDK 是旁路内核的转包方案,这也是它高性能的原因,但有些时候从 DPDK 收到的包(如控制报文)需要丢到内核网络协议栈去做进一步的处理,这个路径在 D转载 2022-05-19 22:47:32 · 389 阅读 · 0 评论 -
DPVS适配博通100G网卡
目录背景检查基本信息查看总结参考背景使用 DPDK 20.11 编译出的 DPVS,查看是否支持 博通100G网卡。检查基本信息查看(1) 博通网卡驱动(2) 网卡的pci(3) 网卡的设备id,厂商id(4) 查看DPDK 20.11,是否支持该网卡,以及对应的PDM驱动注:也可以通过查看DPDK 20.11 的官方文档,查看是否支持博通 100G网卡。总结参考...原创 2022-05-18 11:27:36 · 985 阅读 · 0 评论 -
DPDK收发包流程分析
目录前言场景参考前言场景参考https://zhuanlan.zhihu.com/p/497232818转载 2022-05-10 19:48:22 · 2741 阅读 · 1 评论 -
DPVS 82599 soft ipv6 fdir perfect mode 实现
目录问题思路DPVS中应用参考问题思路DPVS中应用参考原创 2022-03-24 16:04:53 · 656 阅读 · 0 评论 -
DPVS适配Mellanox-25G/100G网卡
目录安装Mlnx-Ofed参考安装Mlnx-Ofed参考原创 2021-11-10 18:32:59 · 4000 阅读 · 0 评论 -
82599 网卡 DPDK vxlan inner L4 checksum offload
目录思想ixgbe_tx_offloadol_flags参考思想以IXGBE驱动为例,看一下如何让把内层报文Checksum的计算Offload给网卡。本质上来说,是在DPDK的mbuf结构中:将L2 Header的长度配置为外层VxLAN报文+内层L2 Header的总长度,这样对网卡来说,该mbuf对应的报文就是一个L2 Header长得令人发指的普通非隧道报文。但是这样就可以计算内层L3/L4 Header的Checksum了。ixgbe_tx_offload在DPDK的IXGBE驱动代转载 2022-03-22 20:24:54 · 929 阅读 · 0 评论 -
DPDK疑难杂症之发包Tx失败
目录现象原因具体原因解决参考现象DPDK场景下网卡批量发包失败(计划发送N个,实际只能发送M个)。用GDB跟进去的话会发现是网卡发送队列的DD标志位未置位。原因DPDK 程序通过 ixgbe或者i40e pmd 驱动可以直接操作网卡的寄存器和 ring Buffer,当上层业务存在问题,发送一些“不合规”的数据包时,这些有问题的数据包会直接进入网卡,引发硬件问题。在内核态时,这些有问题的数据包会被内核驱动检查过滤掉。但是DPDK程序的检查是自己控制的,无法做到精准检查。具体原因引发发送转载 2022-03-22 18:14:28 · 3021 阅读 · 2 评论 -
DPDK疑难杂症之网卡Imiss/ierror/i-nombuf问题
目录问题分析网卡初始化与收包整体流程收包队列的构造网卡启动收包流程入队出队总结参考问题分析网卡初始化与收包整体流程一个网络报文从网卡接收到被应用处理,中间主要需要经历两个阶段:阶段一:网卡通过其DMA硬件将收到的报文写入到收包队列中(入队)阶段二:应用从收包队列中读取报文(出队)注:DMA是硬件,目的将数据包从网卡送到操作系统(ring buffer),期间不需要CPU的参与,节省了CPU。收包队列的构造下面以ixgbe网卡在dpdk框架下工作为例,分别介绍下收包队列的构造、启转载 2022-03-22 11:47:58 · 5433 阅读 · 0 评论 -
DPDK开发者手册之术语Glossary
目录参考参考https://doc.dpdk.org/guides/prog_guide/index.html【DPDK programmer guide】https://doc.dpdk.org/guides/prog_guide/index.html【DPDK术语】原创 2022-03-18 11:28:04 · 112 阅读 · 0 评论 -
DPDK 网卡的RSS特性理解
目录dpdk soft rss实现参考dpdk soft rss实现参考https://doc.dpdk.org/guides/prog_guide/index.html【DPDK programmer guide】https://doc.dpdk.org/guides/prog_guide/toeplitz_hash_lib.html#predictable-rss【soft rss实现】原创 2022-03-18 11:11:13 · 594 阅读 · 0 评论 -
DPDK开发者手册之高效率代码
目录参考参考https://doc.dpdk.org/guides/prog_guide/index.html【DPDK programmer guide】https://doc.dpdk.org/guides/prog_guide/writing_efficient_code.html【DPDK 高效率代码建议】原创 2022-03-18 11:06:08 · 172 阅读 · 0 评论 -
DPDK开发者手册Kernel NIC Interface之KNI理解
目录参考参考https://doc.dpdk.org/guides/prog_guide/index.html【DPDK programmer guide】https://doc.dpdk.org/guides/prog_guide/kernel_nic_interface.html【Kernel NIC Interface】原创 2022-03-18 10:52:26 · 240 阅读 · 0 评论 -
DPDK开发者手册流分类rte_flow
目录参考参考https://doc.dpdk.org/guides/prog_guide/index.html【DPDK programmer guide】https://doc.dpdk.org/guides/prog_guide/packet_distrib_lib.html【Packet Distributor Library】原创 2022-03-18 10:46:20 · 4623 阅读 · 0 评论 -
DPDK开发者手册之Mbuf理解
目录参考参考原创 2022-03-18 10:30:56 · 202 阅读 · 0 评论 -
DPDK无锁队列之MemPool理解
目录参考参考原创 2022-03-18 10:27:57 · 644 阅读 · 0 评论 -
DPDK开发者手册之无锁队列rte_ring理解
目录参考参考原创 2022-03-18 10:26:38 · 157 阅读 · 0 评论 -
DPDK开发者手册之LPM理解
目录参考参考原创 2022-03-18 10:18:35 · 220 阅读 · 0 评论 -
各网卡对于FDIR的支持在DPVS中的应用
背景在CPU单核时代,数据包经由网卡接收后均被送往唯一的CPU进行处理。随着多核时代到来,出现了负载均衡问题(某些core过载,而另一些core空载的情况)。为解决该问题,RSS(Receive Side Scaling)技术先通过hash操作将数据包发送到不同的core上进行中断处理,然后再经由core间转发将数据包发送到运行目的应用所在的core上。虽然负载看似在多core上均衡了,但由于hash的抗碰撞特性,大量数据包会被送到了不匹配的core上,因而数据包的core间转发成为性能瓶颈。原创 2022-03-17 16:29:25 · 1995 阅读 · 1 评论 -
DPVS适配Intel E810-XXV系列25G网卡
目录信息查看网卡型号查看其他信息查看DDP版本选择安装DDP注意事项DPDK版本选择参考文档信息查看网卡型号查看lspci |grep -i ethlspci -vvv | grep -i PCI-ID -A 50 | grep -i "produce name"其他信息查看# dmesg -T |grep -i ddp# lsmod |grep -i ice# modinfo ice# find / -type d -name ddpDDP版本选择安装DDP默认安装 ice原创 2022-03-15 17:11:54 · 2407 阅读 · 2 评论 -
intel 82599在DPDK下使用fdir
目录参考参考82599在DPDK下使用fdir: ipv4/ipv6https://decodezp.github.io/2019/01/04/test4-82599-fdir/https://decodezp.github.io/tags/NIC/https://decodezp.github.io/tags/dpdk/转载 2022-03-15 12:11:44 · 435 阅读 · 0 评论 -
DPDK对于虚拟口/网卡的支持
目录支持的虚拟网卡支持的虚拟网卡参考:支持的虚拟网卡类型原创 2022-03-14 19:31:41 · 2354 阅读 · 0 评论 -
DPDK的PMD(uio/igb_uio/vfio-pci/uio_pci_generic)
目录PMD简介DPDK PMD 和 网卡驱动的关系参考PMD简介DPDK PMD 和 网卡驱动的关系参考转载 2022-03-11 18:46:33 · 8415 阅读 · 2 评论 -
DPDK支持的Intel网卡
目录DPDK 支持的网卡不同网卡DPDK的操作DPDK 支持的网卡不同网卡DPDK的操作Mellanox网卡不需要绑定 igb_uio ,Intel && Broadcom需要绑定 igb_uio;Intel && Broadcom需要使用DPDK驱动 igb_uio,绑定成功后在“ip a”下不可见。Mellanox 网卡,DPDK 需要使用自带驱动,且 DPDK中有适配。Intel 、Broadcom 网卡,DPDK 不使用自带驱动,使用 igb_ui原创 2022-03-11 17:50:15 · 5656 阅读 · 0 评论 -
DPDK 20.11 Dynamic mbuf
目录背景解决方法申请外部结构增大mbuf的空间多种布局Dynamic mbuf原理使用/API更大的额外空间的需求怎么办?参考背景需要metadata的场景mbuf 中的 metadata:dpdk 18.11 中的 rte_mbuf的缺陷rte_mbuf 中的 metadata 通过 usrdata 来保存,但是只有一个usrdata,不可以保存多个 metadata。解决方法申请外部结构缺点:性能问题增大mbuf的空间缺点:空间浪费,更大的mbuf,意味着cach原创 2022-01-06 18:02:19 · 747 阅读 · 0 评论 -
DPDK官方信息查看
目录总览dpdk doc手册API 手册guides 手册dpdk支持的硬件dpdk 源码下载dpdk 对于网卡驱动的支持总览dpdk doc手册dpdk doc文档、手册https://www.dpdk.org/ ---> DPDK Core --->Document各个版本的手册:API 手册API 手册介绍了当前版本的DPDK的 模块,源码(example例子的源码,各个文件分布,头文件、函数的源码等);guides 手册guides 手册原创 2021-11-11 22:05:02 · 3127 阅读 · 0 评论 -
Conhash 和 Maglev hash对比
新建性能conhashO(lgn): n为虚拟节点的个数;maglev hashO(1):一致性conhash挂掉一个RS,原本给这个RS的流量,不是均分到剩余的N个RS上,而是均分到之前RS的副本个数上。比如之前RS有30000个连接,RS的副本个数=10*160(权重为10),那么30000个连接再分配至到10*160个副本的下一个副本对应的RS上。比如说,如果RS个数为1000,每个RS的权重为1,每个RS对应的副本=1*160=160.那么挂掉一个RS(对..原创 2021-06-27 15:24:54 · 276 阅读 · 0 评论 -
网易数帆改造dpvs之基于vs级别的qos
背景DPVS 原生的 QoS 是一个独立的模块(TC),和 ipvs 负载均衡的功能没有任何联系,需要单独配置报文匹配规则(qos classify)、带宽限速参数和算法(qos sched)。这倒还不是问题的关键,问题的关键在于 DPVS 原生 QoS cls 在数据面进行保文规则匹配时,效率非常低下:它是一条一条规则进行顺序比较,直到完全匹配到规则,就用匹配规则里设置的对应配置对报文进行 QoS schedule 操作。而且由于匹配效率低下,也设置了最大 reclassify 的值,进行 8 次比较转载 2021-03-11 14:36:53 · 417 阅读 · 0 评论 -
dpdk 18.11和dpdk 17.11对比
dpdk 18.11的变化之内存管理参考https://software.intel.com/content/www/us/en/develop/articles/memory-in-dpdk-part-4-1811-and-beyond.htmlhttps://doc.dpdk.org/guides-18.11/rel_notes/release_18_11.html原创 2021-03-05 14:33:43 · 221 阅读 · 0 评论 -
网易数帆对DPVS的改造之bgp流量和配置查询命令,业务流量分离
参考:网易数帆基于DPDK的高性能四层负载均衡实践部分内容如下所示问题控制面对接模块和 KNI 模块会相互影响1 和 3 需要 master cpu0 运行 KNI 模块处理逻辑,将流量从和内核的共享队列中取出;5 也需要 master cpu0 处理用户业务配置;而用户业务配置量级存在突发和不确定性,会独占 master cpu0,导致序号 1 和 3 流量处理不及时而被丢弃。简要描述该问题是,控制面对接模块和 KNI 模块因争抢 master cpu0 计算资源而互相影.转载 2020-10-20 18:31:43 · 381 阅读 · 0 评论 -
调试 dpdk 应用程序的coredump整理
稳定复现的 coredump打开 dpdk 相关的 debug开关,重新编译给 dpdk 源码添加 patch,加检查或日志,重新编译无法稳定复现的 coredump打开大页内存的 coredump转载 2020-09-27 10:14:53 · 1222 阅读 · 0 评论