DPDK实验环境搭建
事情是是是是是这样的!
我要用DPDK,但是我觉得搞两台服务器连端口发包,太麻烦,虽然实际上,可能并不麻烦。。。。但我就是想在单台服务器上做。
docker+DPDK+OVS 这种方式来做测试。
然后呢就在网上找了个教程,和我的需求真的是一模一样。。但是按照那个教程做的过程中啊,出了一些问题。记录一下~
教程链接:
其中安装部分按照教程里的做就可以了。
安装完dpdk和ovs之后创建网桥以及下发流表用的脚本可以在我的github上获取。 -
在这个实验中,把pktgen和testpmd放在两个容器中,然后进行测试。创建容器都没问题,问题是在启动pktgen的时候,总是报内存的错误,要么是内存没有,要么是内存不足!!!
重点来了,朋友们,教程里的socket_mem部分是两个1024对吧。那是因为人家有连个NUMA节点,你有么???
我是没有的。。所以,就会报错,说是socket1上没有内存。。显然没有。所以啊,如果你只有一个numa节点,那么你在pktgen上和testpmd上的命令应该是这样的:
dpdk挂载的就是红线框的这两条
这样就可以了。
dpdk提升多少
能提升40倍。
DPDK只是单纯的从驱动拿数据,然后组织成数据块给人用,跑在用户态。功能相当于linux的设备无关接口层,处于socket之下,驱动之上。只不过linux协议栈的这部分在核心态。包处理器,很多时候是不用linux内核协议栈的,而是用专用包处理程序,类似于DPDK加上层应用处理。通常会有些硬件加速器,包处理效率更高些。缺点是一旦用不上某些功能,那些加速器就白费了。而纯软件处理就非常灵活,不过代价就是功耗和性能。
纯DPDK性能非常高,intel自己给出的数据是,处理一个包80时钟周期。一个3.6Ghz的单核双线程至强,64字节小包,纯转发能力超过90Mpps,也就是每秒9千万包。如果加上linux
socket协议栈,比如跑个纯http包反弹,那么根据测量,会掉到3000-4000周期处理一个包,单核双线程在2.4Mpps,每秒两百四十万包,性能差40倍。
dpdk简介与理解
由于工作关系接触了dpdk,在我看来,简单来说,dpdk的功能就是从内核接管网卡,进行收发包操作,加速业务。其中还包括了pdcp和ipsec加解密。
既然是加速用的,那么核隔离十分必要,在多核处理器上,每个核执行不同的任务,master核主要跑系统和一些耗时较长并不急于处理的任务,核1只放ipstack,其中ipsec包含在ipstack中,后面的核会布置一些业务相关的l2,l3协议栈相关的业务。
dpdk的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于dpdk 原理、dpdk的信息别忘了在本站进行查找喔。