目录

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源代码。

主存储库dpdkpktgengit存储库位于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

在下面的说明中,资源库关闭目录称为 DPDKInstallDirPktgenInstallDir

您还将需要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流量生成器相关推荐

  1. D-ITG(分布式互联网流量生成器)简介和基本操作

    D-ITG简介 D-ITG(分布式互联网流量生成器)是一个能够在数据包级别产生流量的平台,能够准确地复制IDT(出发间时间)和PS(数据包大小)随机变量(指数,均匀,柯西,正态,帕累托等)的适当随机过 ...

  2. 【研究型论文】Realtime Robust Malicious Traffic Detection via Frequency Domain Analysis

    文章目录 Realtime Robust Malicious Traffic Detection via Frequency Domain Analysis 摘要 存在的问题 论文贡献 1. 威胁模型 ...

  3. 20个基于DPDK开源项目,建议收藏

    一.ANS – DPDK 原生加速网络堆栈 ANS(加速网络堆栈)是DPDK本地TCP/IP堆栈,也参考FreeBSD实现.ANS提供了一个与Intel DPDK一起使用的用户空间TCP/IP堆栈. ...

  4. 在单个虚拟机中搭建DPDK测试环境

    目前网络上关于如何测试DPDK应用程序的教程很多都需要用到物理硬件,在研究初期的时候显得不是那么方便.因此,我希望通过这篇博客,和大家分享一种纯虚拟的方式,教你如何从0开始,仅使用一台虚拟机搭建出DP ...

  5. 在多线程数据平面开发套件(DPDK)应用程序中优化内存使用

    目录 介绍 参考申请 环与堆叠 从环形内存池转移到堆栈内存池所需的代码更改 测试方法 结果 结论 关于作者 资源资源 尾注 介绍 高速数据包处理应用程序可能会占用大量资源.软件工程师和架构师可以提高其 ...

  6. 英特尔DSA-加速DPDK Vhost

    1. 介绍 VirtIO是一个虚拟接口标准,用于虚拟机(Virtual Machine, VM)访问其他设备,如网络设备和块设备.一个VirtIO设备由一个运行在主机上的后端和一个存在于虚拟机中的前端 ...

  7. dpdk example——l3fwd

    https://www.cnblogs.com/ZCplayground/p/9381961.html 文章目录 l3fwd example分析 编译 基本使用 example图示 代码分析 运行 转 ...

  8. 在英特尔架构服务器上构建基于矢量包处理(VPP)的快速网络协议栈

    在英特尔®架构服务器上使用矢量包处理(VPP)构建快速的网络栈 Build a Fast Network Stack with Vector Packet Processing (VPP) on an ...

  9. 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. 数据 ...

最新文章

  1. java中class.forname连接mysql数据库_Java加载数据库连接驱动,为什么要用Class.forName()方法?...
  2. 鼠标移动监听的注意事项
  3. 从零开发一个 Java Web 项目要点
  4. ant警告 “warning: 'includeantruntime' was not set”解决方法
  5. Java程序执行Linux命令
  6. 看人家如何拿到腾讯阿里的offer
  7. 《纽约时报》:互联网新一轮品牌争夺战到来
  8. python 2.7导入arcpy_[ArcPy Tips-2]给ArcPy换个家,用外部Python环境调用ArcPy
  9. 2008哲思自由软件峰会
  10. Numpy np.where()的简单用法
  11. 【视频专访】他用3年时间,从0开始打造专属大学生的IT教育品牌,只为将他们送入国内最顶尖IT名企。...
  12. HibernateEHCache –Hibernate二级缓存
  13. 职务作品的著作权归属情况分析
  14. SQL SERVER 2005 数据挖掘与商业智能完全解决方案---学习笔记(一)
  15. CentOS Postfix 安装构架全解
  16. 原生android字体,安卓原生字体
  17. 高级终端termux下载不了Python_利用termux下载某站受限的番剧
  18. Connext DDSQoS参考
  19. 索引服务器(全文索引)的使用
  20. 路由器工作原理及路由、路由表

热门文章

  1. 【mysql union all limit的使用】
  2. 用DataGrip生成导出整个库数据的方法
  3. Java线程类核心方法
  4. ubuntu 18.04下 配置qt opencv的坑
  5. matplotlib(一):散点图
  6. Asp.Net MVC 身份验证-Forms
  7. react native ScrollView
  8. 无法读取项目文件 .csproj
  9. django集成原有数据库
  10. php程序员会什么,php程序员是什么