本文共 4222 字,大约阅读时间需要 14 分钟。
目录
本节包含有关如何启动和运行和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插座板上开发和测试的。
要获得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中,确保已启用HPET高精度事件计时器。还要确保启用了超线程。有关 更多详细信息,请参阅有关的DPDK文档。
该pktgen
输出显示需要132列和大约42行正确显示。作者使用132x42的xterm,但您也可以使用更大的显示屏,甚至可能更小。如果要显示的端口数多于4-6,则需要更宽的显示范围。
page
如果不能一次全部显示在屏幕上,则Pktgen允许您通过运行时命令查看一组设置的端口,请参阅命令。
Pktgen使用VT100控制代码显示其输出屏幕,这意味着您的终端必须支持VT100。
使用默认pktgen
配色方案时,最好将终端背景设置为黑色。
Pktgen需要构建DPDK源代码。
主存储库dpdk
和pktgen
git存储库位于。
该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所需的环境变量:
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/