共用方式為


Hyper-V 可延伸交換器傳送和接收旗標

注意 此頁面假設您已熟悉 Hyper-V Extensible Switch 概觀和 混合式轉送中的資訊和圖表。

延伸件可以透過下列方式取得透過 Hyper-V 可延伸交換器資料路徑移動的封包流量:

  • 呼叫 filterSendNetBufferLists 函式時,延伸模組會從輸入數據路徑取得封包。 延伸模組會呼叫 NdisFSendNetBufferLists,將封包轉送至輸入數據路徑上的基礎延伸模組。 篩選和轉送延伸模組也可以呼叫 NdisFSendNetBufferListsComplete,從輸入數據路徑卸除封包。

  • 呼叫 filterReceiveNetBufferLists 函式時,延伸模組會從輸出數據路徑取得封包。 延伸模組透過呼叫 NdisFIndicateReceiveNetBufferLists,將封包轉送給輸出資料路徑上的上層延伸模組。 篩選和轉送延伸模組也可以呼叫 NdisFReturnNetBufferLists,從輸出數據路徑卸載封包。

下列旗標可以在 SendFlags 參數的 FilterSendNetBufferListsNdisFSendNetBufferLists中設定:

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
如果設定此旗標,則 NET_BUFFER_LIST 結構連結清單中的所有封包都源自相同的 Hyper-V 可延伸交換器來源埠。

當 NDIS 呼叫 FilterSendNetBufferLists時,如果可延伸交換器可延伸介面已將來自相同來源埠的多個封包分組,則會設定此旗標。 為了獲得最佳效能,擴充功能應該保留此群組,並在呼叫 NdisFSendNetBufferLists時設定此旗標。 如果延伸模組使用與清單中其他封包相同的來源埠,擴充功能也可以將任何原始或複製的封包新增至連結的 NET_BUFFER_LIST 結構清單。

注意 如果 NET_BUFFER_LIST 結構鏈接清單中的每個封包使用相同的來源埠,擴充功能應該會在完成傳送要求時,在 SendCompleteFlags 參數中設定NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE 旗標。

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
如果設定此旗標,NET_BUFFER_LIST 結構連結清單中的所有封包都會轉送至相同的可延伸交換器目的地埠。

轉送延伸模組可以使用此旗標作為 NET_BUFFER_LIST 結構的連結清單,該結構會在確定每個封包的目的端口後,在入口數據路徑上轉送。 此旗標會在轉送封包至輸出數據路徑前,先被可延伸交換器的底層迷你端口邊緣使用並移除。

擷取和篩選延伸模組無法使用這個旗標。

附註 轉送延伸模組只會決定非 NVGRE 封包的封包目的地埠。 如果封包是 NVGRE 封包,Hyper-V 網路虛擬化 (HNV) 元件會決定封包的目的地埠,並轉送封包。 如需詳細資訊,請參閱 混合式轉送

為了達到最佳效能,如果鏈接清單中的所有封包都轉送至相同的目的地埠,轉送延伸模塊應該設定此旗標。 藉由設定此旗標,延伸模組會確認連結清單中的所有封包在可延伸交換器轉送內容中具有相同的目的地埠元素。

附註 轉送延伸模組不得為具有多個目的地埠之封包的連結清單設定此旗標。

下列旗標可以在 FilterReceiveNetBufferListsReceiveFlags 參數中設定,或在 NdisFIndicateReceiveNetBufferLists中設定:

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
如果設定此旗標,則 NET_BUFFER_LIST 結構連結清單中的所有封包都源自相同的 Hyper-V 可延伸交換器來源埠。

當 NDIS 呼叫 FilterReceiveNetBufferLists時,如果可延伸交換器已將來自相同來源埠的多個封包分組,則會設定此旗標。 為了獲得最佳效能,擴充功能應該保留此群組,並在呼叫 NdisMIndicateReceiveNetBufferLists時設定此旗標。 如果封包與清單中的其他封包具有相同的來源埠,擴充功能也應該將任何原始或複製的封包新增至連結的 NET_BUFFER_LIST 結構清單。

注意 如果 NET_BUFFER_LIST 結構鏈接清單中的每個封包使用相同的來源埠,擴充功能應該在接收要求完成時,於 ReturnFlags 參數中設定 NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE 旗標 FilterReturnNetBufferLists。 如果擴充功能呼叫 NdisFReturnNetBufferLists 傳回不是來源或複製的封包,則擴充功能必須在 ReturnFlags 參數中設定此旗標。

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
如果設定此旗標,NET_BUFFER_LIST 結構連結清單中的所有封包都會轉送至相同的可延伸交換器目的地埠。

當 NDIS 呼叫 FilterReceiveNetBufferLists時,如果可延伸交換器已將多個具有相同目的地埠的封包分組,則會設定此旗標。 為了獲得最佳效能,擴充功能應該保留此群組,並在呼叫 NdisMIndicateReceiveNetBufferLists時設定此旗標。 如果封包具有與清單中其他封包相同的目的地埠,擴充功能也應該將任何原始或複製的封包新增至連結的 NET_BUFFER_LIST 結構清單。

注意 當擴充功能呼叫 NdisFIndicateReceiveNetBufferLists時,它不得在 ReceiveFlags 參數中設定 NDIS_RECEIVE_FLAGS_RESOURCES 旗標。 可延伸交換器介面會忽略此旗標,並呼叫 filterReturnNetBufferLists來完成接收指示。