NDIS_STATUS_SWITCH_PORT_REMOVE_VF
NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示由 Hyper-V 可扩展交换机转发扩展发出,以删除虚拟机(VM)网络适配器和 PCI Express(PCIe)虚拟函数(VF)之间的绑定。 VF 由支持单根 I/O 虚拟化(SR-IOV)接口的基础物理网络适配器公开和支持。
若要发出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示,转发扩展必须在 NDIS_SWITCH_NIC_STATUS_INDICATION 结构中封装该指示,并发出 NDIS_STATUS_SWITCH_NIC_STATUS 状态指示。
有关此过程的详细信息,请参阅 颁发 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示指南。
言论
PCIe VF 由支持 SR-IOV 接口的基础物理适配器创建和分配。 创建后,虚拟化堆栈会附加或 将 VF 分配给 Hyper-V 子分区。 在此分区中运行的来宾作系统公开了绑定到基础 SR-IOV 物理适配器的 VF 的虚拟机(VM)网络适配器。
分配虚拟和物理网络适配器后,数据包将直接在 VF 和 VM 网络适配器之间路由。 但是,由于可扩展交换机不涉及数据包传递,因此可扩展交换机端口策略不会应用于这些数据包。 这包括访问控制列表(ACL)和服务质量(QoS)的端口策略。
可扩展交换机转发扩展可以通过发出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示来删除 VF 到子分区的分配。 此指示会导致数据包通过可扩展交换机端口传递,而不是直接在 VM 网络适配器与基础 SR-IOV 物理适配器的 VF 之间传递。 这样,可扩展交换机端口策略就可以应用于通过可扩展交换机端口接收或发送的数据包。
当转发扩展发出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示时,它指定 VM 网络适配器连接到的可扩展交换机端口。
有关可扩展切换转发扩展的详细信息,请参阅 转发扩展。
发出NDIS_STATUS_SWITCH_PORT_REMOVE_VF状态指示的准则
若要发出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示,转发扩展必须遵循以下步骤:
转发扩展初始化 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示的 NDIS_STATUS_INDICATION 结构。 对于此指示,转发扩展设置 NDIS_STATUS_INDICATION 结构的以下成员:
StatusCode 成员必须设置为 NDIS_STATUS_SWITCH_PORT_REMOVE_VF。
StatusBuffer 成员必须设置为 NULL。
StatusBufferSize 必须设置为零。
转发扩展初始化 NDIS_SWITCH_NIC_STATUS_INDICATION 结构。 若要删除 VF 分配,转发扩展必须通过以下方式设置成员:
必须将 DestinationPortId 成员设置为 VM 网络适配器连接到的可扩展交换机端口的标识符。
必须将 DestinationNicIndex 成员设置为连接到指定端口的 VM 网络适配器的索引值。
必须将 SourcePortId 成员设置为 NDIS_SWITCH_DEFAULT_PORT_ID。
SourceNicIndex 成员必须设置为 NDIS_SWITCH_DEFAULT_NIC_INDEX。
StatusIndication 成员必须设置为 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示 NDIS_STATUS_INDICATION 结构的地址。
转发扩展初始化 NDIS_SWITCH_NIC_STATUS_INDICATION 指示的 NDIS_STATUS_INDICATION 结构。 对于此指示,转发扩展设置 NDIS_STATUS_INDICATION 结构的以下成员:
必须将 StatusCode 成员设置为 NDIS_STATUS_SWITCH_NIC_STATUS。
StatusBuffer 成员必须设置为 NDIS_SWITCH_NIC_STATUS_INDICATION 结构的地址。
StatusBufferSize 必须设置为 NDIS_SWITCH_NIC_STATUS_INDICATION 结构和 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示 NDIS_STATUS_INDICATION 结构的长度(以字节为单位)。
转发扩展必须调用 ReferenceSwitchNic 来递增 VM 网络适配器的引用计数器。 如果 ReferenceSwitchNic 未完成NDIS_STATUS_SUCCESS,则转发扩展不得转发状态指示。
注意 如果转发扩展已收到 VM 适配器的 OID_SWITCH_NIC_DISCONNECT 集请求,则它不得调用 ReferenceSwitchNic,也不能转发状态指示。
转发扩展调用 NdisFIndicateStatus,将 NDIS_STATUS_INDICATION 转发到可扩展交换机驱动程序堆栈中的过度扩展。 当转发扩展调用此函数时,它将 StatusIndication 参数设置为指向 NDIS_STATUS_SWITCH_NIC_STATUS 指示 NDIS_STATUS_INDICATION 结构的指针。
NdisFIndicateStatus 返回后,转发扩展必须调用 DereferenceSwitchNic 来递减 VM 网络适配器的引用计数器。
注意 转发扩展必须按照前面步骤执行转发扩展删除的每个 VF 分配。
有关如何转发扩展转发状态指示的详细信息,请参阅 筛选器模块状态指示。
确定 VF 分配指南
转发扩展可以通过发出 OID_SWITCH_NIC_ARRAY的 OID 查询请求来枚举虚拟网络适配器的当前 VF 分配。 此请求返回一个包含 NDIS_SWITCH_NIC_PARAMETERS 结构的数组的 NDIS_SWITCH_NIC_ARRAY 结构。 每个 NDIS_SWITCH_NIC_PARAMETERS 结构指定在下列环境中公开的网络适配器的参数:
在 Hyper-V 父分区中运行的管理作系统。
使用此作系统中公开的网络适配器指定 NDIS_SWITCH_NIC_TYPE 枚举值为 NdisSwitchNicTypeExternal 或 NdisSwitchNicTypeInternal。
在 Hyper-V 子分区中运行的来宾作系统。
此作系统中公开的网络适配器使用 NdisSwitchNicTypeSynthetic 或 NdisSwitchNicTypeEmulated指定 NDIS_SWITCH_NIC_TYPE 枚举值。
如果 OID_SWITCH_NIC_ARRAY 的 OID 查询请求以NDIS_STATUS_SUCCESS状态完成,则转发扩展可以通过检查返回的数组中的每个 NDIS_SWITCH_NIC_PARAMETERS 结构来确定 VF 分配。 如果 NDIS_SWITCH_NIC_PARAMETERS 结构的 VFsigned 成员设置为 TRUE,则对应于 NDIS_SWITCH_NIC_PARAMETERS 结构的网络适配器将分配给 VF。
转发扩展可以通过发出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示来删除分配。 在这种情况下,转发扩展必须将 NDIS_SWITCH_NIC_STATUS_INDICATION 的 DestinationPortId 成员设置为 NDIS_SWITCH_NIC_PARAMETERS 结构的 PortId 成员的值。
有关如何发出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示的详细信息,请参阅 颁发 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示指南。
要求
版本 |
NDIS 6.30 及更高版本中受支持。 |
页眉 |
Ndis.h (包括 Ndis.h) |