[RoCE]RDMA over Converged Ethernet模式以及配置

摘要:
在RoCE网络中,不需要设置RCQP的备用路径,因此不支持infiniband协议下的高可用服务。然而,RoCE流量和IB流量的统计位置是相同的:/sys/class/ininfiniband//ports//counters/1.1 RoCE模式RoCE将IB传输的流量封装为以下两个以太网帧:RoCEv1-RoCEv1协议定义为具有以太网报头的IB帧。RoCEv2 RoCE协议的直接扩展使流量能够在三层IP环境中运行。对于RoCEv2,与IPv4版本GID相关联的前三层网络数据包是IPv4,IPv6也是。可用值为:0,2。

https://www.cnblogs.com/burningTheStar/p/8565612.html

[阅读本文之前需要现有RDMA的基础知识]

1.RDMA over Converged Ethernet(RoCE)

Remote Direct Memory Access(RDMA)是一种远程内存管理能力,允许不同服务器上应用的内存之间直接移动数据,不需要CPU的干预。RoCE是一种机制,它提供了在无损以太网络上极低延迟的高效数据传输。 随着数据中心朝着可靠以太网发展,搭载RoCE的CX系列以太网卡使用经过证实的,高效的RDMA传输方式以10GigE和40GigE线速为主流数据中心的应用提供部署RDMA技术的平台。当RDMA应用工作在以太网链路层上时,应该注意以下几点:

  • 不需要子网管理员(Subnet Manager, SM,在infiniband网络下需要)。
  • 因为LID(Local ID)是infiniband协议栈中的2层属性,因此在RoCE网络下不需要设置该属性,当查询这个端口时,该字段为0。
  • 在RoCE网络下,RC QP(可靠链接的QP)的alternate path也不需要设置,因此infiniband 协议下的高可用服务也不支持。
  • 因为SM不存在,也就不可能向SM查询路径。因此,在建立链接前,路径记录结构体里面必须被填充相关的值。建议使用RDMA_CM来建立链接,因为它会处理该结构体。
  • 打上VLAN标签的以太网帧带有一个3bit的优先级域。这个域的值从IB的SL(service_level, 是建立QP时要设置的一个属性)域提取最低3bit的值得到。
  • RoCE流量不会被以太网设备的计数器统计,因此流量被卸载到了硬件上,没有经过内核以太网驱动。但是RoCE流量和IB流量的统计位置是一样的:/sys/class/infiniband/<device>/ports/<port number>/counters/

1.1 RoCE模式

RoCE将IB传输的流量封装到下面两种以太网帧中:

  • RoCE v1 - RoCE v1协议被定义为带有以太网头部的IB帧。 它使用以太网类型0x8915并且可以选择启用或者关闭VLAN标签。常规的以太网MTU也适用于RoCE帧。
  • RoCE v2 - RoCE协议的直接扩展使得流量能在3层IP环境下运行。将RoCE中的GRH头部替换成IP头部,使用UDP类型和专用的目的UDP端口(4791)。UDP源端口域用来携带一个模糊的流标识符,使得网络设备能够实现包的转发优化(例如ECMP),同时对于协议头部的格式保持无关性。

[RoCE]RDMA over Converged Ethernet模式以及配置第1张 

[RoCE]RDMA over Converged Ethernet模式以及配置第2张

1.2 RoCE模式参数

对于CX3和CX3Pro设备来说,RoCE模式可以通过使用/etc/modprobe.d/mlx4_core.conf文件中的roce_mode参数来设置。下面是可用的RoCE模式值:

  • 0,驱动将所有的GID索引都关联到RoCE v1(GID是Global ID,RoCE网络下必须使用此值来建立QP而不是像IB网络下仅仅使用LID即可)
  • 2,驱动将所有的GID索引都关联到RoCE v2
  • 4,驱动将所有的GID索引交替关联到RoCE v1和RoCE v2上

对于CX4或者CX5设备,这些设备默认都是RoCEv2,且包含了RoCEv1的GID,使用show_gids可以查看。

1.3 GID表格分布

每当以太网设备的一个网络端口配置了一个IP地址时,就会在GID表格中创建一个表项。每个表项包含:GID值,GID类型,网络设备。对于两种模式都支持的设备端口,表中会存在两个GID,有相同的值,但是类型不同。表项中的网络设备是该GID关联的以太网设备的IP地址。

