我想将 DPDK 绑定到 NIC,我正在遵循此文档这里
如果我只有一个物理网卡,我们如何确保在运行 dpdk_nic_bind 命令时不会失去与机器的连接?
更具体地说,我有一个 Google 计算虚拟机,我正尝试在其上执行此操作,但显然,当我执行此步骤时,我的 SSH 连接丢失了。有什么解决方法吗?
答案1
对此没有直接的解决方法。但是,有一些选项可以在不使用物理 NIC 的情况下运行 DPDK 应用程序:
在虚拟机中运行 DPDK
- 运行具有所需数量 NIC 的虚拟机。
- 在虚拟机内部,将 NIC 绑定到 UIO。
- 在虚拟机内部,运行 DPDK,它应该可以与虚拟机内部的 NIC 一起正常工作。
欲了解更多信息,请查看用于模拟 Virtio NIC 的 DPDK 轮询模式驱动程序。
请注意,此选项可能在 VM 上不可用,即您可能无法在 VM 内运行 VM。
使用DPDK虚拟设备
- 编译支持DPDK
libpcap
。 - 配置主机以照常运行 DPDK 应用程序(即启用大页面等)。
- 不要将任何 NIC 绑定到 UIO。
- 创建一些 TUN/TAP 接口,并通过物理 NIC 将它们桥接起来。
像往常一样运行 DPDK 应用程序,但传递一些
--vdev
参数来创建一些虚拟设备,例如:testpmd -l 0-3 -n 4 \ --vdev'net_pcap0,iface = tun0'--vdev'net_pcap1,iface = tun1'...
欲了解更多信息,请查看DPDK libpcap 轮询模式驱动程序。
请注意,由于使用 Linux 内核功能和 pcap 库,此选项将显著降低 DPDK 性能。
使用 NIC 虚拟功能:
- 在主机上配置 SR-IOV 支持。
- 在主机 NIC 上配置一些虚拟功能。
- 在主机上,将一些 NIV 虚拟功能绑定到
vfio-pci
- 在主机上,运行 DPDK,它应该可以与 NIC 虚拟功能一起正常工作。
有关 SR-IOV 的一般描述,您可能会发现DPDK Intel 虚拟功能驱动程序。
请注意,此选项可能在 VM 上不可用。
答案2
由于实际情况的信息有限,我不得不根据您的问题描述做出一些假设。
you want to receive and transmit normally through a single interface inside VM while using for DPDK application
you do not want to create tap or vhost interface from the host and pass it through guest
基于这些假设,我的谦虚建议是在当前接口上使用 XDP-BPF 将选定或所需的测试流量重定向到 AF-SOCK。启动 DPDK 19.11.1 LTS 以在所需的 DPDK 应用程序中使用 AF-XDP PMD。
[EDIT-1] 我已经解释过使用 DPDK 而不丢失 ssh