官方手册:http://pktgen-dpdk.readthedocs.io/en/latest/getting_started.html

过程

  1. 开机(重启)
  2. 把DPDK那一套流程走一遍(环境变量设置、设置userspace I/O态、挂载大页、绑定网卡)
  3. 按照官方手册上编译。pktgen就是基于dpdk开发的应用,所以只要能成功编译dpdk就可以编译pktgen。官方手册上一些依赖项可以跳过不看。

我用到的指令:

export RTE_SDK=/home/chang/dpdk
export RTE_TARGET=x86_64-native-linuxapp-gcc # 编译DPDK
cd $RTE_SDK
make install T=x86_64-native-linuxapp-gcc # 设置userspace I/O态、挂载大页、绑定网卡
cd /home/chang/dpdk/usertools
./dpdk-setup.py # 编译pktgen
cd ~
git clone git://dpdk.org/apps/pktgen-dpdk
cd pktgen-dpdk
make

4.接下来要做的是修改配置文件。在/pktgen-dpdk/cfg

# 备份
cp default.cfg backup
vim default.cfg

这是官方给我们的示例 default.cfg

description = 'A Pktgen default simple configuration'

# Setup configuration
setup = {
'exec': (
'sudo',
'-E'
), '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'
), 'opts': (
'-b igb_uio'
)
} # Run command and options
run = {
'exec': (
'sudo',
'-E'
), # Application name and use app_path to help locate the app
'app_name': 'pktgen', # using (sdk) or (target) for specific variables
# add (app_name) of the application
# Each path is tested for the application
'app_path': (
'./app/%(target)s/%(app_name)s',
'%(sdk)s/%(target)s/app/%(app_name)s',
), 'dpdk': (
'-l 14,15-22',
'-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'
), 'app': (
'-T',
'-P',
'--crc-strip',
'-m [15:16].0',
'-m [17:18].1',
'-m [19:20].2',
'-m [21:22].3'
), 'misc': (
'-f', 'themes/black-yellow.theme'
)
}

需要修改的地方有三处:

  1. 网卡设备的PCI号,可以用dpdk的usertools查看。
  2. DPDK EAL 的 command line arguments。改成与你系统对应的参数。参照DPDK的文档。
  3. pktgen 的 command line arguments,参照pktgen的文档。

贴上我的版本作为参考:

# 只贴有修改的部分
# ……
'devices': (
'02:01.0 02:02.0' # 只绑定了两个网卡到DPDK做实验
),
# …… 'dpdk': (
'-l 0-3',
'-n 4',
'--proc-type auto',
'--log-level 7',
#'--socket-mem 2048,2048',
'--socket-mem 2048', # 只有一个socket
'--file-prefix pg',
), # ....... 'app': (
'-T',
'-P',
'--crc-strip',
'-m [1].0', # 查看官方手册了解 -m 用法,用于提供lcore到port的映射
'-m [2].1'
#'-m [19:20].2',
#'-m [21:22].3'
),

修改完后即可执行。

cd pktgen-dpdk
./tools/run.py -s default
./tools/run.py default

执行情况

(我终于第一次看到DPDK的超过120Mbit/s的转发速率到底是啥样子的了……)

参考

https://blog.csdn.net/jonlylinux/article/details/76474542

