RouterOS v7.17开始CRS3/5xx系列支持RDMA over Converged Ethernet (RoCE)的QoS配置,例如在NAS和数据存储,以及GPU集群等都可以使用RDMA无损的网络,较少CPU负载和降低网络延迟。

关于RDMA(Remote Direct Memory Access,远程直接内存访问)是一种网络技术,允许计算机直接从一台机器的内存访问另一台机器的内存,无需操作系统介入,从而显著降低延迟和CPU开销。

特点

  1. 零拷贝:数据直接从发送方内存传输到接收方内存,无需中间缓冲。
  2. 内核旁路:应用程序直接访问网络硬件,绕过操作系统内核,减少延迟。
  3. CPU卸载:网络适配器处理数据传输,减少CPU负担。

优势

  • 低延迟:适用于高性能计算和金融交易等对延迟敏感的场景。
  • 高吞吐量:支持大数据传输,适合数据中心和大规模存储。
  • 低CPU占用:释放CPU资源,提升系统整体性能。

RoCE和InfiniBand均是InfiniBand Trade Association(IBTA)定义的网络协议栈,分别基于以太网和InfiniBand Fabric实现高带宽、低时延和高可靠的通信。以支持可靠的消息传递(发送/接收)和内存操作语义(例如RDMA)。当前InfiniBand主要由Nvidia在推广,不能与当前的以太网兼容,而RoCEv2是一种基于以太网的高性价比解决方案。

RoCE 允许使用以太网直接访问远程存储系统上的内存,而无需主机 CPU 参与。此功能可显著减少延迟和 CPU 开销,使 RoCE 成为高性能计算和数据中心环境的理想选择。RoCE 还支持融合网络,其中各种服务(例如数据存储、网络和多媒体)在单个以太网基础设施上运行。这简化了网络管理并降低了维护独立网络的成本和复杂性。

RoCE 通过使用ECNPFC机制来实现这一点。这些功能有助于防止网络拥塞和数据包丢失,从而确保可靠、无损的通信。请参阅设备功能表以了解兼容的交换机。虽然交换机可以支持 RoCE 环境,但终端主机也必须与 RoCE 协议兼容并配备支持 RDMA 的网络接口卡 (NIC),例如mellanox的 ConnectX-3/4/5/6,推荐使用ConnectX-4以上版本

对于MikroTik CCR和CRS系列支持的交换机请对比下面的列表,需要支持ECN和PFC Profiles

RoCE 有两个主要版本。RoCEv1 用作以太网链路层协议,使用以太网类型 0x8915。RoCEv2 适用于标准 IP 网络,使用 UDP 目标端口号 4791。IP 报头中的 ECN 位被标记为网络拥塞信号,拥塞通知包 (CNP) 用于向发送方确认拥塞。对于流量优先级,DSCP 26 用于 RoCEv2 流量,而 DSCP 48 用于 CNP。

以下示例可用于具有 PFC 和 ECN 的无损 RoCEv2,并假设交换机使用其 默认配置,其中包括默认“桥接”接口和所有添加为桥接端口的以太网接口。 RouterOS 版本不能低于7.17。

首先,配置其他配置文件。非 RoCE 流量将分配给已经存在的“默认”配置文件,流量类别为 1,RoCEv2 分配给流量类别 3,CNP 分配给流量类别 6。

/interface ethernet switch qos profile
add name=roce traffic-class=3
add name=cnp traffic-class=6

创建 QoS 映射以根据 DSCP 值匹配 QoS 配置文件。

/interface ethernet switch qos map ip
add dscp=26 profile=roce
add dscp=48 profile=cnp

