混合式轉送
從 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成員中。
注意NET_BUFFER_LIST的NetBufferListInfo成員通常稱為封包的「頻外 (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。 (請參閱 複製封包流量。)