当前位置: 首页 > news >正文

DPDK 测试说明

文章目录

  • 2.DPDK 测试说明
    • 2.1硬件pci加密设备绑定到igb_uio驱动
      • IGB_UIO 主要负责什么内容 ?
    • 2.2 test命令使用说明
    • 2.3 dpdk-test-crypto-perf命令使用说明
    • 2.4 使用testpmd测试网卡性能


2.DPDK 测试说明

2.1硬件pci加密设备绑定到igb_uio驱动

dpdk-stable/usertools/dpdk-setup.sh 分析
如何绑定pci设备到igb_uio驱动?(Option:54)

IGB_UIO 主要负责什么内容 ?

(1.1) igb_uio 内核模块功能之一、注册一个 PCI 设备。通过 DPDK 提供的 Python 脚本 dpdk-devbind 来完成, 当执行 dpdk-devbind 来 bind 网卡时,会通过 sysfs 与内核交互、让内核使用指定的驱动程序(e.g. igb_uio) 来绑定网卡。
在 linux 中设备与驱动绑定方法有两种:
a、 配置设备, 让设备选择驱动,向 /sys/bus/pci/devices/{pci id}/driver_override 写入驱动的名称。
b、 配置驱动,让其支持新的 PCI 设备,向 /sys/bus/pci/drivers/igb_uio/new_id 写入要bind的网卡设备的 PCI ID (e.g. 8086 10f5, 格式:设备厂商号 设备号)。
这两种方式都会促使驱动程序 bind 新的网卡设备,而 DPDK 使用的 第二种 方式。
(1.2) igb_uio 内核模块另一个主要功能是、让用户态的 PMD 网卡驱动程序与 UIO 及格线交互:
a、 调用 igbuio_setup_bars,设置 uio_info的 uio_mem 、 uio_port 和其他成员;
b、 调用 uio_register_device, 注册 UIO 设备;
c、打开 UIO 设备并注册中断;
d、调用 uio_event_notify, 将注册的 UIO 设备的 “内存空间” 映射到用户态的应用空间;其 mmap 函数为uio_mmap, 至此、UIO 就可以让 PMD 驱动程序在用户态应用程序访问设备的大部分资源。
e、应用层 UIO 初始化,同时,DPDK 还需要把 PCI 设备的 BAR 以上到应用层; 在 pci_uio_map_resource 函数中、会调用pci_uio_map_resource_by_index 做资源映射。
f、在 PMD 驱动程序中, DPDK 应用程序会调用 rte_eth_rx_burst 读取数据报文; 如果网卡接收 Buffer 的描述符表示已经完成一个报文的接收(如有 E1000_RXD_STAT_DD标志),则 rte_mbuf_raw_alloc 一个 mbuf 进行处理。


以上通过脚本输入PCI设备"bus:slot.func" number本质应该就是一条写命令:
查看usertools/dpdk-devbind.py脚本内容,确实如此
在这里插入图片描述
DPDK中我们基于脚本输入”bus:slot.func” number绑定设备即可。
实际上绑定设备通过”Vendor DeviceID” number,但是取消绑定设备通过”bus:slot.func” number

补充思考:通过脚本基于pci 总线绑定我们的半高卡到igb_uio驱动中,脚本它凭什么认为这个pci设备就是”加密设备”?而不是”网络设备”、不是”压缩设备”?
在这里插入图片描述
答:
①通过dpdk-devbind.py --status查看当前有哪些加密设备
在这里插入图片描述
②dpdk-devbind.py脚本中内容如下,根据Class number决定这是一个什么设备
在这里插入图片描述
③为什么是0x10代表加密设备?因为这是PCIe规范定义的
https://blog.ladsai.com/pci-configuration-space-class-code.html
④查看我们的PCIe配置空间,class code配置设置成了0x10,所以被DPDK视为这是一个加密设备。
在这里插入图片描述

2.2 test命令使用说明

est是用于测试dpdk rte相关的基础功能,例如mempool_perf_autotest
指定测试要用到的logic core:0-7

$ ./test -l 0-7

进入RTE>>命令行后,输入’Shift + ?’ 可以查看当前支持哪些测试

在这里插入图片描述

