pktgen:DPDK流量生成器
目录
Pktgen入门
系统要求
设置巨大的TLB /巨大页面支持
BIOS设置
终端显示
获取源代码
编译DPDK和Pktgen
设置环境
运行应用程序
Pktgen入门
本节包含有关如何启动和运行DPDK和pktgen
流量生成器应用程序的说明。
这些说明与pktgen
在Ubuntu桌面系统上设置DPDK 有关。但是,该版本应该可以在任何最新的Linux系统上使用,这些系统对kernel支持巨大的TLB /巨大页面。
系统要求
主要的系统要求是支持DPDK数据包处理框架。
《DPDK Linux入门指南》中的“ 系统要求”部分 介绍了编译和运行基于DPDK的应用程序(如)的BIOS,系统和工具链要求pktgen
。在继续之前,请确保您的系统满足这些要求。
您还将需要DPDK支持的NIC。
当前版本pktgen
是使用Ubuntu 13.10 x86_64(内核版本3.5.0-25)在运行频率为2.4GHz,每个插槽12GB内存6GB的Westmere Dual插座板上开发和测试的。
设置巨大的TLB /巨大页面支持
要获得hugeTLB / hugepage支持,您的Linux内核必须至少为2.6.33,并且HUGETLBFS
必须启用kernel选项。
《 DPDK Linux入门指南》中有关于在Linux环境中使用大页面的部分。
进行所需的更改后,请确保使用以下命令在内核中具有HUGE TLB支持:
$ grep -i huge /boot/config-2.6.35-24-generic CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y$ grep -i huge /proc/meminfoHugePages_Total: 128 HugePages_Free: 128 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB
Total和Free中的值可能会因系统而异。
您将需要编辑/etc/sysctl.conf
文件以设置大页面大小:
$ sudo vi /etc/sysctl.conf Add to the bottom of the file: vm.nr_hugepages=256
您可以vm.nr_hugepages=256
根据需要配置。在某些情况下,使其过小会影响pktgen的性能或导致其在启动时终止。
您还需要编辑/etc/fstab
文件以在启动时装入大页面:
$ sudo vi /etc/fstab Add to the bottom of the file: huge /mnt/huge hugetlbfs defaults 0 0$ sudo mkdir /mnt/huge $ sudo chmod 777 /mnt/huge
您还应该重新引导计算机,因为必须在引导后立即设置巨大的页面,以确保有足够的连续内存来容纳2MB的页面。
注意
如果您pktgen
在重新启动后首次启动之前启动了大量使用大型页面的应用程序(例如Eclipse或WR Workbench),则pktgen
可能无法加载。在这种情况下,您应该关闭另一个正在使用大页面的应用程序。
BIOS设置
在BIOS中,确保已启用HPET高精度事件计时器。还要确保启用了超线程。有关 更多详细信息,请参阅有关启用其他BIOS功能的DPDK文档。
终端显示
该pktgen
输出显示需要132列和大约42行正确显示。作者使用132x42的xterm,但您也可以使用更大的显示屏,甚至可能更小。如果要显示的端口数多于4-6,则需要更宽的显示范围。
page
如果不能一次全部显示在屏幕上,则Pktgen允许您通过运行时命令查看一组设置的端口,请参阅命令。
Pktgen使用VT100控制代码显示其输出屏幕,这意味着您的终端必须支持VT100。
使用默认pktgen
配色方案时,最好将终端背景设置为黑色。
获取源代码
Pktgen需要构建DPDK源代码。
主存储库dpdk
和pktgen
git存储库位于dpdk.org上。
该dpdk
代码可以如下克隆:
git clone git://dpdk.org/dpdk # or: git clone http://dpdk.org/git/dpdk
该pktgen
代码可以如下克隆:
git clone git://dpdk.org/apps/pktgen-dpdk # or: git clone http://dpdk.org/git/apps/pktgen-dpdk
在下面的说明中,资源库关闭目录称为 DPDKInstallDir
和PktgenInstallDir
。
您还将需要Linux内核标头,以允许DPDK构建其内核模块。在Ubuntu上,您可以按以下方式安装它们(版本与内核版本匹配):
$ sudo apt-get install linux-headers-3.5.0-32-generic
DPDK也可以与libpcap
驱动程序配合使用,有时对于不使用实际NIC进行测试或低速数据包捕获很有用。libpcap
使用包管理安装 开发库。例如:
$ sudo apt-get install libpcap-dev
编译DPDK和Pktgen
设置DPDK所需的环境变量:
export RTE_SDK=<DPDKInstallDir> export RTE_TARGET=x86_64-native-linux-gcc or export RTE_TARGET=x86_64-native-linuxapp-gcc# or use clang if you have it installed: export RTE_TARGET=x86_64-native-linux-clang or export RTE_TARGET=x86_64-native-linuxapp-clang
创建DPDK构建树:
$ cd $RTE_SDK $ make install T=x86_64-native-linux-gcc or $ make install T=x86_64-native-linuxapp-gcc
上面的命令将在目录的顶层创建x86_64-pktgen-linux-gcc$RTE_SDK
目录。它还将构建基本的DPDK库,内核模块和构建树。
然后可以如下构建Pktgen:
$ cd <PktgenInstallDir> $ make
设置环境
在PktgenInstallDir
/ tools级别目录中,有run.py
脚本,该脚本应在每次引导时使用-s选项运行一次,以设置端口。通过删除-s选项,还可以使用相同的配置文件来运行pktgen。
注意
run.py脚本将在内部执行sudo到根目录,这意味着sudo
不需要。
该脚本包含设置环境所需的命令:
$ cd <PktgenInstallDir>/tools $ ./run.py -s default # setup system using the cfg/default.cfg file
run.py脚本是python脚本,它尝试将系统配置为运行DPDK应用程序。您可能必须更改配置文件以匹配您的系统。
要使用default.cfg配置运行pktgen:
$ cd <PktgenInstallDir>/tools $ run.py default
该run.py
命令使用python数据文件来配置设置并运行pktgen。配置文件位于PktgenInstallDir
/ cfg目录中。这些文件允许设置和运行pktgen,并且可以配置为与您的系统匹配,或者可以创建新的配置文件。
这是default.cfg文件:
# Setup configuration setup = {'devices': ['81:00.0 81:00.1 81:00.2 81:00.3','85:00.0 85:00.1 85:00.2 85:00.3','83:00.0'],'opts': ['-b igb_uio']}# Run command and options run = {'dpdk': ['-l 1,1-5,10-13','-n 4','--proc-type auto','--log-level 7','--socket-mem 2048,2048','--file-prefix pg'],'blacklist': [#'-b 81:00.0 -b 81:00.1 -b 81:00.2 -b 81:00.3',#'-b 85:00.0 -b 85:00.1 -b 85:00.2 -b 85:00.3','-b 81:00.0 -b 81:00.1','-b 85:00.0 -b 85:00.1','-b 83:00.0'],'pktgen': ['-T','-P','--crc-strip','-m [2:3].0','-m [4:5].1','-m [10:11].2','-m [12:13].3',],'misc': ['-f themes/black-yellow.theme'] }
我们有两个部分,一个用于设置,另一个用于运行pktgen。
在安装脚本中,该命令将UIO支持模块加载到内核中,并放入igb-uio.ko模块。modprobe uio
设置脚本中的两个echo命令为两个套接字系统设置了巨大的页面。如果只有一个套接字系统,则删除第二个echo命令。脚本中的最后一个命令用于显示大页面设置。
您也可以编辑您的.bashrc
,.profile
或.cshrc
文件永久添加的环境变量设置了上面:
export RTE_SDK=<DPDKInstallDir> export RTE_TARGET=x86_64-native-linux-gcc or export RTE_TARGET=x86_64-native-linux-appgcc
运行应用程序
完成上述步骤并pktgen
编译了应用程序后,您可以使用“ 运行Pktgen” 部分中显示的命令来运行它。
pktgen:DPDK流量生成器相关推荐
- D-ITG(分布式互联网流量生成器)简介和基本操作
D-ITG简介 D-ITG(分布式互联网流量生成器)是一个能够在数据包级别产生流量的平台,能够准确地复制IDT(出发间时间)和PS(数据包大小)随机变量(指数,均匀,柯西,正态,帕累托等)的适当随机过 ...
- 【研究型论文】Realtime Robust Malicious Traffic Detection via Frequency Domain Analysis
文章目录 Realtime Robust Malicious Traffic Detection via Frequency Domain Analysis 摘要 存在的问题 论文贡献 1. 威胁模型 ...
- 20个基于DPDK开源项目,建议收藏
一.ANS – DPDK 原生加速网络堆栈 ANS(加速网络堆栈)是DPDK本地TCP/IP堆栈,也参考FreeBSD实现.ANS提供了一个与Intel DPDK一起使用的用户空间TCP/IP堆栈. ...
- 在单个虚拟机中搭建DPDK测试环境
目前网络上关于如何测试DPDK应用程序的教程很多都需要用到物理硬件,在研究初期的时候显得不是那么方便.因此,我希望通过这篇博客,和大家分享一种纯虚拟的方式,教你如何从0开始,仅使用一台虚拟机搭建出DP ...
- 在多线程数据平面开发套件(DPDK)应用程序中优化内存使用
目录 介绍 参考申请 环与堆叠 从环形内存池转移到堆栈内存池所需的代码更改 测试方法 结果 结论 关于作者 资源资源 尾注 介绍 高速数据包处理应用程序可能会占用大量资源.软件工程师和架构师可以提高其 ...
- 英特尔DSA-加速DPDK Vhost
1. 介绍 VirtIO是一个虚拟接口标准,用于虚拟机(Virtual Machine, VM)访问其他设备,如网络设备和块设备.一个VirtIO设备由一个运行在主机上的后端和一个存在于虚拟机中的前端 ...
- dpdk example——l3fwd
https://www.cnblogs.com/ZCplayground/p/9381961.html 文章目录 l3fwd example分析 编译 基本使用 example图示 代码分析 运行 转 ...
- 在英特尔架构服务器上构建基于矢量包处理(VPP)的快速网络协议栈
在英特尔®架构服务器上使用矢量包处理(VPP)构建快速的网络栈 Build a Fast Network Stack with Vector Packet Processing (VPP) on an ...
- Don’t Forget the I/O When Allocating Your LLC ISCA 2021
目录 Abstract Introduction background A. Managing LLC in Modern Server CPU A. 在现代服务器 CPU 中管理 LLC B. 数据 ...
最新文章
- java中class.forname连接mysql数据库_Java加载数据库连接驱动,为什么要用Class.forName()方法?...
- 鼠标移动监听的注意事项
- 从零开发一个 Java Web 项目要点
- ant警告 “warning: 'includeantruntime' was not set”解决方法
- Java程序执行Linux命令
- 看人家如何拿到腾讯阿里的offer
- 《纽约时报》:互联网新一轮品牌争夺战到来
- python 2.7导入arcpy_[ArcPy Tips-2]给ArcPy换个家,用外部Python环境调用ArcPy
- 2008哲思自由软件峰会
- Numpy np.where()的简单用法
- 【视频专访】他用3年时间,从0开始打造专属大学生的IT教育品牌,只为将他们送入国内最顶尖IT名企。...
- HibernateEHCache –Hibernate二级缓存
- 职务作品的著作权归属情况分析
- SQL SERVER 2005 数据挖掘与商业智能完全解决方案---学习笔记(一)
- CentOS Postfix 安装构架全解
- 原生android字体,安卓原生字体
- 高级终端termux下载不了Python_利用termux下载某站受限的番剧
- Connext DDSQoS参考
- 索引服务器(全文索引)的使用
- 路由器工作原理及路由、路由表