参考博客

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. Java内存区域与虚拟机类加载机制

    一.Java运行时数据区域 1.程序计数器 “线程私有”的内存,是一个较小的内存空间,它可以看做当前线程所执行的字节码的行号指示器.Java虚拟机规范中唯一一个没有OutOfMemoryError情况 ...

  2. 《JavaWeb从入门到改行》JSP+EL+JSTL大杂烩汤

    title: Servlet之JSP tags: [] notebook: javaWEB --- JSP是什么 ? JSP就是Servlet,全名是"JavaServer Pages&qu ...

  3. java停止一个线程

    Thread类中有start(), stop()方法,不过stop方法已经被废弃掉. 平时其实也有用过,共享一个变量,相当于标志,不断检查标志,判断是否退出线程 如果有阻塞,需要使用Thread的in ...

  4. Vue组件通讯

    Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通讯,是通过props ...

  5. Unable to update index for central http://repo1.maven.org/maven2/ 解决方法

    不知道什么原因 MyEclipse(eclipse) 中的 maven 插件突然不能用了,修改 pom.xml 无任何反应 控制台报 Unable to update index for centra ...

  6. Django最佳实践(中文版)

    这是一份关于开发和部署 Django Web 框架 的动态文档 (会随时更新). 这些准则不应该被认为是 绝对正确 或 唯一 使用 Django 的方法, 应该说这些最佳实践是我们使用框架多年来积累的 ...

  7. BubblePopupWindow

    Android 实现各个方向的气泡弹窗,可控制气泡尖角偏移量. https://github.com/smuyyh/BubblePopupWindow 截图 使用: BubblePopupWindow ...

  8. 更改 centos yum 源

    1.进入存放源配置的文件夹 cd /etc/yum.repos.d  2.检查wget是否安装,没有安装先安装wget  3.备份默认源 mv ./CentOS-Base.repo ./CentOS- ...

  9. Django基础之Model操作

    一.数据库操作 1.创建model表 基本结构: #coding:Utf8 from django.db import models class userinfo(models.Model): #如果 ...

  10. 如何提高Ajax性能

    1.适当使用缓存机制 2.使用CDN内容分发来访问Jquery脚本: (1)自己公司架设CDN服务器 (2)使用第三方公司的,比如微软,谷歌等公司的CDN,但有时候不太靠谱 3.JS/CSS文件的打包 ...