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

模块安装

运行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 模块。

posted @   JaneySJ  阅读(3111)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2017-01-13 neutron openvswitch agent实现安全组的方法
点击右上角即可分享
微信分享提示