pktgen-dpdk 实战
官方手册:http://pktgen-dpdk.readthedocs.io/en/latest/getting_started.html
过程
- 开机(重启)
- 把DPDK那一套流程走一遍(环境变量设置、设置userspace I/O态、挂载大页、绑定网卡)
- 按照官方手册上编译。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'
)
}
需要修改的地方有三处:
- 网卡设备的PCI号,可以用dpdk的usertools查看。
- DPDK EAL 的 command line arguments。改成与你系统对应的参数。参照DPDK的文档。
- 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 实战的更多相关文章
- [dpdk] 使用pktgen生成tcp三次握手的测试流量
pktgen: http://dpdk.org/browse/apps/pktgen-dpdk/refs/ git clone git://dpdk.org/apps/pktgen-dpdk pktg ...
- [development][dpdk][pktgen] 网卡收发包性能测试
一: 多队列及中断信息收集 [root@T185 ~]# ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: RX Mini ...
- DPDK+Pktgen 高速发包测试
参考博客 Pktgen概述 Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架,发包速率可达线速. 提供运行时管理,端口实时测量. 可以控制 UDP, TCP, ARP, ...
- [development][dpdk][pktgen] 网卡收发包性能测试-详细数据
三层包测试 发包方式:192.168.20.205 发包工具:pktgen 发包网卡:i350 收包设备:1922.168.20.185 CPU:Intel(R) Xeon(R) CPU E5-262 ...
- 使用tcpreply对DPDK进行压力测试(一台主机,2张网卡压测)
使用tcpreply对DPDK进行压力测试 过往风萤 关注 2018.05.18 14:35* 字数 273 阅读 2评论 0喜欢 0 小公司没有testcenter之类的打流工具,并且内网流量比较小 ...
- DPDK flow_classify 源码阅读
代码部分 /* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2017 Intel Corporation */ #include < ...
- Linux性能优化实战学习笔记:第三十六讲
一.上节总结回顾 上一节,我们回顾了经典的 C10K 和 C1000K 问题.简单回顾一下,C10K 是指如何单机同时处理 1 万个请求(并发连接 1 万)的问题,而 C1000K 则是单机支持处理 ...
- Linux性能优化实战学习笔记:第三十七讲
一.上节回顾 上一节,我带你一起学习了网络性能的评估方法.简单回顾一下,Linux 网络基于 TCP/IP协议栈构建,而在协议栈的不同层,我们所关注的网络性能也不尽相同. 在应用层,我们关注的是应用程 ...
- Linux性能优化实战学习笔记:第四十三讲
一.上节回顾 上一节,我们了解了 NAT(网络地址转换)的原理,学会了如何排查 NAT 带来的性能问题,最后还总结了 NAT 性能优化的基本思路.我先带你简单回顾一下. NAT 基于 Linux 内核 ...
随机推荐
- Redis--位图BitMap
一.BitMap是什么 通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身,value对应0或1,我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存 ...
- C 共享内存封装
引言 - 背景 2016 年写过一篇关于 linux 共享内存 shm api 扫盲文. C扩展 从共享内存shm到memcache外部内存 比较简单. 没有深入分析(能力有限, 也深入分析不了). ...
- angularjs-ui-router-animation
html <!DOCTYPE html> <html ng-app="APP"> <head> <title></title& ...
- Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置
Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: (1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 (2)dbcp 性能不佳 ...
- linux编译安装aria2
一.安装aria2 [root@192-168-7-77 ~]# wget https://github.com/aria2/aria2/releases/download/release-1.33 ...
- [HNOI2016]网络 树链剖分,堆
[HNOI2016]网络 LG传送门 表示乱搞比正解难想. 整体二分很好想吧. 但是为了好写快乐,我们选择三个\(\log\)的乱搞. 先树剖,线段树套堆维护区间最大值.对于一次修改,如果是插入,就把 ...
- python并发编程之守护进程、互斥锁以及生产者和消费者模型
一.守护进程 主进程创建守护进程 守护进程其实就是'子进程' 一.守护进程内无法在开启子进程,否则会报错二.进程之间代码是相互独立的,主进程代码运行完毕,守护进程也会随机结束 守护进程简单实例: fr ...
- C#课后练手
猜拳(三局两胜)请输入您的手势:石头用户手势:石头 电脑手势:剪刀用户胜:1 电脑胜:0 请输入您的手势:石头用户手势:石头 电脑手势:石头用户胜:1 电脑胜: ...
- 【总结】详细说说Html.ActionLink的用法
Html.ActionLink概述 在MVC的Rasor视图引擎中,微软采用一种全新的方式来表示从前的超链接方式,它代替了从前的繁杂的超链接标签,让代码看起来更加简洁,通过浏览器依然会解析成传统的a标 ...
- Python 循环的技巧
当在字典中循环时,用 items() 方法可将关键字和对应的值同时取出 >>> knights = {'gallahad': 'the pure', 'robin': 'the br ...