【硬件相关】RDMA网络类别及基础介绍

文章目录

    • 一、前言
      • 1、RDMA网络协议
      • 2、TCP/IP网络协议
    • 二、RDMA类别
      • 1、IB
      • 2、RoCE
      • 3、iWARP
    • 三、RDMA对比
      • 1、优缺点说明
        • a、性能
        • b、扩展性
        • c、维护难度
      • 2、总结说明

一、前言

roce-vs-infiniband-vs-tcp-ip
RoCE、IB和TCP等网络的基本知识及差异对比

分布式存储常见网络协议有TCP/IP和RDMA两种,传统TCP/IP协议无法满足高性能计算、AIGC大模型分析等高并发、低时延应用,通常会采用RDMA来满足高吞吐、低延时的网络通信要求。
传统TCP/IP网络通信使用内核发送消息,这种通信方式有较高的数据移动和数据复制开销,现有数据中心一般采用RDMA网络通信,降低了读写时延和服务器CPU资源占用,但RDMA协议对网络丢包非常敏感,0.01的丢包率会使得RDMA吞吐率下降为0,无损成为RDMA网络重要需求之一,通常要求丢包率在1e-05(十万分之一)以下。
在这里插入图片描述

1、RDMA网络协议

RDMA,即Remote Direct Memory Access(远端直接内存访问),它能够使得网络中的两台主机直接在内存中交换数据,而不依赖与任何一台主机的处理器、缓存和操作系统,可以直接通过网络接口访问内存数据,无需操作系统的介入,降低数据处理过程中的延迟。
它将收/发包的工作卸载(offload)到了网卡上,不需要像TCP/IP协议一样使系统进入内核态,减少了拷贝、封包解包等等的开销。这样大大降低了以太网通信的延迟,减少了通讯时对CPU资源的占用,缓解了网络中的拥塞,让带宽得到更有效的利用,从而在支持RDMA的系统之间实现更快的数据传输速率和更低的延迟。
RDMA网络协议具备以下优势:

  • 零拷贝(Zero-copy) :应用程序能够直接执行数据传输,在不涉及到网络软件栈的情况下。数据能够被直接发送到缓冲区或者能够直接从缓冲区里接收,而不需要被复制到网络层。
  • 内核旁路(Kernel bypass) :应用程序可以直接在用户态执行数据传输,不需要在内核态与用户态之间做上下文切换。
  • 不需要CPU干预(No CPU involvement) :应用程序可以访问远程主机内存而不消耗远程主机中的任何CPU。远程主机内存能够被读取而不需要远程主机上的进程(或CPU)参与。远程主机的CPU的缓存(cache)不会被访问的内存内容所填充。
  • 消息基于事务(Message based transactions):数据被处理为离散消息而不是流,消除了应用程序将流切割为不同消息/事务的需求。
  • 支持分散/聚合条目(Scatter/gather entries support):RDMA原生态支持分散/聚合。也就是说,读取多个内存缓冲区然后作为一个流发出去或者接收一个流然后写入到多个内存缓冲区里去。

在这里插入图片描述

2、TCP/IP网络协议

TCP/IP,即Transmission Control Protocol/Internet Protocol(传输控制协议/网络协议),用于互联网上互联网络设备,它确定数据应该如何打包、寻址、传输、路由和接收;TCP/IP 非常重视两台计算机之间的精确数据传输,如果系统在一次性发送消息时遇到问题,则必须再次发送整个消息。
此外,TCP/IP 的功能分为四个不同的层次: 数据链路层、互联网层、传输层和应用层。数据必须经过这四层,然后才能在另一端接收。然后CP/IP 将通过以相反的顺序传递层来重新组装数据,并将其呈现给接收方。通过这种方式,可以通过升级某些层而不是整个系统来提高数据中心的性能或安全性。

二、RDMA类别

RDMA有以下三种类别

1、IB

IB,即Infiniband,是一种专门为RDMA设计的网络,从硬件级别保证网络无损,提供极高的带宽和极低的时延,但是成本高,需要支持IB的网卡和交换机。
Infiniband交换机是特定厂家提供的专用产品(主流厂商有NVIDIA(Mellanox)、Intel、Cisco、HPE 等),采用私有协议,而目前绝大多数环境均采用IP以太网络,采用Infiniband无法满足互通性需求,同时封闭性架构存在厂商锁定问题。

2、RoCE

基于Soft-RoCE可实现不支持RoCE网卡主机具备RoCE网络协议通信能力,配置过程详见Chapter 2. Configuring RoCE

