首页 > 其他分享 >dpdk入门实践4--IGB_UIO、VFIO和KNI三大模块

dpdk入门实践4--IGB_UIO、VFIO和KNI三大模块

时间:2023-01-13 10:48:43浏览次数:48  
标签:VFIO KNI -- UIO 网卡 IGB 模块 dpdk

模块安装

运行dpdk源文件(以18.11.2版本为例)中 usertools/dpdk-setup.sh 脚本可以选择如下选项18、19、20分别加载IGB_UIO、VFIO或者KNI模块。要能加载成功首先要编译安装好基础dpdk环境,加载成功后可以在/dev目录下看到vfio或kni文件夹。卸载这些模块可以选择该脚本的 31、32、33项命令

IGB UIO module

功能概述

IGB_UIO模块是Userspace I/O运行在用户空间的I/O技术,是实现用户空间下驱动程序的支撑机制。DPDK使用UIO机制使用网卡驱动程序(主要是Intel的千兆igb和万兆ixgbe驱动程序)运行在用户态,并采用轮询和零拷贝方式从网卡收取报文,提高收发报文的性能。通过 IGB_UIO 来 bind 指定的 PCI 网卡设备给到用户态的 PMD 使用。IGB_UIO 借助 UIO 技术来截获中断,并重设中断回调行为,从而绕过内核协议栈后续的处理流程。并且 IGB_UIO 会在内核初始化的过程中将网卡硬件寄存器映射到用户态。IGB_UIO模块的作用主要分为以下两点:

  1. 注册一个 PCI 设备
  2. 让用户态的 PMD 网卡驱动程序得以与 UIO 进行交互

加载 IGB_UIO 模块


过了一会,lsmod|grep io也能看到igb-uio模块。

绑定网卡到IGB_UIO模块

选择 usertools/dpdk-setup.sh 脚本 24 选项,再输入网卡地址,注意这里要先把网卡down掉否则绑定不上。

然后再用 23 选项来查看是否绑定成功。

解绑网卡

./usertools/dpdk-devbind.py -u 0000:1a:00.3

这个之后就在other drivers 里面了,需要再绑到内核网卡上,./usertools/dpdk-devbind.py -s 查看绑在内核里的网卡驱动类型
例如:0000:1a:00.2 'Ethernet Connection X722 for 1GbE 37d1' if=eno3 drv=i40e unused=igb_uio *Active*, 那么就是i40e. 使用命令./usertools/dpdk-devbind.py -b i40e 0000:1a:00.3 就可以用ifconfig看到该网卡了,无需重启

VFIO module

功能概述

加载 VFIO 模块


过了一会,查看ls /dev|grep vfio可以看到文件夹vfio, lsmod|grep vf也能看到vfio模块。

绑定网卡到 VFIO 模块

KNI module

KNI 模块功能概述

加载 KNI 模块


过了一会,查看ls /dev|grep kni 可以看到文件夹kni, lsmod|grep kni也能看到 rte_kni 模块。

标签:VFIO,KNI,--,UIO,网卡,IGB,模块,dpdk
From: https://www.cnblogs.com/janeysj/p/15097891.html

相关文章

  • ceph-deploy创建osd显示: [node2][WARNIN] No data was received after 300 seconds, d
    创建磁盘错误[root@node1ceph]#ceph-deployosdcreatenode2--data/dev/sdb[ceph_deploy.conf][DEBUG]foundconfigurationfileat:/root/.cephdeploy.conf[ce......
  • 零基础学习SpringBoot3笔记01_2023-01-13
    零基础学习SpringBoot3笔记01_2023-01-132023-01-131.环境1.1.软件环境安装JDK17并配置环境变量,略安装MySQL5.5并配置环境变量,略安装MySQL客户端工具HeidiSQL,略......
  • js加法精度问题解决
    //加法exportconstnumAdd=(num1,num2)=>{letbaseNum,baseNum1,baseNum2try{baseNum1=num1.toString().split('.')[1].length}cat......
  • dpdk入门实践7——LoadbalanceSampleApplication
    运行编译好dpdk示例程序之后,可使用以下命令运行程序。我编译的环境是绑定了两张dpdk网卡,主机是64核,2个numa节点。./build/load_balancer-l3-7-n4----rx"(0,0,3),......
  • dpdk入门实践6——L2fwd二层通信和l3fwd三层通信
    DPDK从网卡直接取数据到用户空间,需要有数据转发的规则才能通信。也就是说需要用户实现相关通信网络协议实现相关数据包的转发(有些协议栈不转发ICMP报文那就Ping不通),例如腾......
  • dpdk入门实践5--basicfwd和pktgen
    安装pktgen我之前安装的dpdk版本是stable-18.11.2,linux版本为3.10.0-1160.36.2.el7.x86_64,从网站http://git.dpdk.org/apps/pktgen-dpdk/refs/下载尝试多个版本的pktg......
  • python-连接redis
    python-连接redis1、python-连接redis安装连接redis客户端工具pip3installredis编写python-redis连接使用"""redis===============Host:127.0.0.1PORT:6......
  • Redis-独立功能-二进制位数组
    二进制位数组Redis提供了SETBIT、GETBIT、BITCOUNT、BITOP四个命令用于处理二进制位数组。SETBIT命令用于为位数组指定偏移量上的二进制位设置值,GETBIT命令则用于获取位......
  • 1111111
    1.参考文档见同目录下的.mhtml文件在第一步安装JDK那一步中我选择直接安装了jdk17,因为官网和国内镜像的OpenJDK始终都下载不下来。1.1.配置文件基本信息spring:data......
  • python-连接redis池
    python-连接redis池1.python-连接redis池编写redis池,进行连接redis服务防止连接每次请求连接池"""redis===============Host:127.0.0.1PORT:6379Password:Aq......