当前位置: 首页 > article >正文

SmartX分享:SMTX ZBS 中 RDMA 技术简介

目录

  • 背景
  • 如何实现
  • 存储网络是什么
    • TCP/IP
    • RDMA
      • RDMA 工作原理
      • RDMA 的实现方案
    • ZBS 支持 RDMA 的要求
  • 参考

背景

我们清楚,分布式存储将利用网络作不同设备的互联。最基础的如TCP/IP的IP SAN,进阶的有FC SAN、IB等等。
SmartX 支持 10G以上的TCP/IP网络作为互联网络,同时也支持25G的RDMA网络。

那么什么是RDMA?
RDMA 是直接内存存取。指的是设备可以直接读写内存而无需经过CPU。
在 ZBS 中,会在两个层面使用到 RDMA 技术:

  • 存储接入网络:用于为块存储集群外部节点提供存储服务
  • 存储内部数据同步网络:用于块存储集群内各节点间数据交换的网络,该网络只能由集群内部使用

如何实现

存储网络是什么

首先我们要清楚一个概念,分布式存储与集中式存储最大的区别在于,需要保证在不同存储服务器中,如何保证数据的一致性和可靠性
基于网络进行数据同步是必须实现的要求。
我们常说的网络一般可以分类为:业务网络、管理网络、存储网络。而其上又可以细分管理网络(管理网络和iBMC/IPMI网络)、业务网络、存储网络等。

一般来说,存储节点直接用于传输数据,实现数据同步、修改的网络就是存储网络。在 ZBS 中,这个网络被称为存储内部数据同步网络

ZBS 要求最低 10G 以太网卡与交换机,采用标准TCP/IP。不过TCP/IP的机制导致其传输过程中,有很大一部分开销被报文校验、处理包等操作浪费掉了。
同时,不同速率存储介质的传输才是限制速率最大的因素。所以 RDMA 技术结合 25G 及以上网络规格,可以实现更好的效果。

TCP/IP

TCP/IP 的问题:

  • TCP/IP 协议栈处理带来的时延
    在接收/发送数据报文时,系统内核需要进行多次上下文切换,同时这些处理需要被复制转发(TCP/IP实际上并不是直接转发,都是复制转发)与协议的封装/解封装需要CPU处理这些操作,会导致时延。
  • TCP/IP 协议栈处理导致CPU消耗
    TCP/IP 需要主机CPU多次参与到协议栈的内存复制。因此每次的报文交互都会提高CPU负载。
    在这里插入图片描述

RDMA

RDMA(Remote Direct Memory Access 直接内存存取)是一种允许计算机在网络上直接访问远程系统内存的技术,而不需要通过操作系统的干预或CPU的参与。数据可以在两个计算机之间快速、高效地传输,极大地减少了延迟和 CPU 负载。
RDMA 主要用于高速、低延迟的数据传输场景,比如高性能计算(HPC)、数据中心、存储网络和分布式系统等领域。

RDMA 工作原理

通过直接内存访问技术,数据从一个系统快速移动到远程系统的内存中,无需经过内核网络协议栈不需要经过中央处理器耗时的处理。

  • 零拷贝(Zero Copy)
    RDMA 允许网卡直接读取或写入内存,数据可以直接在内存之间传递,避免了数据操作系统的缓冲区之间的拷贝,实现了不同节点之间的分布式块存储服务直接通讯,有效降低延时。
  • 内核旁路(内核Bypass)
    RDMA 避免了传统传输过程中应用内存和内核之间的数据复制,在不需要任何内核参与的条件下,数据能够从应用内存发送到本地网卡并通过网络发送给远程网卡。内核旁路功能使得 RDMA 在大规模集群和分布式系统中表现出色,系统可以更轻松地处理大量节点之间的数据传输需求。
  • CPU 卸载(CPU Offload)
    RDMA 技术通过直接在网络适配器上执行数据传输和处理,在高带宽压力下对 CPU 占用极低,能够使 CPU 更专注于计算任务而非数据传输的管理,提高系统的吞吐量和效率。这种机制适用于高并发和大规模数据处理环境,可有效减轻系统瓶颈。

