在不丢失连接的情况下将 DPDK 绑定到 NIC

在不丢失连接的情况下将 DPDK 绑定到 NIC

我想将 DPDK 绑定到 NIC,我正在遵循此文档这里
如果我只有一个物理网卡,我们如何确保在运行 dpdk_nic_bind 命令时不会失去与机器的连接?

更具体地说,我有一个 Google 计算虚拟机,我正尝试在其上执行此操作,但显然,当我执行此步骤时,我的 SSH 连接丢失了。有什么解决方法吗?

答案1

对此没有直接的解决方法。但是,有一些选项可以在不使用物理 NIC 的情况下运行 DPDK 应用程序:

在虚拟机中运行 DPDK

  1. 运行具有所需数量 NIC 的虚拟机。
  2. 在虚拟机内部,将 NIC 绑定到 UIO。
  3. 在虚拟机内部,运行 DPDK,它应该可以与虚拟机内部的 NIC 一起正常工作。

欲了解更多信息,请查看用于模拟 Virtio NIC 的 DPDK 轮询模式驱动程序

请注意,此选项可能在 VM 上不可用,即您可能无法在 VM 内运行 VM。

使用DPDK虚拟设备

  1. 编译支持DPDK libpcap
  2. 配置主机以照常运行 DPDK 应用程序(即启用大页面等)。
  3. 不要将任何 NIC 绑定到 UIO。
  4. 创建一些 TUN/TAP 接口,并通过物理 NIC 将它们桥接起来。
  5. 像往常一样运行 DPDK 应用程序,但传递一些--vdev参数来创建一些虚拟设备,例如:

    testpmd -l 0-3 -n 4 \ --vdev'net_pcap0,iface = tun0'--vdev'net_pcap1,iface = tun1'...

欲了解更多信息,请查看DPDK libpcap 轮询模式驱动程序

请注意,由于使用 Linux 内核功能和 pcap 库,此选项将显著降低 DPDK 性能。

使用 NIC 虚拟功能:

  1. 在主机上配置 SR-IOV 支持。
  2. 在主机 NIC 上配置一些虚拟功能。
  3. 在主机上,将一些 NIV 虚拟功能绑定到vfio-pci
  4. 在主机上,运行 DPDK,它应该可以与 NIC 虚拟功能一起正常工作。

有关 SR-IOV 的一般描述,您可能会发现DPDK Intel 虚拟功能驱动程序

请注意,此选项可能在 VM 上不可用。

答案2

由于实际情况的信息有限,我不得不根据您的问题描述做出一些假设。

  1. you want to receive and transmit normally through a single interface inside VM while using for DPDK application
  2. 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

相关内容