dpdk中文-dpdk简单介绍
bestboyxie话说DPDK其实dpdk中文文档太少了,好多大神都不愿意分享,所以我如果不写对不起谢大神名号啦
DPDK = Data Plane Development Kit
数据平面开发套件,说白了就是做数据通讯的SDK。以前传统的数据平面实现主要是以一下几种形态出现;
1、早期linux内核转发;使用linux内核协议栈实现二三层转发。使用netfiter来实现报文过滤;
2、使用网络处理器+网络加速器,把二三层的表通过微指令的的方式写入到硬件的内存中,用硬件实现转发;
3、使用多个mips处理,用多核心实现性能,自己实现协议栈,直接跑在cpu裸核上;
4、使用dpdk在传统的通用CPU上实现报文转发;
DPDK优势:
1、用x86通用处理器就可以玩了,再也不用担心cpu停产或者硬件厂商不生成硬件了。x86的优势你懂得~
2、linux应用空间开发协议栈转发程序,应用空间的程序调试起来方便;比裸核上和什么硬件上方便多了。(最近发现可以使用vs2015+工具实现可视化调试爽YY);
3、intel大厂商,开源社区活跃,从刚开始只有个dpdk(core库)到现在什么虚拟化支持,OVS支持,什么ACL库,什么LPM(路由)库都有啦~~
4、性能上已经被证实了可以达到很不错的性能~~然后例子很多,文档健全,自学相对容易;
讲DPDK不得不讲的几个技术;
1.大页内存实现kernel到用户态数据0 copy;
使用预先留的huge page来分给网卡收发包,以及应用空间数据结构+报文使用;
2.PMD 轮训模式驱动;
以前是网卡产生中断来接收报文(10G报文的中断谁受得了)~~现在dpdk通过自己的KO把原来的网卡驱动给接管;然后应用空间轮循接收报文,+第一项技术,完全是它的技术核心呀;所以也是放到它的core库里面的;
3.无锁的队列~支持多中模型,多生产多消费者模型、高效率算法,吊炸天。。
4.人性化的线程创建+绑定cpu。。其实这个对intel来讲不算啥高科技了
其实核心技术就是上面几个了。
总体总结出来:
大页内存0拷贝。
用轮循取网卡数据;
先进数据结构保证效率;其实就是官网说的
![Image 1][]
附上个人学习时比较有用的连接:
http://www.zhihu.com/question/27413080?sort=created
http://sanwen8.cn/p/112y6j5.html
到这里不知道是否对DPDK有个大概的感觉了呢。深入学习DPDK,谢大神将持续不断地更新;如果觉得本文对你有用,请留言点个赞吧。
[Image 1]:
还没有评论,来说两句吧...