共用方式為


虛擬埠 (VPorts)

虛擬埠 (VPort) 是一個資料物件,代表支援單一根 I/O 虛擬化 (SR-IOV) 之網路適配器 NIC 交換器上的內部埠。 每個 NIC 交換器都有下列網路連線埠:

  • 一個外部實體埠,用於連線到外部實體網路。

  • 一個或多個內部 VPorts 連接到 PCI Express 實體功能(PF)或虛擬功能(VF)。

    • PF 會連結至 Hyper-V 父分割區,並在該分割區中運行的管理作業系統中作為虛擬網路介面卡提供使用。
    • VF 被連接到 Hyper-V 子分割區,並在該分割區內執行的客體操作系統中顯示為虛擬網路適配器。

NIC 交換器會將網路流量從實體埠橋接到一個或多個虛擬埠。 這可提供基礎實體網路介面的虛擬化存取。

每個 VPort 都有網路適配器上 NIC 交換器唯一的唯一標識碼 (VPortId)。 默認 VPort 一律存在於預設 NIC 交換器上,且永遠無法刪除。 預設 VPort 具有 NDIS_DEFAULT_VPORT_ID的 VPortId。

當 PF 迷你埠驅動程式處理 OID_NIC_SWITCH_CREATE_SWITCH的物件識別碼(OID)方法要求時,它會建立 NIC 交換器以及該交換器的預設 VPort。 預設 VPort 總是連接至 PF,且始終保持在運行狀態。

非預設 VPorts 是透過 OID_NIC_SWITCH_CREATE_VPORT的 OID 方法要求來建立。 只有一個非預設 VPort 可以附加至 VF。 附加之後,預設狀態會進入操作模式。 您也可以建立一或多個非預設 VPorts 並附加至 PF。 這些 VPort 在建立時是非操作的,而且可以透過 OID_NIC_SWITCH_VPORT_PARAMETERS的 OID 集合要求來運作。

注意

VPort 運作後,只有在透過 OID_NIC_SWITCH_DELETE_VPORT的 OID 請求將其刪除時,才會變成非運作狀態。

每個 VPort 都有一或多個與它相關聯的硬體佇列組,以便接收和傳輸封包。 網路適配器上的預設佇列組會保留供預設 VPort 使用。 當透過 OID_NIC_SWITCH_CREATE_VPORT 請求建立 VPort 時,會配置並指派非預設 VPort 的佇列對。

非預設 VPorts 是透過 OID_NIC_SWITCH_CREATE_VPORT的 OID 方法要求來建立和設定。 預設 VPort 和非預設 VPorts 會透過 OID_NIC_SWITCH_VPORT_PARAMETERS的 OID 設置要求重新設定。 每個 OID 要求都包含一個 NDIS_NIC_SWITCH_VPORT_PARAMETERS 結構,指定下列組態參數:

  • VPort 所附加的 PCIe 功能。

    每個 VPort 可以隨時附加至 PF 或連接至 VF。 建立 VPort 並附加至 PCIe 函式之後,無法動態地將附件變更為另一個 PCIe 函式。

    注意

    預設 VPort 一律會連結至網路適配器上的 PF。

    從 Windows Server 2012 中的 NDIS 6.30 開始,只能將一個非預設 VPort 附加至 VF。 不過,多個非預設 VPorts 以及預設 VPort 可以附加至 PF。

  • 指派給 VPort 的硬體佇列配對數目。

    每個 VPort 都有一組可供其使用的硬體佇列組。 每個佇列組都包含網路適配器上的個別傳輸和接收佇列。

    網路適配器上的佇列配對是有限的資源。 建立 NIC switch 時,會指定供預設和非預設 VPorts 使用的佇列對總數。 這可讓指派給預設 VPort 的佇列配對數目與非預設 VPort 不同。

    每個非預設 VPort 都可以設定為具有不同數目的佇列組。 這稱為 佇列配對的非對稱配置。 如果 NIC 不允許這類非對稱配置,則每個非預設 VPort 都會設定為具有相同數目的佇列組。 這稱為 佇列配對的對稱配置。 如需詳細資訊,請參閱 對稱和非對稱佇列配對指派

    注意

    PF 迷你埠驅動程式會在 MiniportInitializeEx期間,報告是否支援非對稱的佇列配對配置。 如需詳細資訊,請參閱 初始化 PF 小埠端口驅動程式

    指派給每個 VPort 的佇列配對數目不會動態變更。 在 VPort 建立之後,無法變更指派給 VPort 的佇列配對數目。

    注意

    在執行於客體操作系統的 VF 微型驅動程式中,可以使用指派給非預設 VPorts 的一或多個佇列對來進行接收端調整 (RSS)。

  • 中斷 VPort 的仲裁參數。

    您可以為不同的 VPorts 指定不同的中斷調節類型。 這可讓虛擬化堆疊控制特定 VPort 所產生的中斷數目。

除了組態參數之外,疊加驅動程式可以透過發送 OID_RECEIVE_FILTER_SET_FILTER的 OID 方法請求來設定每個 VPort 的接收篩選。 NIC 交換器會以 VPort 為基礎執行指定的接收篩選。

接收 VPort 的篩選參數包括封包篩選條件,例如媒體訪問控制 (MAC) 位址清單和虛擬 LAN (VLAN) 識別碼。 MAC 位址和 VLAN 識別碼的篩選一律會在與 OID_RECEIVE_FILTER_SET_FILTER 要求相關聯的 NDIS_RECEIVE_FILTER_PARAMETERS 中一起指定。 NIC 交換器必須將傳入封包篩選至目的地 MAC 位址和 VLAN 識別元符合 VPort 上設定的任何接收篩選條件的交換器。 NIC 交換器會篩選從另一個 VPort 或外部實體埠接收的封包。 如果封包符合篩選條件,NIC 交換器必須將它轉送至 VPort。

您可以在 VPort 上設定多個 MAC 位址和 VLAN 識別子組。 如果只設定 MAC 位址,接收篩選器會指定 VPort 應該接收符合下列條件的封包:

  • 封包的目的地 MAC 位址符合篩選條件的 MAC 位址。

  • 封包具有 VLAN 標籤,或者(如果有 VLAN 標籤的話)其 VLAN 識別碼是零。

非預設 VPorts 會透過 OID_NIC_SWITCH_DELETE_VPORT的 OID 集合要求刪除。 只有當 NIC 開關透過 OID_NIC_SWITCH_DELETE_SWITCH的 OID 集設要求被刪除時,才會刪除預設 VPort。