DPDK的编译安装

最近在研究vpp+dpdk,此过程中遇到了不少问题,在此记录

刚毕业的时候接手的第一个项目就是dpdk了。虽然这个项目在不久后就黄了,但我也通过这个项目对dpdk多多少少有些了解。

以下概念借鉴了https://www.cnblogs.com/bakari/p/8404650.html这篇博客。

dpdk是Intel提供个的一个开发套件。为 Intel 处理器架构下用户空间高效的数据包处理提供了库函数和驱动的支持,它不同于 Linux 系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。也就是 dpdk 绕过了 Linux 内核协议栈对数据包的处理过程,在用户空间实现了一套数据平面来进行数据包的收发与处理。在内核看来,dpdk 就是一个普通的用户态进程,它的编译、连接和加载方式和普通程序没有什么两样。我理解的dpdk就是一个驱动,可以接管网卡,使得这个网卡不归内核管理。被dpdk绑定的网卡在ifconfig命令下是看不到的。这样的好处有

1.应用程序可以直接从网卡获取数据包,然后绕过内核协议栈,进入用户自己的协议栈。可能是开源的协议栈(ofp),也可能是商用协议栈。这些协议栈的性能要比Linux内核的协议栈性能好很多。

2.内核接管的网卡,当有数据包到来时,会触发CPU的中断。而dpdk采用轮询的方式,当有数据包到来时不会产生中断,从而减少了中断的额外开销。

3.dpdk采用循环队列,没有锁。还没具体的研究这个机制。。。

dpdk 能够绕过内核协议栈,本质上是得益于 UIO 技术,通过 UIO 能够拦截中断,并重设中断回调行为,从而绕过内核协议栈后续的处理流程。UIO 设备的实现机制其实是对用户空间暴露文件接口,比如当注册一个 UIO 设备 uioX,就会出现文件 /dev/uioX,对该文件的读写就是对设备内存的读写。除此之外,对设备的控制还可以通过 /sys/class/uio 下的各个文件的读写来完成。

1.获取dpdk源码。

http://core.dpdk.org/download/   选择版本下载。我下载的是19.02的版本。下载解压后,假设目录是/home/dpdk-19.02,进入该目录

2.设置巨页HugePages(巨页相关概念参考https://yq.aliyun.com/articles/566115?spm=5176.10695662.1996646101.searchclickresult.2d1f7121dDjXum

HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能

3.设置环境变量,主要是来编译测试程序

export RTE_SDK=<dpdk目录>

export RTE_TARTGET=x86_64-native-linuxapp-gcc

4.编译dpdk

make config T=x86_64-native-linuxapp-gcc
sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config
make

 中途出现的错误大多数都是依赖库不匹配或者找不到。重新下载即可。

如果出现这个错误* /lib/modules/3.10.0-693.11.6.el7.x86_64/build: No such file or directory. Stop.这类的问题,说明应该是系统没有安装内核开发包或者是安装的内核开发包版本不匹配。需要重新下载内核开发包。yum install kernel-devel。然后进入/lib/modules/3.10.0-693.11.6.el7.x86_64/,查看build连接到哪个版本的内核开发包,然后将刚才下载的软链接到这个版本的名称即可,然后执行make

dpdk-17.11/lib/librte_eal/linuxapp/eal/eal_memory.c:56:18: fatal error: numa.h: No such file or directory

 yum install numactl-devel*x86_64

5.安装编译生成的dpdk驱动

在/home/dpdk-19.02目录下会有x86_64-native-linuxapp-gcc这个目录,进入该目录下的kmod文件夹,会有生成的网卡驱动。然后执行modprobe uio,insmod igb_uio.ko,insmod rte_kni.ko.完成dpdk驱动的安装。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值