DPDK+Pktgen 高速发包测试

2023-11-12

Pktgen概述

  • Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架,发包速率可达线速。
  • 提供运行时管理,端口实时测量。
  • 可以控制 UDP, TCP, ARP, ICMP, GRE, MPLS and Queue-in-Queue等包。
  • 可以通过TCP进行远程控制。

Pktgen官网

安装使用过程

  • 版本:Ubuntu 16.04
  • DPDKL 18.02
  • cpu配置:

安装DPDK依赖:

 
  1. $ git clone git://dpdk.org/dpdk or:git clone http://dpdk.org/git/dpdk
  2. $ git clone git://dpdk.org/apps/pktgen-dpdk or:
  3. $ git clone http://dpdk.org/git/apps/pktgen-dpdk

设置DPDK的环境变量:

 
  1. $ export RTE_SDK=<DPDKInstallDir>//DPDK的安装目录
  2. $ export RTE_TARGET=x86_64-native-linuxapp-gcc
  3. $ cd $RTE_SDK
  4. $ make install T=x86_64-native-linuxapp-gcc

安装pktgen

 
  1. $ cd <PktgenInstallDir>//进入pktgen的安装目录
  2. $ make

修改cfg/default

  • 修改网卡的设备号,可在dpdk配置脚本中查询:
# cd dpdk/usertools
# ./dpdk-setup.sh
  • 修改DPDK EAL 的命令行参数

  • 修改Pktgen的命令行参数

description = 'A Pktgen default simple configuration'
# Setup configuration
setup = {
    'exec': (
        'sudo',
        '-E'
        ),
	'devices': (
		'01:00.0 01:00.1' //修改网卡设备PCI号,本机绑定了两张10G网卡
		),
	'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 0-2',//使用了三个逻辑核
		'-n 2',//内存通道数为2
		'--proc-type auto',
		'--log-level 7',
		'--socket-mem 1024',//大页为1024
		'--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 [1].0',//逻辑核对1应端口号0,逻辑核0号作为主核不可绑定
		'-m [2].1'//逻辑核对1应端口号0,逻辑核0号作为主核不可绑定
		#'-m [19:20].2',
		#'-m [21:22].3'
		),
	'misc': (
		'-f', 'themes/black-yellow.theme'
		)
	}

学习地址:Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家(免费订阅,永久学习)

【文章福利】需要更多DPDK/SPDK学习资料加群793599096(资料包括C/C++,Linux,golang技术,内核,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,大厂面试题 等)可以自行添加学习交流群点击这里噢~

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

若没有出现正确的配置选项,可参照博客:

pktgen-dpdk 运行 run.py 报错 Config file 'default' not found 解决方法 - 畅畅1 - 博客园

[dpdk-users] pktgen run.py error: Config file 'default' not found

效果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DPDK+Pktgen 高速发包测试 的相关文章

