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

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

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

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

可扩展交换机转发上下文的分配与释放方式如下:

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

AllocateNetBufferListForwardingContext
分配可扩展交换机转发上下文,并准备一个 NET_BUFFER_LIST 结构,以便在可扩展交换机中进行发送或接收操作。

复制网络缓冲区列表信息
将转发上下文从源数据包 的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 可扩展交换机环境转发数据类型