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

RoCE网络及其协议栈详解(没有中间商赚差价的网络)

引言

随着数据中心对高性能、低延迟通信需求的不断增长,传统的TCP/IP以太网连接已经难以满足现代应用的要求。为了解决这些问题,RDMA(Remote Direct Memory Access)技术应运而生。RDMA是一种允许网络中的不同计算机直接访问对方内存的技术,无需操作系统内核介入,从而实现了零拷贝传输和内核旁路机制。这不仅减少了CPU的负载,还显著降低了数据传输的延迟,提高了吞吐量。

其中,RoCE(RDMA over Converged Ethernet)作为一种允许通过标准以太网进行远程直接内存访问的技术,逐渐成为了超融合数据中心、云计算、存储和虚拟化环境中不可或缺的一部分。RoCE继承了RDMA的所有优点,并解决了传统以太网的一些固有问题,如高延迟和CPU资源消耗大等。它使得RDMA能够在现有的以太网基础设施上运行,提供了更低的延迟和更高的吞吐量,同时保持了良好的成本效益和兼容性。

什么是RDMA?

RDMA(Remote Direct Memory Access),即远程直接内存访问,是一种高效的网络通信技术,允许一台机器上的应用程序直接读取或写入另一台机器上的内存,而无需操作系统内核的干预。这种技术可以减少CPU的使用率,避免不必要的上下文切换和内存复制操作,从而提高网络性能和效率。在云计算、大数据处理和高性能计算场景下,RDMA的应用尤为广泛。

RDMA的关键特性包括:

  • 零拷贝:数据可以直接从一个系统的内存传输到另一个系统的内存中,而不需要经过中间缓冲区。
  • 内核旁路:绕过了操作系统内核,减少了系统调用带来的开销。
  • CPU卸载:大部分网络任务被转移到专门设计的NIC(Network Interface Controller),减轻了CPU的负担。
  • 低延迟:由于减少了中间环节,RDMA能够提供比传统网络协议更低的数据传输延迟。
什么是RoCE?

RoCE是在InfiniBand Trade Association(IBTA)标准中定义的一种网络协议,它使得RDMA能够在标准的以太网上运行。与传统的TCP/IP相比,RoCE能够显著减少CPU资源占用,并提供更低的延迟和更高的吞吐量。这是因为RDMA允许应用程序绕过操作系统内核,直接在用户空间中操作网卡硬件,从而实现了零拷贝传输和内核旁路机制。

RoCE的工作原理

在RoCE中,RDMA跳过了操作系统的TCP/IP协议栈,直接与支持RoCE功能的网卡上的传输层相连。这意味着当一个进程想要发送数据时,它可以将请求直接发送给NIC(Network Interface Controller),后者负责完成所有必要的打包工作并将数据帧送到物理介质上。接收端同样如此,NIC会把接收到的数据包解码后直接传递给目标进程,而无需经过OS层面的处理。

图1-RDMA与TCP/IP的比较(来源于华为)
在这里插入图片描述

表1-RDMA网络种类的比较

RoCE协议栈结构

为了更直观地理解RoCE的工作流程,我们可以参考以下简化版的协议栈图示:

RoCE协议栈

图2-RDMA协议栈(来源于英伟达)

