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模块的作用主要分为以下两点:
- 注册一个 PCI 设备
- 让用户态的 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 模块。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2017-01-13 neutron openvswitch agent实现安全组的方法