Intel Omni-Path (OPA) 虛擬網路介面控制器 (VNIC)

Intel Omni-Path (OPA) 虛擬網路介面控制器 (VNIC) 功能透過封裝 HFI 節點之間的乙太網資料包,支援透過 Omni-Path 結構實現乙太網功能。

架構

Omni-Path 封裝的乙太網資料包的交換模式涉及疊加在 Omni-Path 結構拓撲上的一個或多個虛擬乙太網交換機。 Omni-Path 結構上的部分 HFI 節點被允許透過特定的虛擬乙太網交換機交換封裝的乙太網資料包。 虛擬乙太網交換機是透過配置結構上的 HFI 節點以生成和處理頭部來實現的邏輯抽象。 在最簡單的配置中,結構上的所有 HFI 節點透過單個虛擬乙太網交換機交換封裝的乙太網資料包。 虛擬乙太網交換機實際上是一個獨立的乙太網網路。 該配置由乙太網管理器 (EM) 執行,乙太網管理器 (EM) 是可信結構管理器 (FM) 應用程式的一部分。 HFI 節點可以有多個 VNIC,每個 VNIC 連線到不同的虛擬乙太網交換機。 下圖展示了具有兩個 HFI 節點的兩個虛擬乙太網交換機的情況。

                             +-------------------+
                             |      Subnet/      |
                             |     Ethernet      |
                             |      Manager      |
                             +-------------------+
                                /          /
                              /           /
                            /            /
                          /             /
+-----------------------------+  +------------------------------+
|  Virtual Ethernet Switch    |  |  Virtual Ethernet Switch     |
|  +---------+    +---------+ |  | +---------+    +---------+   |
|  | VPORT   |    |  VPORT  | |  | |  VPORT  |    |  VPORT  |   |
+--+---------+----+---------+-+  +-+---------+----+---------+---+
         |                 \        /                 |
         |                   \    /                   |
         |                     \/                     |
         |                    /  \                    |
         |                  /      \                  |
     +-----------+------------+  +-----------+------------+
     |   VNIC    |    VNIC    |  |    VNIC   |    VNIC    |
     +-----------+------------+  +-----------+------------+
     |          HFI           |  |          HFI           |
     +------------------------+  +------------------------+

Omni-Path 封裝的乙太網資料包格式如下所述。

欄位

四字 0

0-19

SLID (低 20 位)

20-30

長度 (以四字為單位)

31

BECN 位

32-51

DLID (低 20 位)

52-56

SC (服務等級)

57-59

RC (路由控制)

60

FECN 位

61-62

L2 (=10, 16B 格式)

63

LT (=1, 連結傳輸頭 Flit)

四字 1

0-7

L4 型別 (=0x78 乙太網)

8-11

SLID[23:20]

12-15

DLID[23:20]

16-31

PKEY

32-47

48-63

保留

四字 2

0-15

保留

16-31

L4 頭部

32-63

乙太網資料包

四字 3 到 N-1

0-63

乙太網資料包 (填充擴充套件)

四字 N (最後一個)

0-23

乙太網資料包 (填充擴充套件)

24-55

ICRC

56-61

尾部

62-63

LT (=01, 連結傳輸尾 Flit)

乙太網資料包在傳送端填充,以確保 VNIC OPA 資料包是四字對齊的。 “Tail”欄位包含填充的位元組數。 在接收端,讀取“Tail”欄位,並刪除填充(以及 ICRC、Tail 和 OPA 頭部),然後再將資料包傳遞到網路堆疊。

L4 頭部欄位包含 VNIC 埠所屬的虛擬乙太網交換機 ID。 在接收端,此欄位用於將接收到的 VNIC 資料包多路分解到不同的 VNIC 埠。

驅動設計

下圖展示了 Intel OPA VNIC 軟體設計。 OPA VNIC 功能具有硬體相關元件和硬體無關元件。

已新增對 IB 裝置分配和釋放 RDMA netdev 裝置的支援。 RDMA netdev 支援與網路堆疊介面,從而建立標準網路介面。 OPA_VNIC 是一種 RDMA netdev 裝置型別。

硬體相關的 VNIC 功能是 HFI1 驅動程式的一部分。 它實現了用於分配和釋放 OPA_VNIC RDMA netdev 的 verbs。 它涉及 VNIC 功能的硬體資源分配/管理。 它與網路堆疊介面並實現所需的 net_device_ops 函式。 它期望在傳送路徑中使用 Omni-Path 封裝的乙太網資料包,並提供對它們的硬體訪問。 它從接收到的資料包中剝離 Omni-Path 頭部,然後再將它們傳遞到網路堆疊。 它還實現了 RDMA netdev 控制操作。

OPA VNIC 模組實現了硬體無關的 VNIC 功能。 它由兩部分組成。 VNIC 乙太網管理代理 (VEMA) 向 IB 核心註冊為 IB 客戶端,並與 IB MAD 堆疊介面。 它與乙太網管理器 (EM) 和 VNIC netdev 交換管理資訊。 VNIC netdev 部分分配和釋放 OPA_VNIC RDMA netdev 裝置。 它在需要時覆蓋由硬體相關的 VNIC 驅動程式設定的 net_device_ops 函式,以適應任何控制操作。 它還處理在傳送路徑中使用 Omni-Path 頭部封裝乙太網資料包。 對於每個 VNIC 介面,封裝所需的資訊由 EM 透過 VEMA MAD 介面配置。 它還透過呼叫 RDMA netdev 控制操作將任何控制資訊傳遞給硬體相關的驅動程式。

+-------------------+ +----------------------+
|                   | |       Linux          |
|     IB MAD        | |      Network         |
|                   | |       Stack          |
+-------------------+ +----------------------+
         |               |          |
         |               |          |
+----------------------------+      |
|                            |      |
|      OPA VNIC Module       |      |
|  (OPA VNIC RDMA Netdev     |      |
|     & EMA functions)       |      |
|                            |      |
+----------------------------+      |
            |                       |
            |                       |
   +------------------+             |
   |     IB core      |             |
   +------------------+             |
            |                       |
            |                       |
+--------------------------------------------+
|                                            |
|      HFI1 Driver with VNIC support         |
|                                            |
+--------------------------------------------+