下面是对各个层次的详细解释:

  1. RDMA Application

    • 描述:这是应用程序层,直接使用RDMA技术的应用程序运行在此层。
    • 功能:这些应用程序能够利用RDMA特性进行高效的数据传输,绕过操作系统内核,直接访问远程内存。
  2. OFA (Open Fabric Alliance) Stack

    • 描述:OFA Stack是开放织构联盟定义的一套标准和规范,旨在简化和标准化RDMA技术的使用。
    • 功能:它提供了一套统一的API接口,使得不同厂商的设备和软件可以更好地协同工作。
  3. RDMA API (Verbs)

    • 描述:RDMA API是一组用于控制RDMA操作的函数集合,通常被称为“verbs”。
    • 功能:通过这些API,应用程序可以直接与底层硬件交互,执行如发送、接收、读取、写入等操作。
  4. IBTA Transport Protocol

    • 描述:IBTA(InfiniBand Trade Association)传输协议是基于InfiniBand架构的传输层协议。
    • 功能:它负责数据包的传输和错误检测,确保数据在传输过程中的完整性。
  5. IBTA Network Layer

    • 描述:IBTA网络层是基于InfiniBand架构的网络层协议。
    • 功能:它负责路由和寻址,确保数据包能够正确地到达目标节点。
  6. RoCE v1

    • 描述:RoCE v1是RoCE的第一版,主要针对同一VLAN内的通信。
    • 功能:它使用以太网链路层,并且依赖于二层以太网报文头进行通信。
  7. UDP/IP

    • 描述:UDP(User Datagram Protocol)和IP(Internet Protocol)是传输层和网络层协议。
    • 功能:它们负责数据包在网络中的传输,提供了端到端的通信能力。
  8. RoCE v2

    • 描述:RoCE v2是RoCE的第二版,支持跨VLAN和L3网络的通信。
    • 功能:它引入了IP和UDP头部,使得数据包可以在更广泛的网络环境中传输。
  9. Ethernet Link Layer

    • 描述:以太网链路层是物理层和数据链路层的一部分。
    • 功能:它负责数据帧的传输和接收,确保数据能够在物理介质上正确传输。

总结来说,RoCE v1和RoCE v2的区别在于后者支持更广泛的网络环境,而前者仅限于同一VLAN内的通信。通过这种方式,RoCE不仅简化了部署过程,而且大大提高了网络性能和效率。

RoCE的优势
  • 低CPU消耗:由于大部分网络任务都被卸载到了专门设计的NIC上,所以服务器上的CPU可以腾出更多时间用于执行其他重要任务。
  • 高带宽利用率:减少了不必要的上下文切换和内存复制操作,从而提升了整体带宽利用率。
  • 成本效益:相比于需要专用设备才能工作的Infiniband解决方案,基于现有以太网基础设施部署RoCE的成本要低得多。
  • 良好的兼容性:几乎所有的现代服务器都配备了至少一块千兆级以上的以太网卡,这意味着几乎任何地方都可以轻松部署RoCE网络。
RoCE与其他网络协议对比

为了更清晰地展示RoCE相对于其他网络协议的特点,以下是一个简化的对比表格:

协议对比

表2-RoCE对比

结论

综上所述,RoCE不仅继承了RDMA技术的所有优点,而且还解决了传统以太网的一些固有问题。通过合理的配置和优化,它可以为企业带来前所未有的网络性能提升。


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

相关文章:

  • Spring bean加载的顺序探究
  • Vue 3 自定义 Hook:实现页面数据刷新与滚动位置还原
  • Wi-Fi 7、Wi-Fi 6 与 5G、4G 的全方位对比
  • Spring Boot 集成 MongoDB:启动即注入的便捷实践
  • 【Android】蓝牙电话HFP连接源码分析
  • 【Linux 重装】Ubuntu 启动盘 U盘无法被识别,如何处理?
  • 快速排序练习
  • Linux:生产者消费者模型
  • 第 3 章 核心处理层(上)
  • Bash 中 nohup 与 的区别及用法解析
  • leetcode416.分割等和子集
  • nginx作为下载服务器配置
  • Python人脸识别库DeepFace使用教程及源码解析
  • imbinarize函数用法详解与示例
  • python 基础类json和csv
  • 深入剖析iOS网络优化策略,提升App性能
  • 【LC】2239. 找到最接近 0 的数字
  • Node.js 写一个登录中间件
  • 排序算法学习小结
  • 如何确保Python爬虫不违反微店规定
  • Elixir语言的软件开发工具
  • 切面Aop的了解和使用
  • 【优选算法篇】2----复写零
  • 打游戏黑屏了但是有游戏声音 原因分析
  • 口令攻击和钓鱼攻击
  • nvm的各种命令及其用途