docker容器中DPDK对网卡SR-IOV支持实验

news2024/11/23 15:45:14

主要是验证下容器运行DPDK,如何对SR-IOV进行支持

1 VF创建方法

在未开启SR-IOV时,通过DPDK提供的./dpdk-devbind.py脚本可知,当前系统一共有一块82599网卡,拥有2个网口,PCI的地址是18:00.0和18:00.1,如下图所示

启用命令

Rmmod ixgbe

modprobe ixgbe max_vfs=2 开启2个VF

启用命令

ip link set enp24s0f0 vf 0 mac aa:bb:cc:11:22:30

ip link set enp24s0f0 vf 1 mac aa:bb:cc:11:22:31

设定两个VF0和VF1与enp24s0f0,此时就可以看到两个VF网卡的存在

2 Docker使用DPDK遇到的主要问题

1)Docker没有自己的文件系统,谈不上插入uio模块

2)Docker中没有自己的大页内存

3)Docker中运行dpdk应用程序,如果使用直通模式,要想办法

解决办法:

在主机中完成DPDK的初始化工作,并把相关的资源map挂载到容器内部

(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

Docker使用-v命令,将可以将主机上的资源挂在到容器内部

所有的网卡在linux系统中,实际上是一个文件

大页内存在linux系统中,实际上也是一个文件

而用户态驱动只要能读取到对应的PCI地址,获取网卡寄存器访问的能力,即可以完成SR-IOV的功能。

当容器需要通过DPDK访问vf网卡时,需要将这些文件(设备,内存,主机的igb_uio等),都挂在到容器的内部。

使用方法如下

启动时添加

--privileged (增加权限)
-v /sys/bus/pci/devices:/sys/bus/pci/devices
 (把网卡挂到容器里面,容器内部可以读到sr-iov的VF网卡的PCI地址)
-v /sys/kernel/mm/hugepages:/sys/kernel/mm/hugepages
(大页内存挂载到容器内部) 
-v /sys/devices/system/node:/sys/devices/system/node
(numa相关的节点信息挂到容器内部) 
-v /dev:/dev 
(主机上的igb_uio挂到容器内部)

启动容器后可以在/sys/bus/pci/devices下读到对应的pci地址

以dpdk自带的basicfwd测试程序测试,启动方式为

./build/basicfwd -w 18:10.2 -- -p 0x1

-w后18:10:2是虚拟的VF的PCI地址,可以看到程序正常启动,并读到了MAC地址

3 测试与验证

测试的整体的结构如下图所示:

发送两种MAC的数据包,结果显示2个VF可以256B数据包达到9.91Gbps的转发速率,接近线速。混合发送时,两个VF加起来差不多也是接近网卡线速(82599 10G),可以看到所有发送出去的数据包都转发了回来。

4 结论与部分问题

本质上,DPDK大部分的东西都还是放到了主机上完成初始化,容器内的程序只是调用这些初始化好的资源,因此这部分可以只放一个DPDK应用程序即可

如果容器内启动时报

eth_ixgbevf_dev_init(): VF Initialization Failure:

说明主机的PF网卡没能启动

5 相关文献

1: https://forum.huawei.com/enterprise/zh/thread-161073-1-1.html 华为服务器如何开启支持SR-IOV支持

2:82599 datasheet

3:dpdk官方testpmd关于vf状态测试

http://doc.dpdk.org/guides/tes

原文链接:https://zhuanlan.zhihu.com/p/508583116 

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

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

相关文章

华为配置动态路由ISIS协议

华为配置动态路由ISIS协议一、路由基础知识二、路由器配置接口IP地址(一)配置R1、R2、R3网络(二)配置R1、R2、R3环回网络接口(三)测试直连网络三、启动进程号,配置实体名称(一&#…

JVM之堆

堆的基本内容: Java堆(Java Heap)是虚拟机所管理的内存中最大的一块,Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建,此内存区域的唯一目的就是存放对象实例,Java 世界里“几乎”所…

【每日挠头算法题】Leetcode 989. 数组形式的整数加法 —— 高精度加法解法

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:每日挠头算法题 文章目录一、题目描述二、思路及代码实现今天为大家带来的是力扣上的一道简单题&#xff1…

Spring的秒表StopWatch优雅的程序计时器 -第455篇

历史文章(文章累计450) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 走进MyBatis源码一探Spring扩展点「知识…

排水监测传感器数据采集传感节点接入网关产品介绍

一、产品概述 传感节点接入网关是一款工业级网关,可将Modbus RTU协议的设备数据转换为MQTT协议格式再远传至数据中心,支持采集数字量输入信号,支持输出数字量控制信号。 传感节点接入网关具备一体化采集、传输、控制功能,集成了…

IDEA自定义JavaDOC注释模板

文章目录IDEA自定义JavaDOC注释模板方法注释模板1、创建模板2、设置模板内容-JavaDoc格式3、Define4、Edit VariablesIDEA自定义JavaDOC注释模板 JavaDOC注释模板共分为两种: 类注释模板方法注释模板 方法注释模板 1、创建模板 File–>Settings–>Editor…

FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence

FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence, NIPS, 2020 要点: 1、首先,基于 “弱增强的未标记样本的模型预测” 生成伪标签;接着,对于给定的样本,只有模型预测的置信度高时&a…

详细复习云开发~小程序【云存储、云函数】

文章目录一,云开发~云存储1-1,云开发控制台管理文件1-2,上传图片到云存储1-3,给商品列表加商品图片1-4,上传视频到云存储1-5,上传word,excel文件到云存储1-5-1,上传之前先选择文件1-…

mybatis if test对Intger判空的坑、原理及解决方法

文章目录问题描述源码分析解决方法问题描述 Mybatis在进行<if test"status! null and status! ">非空判断操作时&#xff0c;如果status为0的时候&#xff0c;该判断条件的值为false 写法如下&#xff1a; <select id"countByBySearchCondition&quo…

提取任意开始年月日到结束年月日中间的所有日期和星期

&#x1f37f;*★,*:.☆欢迎您/$:*.★* &#x1f37f; 分为三种情况 1 同年同月不通日 2 同年不同月 3不同年 不同年分为 两种情况 一种是开始年 开始年月不是12月的要单独计算 一种是结束年 结束年要不是1月的要单独计算 同时每种情况结尾天数分割也不同 #!/usr/bin/python # …

玉湖冷链首次参展中国冷链产业年会

洞见时代&#xff0c;探冬寻暖。12月15-17日&#xff0c;「2022第十六届中国冷链产业年会」在厦门举行。玉湖冷链深度参与行业盛会&#xff0c;首次设展&#xff0c;与上千名行业人士进行了深入交流&#xff0c;并参与了中物联冷链委四届三次理事会和主论坛首席对话等环节。 年…

JaveWeb框架(二):Servlet组件入门

Servlet入门 MVC实战项目 仓储管理系统Servlet 入门DemoServlet 执行流程、生命周期执行流程生命周期Servlet API介绍Servlet体系结构Servlet urlPattern配置Servlet&#xff1a;请求与响应Request&#xff1a;请求请求的构成请求API方法来获取对应的值:请求参数的获取方式请求…

后台系统权限流程

菜单管理 角色管理 相关逻辑 <template><div><a-tree :checkable"true"check"handlerChecked"select"handlerSelectNode"/></div> </template><script> export default { data(){return {// 选中节点的ke…

宠物领养网站

成品详细信息 开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 基于java的宠物领养管理系统用户模块包括注册登录、个人信息管理、 可领养宠物信息查询、宠物助养信息查…

Java注册登录及邮箱发送账号激活(主要技术栈SpringBoot,MyBatis)

文章目录前言学习之前需要掌握的知识项目环境搭建数据库的搭建前端页面的搭建后端代码格式pojomapperControllerservice最后前言 项目流程图如下&#xff1a; 这里我们通过&#xff1a; 163邮箱来实现激活码发送qq邮箱来进行接收 学习之前需要掌握的知识 springboot的基本使…

解决tinypng 1.0.6 在线压缩C#接口报ssl错误的方法

因为作者的做法是使用了他们的证书, 但是如果是插件引用, 感觉是无法调用的. 所以我们直接下载code 修改这里即可 namespace TinifyAPI.Internal internal static class SSL public static bool ValidationCallback(HttpRequestMessage req, X509Certificate2 cert, X509Chain…

二十四节气-冬至,海报/文案分享,一口饺子,一口吉。

古说&#xff0c;冬至是阴极之至 阳气始生&#xff0c;有冬至大如年的说法 冬至到&#xff0c;家家户户吃水饺&#xff0c; “冬至不端饺子碗&#xff0c;冻掉耳朵没人管” “三九补一冬&#xff0c;来年无病痛” 可吃羊肉等温补…… 一组超级好的大牌文案 真心秀色可餐 下面是…

selenium自动化测试——unittest框架

文章目录unittestunittest 框架组成细节unittest测试示例用例的执行顺序忽略测试用例的执行unittest断言HTML报告生成生成HTML报告步骤异常捕捉与错误截图数据驱动unittest unittest 是python 的单元测试框架&#xff0c; 在python 的官方文档中&#xff0c;对unittest有详细的…

学会JVM,从这篇开始

目录 一、了解 JVM 二、JVM内存划分 三、类加载 1. 类加载是干啥的? 什么是类对象 ? 2. 类加载的大致过程 3. 什么是 双亲委派模型(重点) ? 四、GC 1. GC回收的是哪里的内存 2. 回收如何判断某个对象是否是垃圾? ① 引用计数(Python PHP采用) ② 可达性分析(JVM采用) 3. …

【计算机考研408】2023考研408大题预测总结

数据结构 链表相关算法题 反转链表1 题源1&#xff1a;反转链表1 比较简单&#xff0c;可以作为思想记忆&#xff0c;不太会这么直接考察 408可能考察链表的实现&#xff0c; ListNode* reverseList(ListNode* head) {if(head NULL) return NULL;//头插法ListNode * p …