随机推荐

  • 解决警告——warning C4018: “<”: 有符号/无符号不匹配

    今天遇到这个问题 虽然不影响程序运行 但作为完美主义者 有警告总感觉不舒服 所以就查了一下解决方法 出错代码 for int j 0 j
  • centos下mysql 看不到mysql数据库(密码无法更改)

    1 这可能是因为mysql数据库的user表里 存在用户名为空的账户即匿名账户 导致登录的时候是虽然用的是root 但实际是匿名登录的 2 解决方案 2 1 关闭mysql service mysqld stop 2 2 屏蔽权限 mysq
  • verilog中给变量指定的位赋值

    reg 15 0 Data reg 3 0 i reg 1 0 data r begin Data i i 1 lt data r end 此类赋值是错误的 我自己修改了语句 如下 begin Data i lt data r 1 Data
  • ELK 日志分析搭建

    目录 一 ELK概述 1 1 概述 1 1 1 Elasticsearch概述 1 1 2 Logstash概述 1 1 3 kibana概述 1 2 ELK解决处理的事务 1 3 ELK优点 二 ELK 搭建操作 2 1 实验配置环境 2
  • Android Studio 打正式包

    第一步 第二步 第三步 第四步 第五步
  • v3

    hfd gd size 127152 size data 785449D1D343094895706D2DB2745030C466BEDCB9A26FC112F8C23E67BAF657 A5E4B40F93ADFDEBECBC0BB83F
  • JAVA设计模式(二)工厂模式与观察者模式

    工厂模式 工厂模式顾名思义则是类似于一个工厂制造产品的模式 如富士康需要制造自己的产品 而同类产品有多种 如手机有各个品牌和型号一样 明白了工厂模式的含义 我们来想想这个模式具体是怎么回事 首先需要的是一个工厂于是就需要一个Factory类
  • 【JavaWeb】HTML

    HTML 1 HTML概念 1 1 超文本 1 2 标记语言 2 HTML的入门程序 3 HTML语法规则 4 使用idea创建StaticWeb工程 5 HTML的各个标签的使用 5 1标题标签 5 2段落标签 5 3换行标签 5 4无序
  • mybatis代码自动生成器,可实现entity、mapper、service层代码生成

    mybatis对实体类的操作基本重复 公司的框架又已经定型 只能自己写一个代码自动生成器来减轻工作量 这里的实体类属性来自数据库中的表的列 可以根据需要自由更改 package oamanager entity import com bao
  • True Liars 【POJ - 1417】【种类并查集+0-1背包】

    题目链接 题目想要知道有P个好人 说真话的人 和Q个坏人 说假话的人 并且有N条信息 代表A说B是好人 yes 坏人 no 那么 在保证答案唯一的情况下输出这P个好人 并且最后的时候输出 end 否则 输出 no 坑点 答案唯一指的是最后你
  • python:冒泡排序(Bubble Sort)超详细教程!

    关于排序 真的非常的重要 数据可以从小到大排序 也可以从大到小排序 这样对于一个有序的数据 我们处理起来就很方便 这对于我们的工作帮助是很大的 那么你拿到一组无序的数据 你将要如何去处理它呢 冒泡排序就是从一个可迭代容器里 用某一索引去和它
  • 经销商订单系统,搭建中的功能介绍(感想)

    一 关于需求方对订货系统的解释 经销商订单系统 也可以叫做企业订货软件 企业订单软件 这是需求商说的 这套系统甲方说是属于企业内部系统 并不属于商城范畴 属于是企业内部单机的订单管理系统演变而来 二 经销商订单系统的流程 2 1 第一步 通
  • 【无标题】黑群辉DSM 6.2.3 系统安装图文教程 (2020-12-27更新)

    https www openos org threads dsm 6 2 3 2020 12 27 29 黑群晖系统其实是指在普通电脑运行Synology DSM系统 事实上在普通PC电脑上安装黑群晖 Synology DSM 也非常方便
  • 2.5.8 构架虚拟SCSI(存储)

    最后更新2021 07 29 架构虚拟SCSI与虚拟Ethernet类似 也需要如下四个步骤 首先 设定需要映射的设备类型 包括LV方式的虚拟磁盘 LUN方式的虚拟磁盘 虚拟光盘 磁带机 并确认VIO分区可以正确使用要映射设备 物理资源 本
  • 讯飞语音识别_讯飞输入法持续功能创新 语音输入最受用户认可

    犹记得10多年前功能机上的输入法 无论是拼音还是笔画 通过物理键盘按部就班地进行输入 效率异常低下 所幸那时候网络没有那么发达 手机聊天应用并不怎么丰富 而且彼时手机还只是 通讯设备 输入法的作用并未体现出来 时至今日 移动应用的兴盛以及手
  • 剑指offer15替换空格字符串

    package heima study day3 import java util Scanner public class 替换空格剑指offer public static void main String args Scanner i
  • Java安全代码扫描问题:不允许使用自动加载类

    解决问题 代码安全扫描 Classes should not be loaded dynamically 要求 Remove this use of dynamic class loading 解决方法 使用jdk自带方法 ClassLoa
  • 【因果学习】VC RCNN(CVPR 2020)代码

    作者基于MaskRCNN框架 Detectron2的前身 开发 受Bottom Up and Top Down Attention for Image Captioning and VQA启发 使用Mask RCNN作为Bottom Up的
  • java spring scope_java – Spring和scope属性

    我在Spring学习中遇到问题 需要一些帮助 我正在学习bean的原型范围 这基本上意味着每次有人或其他bean需要这个bean时 Spring会创建一个新bean而不使用相同的bean 所以我尝试了这段代码 假设我有这个Product类
  • DPDK+Pktgen 高速发包测试

    Pktgen概述 Pktgen Packet Gen erator 是一个基于DPDK的软件框架 发包速率可达线速 提供运行时管理 端口实时测量 可以控制 UDP TCP ARP ICMP GRE MPLS and Queue in Que