NDIS 虚拟机队列 (VMQ) 简介

许多网络适配器可以支持网络服务器的多个单播媒体访问控制 (MAC) 地址。 因此,网络适配器可以接收具有目标 MAC 地址的网络数据帧,该地址与在网络适配器硬件上设置的任何单播 MAC 地址匹配,而不会处于混杂模式。 此类硬件可以为每个 MAC 地址分配接收队列,并将具有匹配 MAC 地址的传入帧路由到队列。 此功能以及从分配给每个虚拟机的内存地址空间为每个队列分配接收缓冲区的能力,是 VMQ 支持所需的主要功能。

支持 VMQ 的网络适配器可以使用 DMA 将所有应路由到接收队列的传入帧传输到为该队列分配的接收缓冲区。 微型端口驱动程序可以在一次接收指示调用中指示接收队列中的所有帧。

VMQ 提供以下功能:

  • 通过将多个虚拟机的网络流量处理分发到多个处理器) 多个虚拟机 (VM,从而提高网络吞吐量。

    注意 在 Hyper-V 中,子分区也称为 VM。

  • 通过将接收数据包筛选卸载到网络适配器硬件来降低 CPU 使用率。

  • 通过使用 DMA 将数据直接传输到 VM 内存来防止网络数据复制。

  • 拆分网络数据以提供安全的环境。 有关安全问题的详细信息,请参阅 NDIS 虚拟机 (VM) 共享内存的安全问题

    注意从 NDIS 6.30 和 Windows Server 2012 开始,不再支持将网络数据拆分为单独的观察缓冲区。

  • 支持实时迁移。 有关实时迁移的详细信息,请参阅 NDIS VMQ 实时迁移支持

为了介绍高级 VMQ 概念,本部分包括以下附加主题:

VMQ 组件

VMQ 接收队列

VMQ 接收筛选器