DPDK+Pktgen 高速发包测试

参考博客

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配置:
  • 1092889-20180719225635229-1779612315.png

1092889-20180719225722965-2029477125.png

安装DPDK依赖:

  • DPDK安装依赖项合集 环境合集
  • 安装DPDK:Quick Start
$ 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

效果

  • 用网线把两个网卡接口相连,运行
    1092889-20180719225755821-1124565300.png

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

转载于:https://www.cnblogs.com/vancasola/p/9338982.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 商城api编写_Python实现简单的API接口

1. get方法import jsonfrom urlparse import parse_qsfrom wsgiref.simple_server import make_server# 定义函数&#xff0c;参数是函数的两个参数&#xff0c;都是python本身定义的&#xff0c;默认就行了。def application(environ, start_response):# 定义文件请求的类型和…

opencv (一) 学习通过OpenCV图形界面及基础

opencv 学习通过OpenCV图形界面基础 用的函数有 cv.line(), cv.circle(),cv.rectangle(), cv.ellipse(),cv.putText() 常用参数 img : 想要绘制图形的图片color: 图形的颜色&#xff0c; BGRthickness&#xff1a;厚度lineType: 线的类型&#xff0c; 8-connected、anti-al…

python精进之路 -- open函数

下面是python中builtins文件里对open函数的定义&#xff0c;我将英文按照我的理解翻译成中文&#xff0c;方便以后查看。 def open(file, moder, bufferingNone, encodingNone, errorsNone, newlineNone, closefdTrue): # known special case of open """  …

数据科学家编程能力需要多好_我们不需要这么多的数据科学家

数据科学家编程能力需要多好I have held the title of data scientist in two industries. I’ve interviewed for more than 30 additional data science positions. I’ve been the CTO of a data-centric startup. I’ve done many hours of data science consulting.我曾担…

基于xtrabackup GDIT方式不锁库作主从同步(主主同步同理,反向及可)

1.安装数据同步工具 注&#xff1a;xtrabackup 在数据恢复的时候比mysqldump要快很多&#xff0c;特别是大数据库的时候&#xff0c;但网络传输的内容要多&#xff0c;压缩需要占用时间。 yum install https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12…

excel表格行列显示十字定位_WPS表格:Excel表格打印时,如何每页都显示标题行?...

电子表格数据很多的时候&#xff0c;要分很多页打印&#xff0c;如何每页都能显示标题行呢&#xff1f;以下表为例&#xff0c;我们在WPS2019中演示如何每页都显示前两行标题行&#xff1f;1.首先点亮顶部的页面布局选项卡。然后点击打印标题或表头按钮。2.在弹出的页面设置对话…

opencv(二) 图片处理

opencv 图片处理 opencv 图片像素操作 取像素点操作设置像素点取图片块分离&#xff0c;合并 b, g, r import numpy as np import cv2 as cvimg cv.imread(/Users/guoyinhuang/Desktop/G77.jpeg)# 获取像素值 px img[348, 120] # 0 是y, 1 是x print(px)blue img[100, 1…

【NLP】语言模型和迁移学习

10.13 Update&#xff1a;最近新出了一个state-of-the-art预训练模型&#xff0c;传送门&#xff1a;李入魔&#xff1a;【NLP】Google BERT详解​zhuanlan.zhihu.com1. 简介长期以来&#xff0c;词向量一直是NLP任务中的主要表征技术。随着2017年底以及2018年初的一系列技术突…

TCPIP传送协议

以下代码实现在客户端查询成绩&#xff08;数据库在服务器端&#xff09;: 客户端&#xff1a; static void Main(string[] args) { string str null; while (str ! Convert.ToString(0)) { Console.WriteLine("…

sql优化技巧_使用这些查询优化技巧成为SQL向导

sql优化技巧成为SQL向导&#xff01; (Become an SQL Wizard!) It turns out storing data by rows and columns is convenient in a lot of situations, so relational databases have remained a cornerstone of data management in businesses across the globe. Structured…

Day 4:集合——迭代器与List接口

Collection-迭代方法 1、toArray() 返回Object类型数据&#xff0c;接收也需要Object对象&#xff01; Object[] toArray(); Collection c new ArrayList(); Object[] arr c.toArray(); 2、iterator() Collection的方法&#xff0c;返回实现Iterator接口的对象&#xff0c;…

oem是代工还是贴牌_代加工和贴牌加工的区别是什么

展开全部代加工就是替别人加工&#xff0c;贴别人的牌子。贴牌加工即商家自己不生产&#xff0c;而是委托其他生产企e68a8462616964757a686964616f31333365663431业生产&#xff0c;而品牌是自己的。拓展资料&#xff1a;OEM(Original Equipment Manufacture)的基本含义是定牌生…

KNN 算法--图像分类算法

KNN 算法–图像分类算法 找到最近的K个邻居&#xff0c;在前k个最近样本中选择最近的占比最高的类别作为预测类别。 给定测试对象&#xff0c;计算它与训练集中每个对象的距离。圈定距离最近的k个训练对象&#xff0c;作为测试对象的邻居。根据这k个紧邻对象所属的类别&#xf…

java核心技术-NIO

1、reactor&#xff08;反应器&#xff09;模式 使用单线程模拟多线程&#xff0c;提高资源利用率和程序的效率&#xff0c;增加系统吞吐量。下面例子比较形象的说明了什么是反应器模式&#xff1a; 一个老板经营一个饭店&#xff0c; 传统模式 - 来一个客人安排一个服务员招呼…

物种分布模型_减少物种分布建模中的空间自相关

物种分布模型Species distribution models (SDM; for review and definition see, e.g., Peterson et al., 2011) are a dominant paradigm to quantify the relationship between environmental dynamics and several manifestations of species biogeography. These statisti…

BZOJ1014: [JSOI2008]火星人prefix

BZOJ1014: [JSOI2008]火星人prefix Description 火星人最近研究了一种操作&#xff1a;求一个字串两个后缀的公共前缀。 比方说&#xff0c;有这样一个字符串&#xff1a;madamimadam&#xff0c;我们将这个字符串的各个字符予以标号&#xff1a; 序号&#xff1a; 1 2 3 4 5 6…

redis将散裂中某个值自增_这些Redis命令你都掌握了没?

本章主要内容字符串命令、列表命令和集合命令散列命令和有序集合命令发布命令与订阅命令其他命令本章将介绍一些没有在第1章和第2章出现过的Redis命令&#xff0c;学习这些命令有助于读者在已有示例的基础上构建更为复杂的程序&#xff0c;并学会如何更好地去解决自己遇到的问题…

asp.net的MessageBox

public class MessageBox{ public enum MsgButton { /// <summary> /// 只是OK按钮 /// </summary> OK 1, /// <summary> /// 提示是否确定 /// </summary> OKCancel 2 } publ…

深入理解激活函数

为什么需要非线性激活函数&#xff1f; 说起神经网络肯定会降到神经函数&#xff0c;看了很多资料&#xff0c;也许你对激活函数这个名词会感觉很困惑&#xff0c; 它为什么叫激活函数&#xff1f;它有什么作用呢&#xff1f; 看了很多书籍上的讲解说会让神经网络变成很丰富的…

如何一键部署项目、代码自动更新

为什么80%的码农都做不了架构师&#xff1f;>>> 摘要&#xff1a;my-deploy:由nodejs写的一个自动更新工具,理论支持所有语言(php、java、c#)的项目,支持所有git仓库(bitbucket、github等)。github效果如何?如果你的后端项目放在github、bitbucket等git仓库中管理…