1 .. include:: ../disclaimer-zh_CN.rst
3 :Original: Documentation/infiniband/opa_vnic.rst
7 司延腾 Yanteng Si <siyanteng@loongson.cn>
11 王普宇 Puyu Wang <realpuyuwang@gmail.com>
12 时奎亮 Alex Shi <alexs@kernel.org>
14 .. _cn_infiniband_opa_vnic:
16 =============================================
17 英特尔全路径(OPA)虚拟网络接口控制器(VNIC)
18 =============================================
20 英特尔全路径(OPA)虚拟网络接口控制器(VNIC)功能通过封装HFI节点之间的以
21 太网数据包,支持Omni-Path结构上的以太网功能。
26 Omni-Path封装的以太网数据包的交换模式涉及Omni-Path结构拓扑上覆盖的一个或
27 多个虚拟以太网交换机。Omni-Path结构上的HFI节点的一个子集被允许在特定的虚
28 拟以太网交换机上交换封装的以太网数据包。虚拟以太网交换机是通过配置结构上的
29 HFI节点实现的逻辑抽象,用于生成和处理报头。在最简单的配置中,整个结构的所有
30 HFI节点通过一个虚拟以太网交换机交换封装的以太网数据包。一个虚拟以太网交换机,
31 实际上是一个独立的以太网网络。该配置由以太网管理器(EM)执行,它是可信的结
32 构管理器(FM)应用程序的一部分。HFI节点可以有多个VNIC,每个连接到不同的虚
33 拟以太网交换机。下图介绍了两个虚拟以太网交换机与两个HFI节点的情况::
44 +-----------------------------+ +------------------------------+
45 | 虚拟以太网切换 | | 虚拟以太网切换 |
46 | +---------+ +---------+ | | +---------+ +---------+ |
47 | | VPORT | | VPORT | | | | VPORT | | VPORT | |
48 +--+---------+----+---------+-+ +-+---------+----+---------+---+
54 +-----------+------------+ +-----------+------------+
55 | VNIC | VNIC | | VNIC | VNIC |
56 +-----------+------------+ +-----------+------------+
58 +------------------------+ +------------------------+
61 Omni-Path封装的以太网数据包格式如下所述。
63 ==================== ================================
65 ==================== ================================
74 61-62 L2 (=10, 16B 格式)
75 63 LT (=1, 链路传输头 Flit)
78 0-7 L4 type (=0x78 ETHERNET)
97 62-63 LT (=01, 链路传输尾 Flit)
98 ==================== ================================
100 以太网数据包在传输端被填充,以确保VNIC OPA数据包是四字对齐的。“尾”字段
101 包含填充的字节数。在接收端,“尾”字段被读取,在将数据包向上传递到网络堆
102 栈之前,填充物被移除(与ICRC、尾和OPA头一起)。
104 L4头字段包含VNIC端口所属的虚拟以太网交换机ID。在接收端,该字段用于将收
105 到的VNIC数据包去多路复用到不同的VNIC端口。
110 英特尔OPA VNIC的软件设计如下图所示。OPA VNIC功能有一个依赖于硬件的部分
113 对IB设备分配和释放RDMA netdev设备的支持已经被加入。RDMA netdev支持与
114 网络堆栈的对接,从而创建标准的网络接口。OPA_VNIC是一个RDMA netdev设备
117 依赖于HW的VNIC功能是HFI1驱动的一部分。它实现了分配和释放OPA_VNIC RDMA
118 netdev的动作。它涉及VNIC功能的HW资源分配/管理。它与网络堆栈接口并实现所
119 需的net_device_ops功能。它在传输路径中期待Omni-Path封装的以太网数据包,
120 并提供对它们的HW访问。在将数据包向上传递到网络堆栈之前,它把Omni-Path头
121 从接收的数据包中剥离。它还实现了RDMA netdev控制操作。
123 OPA VNIC模块实现了独立于硬件的VNIC功能。它由两部分组成。VNIC以太网管理
124 代理(VEMA)作为一个IB客户端向IB核心注册,并与IB MAD栈接口。它与以太网
125 管理器(EM)和VNIC netdev交换管理信息。VNIC netdev部分分配和释放OPA_VNIC
126 RDMA netdev设备。它在需要时覆盖由依赖HW的VNIC驱动设置的net_device_ops函数,
127 以适应任何控制操作。它还处理以太网数据包的封装,在传输路径中使用Omni-Path头。
128 对于每个VNIC接口,封装所需的信息是由EM通过VEMA MAD接口配置的。它还通过调用
129 RDMA netdev控制操作将任何控制信息传递给依赖于HW的驱动程序::
131 +-------------------+ +----------------------+
135 +-------------------+ +----------------------+
138 +----------------------------+ |
141 | (OPA VNIC RDMA Netdev | |
144 +----------------------------+ |
147 +------------------+ |
149 +------------------+ |
152 +--------------------------------------------+
156 +--------------------------------------------+