1*e7c64096SYanteng Si.. include:: ../disclaimer-zh_CN.rst
2*e7c64096SYanteng Si
3*e7c64096SYanteng Si:Original: Documentation/infiniband/opa_vnic.rst
4*e7c64096SYanteng Si
5*e7c64096SYanteng Si:翻译:
6*e7c64096SYanteng Si
7*e7c64096SYanteng Si 司延腾 Yanteng Si <siyanteng@loongson.cn>
8*e7c64096SYanteng Si
9*e7c64096SYanteng Si:校译:
10*e7c64096SYanteng Si
11*e7c64096SYanteng Si 王普宇 Puyu Wang <realpuyuwang@gmail.com>
12*e7c64096SYanteng Si 时奎亮 Alex Shi <alexs@kernel.org>
13*e7c64096SYanteng Si
14*e7c64096SYanteng Si.. _cn_infiniband_opa_vnic:
15*e7c64096SYanteng Si
16*e7c64096SYanteng Si=============================================
17*e7c64096SYanteng Si英特尔全路径(OPA)虚拟网络接口控制器(VNIC)
18*e7c64096SYanteng Si=============================================
19*e7c64096SYanteng Si
20*e7c64096SYanteng Si英特尔全路径(OPA)虚拟网络接口控制器(VNIC)功能通过封装HFI节点之间的以
21*e7c64096SYanteng Si太网数据包,支持Omni-Path结构上的以太网功能。
22*e7c64096SYanteng Si
23*e7c64096SYanteng Si体系结构
24*e7c64096SYanteng Si========
25*e7c64096SYanteng Si
26*e7c64096SYanteng SiOmni-Path封装的以太网数据包的交换模式涉及Omni-Path结构拓扑上覆盖的一个或
27*e7c64096SYanteng Si多个虚拟以太网交换机。Omni-Path结构上的HFI节点的一个子集被允许在特定的虚
28*e7c64096SYanteng Si拟以太网交换机上交换封装的以太网数据包。虚拟以太网交换机是通过配置结构上的
29*e7c64096SYanteng SiHFI节点实现的逻辑抽象,用于生成和处理报头。在最简单的配置中,整个结构的所有
30*e7c64096SYanteng SiHFI节点通过一个虚拟以太网交换机交换封装的以太网数据包。一个虚拟以太网交换机,
31*e7c64096SYanteng Si实际上是一个独立的以太网网络。该配置由以太网管理器(EM)执行,它是可信的结
32*e7c64096SYanteng Si构管理器(FM)应用程序的一部分。HFI节点可以有多个VNIC,每个连接到不同的虚
33*e7c64096SYanteng Si拟以太网交换机。下图介绍了两个虚拟以太网交换机与两个HFI节点的情况::
34*e7c64096SYanteng Si
35*e7c64096SYanteng Si                               +-------------------+
36*e7c64096SYanteng Si                               |      子网/        |
37*e7c64096SYanteng Si                               |     以太网        |
38*e7c64096SYanteng Si                               |      管理         |
39*e7c64096SYanteng Si                               +-------------------+
40*e7c64096SYanteng Si                                  /          /
41*e7c64096SYanteng Si                                /           /
42*e7c64096SYanteng Si                              /            /
43*e7c64096SYanteng Si                            /             /
44*e7c64096SYanteng Si  +-----------------------------+  +------------------------------+
45*e7c64096SYanteng Si  |     虚拟以太网切换          |  |      虚拟以太网切换          |
46*e7c64096SYanteng Si  |  +---------+    +---------+ |  | +---------+    +---------+   |
47*e7c64096SYanteng Si  |  | VPORT   |    |  VPORT  | |  | |  VPORT  |    |  VPORT  |   |
48*e7c64096SYanteng Si  +--+---------+----+---------+-+  +-+---------+----+---------+---+
49*e7c64096SYanteng Si           |                 \        /                 |
50*e7c64096SYanteng Si           |                   \    /                   |
51*e7c64096SYanteng Si           |                     \/                     |
52*e7c64096SYanteng Si           |                    /  \                    |
53*e7c64096SYanteng Si           |                  /      \                  |
54*e7c64096SYanteng Si       +-----------+------------+  +-----------+------------+
55*e7c64096SYanteng Si       |   VNIC    |    VNIC    |  |    VNIC   |    VNIC    |
56*e7c64096SYanteng Si       +-----------+------------+  +-----------+------------+
57*e7c64096SYanteng Si       |          HFI           |  |          HFI           |
58*e7c64096SYanteng Si       +------------------------+  +------------------------+
59*e7c64096SYanteng Si
60*e7c64096SYanteng Si
61*e7c64096SYanteng SiOmni-Path封装的以太网数据包格式如下所述。
62*e7c64096SYanteng Si
63*e7c64096SYanteng Si==================== ================================
64*e7c64096SYanteng Si位                   域
65*e7c64096SYanteng Si==================== ================================
66*e7c64096SYanteng SiQuad Word 0:
67*e7c64096SYanteng Si0-19                 SLID (低20位)
68*e7c64096SYanteng Si20-30                长度 (以四字为单位)
69*e7c64096SYanteng Si31                   BECN 位
70*e7c64096SYanteng Si32-51                DLID (低20位)
71*e7c64096SYanteng Si52-56                SC (服务级别)
72*e7c64096SYanteng Si57-59                RC (路由控制)
73*e7c64096SYanteng Si60                   FECN 位
74*e7c64096SYanteng Si61-62                L2 (=10, 16B 格式)
75*e7c64096SYanteng Si63                   LT (=1, 链路传输头 Flit)
76*e7c64096SYanteng Si
77*e7c64096SYanteng SiQuad Word 1:
78*e7c64096SYanteng Si0-7                  L4 type (=0x78 ETHERNET)
79*e7c64096SYanteng Si8-11                 SLID[23:20]
80*e7c64096SYanteng Si12-15                DLID[23:20]
81*e7c64096SYanteng Si16-31                PKEY
82*e7c64096SYanteng Si32-47                熵
83*e7c64096SYanteng Si48-63                保留
84*e7c64096SYanteng Si
85*e7c64096SYanteng SiQuad Word 2:
86*e7c64096SYanteng Si0-15                 保留
87*e7c64096SYanteng Si16-31                L4 头
88*e7c64096SYanteng Si32-63                以太网数据包
89*e7c64096SYanteng Si
90*e7c64096SYanteng SiQuad Words 3 to N-1:
91*e7c64096SYanteng Si0-63                 以太网数据包 (pad拓展)
92*e7c64096SYanteng Si
93*e7c64096SYanteng SiQuad Word N (last):
94*e7c64096SYanteng Si0-23                 以太网数据包 (pad拓展)
95*e7c64096SYanteng Si24-55                ICRC
96*e7c64096SYanteng Si56-61                尾
97*e7c64096SYanteng Si62-63                LT (=01, 链路传输尾 Flit)
98*e7c64096SYanteng Si==================== ================================
99*e7c64096SYanteng Si
100*e7c64096SYanteng Si以太网数据包在传输端被填充,以确保VNIC OPA数据包是四字对齐的。“尾”字段
101*e7c64096SYanteng Si包含填充的字节数。在接收端,“尾”字段被读取,在将数据包向上传递到网络堆
102*e7c64096SYanteng Si栈之前,填充物被移除(与ICRC、尾和OPA头一起)。
103*e7c64096SYanteng Si
104*e7c64096SYanteng SiL4头字段包含VNIC端口所属的虚拟以太网交换机ID。在接收端,该字段用于将收
105*e7c64096SYanteng Si到的VNIC数据包去多路复用到不同的VNIC端口。
106*e7c64096SYanteng Si
107*e7c64096SYanteng Si驱动设计
108*e7c64096SYanteng Si========
109*e7c64096SYanteng Si
110*e7c64096SYanteng Si英特尔OPA VNIC的软件设计如下图所示。OPA VNIC功能有一个依赖于硬件的部分
111*e7c64096SYanteng Si和一个独立于硬件的部分。
112*e7c64096SYanteng Si
113*e7c64096SYanteng Si对IB设备分配和释放RDMA netdev设备的支持已经被加入。RDMA netdev支持与
114*e7c64096SYanteng Si网络堆栈的对接,从而创建标准的网络接口。OPA_VNIC是一个RDMA netdev设备
115*e7c64096SYanteng Si类型。
116*e7c64096SYanteng Si
117*e7c64096SYanteng Si依赖于HW的VNIC功能是HFI1驱动的一部分。它实现了分配和释放OPA_VNIC RDMA
118*e7c64096SYanteng Sinetdev的动作。它涉及VNIC功能的HW资源分配/管理。它与网络堆栈接口并实现所
119*e7c64096SYanteng Si需的net_device_ops功能。它在传输路径中期待Omni-Path封装的以太网数据包,
120*e7c64096SYanteng Si并提供对它们的HW访问。在将数据包向上传递到网络堆栈之前,它把Omni-Path头
121*e7c64096SYanteng Si从接收的数据包中剥离。它还实现了RDMA netdev控制操作。
122*e7c64096SYanteng Si
123*e7c64096SYanteng SiOPA VNIC模块实现了独立于硬件的VNIC功能。它由两部分组成。VNIC以太网管理
124*e7c64096SYanteng Si代理(VEMA)作为一个IB客户端向IB核心注册,并与IB MAD栈接口。它与以太网
125*e7c64096SYanteng Si管理器(EM)和VNIC netdev交换管理信息。VNIC netdev部分分配和释放OPA_VNIC
126*e7c64096SYanteng SiRDMA netdev设备。它在需要时覆盖由依赖HW的VNIC驱动设置的net_device_ops函数,
127*e7c64096SYanteng Si以适应任何控制操作。它还处理以太网数据包的封装,在传输路径中使用Omni-Path头。
128*e7c64096SYanteng Si对于每个VNIC接口,封装所需的信息是由EM通过VEMA MAD接口配置的。它还通过调用
129*e7c64096SYanteng SiRDMA netdev控制操作将任何控制信息传递给依赖于HW的驱动程序::
130*e7c64096SYanteng Si
131*e7c64096SYanteng Si        +-------------------+ +----------------------+
132*e7c64096SYanteng Si        |                   | |       Linux          |
133*e7c64096SYanteng Si        |     IB MAD        | |       网络           |
134*e7c64096SYanteng Si        |                   | |       栈             |
135*e7c64096SYanteng Si        +-------------------+ +----------------------+
136*e7c64096SYanteng Si                 |               |          |
137*e7c64096SYanteng Si                 |               |          |
138*e7c64096SYanteng Si        +----------------------------+      |
139*e7c64096SYanteng Si        |                            |      |
140*e7c64096SYanteng Si        |      OPA VNIC 模块         |      |
141*e7c64096SYanteng Si        |  (OPA VNIC RDMA Netdev     |      |
142*e7c64096SYanteng Si        |     & EMA 函数)            |      |
143*e7c64096SYanteng Si        |                            |      |
144*e7c64096SYanteng Si        +----------------------------+      |
145*e7c64096SYanteng Si                    |                       |
146*e7c64096SYanteng Si                    |                       |
147*e7c64096SYanteng Si           +------------------+             |
148*e7c64096SYanteng Si           |     IB 核心      |             |
149*e7c64096SYanteng Si           +------------------+             |
150*e7c64096SYanteng Si                    |                       |
151*e7c64096SYanteng Si                    |                       |
152*e7c64096SYanteng Si        +--------------------------------------------+
153*e7c64096SYanteng Si        |                                            |
154*e7c64096SYanteng Si        |      HFI1 驱动和 VNIC 支持                 |
155*e7c64096SYanteng Si        |                                            |
156*e7c64096SYanteng Si        +--------------------------------------------+
157