2.3 dpdk-test-crypto-perf命令使用说明

dpdk-test-crypto-perf是专门用来测试硬件加密设备功能和性能的。
命令用法说明:dpdk-test-crypto-perf [EAL Options] -- [Application Options]
注:EAL选项跟App选项通过–隔开:
1)EAL选项:
①指定要运行DPDK的CPU(可以通过两个选项: -l / -c):
-c
-l
COREMASK的格式是:要运行的十六进制内核位掩码,例如 -c 0x101就是指定CPU0跟CPU8运行DPDK
CORELIST的格式是:要运行的核心列表,例如-l 0-4 就是指定CPU0到CPU4运行DPDK

②指定虚拟设备:例如:–vdev crypto_ccp907t_sec
–vdev

③添加一个PCI设备到白名单中: 例如:-w 0000:01:00.0(这是非必须选项)
-w

2)App选项:
①指定测试类型(type有三种可选类型: throughput / latency / verify):
–ptest type
②设置操作的总次数
–total-ops
③设置单个(明文或密文)报文的大小
–buffer-sz
④设置每个报文的报文段数(用于测试scatter/gather)
–segments-nb
⑤设置设备类型: 例如: --devtype crypto_ccp907t_sec
–devtype
⑥设置操作类型(name有这几种可选类型: cipher-only / auth-only / cipher-then-auth / auth-then-cipher / aead):
–optype
⑦配置密码算法:
a).设置密码算法名称:例如 --cipher-algo sm4-cbc
–cipher-algo
b).设置密码操作模式(mode有两种可选类型: encrypt / decrypt):
–cipher-op
c).设置密码 key的大小
–cipher-key-sz
d).设置密码 iv的大小
–cipher-iv-sz
⑧配置认证算法:
a).设置认证算法名称:例如 --auth-algo sm3-hmac
–auth-algo
b).设置认证操作模式(mode有两种可选类型: verify / generate):
–auth-op
c).设置认证key的大小
–auth-digest-sz
d).配置认证aad的大小(暂时不清楚干啥用的)
–auth-aad-sz
⑨设置测试标志值向量文件路径,用于验证算法的正确性。(参见测试向量文件一章,该参数需要与 --ptest verify 一起使用):
–test-file
例如: --test-file /home/ccore/dpdk-stable/sm4_cbc_sm3.data

a).在测试向量文件中设置特定的测试名称部分(用于hash认证结果比对测试):
–test-name
例如:–test-name sm3_hmac_buff_32

2.4 使用testpmd测试网卡性能

参考链接:
https://www.jianshu.com/p/a7c7d5e80a14
下面testpmd测试时,关于更多参数含义就不一一说明了,请自行查看
https://dpdk.readthedocs.io/en/stable/testpmd_app_ug/index.html

由于网卡是由DPDK接管的,是没有IP地址的,所以是以MAC地址通信。确定好各自的源MAC和目的MAC,类似于二层交换机的功能

1)物理连接方式:
这里测试用的是enp3s0和p2p1两个网口(网卡芯片都是I210),这两个网口都通过PCIe接口插在Intel 5218R塔式工作站上,然后这两个网口外部通过网线直接连接
enp3s0 <----------- 网线 -----------> p2p1

2)网卡取消绑定内核驱动:要先down掉,之后才能绑定到DPDK中(注意: 使用的物理网卡要能够支持igb驱动,否则在DPDK中通过igb_uio绑定无效)
补充:查看当前DPDK版本支持哪些网卡
http://doc.dpdk.org/guides/rel_notes/release_18_11.html
$ sudo ifconfig enp3s0 down
$ sudo ifconfig p2p1 down
在这里插入图片描述
3)导出环境: 编译dpdk-stable代码以及dpdk-stable/examples下面的测试例程都要先导出下面两个环境变量(可以放在~/.bashrc下,使其自动导出):
$ export RTE_SDK= #DPDKInstallDir = /home/zf/git/dpdk-stable
$ export RTE_TARGET=x86_64-native-linuxapp-gcc