RoCE,即RDMA over Converfied Ethernet,基于以太网实现的RDMA网络,它允许数据从一台主机传输到另一台主机,减少了CPU的操作负载。消耗的资源比 iWARP 少,支持的特性比 iWARP 多,可以使用普通的以太网交换机(需要支持无损以太网技术),但是需要支持RoCE的网卡。
RoCE目前有两个版本

  • RoCE v1:是一种链路层协议,使用RoCE v1协议通信的双方必须在同一个二层网络内,允许在同一个广播域下的任意两台主机直接访问
  • RoCE v2:是一种网络层协议,使用RoCE v2协议的包可以被三层路由,具有更好的扩展性,基于UDP协议封装,允许不同广播域下的主机通过三层访问

3、iWARP

iWARP,即internet Wide Area RDMA Protocol,基于TCP实现的RDMA网络,它使用TCP来实现可靠的数据传输,但由于TCP协议限制,其性能上丢失了大部分RDMA的优势。相比RoCE,在大型组网的情况下,iWARP的大量TCP连接会占用大量的内存资源,对系统规格要求更高。可以使用普通的以太网交换机,但是需要支持iWARP的网卡。
RDMA

在这里插入图片描述

三、RDMA对比

类别RoCEIBiWARP
性能低(受TCP影响)
扩展性
稳定性
维护难度
投入成本
网络设备以太网交换机IB交换机以太网交换机
网卡要求支持RoCE支持IB支持iWARP
标准编制IBTA(InfiniBand Trade Association)IBTA(InfiniBand Trade Association)IETF(Internet Engineering Task Force)

1、优缺点说明

a、性能
  • RoCE提高了企业数据中心的速度和能力,在不更换以太网基础设施情况下降低总体成本
  • Infiniband使用串行链路和总线一次1bit地发送数据,从而实现更快、更有效的通信
  • iWARP提供了与RoCE类似的低延迟和高吞吐量的传输能力,但性能略逊于 InfiniBand 和 RoCE
b、扩展性

三种RDMA网络协议都具有很高的可扩展性和灵活性,其中Infiniband协议扩展性最高,Infiniband一个子网可以支持成千上万个节点,它提供了相对简单和可扩展架构,通过Infiniband路由器创建几乎无限的集群大小。

c、维护难度

三种RDMA网络协议中,其中Infiniband维护难度及成本最高,Infiniband需要采购特定厂家生产的IB网卡和IB交换机,使用了私有协议作为专用网络技术,无法继承用户在IP网络运维的积累;
当前Infiniband市场空间占比很少,业内有经验的运维人员严重缺乏,网络一旦出现故障,无法及时修复,运营成本极高,目前基于传统以太网承载RDMA(RoCE v2)成为RDMA大规模应用的必要趋势。

2、总结说明

  • 对于追求最高性能的网络通信,无疑首选是Infiniband
  • 对于追求更高性能、更易于管理和成本有限的网络通信,无疑首选是RoCE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/424002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【【C语言简单小题学习-1】】

实现九九乘法表 // 输出乘法口诀表 int main() {int i 0;int j 0;for (i 1; i < 9; i){for (j 1; j < i;j)printf("%d*%d%d ", i , j, i*j);printf("\n"); }return 0; }猜数字的游戏设计 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdi…

c语言--qsort函数(详解)

目录 一、定义二、用qsort函数排序整型数据三、用qsort排序结构数据四、qsort函数的模拟实现 一、定义 二、用qsort函数排序整型数据 #include<stdio.h> scanf_S(int *arr,int sz) {for (int i 0; i < sz; i){scanf("%d", &arr[i]);} } int int_cmp(c…

点云数据结构化与体素化理论学习

一、PCD点云数据存储格式的进一步认识 &#xff08;一&#xff09;PCD点云存储格式相较于其它存储格式&#xff08;如PLY、STL、OBJ、X3D等&#xff09;的优势[1] &#xff08;1&#xff09;具有存储和处理有组织的点云数据集的能力&#xff0c;这对于实时应用和增强现实及机器…

GEE入门篇|图像处理(三):阈值处理、掩膜和重新映射图像

阈值处理、掩膜和重新映射图像 本章前一节讨论了如何使用波段运算来操作图像&#xff0c; 这些方法通过组合图像内的波段来创建新的连续值。 本期内容使用逻辑运算符对波段或索引值进行分类&#xff0c;以创建分类图像。 1.实现阈值 实现阈值使用数字&#xff08;阈值&#xf…

YOLOv9独家原创改进|增加SPD-Conv无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、文章摘要 卷积神经网络(CNNs)在计算即使觉任务中如图像分类和目标检测等取得了显著的成功。然而&#xff0c;当图像分辨率较低或物体较小时&…

电源通常向计算机内部的各种组件提供的三种电压:1

本文将与您分享电源通常为计算机内部各个组件提供的三种电压是什么。 小编觉得还是比较实用的&#xff0c;所以分享给大家&#xff0c;作为参考。 下面就跟随小编一起来看看吧。 电源通常为电脑内部的各个部件提供三种电压&#xff1a; 1&#xff0e; 5V&#xff0c;主要供给主…

【k8s管理--两种方式安装prometheus】

