aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/translations/zh_CN/infiniband/opa_vnic.rst
blob: 12b147fbf792697208be488e7482c26ac1544acb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
.. include:: ../disclaimer-zh_CN.rst

:Original: Documentation/infiniband/opa_vnic.rst

:翻译:

 司延腾 Yanteng Si <siyanteng@loongson.cn>

:校译:

 王普宇 Puyu Wang <realpuyuwang@gmail.com>
 时奎亮 Alex Shi <alexs@kernel.org>

.. _cn_infiniband_opa_vnic:

=============================================
英特尔全路径(OPA)虚拟网络接口控制器(VNIC)
=============================================

英特尔全路径(OPA)虚拟网络接口控制器(VNIC)功能通过封装HFI节点之间的以
太网数据包,支持Omni-Path结构上的以太网功能。

体系结构
========

Omni-Path封装的以太网数据包的交换模式涉及Omni-Path结构拓扑上覆盖的一个或
多个虚拟以太网交换机。Omni-Path结构上的HFI节点的一个子集被允许在特定的虚
拟以太网交换机上交换封装的以太网数据包。虚拟以太网交换机是通过配置结构上的
HFI节点实现的逻辑抽象,用于生成和处理报头。在最简单的配置中,整个结构的所有
HFI节点通过一个虚拟以太网交换机交换封装的以太网数据包。一个虚拟以太网交换机,
实际上是一个独立的以太网网络。该配置由以太网管理器(EM)执行,它是可信的结
构管理器(FM)应用程序的一部分。HFI节点可以有多个VNIC,每个连接到不同的虚
拟以太网交换机。下图介绍了两个虚拟以太网交换机与两个HFI节点的情况::

                               +-------------------+
                               |      子网/        |
                               |     以太网        |
                               |      管理         |
                               +-------------------+
                                  /          /
                                /           /
                              /            /
                            /             /
  +-----------------------------+  +------------------------------+
  |     虚拟以太网切换          |  |      虚拟以太网切换          |
  |  +---------+    +---------+ |  | +---------+    +---------+   |
  |  | VPORT   |    |  VPORT  | |  | |  VPORT  |    |  VPORT  |   |
  +--+---------+----+---------+-+  +-+---------+----+---------+---+
           |                 \        /                 |
           |                   \    /                   |
           |                     \/                     |
           |                    /  \                    |
           |                  /      \                  |
       +-----------+------------+  +-----------+------------+
       |   VNIC    |    VNIC    |  |    VNIC   |    VNIC    |
       +-----------+------------+  +-----------+------------+
       |          HFI           |  |          HFI           |
       +------------------------+  +------------------------+


Omni-Path封装的以太网数据包格式如下所述。

==================== ================================
位                   域
==================== ================================
Quad Word 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)

Quad Word 1:
0-7                  L4 type (=0x78 ETHERNET)
8-11                 SLID[23:20]
12-15                DLID[23:20]
16-31                PKEY
32-47                熵
48-63                保留

Quad Word 2:
0-15                 保留
16-31                L4 头
32-63                以太网数据包

Quad Words 3 to N-1:
0-63                 以太网数据包 (pad拓展)

Quad Word N (last):
0-23                 以太网数据包 (pad拓展)
24-55                ICRC
56-61                尾
62-63                LT (=01, 链路传输尾 Flit)
==================== ================================

以太网数据包在传输端被填充,以确保VNIC OPA数据包是四字对齐的。“尾”字段
包含填充的字节数。在接收端,“尾”字段被读取,在将数据包向上传递到网络堆
栈之前,填充物被移除(与ICRC、尾和OPA头一起)。

L4头字段包含VNIC端口所属的虚拟以太网交换机ID。在接收端,该字段用于将收
到的VNIC数据包去多路复用到不同的VNIC端口。

驱动设计
========

英特尔OPA VNIC的软件设计如下图所示。OPA VNIC功能有一个依赖于硬件的部分
和一个独立于硬件的部分。

对IB设备分配和释放RDMA netdev设备的支持已经被加入。RDMA netdev支持与
网络堆栈的对接,从而创建标准的网络接口。OPA_VNIC是一个RDMA netdev设备
类型。

依赖于HW的VNIC功能是HFI1驱动的一部分。它实现了分配和释放OPA_VNIC RDMA
netdev的动作。它涉及VNIC功能的HW资源分配/管理。它与网络堆栈接口并实现所
需的net_device_ops功能。它在传输路径中期待Omni-Path封装的以太网数据包,
并提供对它们的HW访问。在将数据包向上传递到网络堆栈之前,它把Omni-Path头
从接收的数据包中剥离。它还实现了RDMA netdev控制操作。

OPA VNIC模块实现了独立于硬件的VNIC功能。它由两部分组成。VNIC以太网管理
代理(VEMA)作为一个IB客户端向IB核心注册,并与IB MAD栈接口。它与以太网
管理器(EM)和VNIC netdev交换管理信息。VNIC netdev部分分配和释放OPA_VNIC
RDMA netdev设备。它在需要时覆盖由依赖HW的VNIC驱动设置的net_device_ops函数,
以适应任何控制操作。它还处理以太网数据包的封装,在传输路径中使用Omni-Path头。
对于每个VNIC接口,封装所需的信息是由EM通过VEMA MAD接口配置的。它还通过调用
RDMA netdev控制操作将任何控制信息传递给依赖于HW的驱动程序::

        +-------------------+ +----------------------+
        |                   | |       Linux          |
        |     IB MAD        | |       网络           |
        |                   | |       栈             |
        +-------------------+ +----------------------+
                 |               |          |
                 |               |          |
        +----------------------------+      |
        |                            |      |
        |      OPA VNIC 模块         |      |
        |  (OPA VNIC RDMA Netdev     |      |
        |     & EMA 函数)            |      |
        |                            |      |
        +----------------------------+      |
                    |                       |
                    |                       |
           +------------------+             |
           |     IB 核心      |             |
           +------------------+             |
                    |                       |
                    |                       |
        +--------------------------------------------+
        |                                            |
        |      HFI1 驱动和 VNIC 支持                 |
        |                                            |
        +--------------------------------------------+