4)编译DPDK与加载uio驱动(大页内存默认上电已经配置好,通过bootargs传参预配置了)
先进入dpdk_stable顶层目录,然后依次执行以下指令:
$ sudo make install T=x86_64-native-linuxapp-gcc
$ sudo modprobe uio
$ sudo insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

5)网卡绑定到DPDK(基于PCIe BDF num绑定):
$ sudo ./usertools/dpdk-devbind.py -b igb_uio 03:00.0 b3:00.0
在这里插入图片描述
6)通过dpdk-stable/examples/ethtool检测有多少个网口绑定到了DPDK(这一步实际上可以跳过,目的是为了通过不同的工具查询DPDK绑定网卡数量)

相关文章:

DPDK 测试说明

文章目录 2.DPDK 测试说明2.1硬件pci加密设备绑定到igb_uio驱动IGB_UIO 主要负责什么内容 &#xff1f; 2.2 test命令使用说明2.3 dpdk-test-crypto-perf命令使用说明2.4 使用testpmd测试网卡性能 2.DPDK 测试说明 2.1硬件pci加密设备绑定到igb_uio驱动 dpdk-stable/usertool…...

上传及接收pdf文件,使用pdfbox读取pdf文件内容

前端上传pdf文件 html <form class"layui-form"><div style"background-color: #ffffff" ><div style"padding: 30px"><div class"layui-form-item"><div class"layui-inline"><label c…...

第一个搭建SpringBoot项目(连接mysql)

首先新建项目找到Spring Initializr 我使用的URL是https://start.spring.io这里最低的JDK版本是17&#xff0c;而且当网速不好的时候可能会显示超时&#xff0c;这里可以选用阿里云的镜像https://start.aliyun.com可以更快一些但是里面还是有一些区别的 我们这里选择Java语言&a…...

docker部署rabbitMQ 单机版

获取rabbit镜像&#xff1a;我们选择带有“mangement”的版本&#xff08;包含web管理页面&#xff09;&#xff1b; docker pull rabbitmq:management 创建并运行容器&#xff1a; docker run -d --name rabbitmq -p 5677:5672 -p 15677:15672 rabbitmq:management --name:…...

PDF 全文多语言 AI 摘要 API 数据接口

PDF 全文多语言 AI 摘要 API 数据接口 PDF / 文本摘要 AI 生成 PDF 文档摘要 AI 处理 / 智能摘要。 1. 产品功能 支持多语言摘要生成&#xff1b;支持 formdata 格式 PDF 文件流传参&#xff1b;快速处理大文件&#xff1b;基于 AI 模型&#xff0c;持续迭代优化&#xff1b;…...

《信息系统安全》课程实验指导

第1关&#xff1a;实验一&#xff1a;古典密码算法---代换技术 任务描述 本关任务&#xff1a;了解古典密码体制技术中的代换技术&#xff0c;并编程实现代换密码的加解密功能。 注意所有明文字符为26个小写字母&#xff0c;也就是说字母表为26个小写字母。 相关知识 为了完…...

Accelerated Soft Error Testing 介绍

加速软错误测试(Accelerated Soft Error Testing, ASET)是一种评估半导体器件或集成电路(ICs)在高辐射环境中发生软错误率(Soft Error Rate, SER)的方法。这种测试方法通过模拟或加速软错误的发生,以便在较短时间内评估器件的可靠性。软错误指的是那些不会对硬件本身造成…...

Redis缓存常用的读写策略

缓存常用的读写策略 缓存与DB的数据不一致问题&#xff0c;大多数都是指DB的数据已经修改&#xff0c;而缓存中的数据还是旧数据的情况。 旁路缓存模式 对于读操作&#xff1a;基本上所有模式都是先尝试从缓存中读&#xff0c;没有的话再去DB读取&#xff0c;然后写到缓存中…...

9月产品更新 | 超10项功能升级,快来看看你的需求上线了吗?

Smartbi用户可以在官网&#xff08;PC端下载&#xff09;&#xff0c;更新后便可以使用相关功能&#xff0c;也可以在官网体验中心体验相关功能。 接下来&#xff0c;我们一起来看看都有哪些亮点功能更新吧。 ▎插件商城 Smartbi麦粉社区的应用市场新增了“插件”模块&#xf…...

ARP协议工作原理析解 (详细抓包分析过程)

