
天玑数据在之前已经发布基于RoCE网络的数据库一体机PBData和分布式存储PhegData产品,在之前的一篇文章"RoCE 架构应用前景分析”中详细展示了基于ROCE网络一体机实现以及与基于InfiniBand网络的性能测试对比,可以看出基于RoCE网络的一体机在性能上已经非常接近InfiniBand网络,与InfiniBand不同的是,RoCE的玩家众多,除了国外的主流厂商外,国内也有多家提供适配的交换机与适配卡,为打造全国产化平台提供保障。
我们知道RDMA具备极高性能,但丢包对RDMA会造成大幅性能下降,这是由于RDMA的重传机制导致的,传统的TCP只需要重传丢失的单个数据包,RDMA需要重传丢弃的数据包N之后的所有数据包。
因此 RDMA 要求网络是无损的。利用流量控制可以防止收发双方速率不匹配导致的丢包问题,这里面就不得不提两个关键技术:流量控制(PFC)和拥塞检测(ECN)。关于两者的原理可参考之前的文章“RoCE 架构应用前景分析”。
# 01
PFC
PFC(Priority Flow Control)是一种基于队列的反压协议,C可以快速、有效的调节服务器速率来保证网络不丢包,PFC提出了对网络流量按照优先级 0 - 7 分类。对于每个通信实体,有逻辑上的 Egress 端口和 Ingress 端口,分别对应出口和入口流量。每个端口都有 8 个队列,对应优先级 0 - 7,不同优先级的数据包会缓存在不同队列中。解决了区分流量的问题。
PFC 有基于二层和三层的实现方式,PCP 和 DSCP, RoCE V1只能使用PCP, RoCE V2可同时支持PCP 和 DSCP,目前市面上的适配卡基本都支持RoCE V2。
# 02
ECN
ECN(Explicit Congestion Notification)是一种基于流的端到端流控技术,并非特定存在RoCE网络,当拥塞出现时,交换机会更新报文的ECN 为11(Congestion Encountered),再转发给下一跳。接收方可以根据 ECN 标志向发送方汇报拥塞情况,调节发送速率。控制算法上采用了DCQCN,是基于QCN 的拓展,加入IP层以便用于 RoCEv2,主要功能实现在 RDMA 网卡中,中间交换机只需要支持 RED/ECN。DCQCN主要由拥塞、通知、响应三部分组成,RoCEv2 新增了CNP(Congestion Notification Packets)控制报文用于拥塞通知。
从解决方案设计上面来说,ECN和PFC组合配置,可以通过优先触发ECN报文,用来减少网络中PFC的数量,在PFC生效前完成流量的降速,并且可以适应多种场景和多级复杂网络环境。
实战配置:下面就根据典型的2计算+3存储节点一体机来配置QOS。网络拓扑如下:《PBData拓扑图》
01 服务器侧
cma_roce_mode -d mlx5_0 -p 1 -m 2mlnx_qos -i eth1 --trust dscpmlnx_qos -i eth1 --pfc 0,0,0,1,0,0,0,0echo 1 > /sys/class/net/eth1/ecn/roce_np/enable/3echo 1 > /sys/class/net/eth1/ecn/roce_rp/enable/3echo 6 > /sys/class/net/eth1/ecn/roce_np/cnp_802p_priocma_roce_tos -d mlx5_0 -t 106vconfig set_egress_map <interface> 2 3sysctl -w net.ipv4.tcp_ecn=1(可选)
左右滑动查看
详细说明如下:
设置RoCE mode为RoCE v2PFC采用DSCP作为网络服务质量管理的依据。3号优先级队列上开启PFC控制3号优先级队列上开启ECN控制设置CNP priority为 6将RoCE流量的标记设置为26,对应skprio为2,这里tos 106默认的skprio为2,对应的DSCP为26,因为TOS是8位,DSCP是6位,所以DSCP=26转换为TOS为106将skprio 2映射至 priority 3开启系统对TCP流量的ECN标记,对于RDMA流量无用
左右滑动查看
02 交换机侧
交换机侧,本次使用Mellanox 交换机,其他交换机参考对应手册。
interface ethernet 1/1-1/48 flowcontrol send off forceinterface ethernet 1/1-1/48 flowcontrol receive off force#关闭交换机端口flowcontrol 功能
dcb priority-flow-control enabledcb priority-flow-control priority 3 enableinterface ethernet 1/1-1/48 dcb priority-flow-control mode on force#开启交换机PFC功能
interface ethernet 1/1-1/48 traffic-class 3 congestion-control ecn minimum-absolute 150 maximum-absolute 1500# traffic class 3 对应的是3号输出队列,将所有端口3号输出队列的长度超过150时,开始以一定概率标记ECN,当长度超过1500的时候全部标记ECN。
traffic pool roce type lossless# 创建名为roce的流量缓存池,并将其属性设置为无损流量
traffic pool roce memory percent 50.00# 将名为roce的流量缓存池的最高内存占用设置为50
traffic pool roce map switch-priority 3# 将3号priority 有限队列的流量映射到这个流量缓存池
interface ethernet 1/1-1/48 traffic-class 6 dcb ets strict# 将所有端口的6号输出队列设置为确保转发,保证CNP效率
interface ethernet 1/1-1/48 qos trust L3# 将所有端口设置为使用三层通信模式(DSCP值)来管理网络服务质量
左右滑动查看
下一篇中我们将带来基于上述QOS配置的观测与验证。

上海天玑数据技术有限公司是以大数据、云计算为核心的高科技创新企业。公司紧扣国家未来信息化战略和行业信息化发展需求,坚持专业化和产业化的发展方向,以“创新推动发展”为用户提供专业化解决方案。
业务联系电话:400-822-5030
网址:http://www.dnt.com.cn
地址:上海市闵行区田林路1016号科技绿洲三期6号楼





