DPDK — IGB_UIO,与 UIO Framework 进行交互的内核模块
目录 文章目录 目录 前文列表 IGB_UIO 前文列表 《 DPDK — 安装部署 》 《 DPDK — 数据平面开发技术 》 《 DPDK — 架构解析 》 IGB_UIO 虽然 PMD 是在用户态实现的网卡驱动程序,但实际上还是会依赖于内核提供的策略。其中 UIO 内核模块,是内核提供的用户态驱动框架,而 IGB_UIO(igb_uio.ko)是 DPDK 用于与 UIO 交互的内核模块,通过 igb_uio 来 bind 指定的 PCI 网卡设备到 DPDK 使用。IGB_UIO 借助 UIO 技术来截获中断,并重设中断回调行为,从而绕过内核协议栈后续的处理流程。并且 IGB_UIO 会在内核初始化的过程中将网卡硬件寄存器映射到用户态。 IGB_UIO 内核模块主要功能之一就是用于注册一个 PCI 设备 。可以使用 DPDK 提供个一个 Python 脚本 dpdk-devbind 来完成,当执行 dpdk-devbind 来 bind 网卡时,会通过 sysfs 与内核交互,让内核使用指定的驱动程序来匹配网卡。具体的行为是向文件 /sys/bus/pci/devices/{pci id}/driver_override 写入指定驱动的名称,或者向 /sys/bus/pci/drivers/igb_uio(驱动名称)/new_id 写入要 bind 的网卡设备的 PCI