参考博客

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依赖:

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

设置DPDK的环境变量:

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

安装pktgen

$ cd <PktgenInstallDir>//进入pktgen的安装目录
$ 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'
)
}
$ cd <PktgenInstallDir>/tools
$ ./run.py -s default # setup system using the cfg/default.cfg file
$ cd <PktgenInstallDir>/tools
$ run.py default

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

http://www.cnblogs.com/ZCplayground/p/9328735.html

https://mails.dpdk.org/archives/users/2018-July/003269.html

效果

  • 用网线把两个网卡接口相连,运行

  • 显示包转发速率到了每秒千万级别,已完全达到高速发包的要求

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

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

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

  2. 案例一:利于Python调用JSON对象来实现对XENA流量测试仪的灵活发包测试,能够适应Pair,Rotate,1-to-Many等多种拓扑模型

    硬件:XENA Valkyrie 或 Vantage主机,测试板卡不限,本方法适用于其100M~400G所有速率端口 环境配置:Python 3 实现功能: 1.控制流量仪进行流量测试,预定配置的流量 ...

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

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

  4. DPDK flow_classify 源码阅读

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

  5. Linux平台上DPDK入门指南

    1. 简介 本文档包含DPDK软件安装和配置的相关说明.旨在帮助用户快速启动和运行软件.文档主要描述了在Linux环境下编译和 运行DPDK应用程序,但是文档并不深入DPDK的具体实现细节. 1.1. ...

  6. [dpdk] 熟悉SDK与初步使用 (三)(IP Fragmentation源码分析)

    对例子IP Fragmentation的熟悉,使用,以及源码分析. 功能: 该例子的功能有二: 一: 将IP分片? 二: 根据路由表,做包转发. 路由表如下: IP_FRAG: Socket : ad ...

  7. pktgen使用详细教程

    网上有很多讲解pktgen的文章,但总是不够全面细致,看完之后自己还是不会写pktgen测试脚本,为此本文对pktgen进行详细的阐述,让大家看完本文后能够自己动手写pktgen shell. 1.p ...

  8. dpdk中kni模块

    一,什么是kni,为什么要有kni Kni(Kernel NIC Interface)内核网卡接口,是DPDK允许用户态和内核态交换报文的解决方案,模拟了一个虚拟的网口,提供dpdk的应用程序和lin ...

  9. 异数OS TCP协议栈测试(四)--网卡适配篇

    异数OS TCP协议栈测试(四)–网卡适配篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异 ...

随机推荐

  1. #if, #elif, #else, #endif 使用

    程序想要通过简单地设置一些参数就生成一个不同的软件,在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码. (一 ...

  2. MySQL:SQL进阶

    一.数据库相关理论 1.系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_s ...

  3. javascript中函数的写法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Sass、Less、Stylus,我选Sass!

    Sass官网 | Sass中文 简介:待添加 Less 简介:待添加 Stylus 简介:待添加

  5. 【vue】混合模式

    因为工作的分配,写财务的对账部分,因为3个页面的设计和功能基本相同,都是查询筛选表格,所以用混合模式优化了部分代码.用混合把一些共用的东西抽离了出来. 具体使用方法参照文档. https://cn.v ...

  6. 空间分析开源库GEOS

    History of GEOS GEOS中Geometry的结构 GEOS分析功能简介 1.History of GEOS J​T​S​ ​T​o​p​o​l​o​g​y​ ​S​u​i​t​e是Ma ...

  7. unity材质球贴图滚动

       using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBe ...

  8. oracle基础之游标的理解与使用

    关于游标,首先要知道游标的定义. 游标,是内存中的一款区域,用来存放select的结果集 游标用来处理从数据库中检索的多行记录(使用select语句).利用游标,程序可以逐个的处理和遍历一次索引返回的 ...

  9. web application 访问控制

    http://secappdev.org/handouts/2012/Jim%20Manico%20%26%20%20Eoin%20Keary/Final%20-%20Access%20Control ...

  10. Java笔记-添加自定义公共类库

    大型项目,为了方便团队开发,需要建立公共类库,提高类库的重用性和维护性步骤如下: --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/387 ...