QEMU 来宾如何将数据包发送到主机的 NIC?
how QEMU guest can send packets to NIC of the host?
我正在尝试测试 XDP 程序,但测试环境是由客户端提供的,其中包括一台服务器和 qemu guest 运行ning 在其上并充当流量生成器(使用 scapy 或 DPDK)。为了让这个测试 运行 成功,来自来宾的数据包应该 arrive/be 注入主机的 NIC 驱动程序(XDP 在本机模式下工作)。有什么 configs/hacks 可以使流量从来宾到主机驱动程序吗?
编辑:
按照@vipin 的建议清除一些要点,
- 在主机上,NIC 连接到内核上的 virbr0。
- XDP 运行正在物理 NIC 上。
- 我正在使用 bpf_redirect_map 进行重定向,因为我们仍处于简单阶段。
无论如何,我有一个变通办法,就是在实验室设置中添加一个物理路由器,这对于这个测试阶段来说已经足够了。
Linux支持的XDP(Express Data Path)是针对RX端的,TX有补丁但没有集成。基于当前的更新,XDP-eBPF 在物理 NIC 上。所以物理NIC上的所有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。
我正在尝试测试 XDP 程序,但测试环境是由客户端提供的,其中包括一台服务器和 qemu guest 运行ning 在其上并充当流量生成器(使用 scapy 或 DPDK)。为了让这个测试 运行 成功,来自来宾的数据包应该 arrive/be 注入主机的 NIC 驱动程序(XDP 在本机模式下工作)。有什么 configs/hacks 可以使流量从来宾到主机驱动程序吗?
编辑: 按照@vipin 的建议清除一些要点,
- 在主机上,NIC 连接到内核上的 virbr0。
- XDP 运行正在物理 NIC 上。
- 我正在使用 bpf_redirect_map 进行重定向,因为我们仍处于简单阶段。
无论如何,我有一个变通办法,就是在实验室设置中添加一个物理路由器,这对于这个测试阶段来说已经足够了。
Linux支持的XDP(Express Data Path)是针对RX端的,TX有补丁但没有集成。基于当前的更新,XDP-eBPF 在物理 NIC 上。所以物理NIC上的所有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。