QEMU 来宾如何向主机的 NIC 发送数据包?

时间:2021-06-03 04:16:14

标签: qemu xdp-bpf

我正在尝试测试 XDP 程序,但客户端提供的测试环境由一台服务器和在其上运行的 qemu 来宾组成,并充当流量生成器(使用 scapy 或 DPDK)。为了让这个测试成功运行,来自来宾的数据包应该到达/被注入到主机的 NIC 驱动程序(XDP 在本机模式下工作)。是否有任何配置/黑客可以使流量从访客传输到主机驱动程序?

编辑: 正如@vipin 建议的那样,一些要点需要清除,

  • 在主机上,NIC 连接到内核上的 virbr0。
  • XDP 在物理 NIC 上运行。
  • 我正在使用 bpf_redirect_map 进行重定向,因为我们仍处于简单阶段。

无论如何,我有一个解决办法就是在实验室设置中添加一个物理路由器,这对于这个阶段的测试来说已经足够了。

1 个答案:

答案 0 :(得分:0)

Linux 中支持的 XDP(Express Data Path)是针对 RX 端的,并且有针对 TX 的补丁,但没有集成。基于当前的更新,XDP-eBPF 在物理网卡上。所以物理网卡上的所有RX数据包都被处理了。

但根据共享的问题 packets from the guest should arrive/be injected to the NIC driver ( XDP working in native mode ) of the host.。如果需要为来自 GUEST OS 的流量运行逻辑,则必须将 XDP 加载到 emulator or TAP or Bridge 接口。这将允许基于内核 NIC id 将数据包重定向到物理 NIC。