前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[RoCE]RDMA over Converged Ethernet模式以及配置

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

作者头像
昊楠Hacking
发布2018-03-30 10:19:05
5.1K0
发布2018-03-30 10:19:05
举报

[阅读本文之前需要现有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),同时对于协议头部的格式保持无关性。

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>。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.RDMA over Converged Ethernet(RoCE)
    • 1.1 RoCE模式
      • 1.2 RoCE模式参数
      • 1.3 GID表格分布
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档