Hyper-V 可延伸交換器網路介面卡概觀

Hyper-V 可延伸交換器支援來自各種虛擬或實體網路介面卡的連線。 這些網路介面卡類型的連線是透過可延伸的交換器埠來建立。 埠會在建立虛擬網路介面卡連線之前建立,並在網路介面卡連線中斷之後刪除。

例如,當 Hyper-V 子磁碟分割啟動時,可延伸交換器介面會在虛擬機器 (VM) 網路介面卡公開在客體作業系統內之前建立埠。 在 VM 網路介面卡公開並列舉之後,可延伸交換器介面會在 VM 網路介面卡與可延伸交換器埠之間建立網路連線。 如果子分割區停止,可延伸交換器介面會先刪除網路連線,然後刪除可延伸交換器埠。

Hyper-V 可延伸交換器支援來自下列虛擬網路介面卡類型的連線:

外部網路介面卡
這是可在 Hyper-V 父分割區中執行之管理作業系統中公開的可延伸交換器網路介面卡。 每個可延伸交換器僅支援一個外部網路介面卡連線。

外部網路介面卡會提供與主機上可用之實體網路介面的連線。 外部網路介面卡可由 Hyper-V 父分割區和所有子分割區存取。

如需這種類型的網路介面卡的詳細資訊,請參閱 外部網路介面卡

內部網路介面卡
這是可在 Hyper-V 父分割區中執行之管理作業系統中公開的可延伸交換器網路介面卡。 每個可延伸交換器僅支援一個內部網路介面卡連線。

內部網路介面卡會針對在管理作業系統中執行的進程,提供可延伸交換器的存取權。 這可讓這些進程透過可延伸交換器傳送或接收封包。

如需這種類型的網路介面卡的詳細資訊,請參閱 內部網路介面卡

虛擬機器 (VM) 網路介面卡
這是可在 Hyper-V 子分割區中執行的客體作業系統中公開的可延伸交換器網路介面卡。

注意 在 Hyper-V 中,子分割也稱為 VM。

VM 網路介面卡支援下列虛擬化類型:

  • VM 網路介面卡可以是網路介面卡的綜合虛擬化, (綜合網路介面卡) 。 在此情況下,在 VM 中執行的網路虛擬服務用戶端 (NetVSC) 會公開此虛擬網路介面卡。 NetVSC 會透過 VM 匯流排 (VMBus) ,將封包轉送至 VM 匯流排,以及從可延伸的交換器埠來回轉送。

  • VM 網路介面卡可以是實體網路介面卡的模擬虛擬化, (模擬的網路介面卡) 。 在此情況下,VM 網路介面卡會模擬 Intel 網路介面卡,並使用硬體模擬將封包轉送至可延伸交換器埠,以及從可延伸交換器埠轉送封包。

如需這種類型的網路介面卡的詳細資訊,請參閱 虛擬機器網路介面卡

可延伸交換器網路介面卡連線會透過下列可延伸交換器 OID 要求建立、更新和刪除:

OID_SWITCH_NIC_CREATE
可延伸交換器的通訊協定邊緣發出 OID 集合要求 OID_SWITCH_NIC_CREATE ,以通知可延伸交換器擴充功能如何建立可延伸交換器埠的網路介面卡連線。 先前必須透過 OID_SWITCH_PORT_CREATE的 OID 集合要求來建立埠。

OID_SWITCH_NIC_CREATE要求只會通知擴充功能,指出新的可延伸交換器網路介面卡連線正在啟動,而且封包流量很快就會開始透過指定的埠發生。

延伸模組可以傳回 OID 要求的STATUS_DATA_NOT_ACCEPTED,以 veto 建立通知。 例如,如果擴充功能無法在用於網路介面卡連線的埠上滿足其設定的原則,擴充功能應該會保留建立通知。

如果擴充功能接受建立通知,則必須將 OID 要求轉送至可延伸交換器驅動程式堆疊。 此延伸模組會監視此 OID 要求的完成狀態,以判斷基礎延伸模組是否已通過建立通知。

建立網路介面卡連線時,會指派NDIS_SWITCH_NIC_INDEX值。 此索引值會識別可延伸交換器埠上的網路介面卡連線。 外部、內部和 VM 網路介面卡的連線會指派NDIS_SWITCH_NIC_INDEX值為 NDIS_SWITCH_DEFAULT_NIC_INDEX。 系結至外部網路介面卡的每個實體或虛擬網路介面卡都會以下列方式指派NDIS_SWITCH_NIC_INDEX值:

  • 如果實體或虛擬網路介面卡直接系結至外部網路介面卡,則會為其指派NDIS_SWITCH_NIC_INDEX值。

  • 如果實體網路介面卡是可延伸交換器小組的一部分,則會指派大於或等於一的NDIS_SWITCH_NIC_INDEX值。 可延伸交換器小組是一種設定,其中一或多個實體網路介面卡的小組會系結至可延伸交換器外部網路介面卡。

