SR-IOV 数据路径概述

启动 Hyper-V 子分区并运行来宾操作系统时,虚拟化堆栈会启动网络虚拟网络客户端 (NetVSC) 。 NetVSC 通过向来宾操作系统中运行的协议堆栈提供微型端口驱动程序边缘,将虚拟机 (VM) 网络适配器公开。 此外,NetVSC 提供了一个协议驱动程序边缘,允许它绑定到基础微型端口驱动程序。

NetVSC 还与 Hyper-V 父分区的管理操作系统中运行的 Hyper-V 可扩展交换机通信。 可扩展交换机组件作为网络虚拟服务提供商 (NetVSP) 运行。 NetVSC 和 NetVSP 之间的接口提供称为 合成数据路径的软件数据路径。 有关此数据路径的详细信息,请参阅 SR-IOV 综合数据路径

如果物理网络适配器支持单根 I/O 虚拟化 (SR-IOV) 接口,它可以启用一个或多个 PCI Express (PCIe) Virtual Functions (VF) 。 每个 VF 都可以附加到 Hyper-V 子分区。 发生这种情况时,虚拟化堆栈将执行以下步骤:

  1. 虚拟化堆栈在来宾操作系统中公开 VF 的网络适配器。 这会导致在来宾操作系统中运行的 PCI 驱动程序启动 VF 微型端口驱动程序。 此驱动程序由独立硬件供应商 (SR-IOV 网络适配器的 IHV) 提供。

  2. 加载并初始化 VF 微型端口驱动程序后,NDIS 会将来宾操作系统中 NetVSC 的协议边缘绑定到驱动程序。

    注意 NetVSC 仅绑定到 VF 微型端口驱动程序。 来宾操作系统中的其他协议堆栈无法绑定到 VF 微型端口驱动程序。

NetVSC 成功绑定到驱动程序后,来宾操作系统中的网络流量通过 VF 数据路径发生。 数据包通过网络适配器的基础 VF 而不是综合数据路径发送或接收。

有关 VF 数据路径的详细信息,请参阅 SR-IOV VF 数据路径

下图显示了 SR-IOV 网络适配器上支持的各种数据路径。

显示具有管理父分区和两个包含来宾操作系统的子分区的 SR-IOV 适配器的关系图。

启动 Hyper-V 子分区后和建立 VF 数据路径之前,网络流量会流经综合数据路径。 建立 VF 数据路径后,如果满足以下条件,网络流量可以还原到合成数据路径:

  • VF 将不附加到 Hyper-V 子分区。 例如,虚拟化堆栈可以从一个子分区中分离 VF,并将其附加到另一个子分区。 当正在运行的 Hyper-V 子分区多于基础 SR-IOV 网络适配器上的 VF 资源时,可能会发生这种情况。

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

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

有关 VF 故障转移和实时迁移的详细信息,请参阅 SR-IOV VF 故障转移和实时迁移