Linux系统下DPDK源码编译,testpmd的使用以及编译过程中遇到的问题

2021/7/2 7:26:51

本文主要是介绍Linux系统下DPDK源码编译,testpmd的使用以及编译过程中遇到的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.首先,下载以及编译

官网下载DPDK源码, DPDK官网 : dpdk.org
以dpdk-20.08为例,下载完成后,
cd 到源码所在路径
1. 指定DPDK安装路径, 设置所需的环境变量并转到源目录
	export RTE_SDK=/dpdk-20.08   
2.  ls ./config
3.  make config T=x86_64-native-linux-gcc
4. 设置编译目标
    export RTE_TARGET=build
5. make

2.编译之后,运行前的设置(大页面内存,导入igb_uio.ko驱动,绑定网卡)

1.设置大页内存
echo 4096 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 4096 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

2.导入igb_uio驱动
modprobe uio
insmod ./build/kmod/igb_uio.ko

3.绑定网卡
./usertools/dpdk-devbind.py --bind=igb_uio pci_1
./usertools/dpdk-devbind.py --bind=igb_uio pci_2

3.运行testpmd

1.设置动态库查找路径
  export LD_LIBRARY_PATH=/dpdk-20.08/build/lib
2.使用testpmd
  ./testpmd -l 0-3 -n 4 -- -i --portmask=0x1 --nb-cores=2(实际上要比这些多)

4.testpmd启动参数

-w 				绑定网卡
-c              使用哪些核 ff 代表1111 1111 八个核
-n				内存通道数
-q				每个cpu管理的收发队列
-p				使用的端口

--nb-cores=N	设置转发核心数
--rxq=N	        将每个端口的 RX 队列数设置为 N
--rxd=N			将RX环中的描述符数量设置为N
--txq=N	        将每个端口的 TX 队列数设置为 N
--txd=N			将TX环中的描述符数量设置为N

--burst=N		将每个突发的数据包数设置为 N。默认值为 32。

5.testpmd启动后,函数

> set fwd io/txonly/rxonly/txrx		设置模式 
> show port stats all				显示所有端口信息

> set txpkts N						设置包的长度为N
> set pktc N						设置报的数量为N,0XFFFF代表一直发

> read reg <port_id> <reg_off>  	读寄存器的值      读某个特定的bar空间,要修改  app/test-pmd/testpmd.h

6.整个过程中,遇到的问题以及解决

1.运行dpdk:   open pci error
   解决方法: echo"">/etc/xnic/driver_cfg
2.网卡绑定有误
	1.查看绑没绑上  ./usertools/dpdk-devbind.py -s
	2.ifconfig
	3.ifconfig p2p1 down		先down掉
	4.重新绑定   ./usertools/dpdk-devbind.py --bind=igb_uio pci_1
				 ./usertools/dpdk-devbind.py --bind=igb_uio pci_2
	



这篇关于Linux系统下DPDK源码编译,testpmd的使用以及编译过程中遇到的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程