SR-IOV 合成数据路径

启动 Hyper-V 子分区并且来宾操作系统正在运行时,虚拟化堆栈将启动网络虚拟网络客户端 (NetVSC) 。 NetVSC 公开虚拟机 (VM) 网络适配器,该适配器向来宾操作系统中运行的协议堆栈提供微型端口驱动程序边缘。

NetVSC 还与 Hyper-V 可扩展交换机通信,该交换机在 Hyper-V 父分区的管理操作系统中运行。 可扩展交换机组件充当网络虚拟服务提供商 (NetVSP) 。 NetVSC 和 NetVSP 之间的接口提供了一个称为 综合数据路径的软件数据路径

下图显示了基于 SR-IOV 网络适配器的合成数据路径的组件。

stack diagram showing a sr-iov adapter underneath a management parent partition communicating over a vmbus to a child partition containing a guest operating system.

如果基础 SR-IOV 网络适配器为 PCI Express (PCIe) 虚拟函数 (VF) 分配资源,则虚拟化堆栈会将 VF 附加到 Hyper-V 子分区。 附加后,子分区中的数据包流量将通过硬件优化的 VF 数据路径而不是合成的数据路径发生。 有关 VF 数据路径的详细信息,请参阅 SR-IOV 数据路径

如果满足以下条件之一,虚拟化堆栈仍可能为 Hyper-V 子分区启用合成数据路径:

  • SR-IOV 网络适配器没有足够的 VF 资源来容纳已启动的所有 Hyper-V 子分区。 网络适配器上的所有 VF 都附加到子分区后,其余分区将使用综合数据路径。

    从 VF 数据路径故障转移到合成数据路径的过程称为 VF 故障转移

  • VF 已附加到 Hyper-V 子分区,但会分离。 例如,虚拟化堆栈可以将 VF 从一个子分区分离,并将其附加到另一个子分区。 如果运行的 Hyper-V 子分区数大于基础 SR-IOV 网络适配器上的 VF 资源,则可能会出现这种情况。

  • Hyper-V 子分区正在实时迁移到其他主机。

尽管基于 SR-IOV 网络适配器的合成数据路径不如 VF 数据路径那么高效,但它仍然可以进行硬件优化。 例如,如果 (VPorts) 的一个或多个虚拟端口配置并附加到 PCIe 物理函数 (PF) ,则数据路径可以提供类似于虚拟机队列 (VMQ) 接口的卸载功能。 有关详细信息,请参阅 非默认虚拟端口和 VMQ