『工具使用』DPDK工具集介绍及安装避坑记录

admin 2023年5月23日22:48:41评论45 views字数 3100阅读10分20秒阅读模式






点击蓝字,关注我们


日期:2023年05月17日
作者:Zero
介绍:Intel Data Plane Development Kit

1、前言

DPDK 全称 Intel Data Plane Development Kit,是 Intel 提供的数据平面开发工具集,为 Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。

目前很多基于流量分析方案的安全产品都使用了DPDK作为底层技术支持,由于工作需要,之前接触过一段时间的DPDK,也在查资料的过程中发现有网友的安装过程相当曲折,本文将DPDK的介绍及安装避坑记录分享给需要的伙伴。

『工具使用』DPDK工具集介绍及安装避坑记录

2、优缺点介绍

DPDK 应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了 Linux 内核协议栈对数据包处理过程。Linux 内核将 DPDK 应用程序看作是一个普通的用户态进程,包括它的编译、连接和加载方式和普通程序没有什么两样。

上面引用的这段话可能看起来比较抽象,DPDKLinux 网络层处理流程对比如下图所示。

『工具使用』DPDK工具集介绍及安装避坑记录

可以看出在取包环节的流程发生变化,实际应用中当处理的数据量稍大的时候,传统取包方式与DPDK的取包方式效率对比就非常明显,DPDK的优势如下图所示。

『工具使用』DPDK工具集介绍及安装避坑记录

前面都在说DPDK好的方面,难道没有缺点吗?

『工具使用』DPDK工具集介绍及安装避坑记录

DPDK固然强大,带来效率提升的地方同样也带来了缺点,劣势如下图所示。

『工具使用』DPDK工具集介绍及安装避坑记录

实际应用场景中,需要结合实际情况来进行技术选型,切记不可盲从。

『工具使用』DPDK工具集介绍及安装避坑记录

3、安装过程记录

安装使用的系统为Centos7 x64,首先安装基础编译环境。

yum install -y pciutils make gcc numactl numactl-devel

然后进行安装kernel-devel 及其他依赖软件包。

yum install -y perl perl-Carp perl-Encode perl-Exporter perl-File-Path perl-File-Temp perl-Filter perl-Getopt-Long perl-HTTP-Tiny perl-PathTools perl-Pod-Escapes perl-Pod-Perldoc perl-Pod-Simple perl-Pod-Usage perl-Scalar-List-Utils perl-Socket perl-Storable perl-Text-ParseWords perl-Time-HiRes perl-Time-Local perl-constant perl-libs perl-macros perl-parent perl-podlators perl-threads perl-threads-shared libncurses-dev libncurses-devel ncurses-devel
# 当时环境受限,查看版本号,手动下载相应版本的包uname -a# 安装 kernel-develrpm -ivh kernel-devel-3.10.0-514.26.2.el7.x86_64.rpm

开始安装之前,需要将计划使用到的网卡状态设置为down

ifconfig ens37 down

更改参数,添加大页支持相关参数。

vim /etc/sysctl.confecho 'vm.nr_hugepages = 120' >> /etc/sysctl.conf

增强健壮性,启用 Linux内核异常自动重启机制。

sysctl -w kernel.softlockup_panic=1echo 'ernel.softlockup_panic=1' >> /etc/sysctl.conf

接下来解压DPDK源码,使用官方准备的usertools进行安装非常方便。

tar -xvf dpdk-18.11.*.tar.xzcd dpdk-stable-18.11.*/usertools
export RTE_SDK=/root/dpdk-stable-18.11.11source dpdk-setup.sh

根据自己的环境选择目标编译的架构及方式,我这里选择 [15] x86_64-native-linuxapp-gcc

『工具使用』DPDK工具集介绍及安装避坑记录

稍作等待,编译时间会受到性能影响各有不同。

『工具使用』DPDK工具集介绍及安装避坑记录

编译完成后提示如下,按Enter键继续下一步。

『工具使用』DPDK工具集介绍及安装避坑记录

接下来加载内核模块,选择[18] Insert IGB UIO module