在这里插入图片描述

RDMA 的实现方案

在这里插入图片描述

  1. IB
    InfiniBand,专有协议,为实现RDMA提供了全栈架构,包括编程接口、2-4层协议、网卡接口、交换机等一整套RDMA解决方案。
    IB的编程接口也是RDMA编程接口的标准,RoCE和iWARP都是使用IB的接口进行编程。
    但由于专有协议,不开源。从协议到软硬件封闭,其性能虽然最优,但成本也最高,因为需要更换全套设备,包括网卡、光缆和交换机等。因此收费很贵,一根1m的IB线缆据说就收费上千元。
  2. RoCE
    RDMA over Converged Ethernet,将IB的接口封装在以太网上进行传输。
    RoCE分为RoCEv1和RoCEv2。v1包括网络层和传输层协议,不支持路由,使用较少;v2基于UDP/IP协议,可路由。
    RoCE 其较低的网络标头是以太网标头,其较高的网络标头(包括数据)是IB标头,这支持在标准以太网基础设施(交换机)上使用RDMA,只有网卡是特殊的。但是需要注意的是,由于基于UDP,所以需要网络是无损网络
  3. iWARP
    类似RocE,构建与TCP协议上。也允许在常规以太网上进行RDMA传输。
    但是iWARP不是直接继承于IB,而是有一套IETF的标准。

在这里插入图片描述

同时,RDMA需要设备厂商的生态支持(网卡、交换机)。主要是因为RDMA将传输的包处理从CPU卸载到了网卡上,所以需要特殊的网卡支持。

SmartX 的 ZBS 非常看好 RoCE 未来的发展。因此 ZBS 存储内部数据同步网络采用的是RoCEv2 的 RDMA 技术路线。

ZBS 支持 RDMA 的要求

ZBS 需要启用 RDMA ,目前仅支持 Mellanox Technologies 厂商的网卡。
交换机必须支持 L3 DSCP 流控或 Global Pause 流控。
缓存盘推荐使用NVMe SSD。
软件版本需要是标准版或企业版。
仅支持在新部署集群时启用RDMA功能。启用 RDMA 功能,不允许与其他系统网络共用虚拟分布式交换机也不支持 QOS。
双活集群不支持 RDMA 。

参考

  1. 基于 SmartX 分布式存储的 RDMA 与 TCP/IP 技术与性能对比
  2. SmartX 分布式存储产品组合介绍

http://www.kler.cn/a/448363.html

相关文章:

  • 代理模式(JDK,CGLIB动态代理,AOP切面编程)
  • Mysql复习(二)
  • MacOS安装MySQL
  • HDR视频技术之十:MPEG 及 VCEG 的 HDR 编码优化
  • 【AIGC-ChatGPT进阶副业提示词】末日生存指南 2.0:疯狂科学家的荒诞智慧
  • 基于w25q128的智能门禁
  • springboot470基于协同过滤算法的东北特产销售系统的实现(论文+源码)_kaic
  • 优先队列【东北大学oj数据结构9-3】C++
  • 【故障处理系列--gitlab的CI流水线下载安装包提示报错】
  • 【Rust自学】3.6. 控制流:循环
  • 苍穹外卖-day05redis 缓存的学习
  • GFPS扩展技术原理(七)-音频切换消息流
  • 探索 JSON 数据在关系型数据库中的应用:MySQL 与 SQL Server 的对比
  • Obfuscator使用心得
  • 《开启微服务之旅:Spring Boot Web开发》(二)
  • Docker挂载
  • SQL 使用带聚集函数的联结
  • 【多维 DP】力扣3250. 单调数组对的数目 I
  • 情报信息收集能力
  • HR/TA/HRBP的关系
  • DDoS工作原理
  • YOLOv9-0.1部分代码阅读笔记-lion.py
  • workman服务端开发模式-应用开发-后端api推送修改一
  • leetcode之hot100---48旋转图像(C++)
  • 最新ubuntu20.04安装docker流畅教程
  • 关于UDP缓冲区和丢包统计