
DPDK
文章平均质量分 66
the_dog_tail_grass
一个在互联网搬砖的程序猿,目前复旦大学非全日制软件工程硕士在读
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RSS/RPS/RFS究竟是个什么东西
RSS/RPS/RFS原创 2021-12-27 18:31:46 · 2284 阅读 · 0 评论 -
利用dpdk rte_ring实现进程间通信
进程间通信有很多方式,如果两个进程是在同一台机器上运行的,效率比较高的通信方式就是共享内存。关于共享内存的实现方式,双方可以通过mmap方式去映射到相同的内存上进而实现内存共享。DPDK实现的ring也可以帮助我们方便的实现高效率的进程间通信。具体方法如下。1.rte_ring需要与rte_mempool配合使用,通过rte_mempool来共享内存。2.primary进程通过rte_ring_create和rte_mempool_create分别创建ring和mempool。3.secon原创 2021-05-13 10:58:22 · 1578 阅读 · 0 评论 -
dpdk ring如何实现无锁和零拷贝的
昨天参加了一个面试,面试官问我dpdk的ring是怎么解决冲突的,我当时回答的不好,现在来总结下~1.无锁的实现既然是解决冲突,肯定至少有两个生产者或者两个消费者,以两个生产者为例。core1和core2同时往ring中写入数据,对于core1来说,首先会在入队函数中定义局部变量prod_head和prod_next和cons_tail,prod_head由r->prod.head赋值,cons_tail由r->cons.tail赋值。在判断当前r还有无空间满足写入需求之后,会用原创 2021-04-16 16:12:49 · 2833 阅读 · 0 评论 -
dpdk uio驱动
关于dpdk的驱动层,一直以来都没有理的很清楚。一是因为本人不是开发驱动的,对驱动知识相当匮乏,二来用dpdk来开发,貌似也不需要过多关注底层驱动逻辑。但是这块不懂的话,总会感觉对dpdk一知半解的,不踏实。所以这篇博客就是通过查阅资料和阅读源码总结出来的,如有理解错误的地方还望各位指正。因为uio是对IO设备而言的,因此本博客中的设备指的是IO设备。1.linux设备驱动uio机制 大家都知道,linux操作系统分为两个层级,一个是内核态,一个是用户态。平时编写的软件都是运行在用户态...原创 2021-02-20 17:41:21 · 848 阅读 · 0 评论 -
vpp中dpdk接口注册流程分析
vpp是一个优秀的包处理转发框架,可以采用非常多的接口类型来进行收发包,应用最多的就是dpdk了,因此本篇博客主要探讨被dpdk接管的网卡是如何注册到vpp中的。vpp代码版本是1904.本文代码贴的比较少,只描述了一些函数调用关系,最好可以参照源码阅读。关于dpdk就不再赘述,简单的理解dpdk就是一个开发组件,提供了网卡驱动,可以接管原先由内核管理的网卡,实现kernel bypass。同时dpdk也提供了一些辅助机制,可以加快网卡报文的收发。而在vpp中,dpdk是作为一个插件来实现的。在编译vp原创 2021-02-03 16:55:38 · 2763 阅读 · 1 评论 -
DPDK kni模块分析
相关背景dpdk缺少相应的协议栈,这提升了dpdk的入门门槛。如果我们采用dpdk来开发代码,当网卡被用户态驱动绑定之后,我们不仅需要处理业务报文,还需要对arp,ping,tcp握手等消息进行处理,对于笔者目前的一个业务场景(缺少协议栈,控制面和用户名共用一个网卡不同ip,数据面需要提升收包性能,因此采用了dpdk。为什么控制面和用户名不用两张网卡呢?产品经理决定的~)来说就比较头疼。幸运的是dpdk提供了kni模块,来解决相应的问题。这篇文章就是介绍dpdk的kni模块的实现机制。建议先阅读下dpd原创 2021-01-16 16:09:41 · 1386 阅读 · 2 评论 -
DPDK的meter库(双速率三色算法)
前面一篇讲了dpdk的单速率三色桶算法,这篇解析一下双速率三色桶。流程和单速率完全相同,区别在于数据结构以及颜色判断的逻辑上。仍然看色盲模式相比于单速率模式,我感觉双速率模式更好理解,有两个桶C和P以及两个令牌产生速率。两个桶同时跟随时间增加令牌数,超过容量则丢弃。报文速率如果介于cir和pir,超过cir部分的报文返回黄色,低于cir的返回绿色。报文速率超过pir,所有超过pir部分的报文都返回红色,介于cir和pir部门的返回黄色,低于cir的返回绿色报文速率低于cir,所有的报文绿色~原创 2020-08-29 13:10:53 · 1298 阅读 · 0 评论 -
DPDK的meter库(单速率三色算法)
DPDK提供了丰富的基础库,其中就有利用令牌桶来实现meter功能,可以参考例子中的qos_meter。这篇博客主要就是解读这个例子。令牌桶算法分为单速率三色算法和双速率单色算法,单速率只有一个速率桶C桶以及一个EBS。关注点在于报文的突发尺寸,双速率有两个速率桶C和P,更关注突发的报文速率。首先来看单速率三色,令牌产生的速率是cir,C桶容量为cbs,当C桶满时,再去添加E桶,E桶也满时,令牌丢弃。在取令牌时,先取C桶,C桶满足,不管E桶,E桶保持不变,C桶减少相应数量令牌返回绿色。C桶不满,原创 2020-08-29 11:18:26 · 1926 阅读 · 0 评论 -
DPDK的编译安装
最近在研究vpp+dpdk,此过程中遇到了不少问题,在此记录刚毕业的时候接手的第一个项目就是dpdk了。虽然这个项目在不久后就黄了,但我也通过这个项目对dpdk多多少少有些了解。以下概念借鉴了https://www.cnblogs.com/bakari/p/8404650.html这篇博客。dpdk是Intel提供个的一个开发套件。为 Intel 处理器架构下用户空间高效的数据包处理提...原创 2019-02-16 17:25:58 · 4637 阅读 · 4 评论