Back to home page

OSCL-LXR

 
 

    


0001 .. include:: ../disclaimer-zh_CN.rst
0002 
0003 :Original: Documentation/infiniband/opa_vnic.rst
0004 
0005 :翻译:
0006 
0007  司延腾 Yanteng Si <siyanteng@loongson.cn>
0008 
0009 :校译:
0010 
0011  王普宇 Puyu Wang <realpuyuwang@gmail.com>
0012  时奎亮 Alex Shi <alexs@kernel.org>
0013 
0014 .. _cn_infiniband_opa_vnic:
0015 
0016 =============================================
0017 英特尔全路径(OPA)虚拟网络接口控制器(VNIC)
0018 =============================================
0019 
0020 英特尔全路径(OPA)虚拟网络接口控制器(VNIC)功能通过封装HFI节点之间的以
0021 太网数据包,支持Omni-Path结构上的以太网功能。
0022 
0023 体系结构
0024 ========
0025 
0026 Omni-Path封装的以太网数据包的交换模式涉及Omni-Path结构拓扑上覆盖的一个或
0027 多个虚拟以太网交换机。Omni-Path结构上的HFI节点的一个子集被允许在特定的虚
0028 拟以太网交换机上交换封装的以太网数据包。虚拟以太网交换机是通过配置结构上的
0029 HFI节点实现的逻辑抽象,用于生成和处理报头。在最简单的配置中,整个结构的所有
0030 HFI节点通过一个虚拟以太网交换机交换封装的以太网数据包。一个虚拟以太网交换机,
0031 实际上是一个独立的以太网网络。该配置由以太网管理器(EM)执行,它是可信的结
0032 构管理器(FM)应用程序的一部分。HFI节点可以有多个VNIC,每个连接到不同的虚
0033 拟以太网交换机。下图介绍了两个虚拟以太网交换机与两个HFI节点的情况::
0034 
0035                                +-------------------+
0036                                |      子网/        |
0037                                |     以太网        |
0038                                |      管理         |
0039                                +-------------------+
0040                                   /          /
0041                                 /           /
0042                               /            /
0043                             /             /
0044   +-----------------------------+  +------------------------------+
0045   |     虚拟以太网切换          |  |      虚拟以太网切换          |
0046   |  +---------+    +---------+ |  | +---------+    +---------+   |
0047   |  | VPORT   |    |  VPORT  | |  | |  VPORT  |    |  VPORT  |   |
0048   +--+---------+----+---------+-+  +-+---------+----+---------+---+
0049            |                 \        /                 |
0050            |                   \    /                   |
0051            |                     \/                     |
0052            |                    /  \                    |
0053            |                  /      \                  |
0054        +-----------+------------+  +-----------+------------+
0055        |   VNIC    |    VNIC    |  |    VNIC   |    VNIC    |
0056        +-----------+------------+  +-----------+------------+
0057        |          HFI           |  |          HFI           |
0058        +------------------------+  +------------------------+
0059 
0060 
0061 Omni-Path封装的以太网数据包格式如下所述。
0062 
0063 ==================== ================================
0064 位                   域
0065 ==================== ================================
0066 Quad Word 0:
0067 0-19                 SLID (低20位)
0068 20-30                长度 (以四字为单位)
0069 31                   BECN 位
0070 32-51                DLID (低20位)
0071 52-56                SC (服务级别)
0072 57-59                RC (路由控制)
0073 60                   FECN 位
0074 61-62                L2 (=10, 16B 格式)
0075 63                   LT (=1, 链路传输头 Flit)
0076 
0077 Quad Word 1:
0078 0-7                  L4 type (=0x78 ETHERNET)
0079 8-11                 SLID[23:20]
0080 12-15                DLID[23:20]
0081 16-31                PKEY
0082 32-47                熵
0083 48-63                保留
0084 
0085 Quad Word 2:
0086 0-15                 保留
0087 16-31                L4 头
0088 32-63                以太网数据包
0089 
0090 Quad Words 3 to N-1:
0091 0-63                 以太网数据包 (pad拓展)
0092 
0093 Quad Word N (last):
0094 0-23                 以太网数据包 (pad拓展)
0095 24-55                ICRC
0096 56-61                尾
0097 62-63                LT (=01, 链路传输尾 Flit)
0098 ==================== ================================
0099 
0100 以太网数据包在传输端被填充,以确保VNIC OPA数据包是四字对齐的。“尾”字段
0101 包含填充的字节数。在接收端,“尾”字段被读取,在将数据包向上传递到网络堆
0102 栈之前,填充物被移除(与ICRC、尾和OPA头一起)。
0103 
0104 L4头字段包含VNIC端口所属的虚拟以太网交换机ID。在接收端,该字段用于将收
0105 到的VNIC数据包去多路复用到不同的VNIC端口。
0106 
0107 驱动设计
0108 ========
0109 
0110 英特尔OPA VNIC的软件设计如下图所示。OPA VNIC功能有一个依赖于硬件的部分
0111 和一个独立于硬件的部分。
0112 
0113 对IB设备分配和释放RDMA netdev设备的支持已经被加入。RDMA netdev支持与
0114 网络堆栈的对接,从而创建标准的网络接口。OPA_VNIC是一个RDMA netdev设备
0115 类型。
0116 
0117 依赖于HW的VNIC功能是HFI1驱动的一部分。它实现了分配和释放OPA_VNIC RDMA
0118 netdev的动作。它涉及VNIC功能的HW资源分配/管理。它与网络堆栈接口并实现所
0119 需的net_device_ops功能。它在传输路径中期待Omni-Path封装的以太网数据包,
0120 并提供对它们的HW访问。在将数据包向上传递到网络堆栈之前,它把Omni-Path头
0121 从接收的数据包中剥离。它还实现了RDMA netdev控制操作。
0122 
0123 OPA VNIC模块实现了独立于硬件的VNIC功能。它由两部分组成。VNIC以太网管理
0124 代理(VEMA)作为一个IB客户端向IB核心注册,并与IB MAD栈接口。它与以太网
0125 管理器(EM)和VNIC netdev交换管理信息。VNIC netdev部分分配和释放OPA_VNIC
0126 RDMA netdev设备。它在需要时覆盖由依赖HW的VNIC驱动设置的net_device_ops函数,
0127 以适应任何控制操作。它还处理以太网数据包的封装,在传输路径中使用Omni-Path头。
0128 对于每个VNIC接口,封装所需的信息是由EM通过VEMA MAD接口配置的。它还通过调用
0129 RDMA netdev控制操作将任何控制信息传递给依赖于HW的驱动程序::
0130 
0131         +-------------------+ +----------------------+
0132         |                   | |       Linux          |
0133         |     IB MAD        | |       网络           |
0134         |                   | |       栈             |
0135         +-------------------+ +----------------------+
0136                  |               |          |
0137                  |               |          |
0138         +----------------------------+      |
0139         |                            |      |
0140         |      OPA VNIC 模块         |      |
0141         |  (OPA VNIC RDMA Netdev     |      |
0142         |     & EMA 函数)            |      |
0143         |                            |      |
0144         +----------------------------+      |
0145                     |                       |
0146                     |                       |
0147            +------------------+             |
0148            |     IB 核心      |             |
0149            +------------------+             |
0150                     |                       |
0151                     |                       |
0152         +--------------------------------------------+
0153         |                                            |
0154         |      HFI1 驱动和 VNIC 支持                 |
0155         |                                            |
0156         +--------------------------------------------+