共用方式為


混合式轉送

從 NDIS 6.40 (Windows Server 2012 R2 開始,Hyper-V 可延伸交換器架構支援可延伸交換器 Hyper-V 網路虛擬化 (HNV) 元件和轉送延伸模組來進行混合式轉送。

注意 此頁面假設您已 熟悉使用一般路由封裝 (NVGRE) 工作卸除Hyper-V 可延伸交換器概觀的網路虛擬化。

NVGRE 和非 NVGRE 封包

在混合式轉送環境中,有兩種類型的封包進入和離開 Hyper-V 可延伸交換器:NVGRE 封包和非 NVGRE 封包。

  • NVGRE 封包具有 NVGRE:使用一般路由封裝的網路虛擬化 因特網草稿中指定的封裝格式。 NVGRE 封包是由 Hyper-V 可延伸交換器的 HNV 元件轉送。
  • 非 NVGRE 封包只是一般網路封包。 非 NVGRE 封包是由轉送延伸模組轉送(或者,如果沒有轉送延伸模組,則為可延伸交換器本身)。

透過交換器流出 NVGRE 和非 NVGRE 封包

在輸入數據路徑中,在擷取和篩選擴展模組之後,但在轉發擴展模組之前,如果封包是 NVGRE 封包,則可擴展交換器會在封包的 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 結構中設定 NativeForwardingRequired 旗標。 這個結構包含在封包 NET_BUFFER_LIST 結構的 NetBufferListInfo 成員中。

附註NetBufferListInfo 成員在 NET_BUFFER_LIST 中通常被稱為封包的「帶外(OOB)數據」。

如果在封包的 OOB 數據中設定 NativeForwardingRequired 旗標,封包會是 NVGRE 封包。 如果未設定,封包是非 NVGRE 封包。

擴充功能應該使用 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 宏來檢查 NativeForwardingRequired 標誌的值。

NVGRE 和非 NVGRE 封包的處理方式如下:

  • Hyper-V 可延伸交換器的 HNV 元件會轉送所有 NVGRE 封包,也就是說,它會決定這些封包的目的地數據表。
  • HNV 元件會視需要執行 NVGRE 封裝和解構。
  • 轉送延伸模組會轉送所有非 NVGRE 封包。
  • 轉送延伸模組無法轉送 NVGRE 封包,但它可以執行與篩選延伸模組相同的篩選動作,包括新增或排除目的地埠,甚至卸載封包。
  • 如果沒有轉送延伸模組,Hyper-V 可延伸交換器會轉送所有封包。

如需詳細資訊,請參閱 透過可延伸交換器數據路徑的封包流程。

支援第三方網路虛擬化

VirtualSubnetId 可以在 VM 網路適配器埠上設定為外部虛擬子網。 此功能已新增,以啟用轉送延伸模組以提供第三方網路虛擬化解決方案。 在輸入時,Hyper-V 可延伸交換器不會在這些封包的 NET_BUFFER_LIST 結構中設定 NativeForwardingRequired 旗標。 轉送延伸模組接著可以在轉送期間視需要修改封包標頭。 要修改的封包必須複製,且其 ParentNetBufferList 指標設定為原始 NET_BUFFER_LIST。 (請參閱 複製封包流量)。

將可延伸交換器目的地埠數據新增至封包

複製封包流量

轉送延伸模組

封包流程透過可延伸交換器資料路徑

NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO