共用方式為


將封包轉送至 Hyper-V 可延伸交換器埠

此頁面描述 Hyper-V 可延伸交換器轉送延伸模組如何將封包轉送至一或多個埠。 這種類型的擴充功能也可以將封包轉送至連線至可延伸交換器外部網路介面卡的個別網路介面卡。

注意 只有可延伸交換器轉送延伸模組或可延伸交換器本身才能將封包轉送至可延伸交換器埠。

注意此頁面假設您已熟悉Hyper-V 可延伸交換器和混合式轉送概觀中的資訊和圖表。

注意 在可延伸交換器介面中,NDIS 篩選驅動程式稱為 可延伸交換器延伸模組 ,而驅動程式堆疊稱為 可延伸交換器驅動程式堆疊。 如需擴充功能的詳細資訊,請參閱 Hyper-V 可延伸交換器擴充功能

如果在可延伸交換器驅動程式堆疊中安裝並啟用轉送延伸模組,則負責針對在可延伸交換器輸入資料路徑上取得的每個封包做出轉送決策。 根據這些轉送決策,延伸模組會將目的地埠新增至頻外 (OOB 的目的地埠陣列中,) 封包 NET_BUFFER_LIST 結構的資料。 封包完成可延伸交換器資料路徑的周遊之後,可延伸交換器介面會將封包傳遞至指定的目的地埠。

注意 如果未安裝或啟用轉送延伸模組,可延伸交換器會針對它從輸入資料路徑取得的封包進行轉送決策。 交換器會將目的地埠新增至封包 NET_BUFFER_LIST 結構的 OOB 資料,再將封包轉送至可延伸交換器輸出資料路徑。

注意 如果封包是 NVGRE 封包,轉送延伸模組可以將目的地埠新增至目的地埠陣列。 不過,Hyper-V 網路虛擬化 (HNV) 元件可延伸交換器負責判斷目的地埠和轉送封包。 如需詳細資訊,請參閱 混合式轉送

轉送延伸模組只能將埠目的地新增至從輸入資料路徑取得的封包。 在封包轉送出輸出資料路徑之後,篩選和轉送延伸模組可以排除封包傳遞至可延伸交換器埠。 如需詳細資訊,請參閱 排除封包傳遞至可延伸交換器目的地埠

在封包 NET_BUFFER_LIST 結構的 OOB 資料內,目的地埠的資料會包含在 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構中。 陣列中的每個元素都會定義目的地埠,並格式化為 NDIS_SWITCH_PORT_DESTINATION 結構。

轉送延伸模組可以呼叫下列 Hyper-V 可延伸交換器處理常式函式來管理 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構及其 NDIS_SWITCH_PORT_DESTINATION 專案:

AddNetBufferListDestination
此函式會將單一目的地埠新增至封包 OOB 資料中的 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構。

GetNetBufferListDestinations
此函式會傳回封包 OOB 資料中 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構的指標。

GrowNetBufferListDestinations
此函式會將更多目的地埠元素新增至封包 OOB 資料的 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構。

UpdateNetBufferListDestinations
此函式會認可擴充功能針對封包新增或排除一或多個目的地埠所做的修改。 這些變更會認可至封包 OOB 資料中的 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構。

呼叫轉送延伸模組的 FilterSendNetBufferLists 函式時, NetBufferList 參數會包含 連結 NET_BUFFER_LIST結構的指標。 每個結構都會指定從輸入資料路徑取得的封包。

針對此清單中的每個 NET_BUFFER_LIST 結構,轉送延伸模組會依照下列步驟新增封包的目的地埠:

  1. 延伸模組會根據各種類型的準則來轉送封包的決策。 這些準則包括下列各項:

    • 根據封包的來源埠和網路介面卡連線的原則準則。 轉送延伸模組會使用 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 宏來取得這項資訊。

    • 根據封包承載資料之可延伸交換器埠的原則準則。 例如,可延伸交換器埠的原則可能包含篩選準則,只允許傳遞 IP 第 4 版 (IPv4) 封包。

    注意 如果封包是 NVGRE 封包,可延伸交換器的 HNV 元件會負責轉送封包。 不過,轉送延伸模組可以在輸入和輸出路徑中套用自己的原則準則。 如需詳細資訊,請參閱 混合式轉送

  2. 如果延伸模組判斷封包可以轉送至一或多個可延伸交換器埠,則必須將目的地埠新增至封包的 OOB 資料。 如需此程式的詳細資訊,請參閱 將可延伸交換器目的地埠資料新增至封包

    注意 如果封包是 NVGRE 封包,則不需要轉送延伸模組即可新增目的地埠。 如需詳細資訊,請參閱 混合式轉送

  3. 如果延伸模組判斷封包無法轉送至任何可延伸交換器埠,則必須卸載封包。

    注意 如果封包是 NVGRE 封包,則這不是 True。 如需詳細資訊,請參閱 混合式轉送

  4. 如果延伸模組已新增一或多個封包的目的地埠,則必須呼叫 NdisFSendNetBufferLists ,以轉送輸出資料路徑上的封包。

    注意 如果封包是 NVGRE 封包,可延伸交換器的 HNV 元件會負責轉送封包。 如需詳細資訊,請參閱 混合式轉送

如需可延伸交換器輸入和輸出資料路徑的詳細資訊,請參閱 Hyper-V 可延伸交換器資料路徑