配置硬件队列和调度程序。对流量类别 1 和流量类别 3 使用 ETS ( schedule=high-priority-group,每个类别分配 50% 带宽 (weight=1),对流量类别 6 使用严格优先级调度。此外,为流量类别 3 中的无损流量配置单独的共享内存池 (shared-pool-index=1),并启用 ECN (ecn=yes) 来标记交换机中出现拥塞的 IP 数据包。

/interface ethernet switch qos tx-manager queue
set 1 schedule=high-priority-group weight=1
set 3 schedule=high-priority-group weight=1 shared-pool-index=1 ecn=yes
set 6 schedule=strict-priority

尽管使用schedule=low-priority-group允许您为不同的流量类别集创建单独的 ETS 调度和带宽分配,但不建议将此设置与 一起使用lldp-dcbx=yes。原因是 ETS 配置/建议 TLV 旨在处理跨流量类别的单一带宽分配,因此schedule=high-priority-group<应改用 。
为流量类别 3 配置 PFC 配置文件,以确保 RoCEv2 流量的无损环境。

/interface ethernet switch qos priority-flow-control
add name=pfc-tc3 rx=yes traffic-class=3 tx=yes

trust-l3=keep在预期有 RoCEv2 流量的交换机端口上设置第 3 层信任模式 ( ),设置 PFC (pfc=pfc-tc3) 和队列 3 的出口速率以符合 PFC 要求 (egress-rate-queue3=10.0Gbps)。在此示例中,使用了 10Gbps SFP+ 接口,并且可以将出口速率设置为与接口的物理速度相匹配。根据您的接口速度更改此属性。

/interface ethernet switch qos port
set sfp-sfpplus1 egress-rate-queue3=10.0Gbps pfc=pfc-tc3 trust-l3=keep
set sfp-sfpplus2 egress-rate-queue3=10.0Gbps pfc=pfc-tc3 trust-l3=keep
set sfp-sfpplus3 egress-rate-queue3=10.0Gbps pfc=pfc-tc3 trust-l3=keep
set sfp-sfpplus4 egress-rate-queue3=10.0Gbps pfc=pfc-tc3 trust-l3=keep

启用 QoS 硬件卸载以使上述设置开始工作。

/interface ethernet switchset switch1 qos-hw-offloading=yes

启用LLDP 数据中心桥接功能交换协议 (DCBX)以与其他邻近设备共享 QoS 设置和功能。

作为可选步骤,增加 L2MTU 以容纳更大的数据包,需要注意infiniBand协议的MTU最大支持4096。

/interface ethernet set [find switch=switch1] l2mtu=9500

关于RoCE

lossless(无损)

通过对RoCE的了解,主要是基于QoS控制,采用以太网和UDP传输层协议设计,资源消耗降低。在网络拥塞的情况下通过PFC进行优先级控制,保证数据无损(不会因为网络拥塞而将数据包丢弃,重传,保证数据传输的完整性),所以如果要更完善的支持RoCE需要交换机支持PFC,这种被称为lossless

lossy(有损)

当然交换机不支持PFC也能运行RoCE,因为RoCE就是基于以太网协议,RoCEv1基于二层,RoCEv2基于三层,无法保证在经过以太网交换机的网络拥塞问题,由支持RoCE的网卡自己完成拥塞控制,这种被称为lossy

主要讨论的协议是RoCEv2

PFC

PFC(Priority Flow Control)基于 IEEE 802.1Qbb 标准,可对每个优先级进行独立的流控开关配置。

1、PFC 是一种开关型功能,它要么启用、要么禁用。因此,对每个优先级,PFC 的配置值仅为 0 或 1。

2、如果启用了 PFC,它会根据 IEEE 标准发送 Pause 帧给对端,通知停止发送数据。

3、如果禁用了 PFC,该优先级对应的数据流会像普通以太网一样流动,数据丢失需要通过上层协议来处理(例如 TCP 重传)

PFC 优先级(0~7)通常基于 IEEE 802.1p 的 QoS Class 定义,一共8个队列,然后在将DSCP值映射到这8个队列中:

  • 优先级 0:Best Effort (普通流量)。
  • 优先级 1:Background (低优先级流量)。
  • 优先级 2:Spare (预留优先级)。
  • 优先级 3:Excellent Effort (业务关键流量如RDMA,通常用于 PFC)。
  • 优先级 4:Controlled Load (受控负载)。
  • 优先级 5:Video (视频数据流)。
  • 优先级 6:Voice (语音数据流)。
  • 优先级 7:Network Control (网络控制流量,通常优先级最高)。

对于RDMA,被默认放在优先级3的队列,在前面看到add dscp=26 profile=roce,即roce被定义为dscp值为26,在后面可以看到set 3 schedule=high-priority-group weight=1 shared-pool-index=1 ecn=yes,即类型3的数据为高优先级。

PFC需结合 DSCP/QoS 配置,在实际场景中,PFC 通常与 DSCP 映射、QoS 策略配合使用,提供更细粒度的优先级和队列管理,关于DSCP让我想起10多年前网吧用DSCP来标记游戏和应用,配置流量的优先级,其实RoCE也是异曲同工的处理方式。

DSCP 位于 IP 层(Layer 3),用于网络流量分类,PFC 位于 Ethernet MAC 层(Layer 2),对数据链路层的流量进行流控,因为 PFC 依赖的是 802.1p 优先级(Layer 2 QoS),所以需要从 IP 层的 DSCP 值映射到 Layer 2 的 802.1p 优先级。最终目的是将上层协议的优先级标记(如 DSCP 值)转换为适当的 PFC 流控行为,便于实现跨网络的端到端流量优先级管理。

对于无损的RoCE网络配置,PFC起到的作用就是保证在网络拥塞的情况下让RDMA数据优先通过丢弃其他类型的数据,因为RoCE可以与以太网数据混用,因此考虑到拥塞问题,需要使用QoS来解决优先级问题,当然如果是纯粹的RoCE网络,对于拥塞问题就开数据量的大小,交换机支持的QoS在没有达到接口速率前是不起作用的。所以在多台RoCE主机互联使用交换机通信时,交换机只是起到在混合有以太网通信时通过QoS保障RoCE优先通过,丢弃其他非优先数据,看到华为把RoCE放到网络融合类别中的原因,由于Nvidia的IB协议是无法兼容以太网设备,因此才有基于IB协议的交换机,如果采用RoCE协议,则可以在任何以太网交换机上运行。

 

市面上支持RoCEv2的交换机价格都比较高,而RouterOS在100Gb的网络设备包括CCR2216-1G-12XS-2XQ,CRS504-4XQ,CRS510-8XS-2XQ,CRS518-16XS-2XQ,CRS520-4XS-16XQ,而4口100G的CRS504-4XQ和8个25G+2个100G的CRS510-8XS-2XQ对于建立混合以太网和RoCE网络在价格上由比较明显的优势,CRS504-4XQ是799USD,CRS510-8XS-2XQ是999USD

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下