管理 Hyper-V 可延伸交換器轉送內容
注意 此頁面假設您已熟悉 Hyper-V 可延伸交換 器和 混合式轉送概觀中的資訊和圖表。
周遊 Hyper-V 可延伸交換器資料路徑的每個封包 NET_BUFFER_LIST 結構包含頻外 (OOB) 資料。 此資料會指定來自封包的來源埠,以及一或多個目的地埠來進行封包傳遞。 此 OOB 資料稱為 可延伸交換器轉送內容。
注意 可延伸的交換器轉送內容與 NET_BUFFER_LIST_CONTEXT 結構不同。 這可讓延伸模組配置自己的內容結構,而不會影響轉送內容。
可延伸交換器轉送內容會以下列方式配置和釋放:
當封包從網路介面卡抵達可延伸交換器時,可延伸交換器介面會配置轉送內容,並將它與封包 的NET_BUFFER_LIST 結構產生關聯。
當封包傳遞至其目的地埠時,介面會從封包 的NET_BUFFER_LIST 結構釋放轉送內容。
如果可延伸交換器延伸模組將新的或複製的封包插入可延伸交換器資料路徑中,它必須先配置轉送內容,才能呼叫 NdisFSendNetBufferLists。
擴充功能為新的或複製的封包配置 NET_BUFFER_LIST 結構之後,它必須呼叫 AllocateNetBufferListForwardingCoNtext 函式來配置封包的轉送內容。 傳送封包要求完成時,延伸模組必須先呼叫 FreeNetBufferListForwardingCoNtext ,才能釋放或重複使用 NET_BUFFER_LIST 結構。
注意 當擴充功能呼叫 AllocateNetBufferListForwardingCoNtext時,封包的來源埠會設定為 NDIS_SWITCH_DEFAULT_PORT_ID。 這會指定封包源自擴充功能,而不是抵達可延伸交換器埠。 在某些情況下,擴充功能可能會想要變更封包的來源埠。 如需詳細資訊,請參閱 修改封包的可延伸交換器來源埠資料。
如需詳細資訊,請參閱 Hyper-V 可延伸交換器傳送和接收作業。
所有可延伸交換器延伸模組都可以呼叫下列可延伸交換器處理常式函式,以存取封包轉送內容中的資料:
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成員。 如需詳細資訊,請參閱 排除封包傳遞至可延伸交換器目的地埠。