前言
为了满足日益增长的存储需求,数据存储技术从介质、架构、协议、模式方面都存在巨大转变。由原本的机械硬盘存储、易失型内存演变为了全闪存储、非易失性内存。架构从集中式存储演变为了软件定义存储、超融合架构。协议从 AHCI、SCSI 协议演变为了 NVMe 协议。
RDMA

因为包的解析都下沉到了网卡中,所以 RDMA 特性需要网卡的支持。
目前RDMA主流实现方式有以下三种
Infiniband
RoCE (基于 UDP )
iWRAP (基于 TCP )

在Mellanox官网的测试结果当中,RoCE的时延基本只有iWRAP的1/5。
RoCE的实现
无损网络
PFC
PFC 全称 Priority-based Flow Control 。顾名思议,它是 Flow Control的升级版本。Flow Control是基于端口做的检测,当网络出现拥塞时,会将整个端口的流量都停止掉,也就是说可能会由于一些不重要的数据流,影响到非常重要的数据流。这显然不是我们想看到的结果。
PFC会将网络流量分为8个优先级,可以针对不同的优先级设置流控的策略。在队列中的 buffer 消耗达到水位线时,会通过发送 Pause 帧通知上游设备暂停发包,防止缓存溢出丢包。如下图,队列7的 buffer 使用达到水位线,则本端交换机会向上游交换机发送 Pause 帧,同时不影响其它队列的正常发送。

ECN
ECN:Explicit Congestion Notification ,为显示拥塞通知。ECN 是报文在网络设备传输过程中,发生拥塞并触发 ECN 水位线时,会使用IP报文头的ECN 字段标记数据包,表明该报文遇到网络拥塞。当接收端接收到带 ECN 的报文时,则会马上向源端发送一个 CNP 报文。CNP 消息里包含了导致拥塞的 Flow 信息。源端服务器收到后,通过降低相应流发送速率,缓解网络设备拥塞,从而避免发生丢包。CNP报文在传输回源端时,也有可能发生拥塞,导致源端收到的不及时。所以可以让CNP报文走单独的PFC队列,保证优先转发
ECN 不是必须配置的(但是建议配置),ECN能够进一步减缓拥塞。从充分发挥网络高性能转发的角度,我们需要通过调整 ECN 和 PFC 的 buffer 水位线,让 ECN 快于 PFC 触发,即网络还是持续全速进行数据转发,让服务器主动降低发包速率。如果还不能解决问题,再通过 PFC 让上游交换机暂停报文发送,虽然整网吞吐性能降低,但是不会产生丢包。
交换机
想实现无损网络就得让网络设备支持 PFC/ECN 功能。当然,并不是所有的交换机都支持这些功能。目前各大产商都有支持此功能(DCB)的交换机。
NVMe-oF
落地实现及实际性能

对环境进行简单的配置以支持RDMA
在服务器上开启 ECN 功能、 PFC 队列。并设置流量的 TOS 值( TOS 值是IP 报头的一个字段,为了区分流量是进入哪个PFC队列)。基于当前环境,只需要一个队列。
在交换机上配置 ECN 功能、PFC 功能。参数需要与服务器侧适配。对于水位线配置可先采取各产商建议值。


那么与InfiniBand性能对比测试结果如何呢?

选择
总结
参考资料
六年间全球数据总量爆发式增长 中国数据增量年均增速超过30%:
https://www.chinairn.com/hyzx/20210527/100320817.shtml下一代数据存储技术研究报告(2021年)
浅析RDMA网络下MMU水线设置 浅析RDMA网络下MMU水线设置:
https://www.ruijie.com.cn/fa/xw-hlw/61714/详解:什么是NVMe over Fabrics?:
https://3d83611d.wiz06.com/wapp/pages/view/share/s/0ZwS4t1uXQPY2SmgZY2xRrOB3ZDb9q1AZkkG2KdeoX1lWHX8