『工具使用』DPDK工具集介绍及安装避坑记录

与第一步编译相同,操作完成后会有相应的提示,引导进行下一步操作,按Enter键继续下一步。

『工具使用』DPDK工具集介绍及安装避坑记录

接下来设置大内存页,这一步的选项,需要根据系统是否是NUMA架构来选择,使用如下命令进行判断。

grep -i numa /var/log/dmesg

如果输出的结果为No NUMA configuration found,说明非NUMA架构,或特性被禁用。

我的环境输出结果如下图,表示机器是NUMA架构。

『工具使用』DPDK工具集介绍及安装避坑记录

这里根据NUMA架构的检测结果,进行不同的选择,我这里选择[22]

『工具使用』DPDK工具集介绍及安装避坑记录

这里根据自身配置来决定,1024 表示申请 2G大页内存,按Enter键继续下一步。

『工具使用』DPDK工具集介绍及安装避坑记录

接下来输入选项 24,进行网卡绑定。

『工具使用』DPDK工具集介绍及安装避坑记录

该选项会列举出当前系统中的网卡情况:

『工具使用』DPDK工具集介绍及安装避坑记录

这里输入PCI 地址,0000: 后面的就可以。

『工具使用』DPDK工具集介绍及安装避坑记录

接下来使用选项 23,查看网卡绑定情况。

『工具使用』DPDK工具集介绍及安装避坑记录

可发现绑定的网卡出现在 Network devices using DPDK-compatible driver 列中,说明绑定成功。

接下来可以进行测试了,使用选项[28]运行 testpmd 进行测试,输入start开始工作,然后开启发包工具进行发包,发送完成后输入stop,查看数据包情况是否正确。

『工具使用』DPDK工具集介绍及安装避坑记录

可以看到统计的数据包数量正确,说明DPDK工作正常。

4、坑点记录

如果使用虚拟机环境部署学习的话,可能会遇到两个坑点(可能更多,但是我只遇到两个)。

第一个坑点,错误提示为EAL: Error enabling interrupts for fd,直接给出该问题的解决方法。

cd dpdk-stable-18.11.*/sed -i "s/pci_intx_mask_supported(udev->pdev)/pci_intx_mask_supported(udev->pdev)||1/g" ./kernel/linux/igb_uio/igb_uio.c

完成上述操作后,继续前面的步骤正常安装即可。

第二个坑点,部署步骤全部完成,也没有任何报错,但是使用testpmd进行测试,会发现数据包一直不正确,这个问题的解决方法是直接不配置大页内存或使用non-NUMA模式的大页内存即可。

5、结语

文中的步骤及描述可能存在错误,如有大佬发现可评论区指正!

文中的命令及步骤可能会因软件版本更新而发生变化,如发现不一样的地方需要进行灵活变通,搭环境不会一直顺利,遇到错误一定要活用搜索引擎,多查一些资料并加以思考,问题总会解决的!

感谢您能看到此处~~~ 关注我们了解更多趣事,我们下期见!

『工具使用』DPDK工具集介绍及安装避坑记录

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。


点此亲启

ABOUT US

宸极实验室隶属山东九州信泰信息科技股份有限公司,致力于网络安全对抗技术研究,是山东省发改委认定的“网络安全对抗关键技术山东省工程实验室”。团队成员专注于 Web 安全、移动安全、红蓝对抗等领域,善于利用黑客视角发现和解决网络安全问题。

团队自成立以来,圆满完成了多次国家级、省部级重要网络安全保障和攻防演习活动,并积极参加各类网络安全竞赛,屡获殊荣。

对信息安全感兴趣的小伙伴欢迎加入宸极实验室,关注公众号,回复『招聘』,获取联系方式。

『工具使用』DPDK工具集介绍及安装避坑记录


原文始发于微信公众号(宸极实验室):『工具使用』DPDK工具集介绍及安装避坑记录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月23日22:48:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『工具使用』DPDK工具集介绍及安装避坑记录https://cn-sec.com/archives/1754453.html

发表评论

匿名网友 填写信息