5.1。 先决条件
这个包目前是为尽可能低的 CPU 要求而编译的。 这仍然需要 CPU 至少支持 SSE3。
可以在支持的 NIC 中找到上游 DPDK 支持的网卡列表22. 但是其中很多在上游项目中默认被禁用,因为它们尚未处于稳定状态。 DPDK 在 Ubuntu 16.04 中可用的包中启用的网卡子集是:
英特尔
• e100023 (82540,82545,82546)
• e1000e24 (82571..82574、82583、ICH8..ICH10、PCH..PCH2)
• 免疫球蛋白B25 (82575..82576、82580、I210、I211、I350、I354、DH89xx)
• ixgbe26 (82598..82599、X540、X550)
• i40e27 (X710、XL710、X722)
• 调频 10k28 (FM10420)
切尔西奥
•cxgbe29 (终结者5)
思科
• 尼克30 (UCS 虚拟接口卡)半虚拟化
23 http://dpdk.org/doc/guides/nics/e1000em.html
24 http://dpdk.org/browse/dpdk/tree/drivers/net/e1000/
25 http://dpdk.org/browse/dpdk/tree/drivers/net/e1000/
26 http://dpdk.org/doc/guides/nics/ixgbe.html
27 http://dpdk.org/browse/dpdk/tree/drivers/net/i40e/
28 http://dpdk.org/doc/guides/nics/fm10k.html
29 http://dpdk.org/doc/guides/nics/cxgbe.html
30 http://dpdk.org/browse/dpdk/tree/drivers/net/enic
• 虚拟网络31 (QEMU)
•vmxnet332
其它
• af_packet33 (Linux AF_PACKET 套接字)
• 戒指34 (记忆)
最重要的是,它通过实验启用以下两个 PMD 驱动程序,因为它们代表最终用户非常容易访问的(虚拟)设备。
半虚拟化
• 虚拟环境35 (Xen)
其它
• 聚碳酸酯36 (文件或内核驱动程序)
卡必须从其内核驱动程序中取消分配,而是分配给 vfio-pci 的 uio_pci_generic。 uio_pci_generic 较旧,通常更容易工作。
较新的 vfio-pci 要求您激活以下内核参数以启用 iommu。
iommu=pt intel_iommu=开
在 vfio-pci 之上,您必须相应地配置和分配 iommu 组。
注意:在基于 virtio 的环境中,从内核驱动程序“取消分配”设备就足够了。 没有那个 DPDK 将拒绝使用设备以避免内核和 DPDK 同时在设备上工作的问题。 由于 DPDK 可以直接在 virtio 设备上工作,因此不需要为这些设备分配例如 uio_pci_generic。
手动配置和状态检查可以通过 sysfs 或使用工具 dpdk_nic_bind 完成
dpdk_nic_bind --帮助
用法:
------
dpdk_nic_bind [选项] DEVICE1 DEVICE2 ....
其中 DEVICE1、DEVICE2 等通过 PCI“domain:bus:slot.func”语法或“bus:slot.func”语法指定。 对于绑定到 Linux 内核驱动程序的设备,它们可能
31 http://dpdk.org/doc/guides/nics/virtio.html
32 http://dpdk.org/doc/guides/nics/vmxnet3.html
33 http://dpdk.org/browse/dpdk/tree/drivers/net/af_packet
34 http://dpdk.org/doc/guides/nics/pcap_ring.html#rings-based-pmd
35 http://dpdk.org/doc/guides/xen/pkt_switch.html#xen-pmd-frontend-prerequisites
36 http://dpdk.org/doc/guides/nics/pcap_ring.html#libpcap-based-pmd
也可以通过 Linux 接口名称来引用,例如 eth0、eth1、em0、em1 等。
选项:
--帮助,--用法:
显示使用信息并退出
-s,--状态:
打印所有已知网络接口的当前状态。
对于每个设备,它显示 PCI 域、总线、插槽和功能,以及设备的文本描述。 根据设备是由内核驱动程序、igb_uio 驱动程序还是没有驱动程序使用,将显示其他相关信息:
* Linux 接口名称,例如 if=eth0
* 正在使用的驱动程序,例如 drv=igb_uio
* 当前未使用该设备的任何合适的驱动程序
例如未使用=igb_uio
注意:如果此标志与绑定/取消绑定选项一起传递,则状态显示将始终在其他操作发生后发生。
-b 驱动程序,--bind=驱动程序:
选择要使用的驱动程序或“无”解除设备绑定
-u,--取消绑定:
解除设备绑定(相当于“-b none”)
- 力量:
默认情况下,Linux 使用的设备(如路由表中有路由所示)无法修改。 使用 --force 标志会覆盖此行为,允许强制解除绑定活动链接。
警告:这可能会导致网络连接丢失,应谨慎使用。
例子:
---------
显示当前设备状态:dpdk_nic_bind --status
从当前驱动程序绑定 eth1 并移动到使用 igb_uio dpdk_nic_bind --bind=igb_uio eth1
解除 0000:01:00.0 使用任何驱动程序的绑定 dpdk_nic_bind -u 0000:01:00.0
将 0000:02:00.0 和 0000:02:00.1 绑定到 ixgbe 内核驱动程序 dpdk_nic_bind -b ixgbe 02:00.0 02:00。