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应用空间开发协议栈转发程序,应用空间的程序调试起来方便;比裸核上和什么硬件上方便多了;
3、intel大厂商,开源社区活跃,从刚开始只有个dpdk(core库)到现在什么虚拟化支持,OVS支持,什么ACL库,什么LPM(路由)库都有啦~~
4、性能上已经被证实了可以达到很不错的性能~~然后例子很多,文档健全,自学相对容易;
5、NFV/SDN大趋势下,设备x86资源池化大势所趋,而性能问题逐渐凸显,DPDK可有效解决该类性能问题,具有重大意义。


讲DPDK不得不讲的几个技术;
1.大页内存实现kernel到用户态数据0 copy;
使用预先留的huge page来分给网卡收发包,以及应用空间数据结构+报文使用;
2.PMD 轮训模式驱动;
以前是网卡产生中断来接收报文(10G报文的中断谁受得了)~~现在dpdk通过自己的KO把原来的网卡驱动给接管;然后应用空间轮循接收报文,+第一项技术,完全是它的技术核心呀;所以也是放到它的core库里面的;
3.无锁的队列~支持多中模型,多生产多消费者模型、高效率算法,吊炸天。。
4.人性化的线程创建+绑定cpu。。其实这个对intel来讲不算啥高科技了


其实核心技术就是上面几个了。
总体总结出来:
大页内存0拷贝。
用轮循取网卡数据;
先进数据结构保证效率;其实就是官网说的

你可能感兴趣的:(开源)