如需實體網路介面卡可以系結至外部網路介面卡之不同組態的詳細資訊,請參閱 實體網路介面卡組態的類型

如需NDIS_SWITCH_NIC_INDEX值的詳細資訊,請參閱 網路介面卡索引值

注意 擴充功能無法透過網路介面卡連線產生或轉送封包,直到可延伸交換器的通訊協定邊緣發出 OID_SWITCH_NIC_CONNECT的 OID 集合要求為止。

OID_SWITCH_NIC_CONNECT
可延伸交換器的通訊協定邊緣會發出 OID 集合 OID_SWITCH_NIC_CONNECT 要求,以通知可延伸交換器擴充功能可延伸交換器網路介面卡連線完全正常運作。

擴充功能必須一律將此 OID 集合要求轉送至可延伸交換器驅動程式堆疊。 延伸模組不得使要求失敗。

OID 要求完成NDIS_STATUS_SUCCESS之後,網路介面卡連線和可延伸交換器埠就會完全運作。 當網路介面卡連線處於此狀態時,擴充功能可以執行下列動作:

  • 產生或轉送封包流量至埠的網路介面卡連線。

  • 發出可延伸交換器 OID 或狀態指示,指出使用埠作為來源埠。

  • 呼叫 ReferenceSwitchNic 以遞增網路介面卡連接的參考計數器。 當參考計數器具有非零值時,可延伸交換器介面將不會終止網路介面卡連線。

OID_SWITCH_NIC_UPDATED
可延伸交換器的通訊協定邊緣會發出 OID 集合OID_SWITCH_NIC_UPDATED要求,以通知可延伸交換器擴充功能已更新可延伸交換器網路介面卡的參數。 OID 只會針對已連線的 OID 發出,且尚未開始中斷連線程式。 這些執行時間設定變更可能包括NicFriendlyNameMTUNetCfgInstanceIdPermanentMacAddress、VMMacAddress、CurrentMacAddressVFAssigned。

擴充功能必須一律將此 OID 集合要求轉送至可延伸交換器驅動程式堆疊。 延伸模組不得使要求失敗。

OID_SWITCH_NIC_DISCONNECT
可延伸交換器的通訊協定邊緣發出 OID 集合要求 OID_SWITCH_NIC_DISCONNECT ,以通知可延伸交換器網路介面卡連線已損毀的可延伸交換器擴充功能。 完全中斷連線之後,可延伸交換器的通訊協定邊緣會發出 OID 集合要求 OID_SWITCH_NIC_DELETE

擴充功能必須一律將此 OID 集合要求轉送至可延伸交換器驅動程式堆疊。 延伸模組不得使要求失敗。

延伸模組轉送此 OID 要求之後,就無法再產生或轉送封包至網路介面卡連線已中斷的埠。 此外,擴充功能無法再針對網路介面卡連線呼叫 ReferenceSwitchNic

OID_SWITCH_NIC_DELETE
可延伸交換器的通訊協定邊緣發出 OID 集合要求 OID_SWITCH_NIC_DELETE ,以通知可延伸交換器網路介面卡連線已損毀和刪除可延伸交換器擴充功能。 此 OID 要求只會針對先前發行 OID_SWITCH_NIC_DISCONNECT 的 OID 集合要求的網路連線發出。

注意 擴充功能必須一律將此 OID 集合要求轉送至可延伸交換器驅動程式堆疊。 延伸模組不得使要求失敗。

完成此 OID 要求之後,可延伸交換器的通訊協定邊緣會發出 OID 集合要求 OID_SWITCH_PORT_TEARDOWN ,以啟動用於網路介面卡連線之埠的刪除程式。

擴充功能必須一律將此 OID 集合要求轉送至可延伸交換器驅動程式堆疊。 延伸模組不得使要求失敗。

可延伸交換器介面會針對已建立的每個網路介面卡連線維護參考計數器。 如果網路介面卡的參考計數器具有非零值,則不會刪除網路介面卡連線。 介面提供下列處理常式函式,以遞增或遞減可延伸交換器網路介面卡連接的參考計數器:

ReferenceSwitchNic
可延伸交換器擴充功能會呼叫此函式,以遞增網路介面卡連線的參考計數器。 雖然參考計數器具有非零值,但可延伸交換器介面不會刪除網路介面卡連線。

擴充功能在執行下列作業之前,應該先呼叫 ReferenceSwitchNic

注意擴充功能在收到該連線OID_SWITCH_NIC_DISCONNECT的 OID 集合要求之後,不得針對網路介面卡連線呼叫ReferenceSwitchNic

DereferenceSwitchNic
可延伸交換器擴充功能會呼叫此函式,以遞減埠的參考計數器。

如果擴充功能呼叫ReferenceSwitchNic,則必須在OID_SWITCH_NIC_REQUESTNDIS_STATUS_SWITCH_NIC_STATUS指示完成之後呼叫DereferenceSwitchNic