博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pktgen:DPDK流量生成器
阅读量:2029 次
发布时间:2019-04-28

本文共 4222 字,大约阅读时间需要 14 分钟。

目录


Pktgen入门

本节包含有关如何启动和运行和pktgen流量生成器应用程序的说明。

这些说明与pktgen在Ubuntu桌面系统上设置DPDK 有关。但是,该版本应该可以在任何最新的Linux系统上使用,这些系统对kernel支持巨大的TLB /巨大页面。

系统要求

主要的系统要求是支持DPDK数据包处理框架。

《中的“ 部分 介绍了编译和运行基于DPDK的应用程序(如)的BIOS,系统和工具链要求pktgen。在继续之前,请确保您的系统满足这些要求。

您还将需要。

当前版本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入门指南》中有关于的部分。

进行所需的更改后,请确保使用以下命令在内核中具有HUGE TLB支持:

$ grep -i huge /boot/config-2.6.35-24-genericCONFIG_HUGETLBFS=yCONFIG_HUGETLB_PAGE=y$ grep -i huge /proc/meminfoHugePages_Total:      128HugePages_Free:       128HugePages_Rsvd:        0HugePages_Surp:        0Hugepagesize:       2048 kB

Total和Free中的值可能会因系统而异。

您将需要编辑/etc/sysctl.conf文件以设置大页面大小:

$ sudo vi /etc/sysctl.confAdd to the bottom of the file:vm.nr_hugepages=256

您可以vm.nr_hugepages=256根据需要配置。在某些情况下,使其过小会影响pktgen的性能或导致其在启动时终止。

您还需要编辑/etc/fstab文件以在启动时装入大页面:

$ sudo vi /etc/fstabAdd 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高精度事件计时器。还要确保启用了超线程。有关 更多详细信息,请参阅有关的DPDK文档。

终端显示

pktgen输出显示需要132列和大约42行正确显示。作者使用132x42的xterm,但您也可以使用更大的显示屏,甚至可能更小。如果要显示的端口数多于4-6,则需要更宽的显示范围。

page如果不能一次全部显示在屏幕上,则Pktgen允许您通过运行时命令查看一组设置的端口,请参阅命令。

Pktgen使用VT100控制代码显示其输出屏幕,这意味着您的终端必须支持VT100。

使用默认pktgen配色方案时,最好将终端背景设置为黑色。

获取源代码

Pktgen需要构建DPDK源代码。

主存储库dpdkpktgengit存储库位于。

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=
export RTE_TARGET=x86_64-native-linux-gccorexport RTE_TARGET=x86_64-native-linuxapp-gcc# or use clang if you have it installed:export RTE_TARGET=x86_64-native-linux-clangorexport RTE_TARGET=x86_64-native-linuxapp-clang

创建DPDK构建树:

$ cd $RTE_SDK$ make install T=x86_64-native-linux-gccor$ make install T=x86_64-native-linuxapp-gcc

上面的命令将在目录的顶层创建x86_64-pktgen-linux-gcc$RTE_SDK目录。它还将构建基本的DPDK库,内核模块和构建树。

然后可以如下构建Pktgen:

$ cd 
$ make

设置环境

PktgenInstallDir/ tools级别目录中,有run.py脚本,该脚本应在每次引导时使用-s选项运行一次,以设置端口。通过删除-s选项,还可以使用相同的配置文件来运行pktgen。

注意

run.py脚本将在内部执行sudo到根目录,这意味着sudo不需要。

该脚本包含设置环境所需的命令:

$ cd 
/tools$ ./run.py -s default # setup system using the cfg/default.cfg file

run.py脚本是python脚本,它尝试将系统配置为运行DPDK应用程序。您可能必须更改配置文件以匹配您的系统。

要使用default.cfg配置运行pktgen:

$ cd 
/tools$ run.py default

run.py命令使用python数据文件来配置设置并运行pktgen。配置文件位于PktgenInstallDir/ cfg目录中。这些文件允许设置和运行pktgen,并且可以配置为与您的系统匹配,或者可以创建新的配置文件。

这是default.cfg文件:

# Setup configurationsetup = { '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 optionsrun = { '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=
export RTE_TARGET=x86_64-native-linux-gccorexport RTE_TARGET=x86_64-native-linux-appgcc

运行应用程序

完成上述步骤并pktgen编译了应用程序后,您可以使用“  部分中显示的命令来运行它。

转载地址:http://dppaf.baihongyu.com/

你可能感兴趣的文章
java 起步
查看>>
程序员的职业生涯之我见
查看>>
开源Linux系统成为微软Vista竞争对手
查看>>
日历和时间显示代码
查看>>
Asianux将成为最先进的安全Linux操作系统
查看>>
开发人员行走Unix的随身四艺
查看>>
基于动态代码生成技术的动态对象工厂
查看>>
2007年第7周最热网友收藏
查看>>
如何做好职业规划(乾卦)
查看>>
JavaScript的方法和技巧
查看>>
js技巧收集(200多个)
查看>>
asp.net生成静态页
查看>>
C语言面试题大汇总之微软亚洲技术中心面试题
查看>>
利用SharpZipLib进行文件的压缩和解压缩
查看>>
UMLChina-我不经意的创业故事
查看>>
学习java必看
查看>>
Rational Rose和UML可视化建模基础
查看>>
详细解析C 编写的ATM自动取款机模拟程序
查看>>
关于学习ASP和编程的28个观点
查看>>
在公告栏里加进啦Google自定义搜索引擎(附代码,和参考代码,原代码)
查看>>