將封包轉送至實體網路適配器
注意 此頁面假設您已熟悉下列頁面中的資訊和圖表:
本頁說明 Hyper-V 擴展交換器轉發擴展功能如何將封包的發送請求轉發至底層實體適配器。 一或多個實體網路介面卡可以系結至可延伸交換器外部網路介面卡。
例如,可延伸交換器外部網路適配器可以系結至 NDIS 多任務器 (MUX) 中繼驅動程式的虛擬迷你埠邊緣。 MUX 中繼驅動程式本身可以繫結至主機上一個或多個實體網路的群組。 這個設定稱為 可延伸交換器小組。 如需可延伸交換器小組的詳細資訊,請參閱 實體網路適配器組態的類型。
在此設定中,可延伸交換器擴充功能會公開給可延伸交換器小組中的每個網路適配器。 這可讓可延伸交換器驅動程式堆疊中的轉送延伸模組管理小組中個別網路適配器的設定和使用。 例如,擴充套件可以將傳出封包轉送至個別配接器,從而在小組中提供對負載平衡故障轉移(LBFO)解決方案的支援。 例如,這種擴充功能被稱為 團隊協作提供者。 如需小組提供者的詳細資訊,請參閱 Teaming Provider Extensions。
如果在可延伸交換器驅動程式堆疊中安裝並啟用轉送延伸模組,它就會負責針對在可延伸交換器輸入數據路徑上取得的每個封包做出轉送決策,除非封包是 NVGRE 封包。 (如需 NVGRE 封包的詳細資訊,請參閱 混合式轉送。根據這些轉送決策,擴充功能可以將目的地埠新增至封包 NET_BUFFER_LIST 結構的頻外 (OOB) 數據。 封包完成可延伸交換器數據路徑的周游之後,可延伸交換器介面會將封包傳遞至指定的目的地埠。
注意 如果未安裝或啟用轉送延伸模組,可延伸交換器本身會針對它從輸入數據路徑取得的封包進行轉送決策。 交換器會將目的地埠新增至封包 NET_BUFFER_LIST 結構的 OOB 數據,再將封包轉送至可延伸交換器輸出數據路徑。
呼叫轉送延伸模組的 FilterSendNetBufferLists 函式時,NetBufferList 參數包含指向 NET_BUFFER_LIST 結構的連結清單的指標。 每個結構都會指定從輸入數據路徑取得的封包。 在每個封包 NET_BUFFER_LIST 結構的 OOB 數據中,目的地埠的數據會包含在 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構中。 延伸模組會藉由呼叫 GetNetBufferListDestinations來取得 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構和其元素。
Note 若要改善效能,轉送延伸模組可以呼叫 GrowNetBufferListDestinations 函式,而不是 GetNetBufferListDestinations,以取得 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 結構的指標。 如果延伸模組判定它需要封包的 OOB 數據中的其他陣列元素以指定目的地埠,則會執行這個操作。 如需詳細資訊,請參閱 將可延伸交換器目的地埠數據新增至封包。
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 陣列中的每個元素都會定義目的地埠,並格式化為 NDIS_SWITCH_PORT_DESTINATION 結構。 此結構包含下列成員:
PortId 成員包含值,指定可延伸交換器上的目的地埠。
NicIndex 成員會指定連接到 PortId 成員所指定之可延伸交換器埠的網路適配器索引。
如需這些索引值的詳細資訊,請參閱 網路適配器索引值。
如果轉發擴充套件新增連接到外部網路介面卡的目的埠,擴充套件可以指定基礎實體網路介面卡的索引。 例如,延伸模組可以做為支援 LBFO 的小組提供者,透過可延伸交換器小組運作。 這可讓擴充套件將傳送請求轉送給團隊的不同配接器,以平衡流量的負載。
轉送延伸模組在新增或修改 NDIS_SWITCH_PORT_DESTINATION 結構時,必須遵循下列指導方針,以將要求轉送至基礎實體網路適配器:
如果 PortId 成員指定外部網路適配器連接的可延伸交換器埠,擴充功能必須將 NicIndex 成員設定為下列其中一個索引值:
如果僅有一張實體網路介面卡綁定至外部網路介面卡,擴充功能必須要將 NicIndex 成員設定為 NDIS_SWITCH_DEFAULT_NIC_INDEX 或 1。
如果多個實體網路適配器系結至外部網路適配器,擴充功能必須將 NicIndex 成員設定為可延伸交換器小組中目的地網路適配器的非零索引值。
注意 如果 PortId 成員未指定外部網路適配器連接的可延伸交換器埠,擴充功能必須將 NicIndex 成員設定為 NDIS_SWITCH_DEFAULT_NIC_INDEX。
擴充功能新增封包的所有目的埠之後,它必須呼叫 NdisFSendNetBufferLists,才能在輸入數據路徑上轉送封包。
如需如何將目的地埠新增至封包的詳細資訊,請參閱 將封包轉送至 Hyper-V 可延伸交換器埠。
如需輸出資料路徑的詳細資訊,請參閱 Hyper-V 可延伸交換器資料路徑。