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