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