目录 1. ARP 协议 2. 工作原理 3. ARP 协议报文格式 4. ARP 缓存的查看和修改 5. tcpdump 抓包分析 ARP 协议工作原理 5.1 搭建 2 台虚拟机 5.2 在主机 192.168.0.155 打开一个shell命令行开启抓包监听 5.3 在主机 192.168.0.155 打开另一个shell命令行 telnet 192.168.…...

axure动态面板

最近转管理岗了&#xff0c;作为项目负责人&#xff0c;需要常常与客户交流沟通&#xff0c;这时候画原型的能力就是不可或缺的本领之一了&#xff0c;关于axure可能很多it行业者都不是很陌生&#xff0c;简单的功能呢大家就自行去摸索&#xff0c;我们这次从动态面板开始讲起。…...

[论文笔记]Making Large Language Models A Better Foundation For Dense Retrieval

引言 今天带来北京智源研究院(BAAI)团队带来的一篇关于如何微调LLM变成密集检索器的论文笔记——Making Large Language Models A Better Foundation For Dense Retrieval。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们&quo…...

Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究

技术背景 随着国产化操作系统的推进&#xff0c;市场对国产化操作系统下的生态构建&#xff0c;需求越来越迫切&#xff0c;特别是音视频这块&#xff0c;今天我们讨论的是如何在linux平台实现屏幕|摄像头采集&#xff0c;并推送至RTMP服务。 我们知道&#xff0c;Linux平台&…...

梧桐数据库|中秋节活动·抽奖领取大闸蟹

有话说 众所周不知&#xff0c;我的工作就是做一个国产的数据库产品—中国移动梧桐数据库&#xff08;简称WuTongDB&#xff09;。 近期我们举办了一次小活动&#xff0c;来提升梧桐数据库的搜索量和知名度&#xff0c;欢迎大家来参加&#xff0c;免费抽奖领取大闸蟹哦~~~ 具…...

Python怎么发送邮件:基础步骤与详细教程?

Python怎么发送邮件带附件&#xff1f;怎么使用Python发送邮件&#xff1f; 无论是工作中的通知、报告&#xff0c;还是生活中的问候、邀请&#xff0c;电子邮件都扮演着不可或缺的角色。那么&#xff0c;Python怎么发送邮件呢&#xff1f;AokSend将详细介绍Python发送邮件的基…...

[译] 大模型推理的极限:理论分析、数学建模与 CPU/GPU 实测(2024)

译者序 本文翻译自 2024 年的一篇文章&#xff1a; LLM inference speed of light&#xff0c; 分析了大模型推理的速度瓶颈及量化评估方式&#xff0c;并给出了一些实测数据&#xff08;我们在国产模型上的实测结果也大体吻合&#xff09;&#xff0c; 对理解大模型推理内部工…...

vue3 响应式 API:readonly() 与 shallowReadonly()

readonly() readonly()是一个用于创建只读代理对象的函数。它接受一个对象 (不论是响应式还是普通的) 或是一个 ref&#xff0c;返回一个原值的只读代理。 类型 function readonly<T extends object>(target: T ): DeepReadonly<UnwrapNestedRefs<T>>以下…...

迁移学习与知识蒸馏对比

应用场景不同 迁移学习&#xff1a;通常用于不同但相关的任务之间的知识迁移。特别是当目标任务的数据量不足时&#xff0c;可以从一个已经在大规模数据上训练好的模型中获取有用的特征或参数。典型场景包括计算机视觉任务&#xff0c;比如你在ImageNet上训练了一个ResNet&…...

【Java-反射】

什么是反射&#xff1f; JAVA反射机制是在运行状态中&#xff0c;创建任意一个类&#xff0c;能获取这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称为java语言…...

移动UI设计要求越来越高,最为设计师应如何迎头赶上

一、引言 在当今数字化高速发展的时代&#xff0c;移动设备已经成为人们生活中不可或缺的一部分。随着科技的不断进步和用户需求的日益增长&#xff0c;移动 UI 设计的要求也越来越高。作为移动 UI 设计师&#xff0c;我们面临着巨大的挑战&#xff0c;需要不断提升自己的能力…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...