DPDK实验环境搭建

1. 背景

事情是是是是是这样的!
我要用DPDK,但是我觉得搞两台服务器连端口发包,太麻烦,虽然实际上,可能并不麻烦。。。。但我就是想在单台服务器上做。

docker+DPDK+OVS 这种方式来做测试。

然后呢就在网上找了个教程,和我的需求真的是一模一样。。但是按照那个教程做的过程中啊,出了一些问题。记录一下~

2. 教程内容和相关脚本

教程链接:https://blog.csdn.net/me_blue/article/details/78589592
其中安装部分按照教程里的做就可以了。

安装完dpdk和ovs之后创建网桥以及下发流表用的脚本可以在我的github上获取。https://github.com/LinanJ/DPDK-OVS-

3. 实验中遇到的问题

在这个实验中,把pktgen和testpmd放在两个容器中,然后进行测试。创建容器都没问题,问题是在启动pktgen的时候,总是报内存的错误,要么是内存没有,要么是内存不足!!!

重点来了,朋友们,教程里的socket_mem部分是两个1024对吧。那是因为人家有连个NUMA节点,你有么???

image.png

我是没有的。。所以,就会报错,说是socket1上没有内存。。显然没有。所以啊,如果你只有一个numa节点,那么你在pktgen上和testpmd上的命令应该是这样的:

# pktgen一定要进入到pktgen那个文件夹下再运行这个命令。
pktgen -c 0x19 --master-lcore 3 -n 1 --socket-mem 1024 --file-prefix pktgen --no-pci --vdev \
'net_virtio_user0,mac=00:00:00:00:00:05,path=/var/run/openvswitch/vhost-user0' --vdev \
'net_virtio_user1,mac=00:00:00:00:00:01,path=/var/run/openvswitch/vhost-user1' -- -T -P -m "0.0,4.1"

#testpmd的目录/dpdk/x86_64-native-linuxapp-gcc/app
testpmd -c 0xE0 -n 1 --socket-mem 1024 --file-prefix testpmd --no-pci  \
--vdev 'net_virtio_user2,mac=00:00:00:00:00:02,path=/var/run/openvswitch/vhost-user2' \
--vdev 'net_virtio_user3,mac=00:00:00:00:00:03,path=/var/run/openvswitch/vhost-user3' \
-- -i --burst=64 --disable-hw-vlan --txd=2048 --rxd=2048 -a --coremask=0xc0

  • 挂载问题
    有的时候吧,大页内存用着用着就莫名其妙的没有了,原因不知道是啥,很可能是需要重新挂载一下。
  1. 首先看一下你的大页使用情况

grep Huge /proc/meminfo

image.png
  1. 然后来看一下系统的挂载情况

cat /proc/mounts

dpdk挂载的就是红线框的这两条

image.png
  1. 如果想重新挂载怎么办?
umount /dev/hugepages
umount /mnt/huge
mount -t hugetlbfs none /dev/hugepages
mount -t hugetlbfs -o pagesize=1G none /mnt/huge

这样就可以了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容