管理 Hyper-V 可扩展交换机转发上下文

注意 本页假定你熟悉 Hyper-V 可扩展交换机混合转发概述中的信息和关系图。

遍历 Hyper-V 可扩展交换机数据路径的每个数据包的 NET_BUFFER_LIST 结构包含带外 (OOB) 数据。 此数据指定数据包的源端口,以及一个或多个用于数据包传送的目标端口。 此 OOB 数据称为 可扩展交换机转发上下文

注意 可扩展交换机转发上下文不同于 NET_BUFFER_LIST_CONTEXT 结构。 这允许扩展分配自己的上下文结构,而不会影响转发上下文。

可扩展交换机转发上下文按以下方式分配和释放:

所有可扩展交换机扩展都可以调用以下可扩展交换机处理程序函数来访问数据包转发上下文中的数据:

AllocateNetBufferListForwardingContext
分配可扩展交换机转发上下文,并为可扩展交换机中的发送或接收操作准备 NET_BUFFER_LIST 结构。

CopyNetBufferListInfo
将转发上下文从源数据包的 NET_BUFFER_LIST 结构复制到目标数据包的 NET_BUFFER_LIST 结构。 此数据包括可扩展交换机源端口和网络适配器信息。 可扩展交换机目标端口信息也可以复制到目标数据包。

FreeNetBufferListForwardingContext
释放 NET_BUFFER_LIST 结构的可扩展交换机转发上下文中的资源。 此数据用于 Hyper-V 可扩展交换机中的发送或接收操作,以前通过调用 AllocateNetBufferListForwardingContext 函数进行分配。

GetNetBufferListDestinations
从数据包 NET_BUFFER_LIST 结构的转发上下文返回目标端口。

转发扩展负责为数据包添加目标端口,除非数据包是 NVGRE 数据包。 (有关详细信息,请参阅 混合转发。) 扩展调用以下可扩展交换机处理程序函数以在数据包的转发上下文中添加或更新目标端口:

AddNetBufferListDestination
将单个目标添加到由 NET_BUFFER_LIST 结构指定的数据包的可扩展交换机转发上下文区域。

注意 此调用会将更改提交到转发上下文区域。 在这种情况下,转发扩展不需要调用 UpdateNetBufferListDestinations

GrowNetBufferListDestinations
增加数据包 NET_BUFFER_LIST结构的转发 上下文区域中的目标端口数组的大小。

UpdateNetBufferListDestinations
提交扩展对数据包的一个或多个可扩展交换机目标端口所做的修改。 此函数使用这些更改更新数据包 NET_BUFFER_LIST 结构的转发上下文。

注意转发扩展将目标端口的更改提交到转发上下文后,无法删除目标端口,并且只能更改目标端口NDIS_SWITCH_PORT_DESTINATION结构的 IsExcluded 成员。 有关详细信息,请参阅 排除到可扩展交换机目标端口的数据包传送

Hyper-V 可扩展交换机转发上下文

Hyper-V 可扩展交换机转发上下文数据类型