DPDK (1) - PMD驱动方案
为了支持Userspace IO,DPDK可以选择如下三种类型的驱动:
- uio_pci_generic
- uio + igb_uio
- vfio-pci
uio_pci_generic是内核原生的一种uio驱动,该驱动提供了uio功能,直接使用如下命令加载:
sudo modprobe uio_pci_generic
这个原生驱动是不支持VF设备创建的,因此DPDK也提供了另外一种uio驱动igb_uio,它是可以用于宿主机上来创建VF设备的。适用性比内核原生的uio_pci_generic更强一些,其中igb_uio.ko是由dpdk代码库编译出来的:
sudo modprobe uio
sudo insmod kmod/igb_uio.ko
从DPDK release 1.7开始,DPDK对VFIO进行了支持,因此VFIO Driver成了新的可选项:
sudo modprobe vfio-pci
当DPDK使用vfio来实现网络功能时可以直接加载该驱动。
特别注意:
对于使用VFIO驱动来使用DPDK的场景,必须保证:
1.硬件上支持支持VT-x、VT-d,BIOS中需要打开相关特性
2.对于物理机的内核中需要支持IOMMU特性(在启动参数添加 iommu=pt, intel_iommu=on
)
物理机上使用DPDK
在物理机上使用DPDK,需要内核中加载DPDK PMD Driver,那么需要使用如下命令加载DPDK的驱动:
modprobe uio
insmod igb_uio
usertools/dpdk-devbind.py --bind=igb_uio bb:ss.f
当然这里我们也可以使用上面介绍过的其他类型的内核模块:uio_pci_generic
或者 vfio-pci
。
虚拟机中使用DPDK
对于支持SR-IOV的网卡来说,比如Intel的X710/XL710网卡,在虚拟化的环境中使用,网卡可以进行透传,本文以透传的方式来进行实践介绍,对于支持SR-IOV的网卡来说,它分为PF和VF模块,在宿主机中需要加载对应的PF Driver和VF Driver来驱动这两个子模块。
宿主机
在宿主机上可以直接使用Linux kernel官方的intel PF驱动,比如i40e,也可以使用DPDK专用的 PMD PF驱动。如果使用了DPDK PMD PF 驱动,那么这个宿主机网络的管理权就完全交给DPDK了。
- 方案一:i40e驱动
rmmod i40e (To remove the i40e module)
insmod i40e.ko max_vfs=2,2 (To enable two Virtual Functions per port)
通过重新加载intel提供的i40e
驱动,并指定max_vfs参数来创建VF功能,对于该网卡的VF功能内核默认使用的驱动为i40evf
,因此在使用dpdk之前,还需要在Host上将VF与i40evf
驱动解绑,重新绑定到vfio-pci
驱动上:
modprobe vfio-pci
宿主机中需要使用vfio_pci这个内核模块来对需要分配给客户机的设备进行隐藏, 从而让宿主机和未被分配该设备的客户机都无法使用该设备, 达到隔离和安全使用的目的。而在客户机不需要使用该设备后, 让宿主机使用该设备, 则需要将其恢复到使用原本的驱动。
这里也可以利用DPDK提供的脚本dpdk_bind_nic.py来设置:
usertools/dpdk-devbind.py --bind=vfio-pci bb:ss.f
此时该VF已经由vfio驱动接管,对于上一章介绍的,如果在宿主机上使用VFIO DPDK,那么此时就已经满足了条件,但是我们此处是为了演示虚拟机中使用DPDK,所以此时不能启动DPDK去使用该VF,而需要在虚拟机中透传该设备来使用。
- 方案二:DPDK PMD PF驱动
需要内核启动参数中使能iommu=pt, intel_iommu=on
,然后启动后加载DPDK驱动:
modprobe uio
insmod kmod/igb_uio.ko
usertools/dpdk-devbind.py --bind=igb_uio bb:ss.f
echo 2 > /sys/bus/pci/devices/0000\:bb\:ss.f/max_vfs (To enable two VFs on a specific PCI device)
虚拟机
对于虚拟机来说,透传过来的VFIO网卡对于虚拟机来说就相当于是一个常规的物理网卡,默认就会使用该物理网卡对应的驱动,比如i40e driver,那么如果要在虚拟机中使用DPDK,就需要把虚拟网卡重新绑定到igb_uio驱动,这样就可以在虚拟机中使用DPDK了。实际上操作还是与宿主机中一样:
modprobe uio
insmod kmod/igb_uio.ko
usertools/dpdk-devbind.py --bind=igb_uio bb:ss.f
DPDK (1) - PMD驱动方案相关推荐
- DPDK网卡PMD驱动
以/home/user/dpdk-stable-18.11.11/drivers/net/i40e目录下的驱动为例 源代码文件有 # ls base i40e_ethdev_vf.c i40e_log ...
- dpdk pmd驱动分析
缘起dpdk_devbind.py 运行dpdk程序之前我们一般都会使用dpdk_devbind.py程序对指定的驱动与设备进行绑定与解绑(如下命令).那么dpdk_devbind.py程序是如何实现 ...
- DPDK pmd驱动初始化(十九)
在没有引入pmd用户态网卡驱动之前, 网卡在收到报文后,网卡驱动会将报文从网卡缓冲区拷贝到内核, 接着内核在把报文拷贝到应用层,整个过程需要2次的拷贝以及系统调用.当应用层需要发送数据时,应用层将报文 ...
- dpdk pmd驱动初始化
在没有引入pmd用户态网卡驱动之前, 网卡在收到报文后,网卡驱动会将报文从网卡缓冲区拷贝到内核, 接着内核在把报文拷贝到应用层,整个过程需要2次的拷贝以及系统调用.当应用层需要发送数据时,应用层将报文 ...
- 从 dpdk-20.11 移植 intel E810 百 G 网卡 pmd 驱动到 dpdk-16.04 中
文章目录 前言 移植前的调研工作 dpdk-20.11 ice pmd 驱动源码的组成 移植问题与解决方案记录 16.04 使用 make 编译,20.11 使用 meson 与 ninja 方式编译 ...
- DPDK — Userspace PMD 源码分析
目录 文章目录 目录 PMD driver 通过 IGB_UIO 与 UIO 进行交互 注册一个 UIO 设备 PMD 的应用层实现 Interrupt DPDK(中断模式) PMD driver 通 ...
- 【摄影补光灯调光驱动方案】低亮度无频闪无抖动无极调光调色IC芯片 LED美颜灯升压恒流芯片FP7209 最大可驱动300W
一:方案名称: [摄影补光灯调光驱动方案]低亮度无频闪无抖动无极调光调色IC芯片 LED美颜灯升压恒流芯片FP7209 最大可驱动300W 二:方案描述: FP7209 是一颗非同步升压 LED 驱动 ...
- hdmi转lvds驱动方案。 输入支持vga,hdmi,av,输出支持lvds单通道和双通道
hdmi转lvds驱动方案. 输入支持vga,hdmi,av,输出支持lvds单通道和双通道,支持ttl输出. 支持osd. RTD2660H全部资料,包括datasheet,参考源码,编译好的固件, ...
- 第三代电力电子半导体:SiC MOSFET学习笔记(三)SiC驱动方案
如何为SiC MOSFET选择合适的驱动芯片?(英飞凌官方) 由于SiC产品与传统硅IGBT或者MOSFET参数特性上有所不同,并且其通常工作在高频应用环境中, 为SiC MOSFET选择合适的栅极驱 ...
- 【大功率摄影灯/舞台灯RGB调光驱动方案】DC-DC降压恒流LED双路调光芯片FP7126,共阳极高辉无频闪调光,调光深度可达万分之一
方案名称 [大功率摄影灯/舞台灯RGB调光驱动方案]DC-DC降压恒流LED双路调光芯片FP7126,共阳极高辉无频闪调光,调光深度可达万分之一 描述 FP7126 是平均电流模式控制的 LED 驱动 ...
最新文章
- 【设计模式】代理模式 ( 动态代理 )
- 多进程爬虫(爬取小说)Python实现
- 现代密码学3.7--CCA安全
- 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
- 基于centos6.7的docker私有仓库搭建
- ubuntu服务器创建共享文件夹,Ubuntu samba安装创建共享目录及使用
- oracle 存储过程设置回滚点,(转)oracle 存储过程事宜使用断点回滚 -savepoint
- 完美世界:笔试题(最小漂流船只数累计,主城之间的最小距离迪杰斯特拉)...
- 计算机怎么弹出专业团队,2018年专业技术人员继续教育答案92分
- 毫米和像素怎么换算_自己计算出来的关于像素和厘米单位的换算
- 小米路由器青春版开启SSH刷入Padavan固件
- python中数字的阶乘_python里面阶乘怎么打
- xcode清理缓存瘦身方法整理
- NetBeans IDE12.3无法卸载
- hardfault常见原因_STM32 出现 hardfault_handler 处理方法
- linux内核网络协议栈--netif_receive_skb()函数(八)
- 爬取B站视频 - m4s文件的相关研究
- Google Adsense通过西联快汇收取收入的详细步骤
- html语音输入功能讯飞,win10系统利用讯飞语音输入法实现电脑语音输入的方案介绍...
- cdoj1638 红藕香残玉簟秋,轻解罗裳,独上兰舟。