dpdk的安装

dpdk的安装,第1张

然后根据服务器类型和网卡类型选择就可以

第一步: x86_64-native-linuxapp-gcc

第二步: Insert IGB UIO module

第三步: Setup hugepage mappings for NUMA systems

第四者做步: Bind Ethernet/Crypto device to IGB UIO module

但是遇到问题1:

/bin/sh: cc: 未找到命令 ,已解决

原因 没有安蔽嫌基装gcc

在线安装gcc即可

然后就可以继续安装了

遇到问题2: 安装IGB UIO module遇到的问题

kernel版本不匹配

查看安装的kernel版本:

查看我宏谨的版本 uname -r

rpm命令查看我所安装的内核版本 rpm -qa kernel

然后进行调整,具体可以 参考

然后就可以运行dpdk自带的example中的样例了

如何运行example中的样例呢:

事情是是是是是这样的!

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

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

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

教程链接: https://blog.csdn.net/me_blue/article/details/78589592

其中安装部分按照教程里的做就可以了。

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

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

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

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

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

这样就可以了。

DPDK 需要一个构建系统用于编译等 *** 作。 本节介绍 DPDK 框架中使用的约束和机制。

这个框架有两个使用场景:

以下提供了如何构建DPDK二进制文件

安装之后,将创建一个构建目录结构。 每个构件目录包含文件、库和应用程序

构建目录特定于配置的体系结构、执行环境、工具链。 可以存在几个构建目录共享源码,但是配置不一样的情况。

例如,要使用配置模板 config/defconfig_x86_64-linuxapp 创建一个名为 my_sdk_build_dir 的构建目录,我们使用如下命令:

这会创建一个新的 new my_sdk_build_dir 目录,之后,我们可以使用如下的命令进行编译:

相当于:

目录 my_sdk_build_dir 的内容是:

请参阅 Development Kit Root Makefile Help 获取更详细的信息。

由于DPDK本质上是一个开发工具包,所以最终用户的第一个目标就搜此是使用这个SDK创建新的应用程序。 要编译应用程序,用户必须设置 RTE_SDK 和 RTE_TARGET 环境变量。

对于一个新的应用程序,用户必须创建新的 Makefile 并包含指定的 .mk 文件,如 ${RTE_SDK}/mk/rte.vars.mk 和 ${RTE_SDK}/mk/rte.app.mk。 这部分内容描述请参考 Building Your Own Application .

根据 Makefile 所选定的目标(架构、机器、执行环境、工具链)或环境变量,应用程序和库将使用适当的h头文件进行编译,并和适当的a库链接。 这些文件位于 ${RTE_SDK}/arch-machine-execenv-toolchain,由 ${RTE_BIN_SDK} 内部引用。

为了编译应用程序猛袜,用户只需要调用make命令。编译结果将置于 /path/to/my_app/build 目录。

示例应用程序在example目录中提供。

在DPDK中,Makefiles始终遵循相同的方案:

根据Makefile最后包含的 .mk 文件,Makefile将具有不同的角色。 注意到,并不能在同一个Makefile文件中同时编译库和应用程序。 因此,用户必须创建两个独立的Makefile文件,最好是置于两个不同的目录中。

无论如何,rte.vars.mk 文件必须包含用户Makefile。

这些 Makefiles 生成一个二进制应用程序。

创建一个 .a 库。

app/dpdk-pmdinfogen

dpdk-pmdinfogen 扫描各种总所周知的符号名称对象文件。这些目标文件由各种宏定义,用于导出关于pmd文件的硬件支持和使用的重要信息。 例如宏定义:

创建以下的符号:

将被 dpdk-pmdinfogen 扫描。使用这个虚拟系,可以从目标文件中导出其他相关位信息,并用于产生硬件支持描述, 然后 dpdk-pmdinfogen 按照以下格式编码成 json 格式的字符串:

然后可以通过外部工具搜索这些字符串,以确定给定库或应用程序的硬件支持。

一些变量可以用来配置构建系统的行为。在文件 Development Kit Root Makefile Help 及 External Application/Library Makefile Help 中有描述。

这避免了根据编译器(icc或gcc)使用不同世知迅的情况。而且,这个变量可以从命令行覆盖,这允许绕过标志用于测试目的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8259950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存