混合式轉送
從 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。 (請參閱 複製封包流量)。