GID格式有可以有两种:IPv4和IPv6。IPv4版本的GID是一个IPv4映射的IPv6地址,而IPv6版本的GID是IPv6地址本身。对于RoCEv2,关联到IPv4版本GID的三层网络包,其头三层头部是IPv4,IPv6亦然。对于RoCEv1,关联到IPv6或IPv4版本GID的网络包,头部是IPv6或者GRH。

GID表格项的总数等于N(K+1), N是赋予给所有网络设备上关联端口的IP地址数量,包括VLAN设备,别名设备,和bonding master。链路本地的IPv6地址被排除在这个计数之外,因为它们的GID总是存在的,是默认的GID,处于每个GID表格的开始。K是支持的RoCE类型数量。每个硬件端口的表格项数量限制在128。show_gids命令可以查看系统中的GID表。

在系统文件sysfs中查看GID的路径是:

  • GID值:/sys/class/infinband/<device>/ports/<port>/gids/<index> 
  • GID类型:/sys/class/infinband/<device>/ports/<port>/gid_attrs/types/<index>
  • GID网络设备:/sys/class/infinband/<device>/ports/<port>/gid_attrs/ndevs/<index>

对一个QP设置RoCE模式(前提是配置好了GID表):

  • 对于RC/UC QP,在从INIT转换到RTR状态时,填充一个地址向量(Address Vector)时,应该为QP的源GID指定硬件端口的GID表索引。这个索引对应的GID类型就被设置为该QP的RoCE类型。
  • 对于UD QP,必须修改mlx4_core模块中的ud_gid_type参数的值来为设备上所有的UD QP设置RoCE模式。 可用的值有:0(对应于RoCE v1), 2(对应于RoCE v2)。

对于RDMA_CM应用设置RoCE模式:由于RDMA_CM接口仅仅要求传递远端的IP地址即可,因此RDMA_CM决定了要使用的源GID,并从表中获取该GID。而表中可能包含多个GID,因此必须按照GID类型来查询。而这个查询的类型被定义为RDMA_CM模块的一个全局变量。要改变这个值需要使用cma_roce_mode脚本。例如:cma_roce_mode -d <dev> -p <port> -m <1,2>。

Happy Ending Every Day

免责声明:文章转载自《[RoCE]RDMA over Converged Ethernet模式以及配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unicode 字符集与它的编码方式CI-持续集成(1)-软件工业“流水线”概述下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

详解RDMA架构和技术原理

https://blog.51cto.com/u_15127636/2766990 2021-05-11 13:26:56   面对高性能计算、大数据分析和浪涌型IO高并发、低时延应用,现有TCP/IP软硬件架构和应用高CPU消耗的技术特征根本不能满足应用的需求。这要有体现在处理延时过大,数十微秒;多次内存拷贝、中断处理,上下文切换、复杂的TCP/IP协议...

电源设计Poe 以太网供电方案

按照IEEE802.at Poe 标准 以太网供电系统架构是由PSE 和PD构成。 PSE(power sourcing equipment)供电端设备,它既为以太网客户端供电,同时也是整个Poe的供电管理者。 PD(power device) 接受供电的设备,作为PSE的负载,即: Poe系统的服务端 两者基于IEEE802.at协议,并且以此为根据,实...

Ethernet帧的分析(转)

网络通信协议 一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为低层协议。 IEEE802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理数据的802.3以太网标准。还有一些用来管理物理数据流在使用串行介质的广域网中传输的标准,如帧中继FR(FrameRelay),高级数据链路控制HDLC(H...

TCP/IP协议分层模型(转载)

原文链接:https://juejin.im/post/6844903576930615309 一 连接人与人的计算机网络       计算机网络最初的目的是连续一个个独立的计算机, 使他们组成一个个更强有力的计算环境。简而言之,就是为了提高生产力。从批处理时代到计算机网络时代, 毋庸置疑,都体现了这一目的。然而,现在却似乎有了微妙的变化。      ...

MII、RMII、GMII接口的详细介绍

概述:         MII (Media Independent Interface(介质无关接口)或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和一个MAC和PHY之间的管理接口。     数据接口包括分别用于发送器和接收器的两条独立信道,每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。...

深入浅出全面解析RDMA

https://blog.csdn.net/qq_21125183/article/details/80563463     RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问,就是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这允许...