pktgen-dpdk 实战的更多相关文章

  1. [dpdk] 使用pktgen生成tcp三次握手的测试流量

    pktgen: http://dpdk.org/browse/apps/pktgen-dpdk/refs/ git clone git://dpdk.org/apps/pktgen-dpdk pktg ...

  2. [development][dpdk][pktgen] 网卡收发包性能测试

    一: 多队列及中断信息收集 [root@T185 ~]# ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: RX Mini ...

  3. DPDK+Pktgen 高速发包测试

    参考博客 Pktgen概述 Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架,发包速率可达线速. 提供运行时管理,端口实时测量. 可以控制 UDP, TCP, ARP, ...

  4. [development][dpdk][pktgen] 网卡收发包性能测试-详细数据

    三层包测试 发包方式:192.168.20.205 发包工具:pktgen 发包网卡:i350 收包设备:1922.168.20.185 CPU:Intel(R) Xeon(R) CPU E5-262 ...

  5. 使用tcpreply对DPDK进行压力测试(一台主机,2张网卡压测)

    使用tcpreply对DPDK进行压力测试 过往风萤 关注 2018.05.18 14:35* 字数 273 阅读 2评论 0喜欢 0 小公司没有testcenter之类的打流工具,并且内网流量比较小 ...

  6. DPDK flow_classify 源码阅读

    代码部分 /* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2017 Intel Corporation */ #include < ...

  7. Linux性能优化实战学习笔记:第三十六讲

    一.上节总结回顾 上一节,我们回顾了经典的 C10K 和 C1000K 问题.简单回顾一下,C10K 是指如何单机同时处理 1 万个请求(并发连接 1 万)的问题,而 C1000K 则是单机支持处理 ...

  8. Linux性能优化实战学习笔记:第三十七讲

    一.上节回顾 上一节,我带你一起学习了网络性能的评估方法.简单回顾一下,Linux 网络基于 TCP/IP协议栈构建,而在协议栈的不同层,我们所关注的网络性能也不尽相同. 在应用层,我们关注的是应用程 ...

  9. Linux性能优化实战学习笔记:第四十三讲

    一.上节回顾 上一节,我们了解了 NAT(网络地址转换)的原理,学会了如何排查 NAT 带来的性能问题,最后还总结了 NAT 性能优化的基本思路.我先带你简单回顾一下. NAT 基于 Linux 内核 ...

随机推荐

  1. vue实现首页导航切换不同路由的方式

    vue实现切换首页路由导航 ,根据切换的不同导航跳转不同的路由,以及当前选中的导航添加选中样式.  html代码: <nav> <!-- 导航栏 --> <div cla ...

  2. IIS中多域名多网站的设置方法

    一个 IP 可以绑定多个域名.如您需要实现多个域名访问同一个网站,只需就不同域名添加 A 记录指向同一个 IP 即可. 如您需要实现多个域名访问同一虚拟服务器上不同网站,也需要就不同域名添加 A 记录 ...

  3. Deep Learning综述[下]

    Image understanding with deep convolutional networks 直到2012年ImageNet大赛之前,卷积神经网络一直被主流机器视觉和机器学习社区所遗弃.2 ...

  4. [BZOJ4484][JSOI2015]最小表示[拓扑排序+bitset]

    题意 给你一个 \(n\) 个点 \(m\) 条边的 \(\rm DAG\) ,询问最多能够删除多少条边,使得图的连通性不变 \(n\leq 3\times 10^4\ ,m\leq 10^5\) . ...

  5. 对ThreadLocal的源码解读

    早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地编写出优美的多线程程序. 功能 ...

  6. 菜鸟vimer成长记——目录

    菜鸟vimer成长记——第0章.我眼中的vim学习 菜鸟vimer成长记——第1章.统一概念 菜鸟vimer成长记——第2.0章.模式初探 菜鸟vimer成长记——第2.1章.normal模式 菜鸟v ...

  7. Docker和CI/CD实战

    一.CICD和DevOps 前面已经了解了CI/CD,其实CI/CD已经存在多年了,只是最近软件工程方面又提出了敏捷开发.DevOps,又把CI/CD炒火了. 那么什么是DevOps?DevOps和C ...

  8. window.location.hash 页面跳转,精确定位,实例展示:

    window.location.hash 页面跳转,精确定位,实例展示: (1).index.phtml,页面用于传参 <script id="bb_list_template&quo ...

  9. ATmega8仿真——LED 数码管的学习

    1. I/O 口的结构及特点 Atmega8 有23 个I/O 引脚,分成3 个8 位的端口B.C 和D,其中C 口只有7 位 Atmega8 采用3个8位寄存器来控制I/O端口,它们分别是:方向寄存 ...

  10. (webapp)微信和safri 对于html5 部分功能不兼容,多选或单选下拉框去除边框无效果。

    1 appearance:none; 2 -moz-appearance:none; /* Firefox */ 3 -webkit-appearance:none; /* Safari 和 Chro ...