1、k8s的监控方案 1.1 Heapster Heapster是容器集群监控和性能分忻工具&#xff0c;天然的支持Kubernetes和CoreOS。 Kubernetes有个出名的监控agent–cAdvisor。在每个kubernetes Node上都会运行cAdvisor&#xff0c;它会收集本机以及容器的监控数(cpu,memory,filesystem,ne…

Matlab 机器人工具箱 RobotArm类

文章目录 1 RobotArm1.1 方法1.2 注意2 RobotArm.RobotArm3 RobotArm.cmove4 其他官网:Robotics Toolbox - Peter Corke 1 RobotArm 串联机械臂类 1.1 方法 方法描述plot显示机器人的图形表示teach驱动物理和图形机器人mirror使用机器人作为从机来驱动图形</

C++ 设计模式

文章目录 类图泛化实现关联聚合组合依赖总结 类内部的三种权限&#xff08;公有、保护、私有&#xff09;类的三种继承方式描述与图总结 面向对象七大原则单一职责原则&#xff08;Single Responsibility Principle&#xff09;里氏替换原则&#xff08;Liskov Substitution Pr…

C3_W2_Collaborative_RecSys_Assignment_吴恩达_中英_Pytorch

Practice lab: Collaborative Filtering Recommender Systems(实践实验室:协同过滤推荐系统) In this exercise, you will implement collaborative filtering to build a recommender system for movies. 在本次实验中&#xff0c;你将实现协同过滤来构建一个电影推荐系统。 …

【Memory协议栈】Memory Abstraction Interface模块介绍

目录 前言 正文 1.功能简介 2.关键概念 3.关键类型定义 3.1 MemIf_StatusType 3.2 MemIf_JobResultType 3.3 MemIf_ModeType 4.关键API定义 4.1 MemIf_SetMode 4.2 MemIf_Read 4.3 MemIf_Write 4.4 MemIf_Cancel 4.5 MemIf_GetStatus 4.6 MemIf_GetJobResult 4…

「滚雪球学Java」:集合(章节汇总)

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

Ocr之PaddleOcr模型训练

目录 一、系统环境 1 镜像拉取ppocr 进行部署 2 安装paddlepaddle 二、训练前的准备 1 下载源码 2 预模型下载 3 修改模型训练文件yml 4 编排训练集 5 执行脚本进行训练 6 需要修改文件夹名称 三、开始训练 1 执行训练命令 2 对第一次评估进行解释 3 引言 五、总…

【解决方案】ArcGIS Engine二次开发时,运行后出现“正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain...”

我们在做ArcGIS Engine二次开发时&#xff0c;特别是新手&#xff0c;安装好了开发环境&#xff0c;满怀信心的准备将按照教程搭建好的框架在Visual Studio中进行运行。点击运行后&#xff0c;却出现了“正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化…

2023年09月CCF-GESP编程能力等级认证Scratch图形化编程四级真题解析

一、单选题(共15题,共30分) 第1题 人们所使用的手机上安装的 App 通常指的是( )。 A:一款操作系统 B:一款应用软件 C:一种通话设备 D:以上都不对 答案:B 第2题 下列流程图的输出结果是?( ) A:9 B:7 C:5 D:11 答案:A 第3题 默认小猫角色,执行下列程序…

【Linux】软件管理yum | 编辑器vim | vim插件安装

目录 1. Linux软件管理yum 1.1 什么是软件包 1.2 查看软件包 1.3 如何安装软件 1.4 如何卸载软件 2. Linux编辑器vim 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2.6 插件安装 1. Vim-Plug 3. coc.nvim …

力扣hot100题解(python版44-47题)

44、二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;…

C++的内联函数

目录 前言 内联函数 为什么声明和定义分离 为什么声明和定义分离后不出错 为什么内联函数不支持声明和定义分离 为什么内联函数支持声明和定义不分离 坚持声明和定义不分离的解决方法 static修饰函数 inline修饰函数 结论 声明和定义不分离的应用场景 前言 在C语言…

Compiling from source on UNIX(cmake doxygen ant maven ccache)

前言 源码链接 cmake-3.18.0 https://cmake.org/files/v3.18/cmake-3.18.0.tar.gzdoxygen-1.10.0 https://www.doxygen.nl/files/doxygen-1.10.0.src.tar.gzapache-ant-1.10.8-bin https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.8-bin.tar.gzapache-maven-3…

tomcat部署和优化(二)----- 轻松搭建博客、状态页优化、虚拟主机配置

一、tomcat 1、自建博客 [rootzzzcentos1 ~]#systemctl stop firewalld [rootzzzcentos1 ~]#setenforce 0 [rootzzzcentos1 ~]#cd /data/ [rootzzzcentos1 data]#rz -E rz waiting to receive. [rootzzzcentos1 data]#ls apache-tomcat-9.0.16 apache-tomcat-9.0…