使用RDMA技术构建无损网络
如何使用RDMA构建无损网络?
在深入研究RDMA和无损网络领域后,会经常遇到两个基本问题:为什么采用无损网络至关重要?这些先进技术有什么优势?
无损网络是一种新型的网络技术,它可以在不丢失数据包的情况下传输数据。这种技术的优势在于它可以提高网络的吞吐量和延迟,同时减少了网络拥塞和丢包率。
RDMA(Remote Direct Memory Access)是一种基于专用通道的通信协议,它可以直接访问远程计算机的内存,而不需要经过CPU。这种技术的优势在于它可以大大提高数据传输速度和效率,同时减少了CPU的负担。
为什么无损网络至关重要
线上业务涵盖搜索、购物、实时流媒体等各个方面,对高频用户请求的快速响应至关重要。数据中心中的任何延迟都可能对用户体验产生重大影响,影响网站流量、口碑、活跃用户等因素。此外随着机器学习和高性能计算技术的激增,对计算能力的需求也急剧增长。为了满足复杂神经网络和深度学习模型的要求,数据中心正在部署大量分布式计算集群。
然而在大规模并行程序中固有的通信延迟可能会严重影响整体计算效率。为了应对数据中心内不断增长的数据存储和检索效率问题,以太网收敛的分布式存储网络正日益受到青睐。然而在以大数据流为主要特征的存储网络中,由于拥塞引起的数据包丢失可能会触发大数据流的重传,从而降低效率并加剧拥塞。
从前端用户体验和后端应用效率的角度来看,当前数据中心网络的先决条件是清晰的:较低的延迟更好,效率更为重要。为减少数据中心内部网络的延迟并提高处理效率,RDMA技术应运而生。RDMA允许用户级应用程序直接读取和写入远程内存,而无需经过 CPU 进行多次内存复制,RDMA绕过内核并直接将数据写入网卡。这实现高吞吐量、超低延迟和最小的CPU开销。目前,RDMA在以太网上的传输协议是RoCEv2。RoCEv2是一种基于UDP的无连接协议,与面向连接的TCP相比,它更快且消耗更少的CPU资源。
然而RoCEv2缺乏TCP中的滑动窗口和确认响应等机制也存在挑战。在发生数据包丢失的情况下,上层应用程序必须检测并启动重传,降低了RDMA传输效率。为了充分发挥RDMA的性能并解决数据中心中大规模分布式系统的网络性能瓶颈,建立一个专为RDMA设计的无丢包网络环境至关重要。有效解决网络拥塞问题是实现无丢包传输的关键。
什么是RDMA
RDMA(远程直接内存访问)是一种高性能网络通信技术,具有高带宽、低延迟、无CPU消耗、零拷贝等优点。相比kernel TCP、DPDK等传统通信手段,RDMA在延迟、吞吐和CPU消耗方面均有明显优势 。
在传统的应用程序之间传输数据的模式中,过程如下所示:
- 数据从应用程序缓存复制到内核中的TCP协议栈缓存。
- 然后将其复制到驱动程序层。
- 最后,将其复制到网卡(网络接口卡)缓存。
多次内存复制引发CPU干预,延迟高达数十微秒,消耗大量性能。然而,在RDMA模式下,应用程序数据直通网卡,绕过内核协议栈,避免了这些劣势,显著提高了效率,包括:
- 将处理延迟从几十μs降低到1μs。
- 在整个过程中CPU参与度最小,从而节省性能。
- 增强传输带宽。
RDMA对网络有什么需求
RDMA(Remote Direct Memory Access)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需经过操作系统内核。RDMA在高性能计算、大数据分析和高并发I/O场景中的应用越来越广泛。如iSICI、SAN、Ceph、MPI、Hadoop、Spark和Tensorflow等技术正在采用RDMA进行操作。对于支持端到端传输的底层网络,最关键的指标是低延迟(以μs计)和无丢包 。
低延迟
- 在网络拥塞情况下,数据包在转发之前被缓冲。缓冲区越大,数据包的缓存时间越长,导致更高的延迟。对于RDMA网络,选择最佳的缓冲区大小非常重要,而更大的缓冲区并不一定更好。
- 重传延迟:RDMA网络利用各种技术来避免数据包丢失。
无损网络
RDMA在无丢包状态下实现了全速率传输,但当发生数据包丢失和重传时,性能会急剧下降。在传统网络模式中,大缓冲区是实现无丢包的主要手段,但这与低延迟的要求相矛盾。在RDMA网络环境中,目标是通过较小的缓冲区实现无丢包。在这个约束条件下,RDMA主要基于PFC(优先级流量控制)和ECN(显式拥塞通知)的网络流量控制技术实现无丢包 。
实现无损RDMA网络的关键技术:PFC
基于优先级的流量控制(PFC)是一种基于队列的反压机制,它在优先级上运行。通过发送暂停帧,PFC防止缓冲区溢出和数据包丢失,向上游设备发出信号停止数据包传输 。
PFC可针对特定虚拟通道独立暂停与恢复,不影响其他流量。在示例场景中,当队列7缓冲区利用率达到配置的PFC流量控制阈值时:
- 本地交换机启动PFC暂停帧的传输。
- 接收到暂停帧的上游设备暂时停止该队列的数据包传输。
- 如果上游设备的缓冲区也达到了阈值,它会继续触发暂停帧来应用反压力向上游传输。
- 最终,通过降低优先级队列的发送速率来避免数据包丢失。
- 当缓冲区占用率降到恢复阈值以下时,发射PFC释放帧。
实现无损RDMA网络的关键技术:ECN
显式拥塞通知(ECN)是一项成熟的技术,在过去较少使用,但现在在主机间广泛使用。当网络设备出口端口出现拥塞并超过ECN阈值时,ECN可利用IP报头中的ECN字段在数据包中嵌入标记。这个标记作为一个指示器,表示数据包遇到了网络拥塞。在识别到数据包中的ECN标记后,接收服务器会立即生成一个拥塞通知数据包(CNP),并将其发送回源服务器。这个CNP包含有关引起拥塞的流的信息。
在接收到CNP后,源服务器会调整相应流的发送速率,减轻网络拥塞,避免数据包丢失。通过PFC和ECN实现端到端的无丢包传输依赖于配置不同的阈值。准确设置这些阈值需要对交换机的内存管理单元(MMU)进行细致的管理,以解决交换机的缓冲区管理问题。
结论:在RDMA网络中实现无丢包传输
RDMA网络通过部署PFC和ECN功能实现无丢包传输。PFC技术在链路上控制RDMA特定的队列流量,在交换机入口端口拥塞时向上游设备施加反压力。通过ECN技术,在出口端口拥塞时对数据包进行标记,实现端到端的拥塞控制,促使发送端降低传输速率。通过调整ECN和PFC的缓冲区阈值,以确保ECN的触发速度比PFC更快,可以实现最佳的网络性能。
这样,网络可以在主动降低服务器的传输速率以应对拥塞的同时,保持全速的数据转发。然而,如果持续的问题导致PFC被启用,它会暂停上游交换机的数据包发送,从而在不丢失数据包的情况下降低网络吞吐量。在数据中心网络中部署RDMA需满足无丢包网络传输需求。专注于精细化的运维操作变得至关重要,以满足对延迟敏感和丢包敏感的网络环境的要求。
-对此,您有什么看法见解?-
-欢迎在评论区留言探讨和分享。-
相关文章:

使用RDMA技术构建无损网络
如何使用RDMA构建无损网络? 在深入研究RDMA和无损网络领域后,会经常遇到两个基本问题:为什么采用无损网络至关重要?这些先进技术有什么优势? 无损网络是一种新型的网络技术,它可以在不丢失数据包的情况下传…...
vscode 识别git目录
vscode 偶尔无法识别使用git 新托管的项目。 以下是我提供的解决方案——重启 git.enabled VS Code配置问题: 有时候,VS Code的配置可能会导致无法识别.git文件夹。确保你的VS Code配置中启用了Git的相关功能。你可以通过”Settings”(设置…...
OpenCV相机标定与3D重建(26)计算两个二维点集之间的部分仿射变换矩阵(2x3)函数 estimateAffinePartial2D()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算两个2D点集之间的具有4个自由度的最优有限仿射变换。 cv::estimateAffinePartial2D 是 OpenCV 库中的一个函数,用于计算两个二维…...
StarRocks 生产部署一套集群,存储空间如何规划?
背景:StarRocks 3.2,存储一体 使用场景:多分析、小查询多单但不高、数据量几百T FE 存储 由于 FE 节点仅在其存储中维护 StarRocks 的元数据,因此在大多数场景下,每个 FE 节点只需要 100 GB 的 HDD 存储,…...

JVM执行引擎JIT深度剖析
前端编译与后端编译 Java 程序的编译过程是分两个部分的。一个部分是从java文件编译成为class文件,这一部分也称为前端编译。另一个部分则是这些class文件,需要进入到 JVM 虚拟机,将这些字节码指令编译成操作系统识别的具体机器指令。这一部…...

【DOCKER】基于DOCKER的服务之DUFS
文件上传下载服务器:https://github.com/sigoden/dufs # 拉取镜像 docker pull sigoden/dufs# 创建数据卷文件夹 mkdir -p /data/.docker/volumes/dufs# 创建容器 docker run -id --restartalways --name dufs \-p 51080:5000 \-v /data/.docker/volumes/dufs:/dat…...
加密货币地址的基本概念
什么是地址? 在日常生活中,地址可能指房屋、电子邮件或官网的位置,用来精确定位在系统中的特定位置或端点。在加密货币领域,地址也起着类似的基础作用,只不过是在数字环境中。 加密货币地址是区块链网络中使用的唯一…...

如何在 Linux 服务器上部署 Pydio Cells 教程
简介 Pydio Cells 是一个开源的文档共享和协作平台,专为你的组织设计。它允许你在组织内部分享文档和文件,并让你完全掌控文档共享环境。 在本教程中,我们将向你展示如何在 Alma Linux 9 服务器上安装 Pydio Cells。你将使用 MariaDB 数据库…...

Halcon例程代码解读:安全环检测(附源码|图像下载链接)
安全环检测核心思路与代码详解 项目目标 本项目的目标是检测图像中的安全环位置和方向。通过形状匹配技术,从一张模型图像中提取安全环的特征,并在后续图像中识别多个实例,完成检测和方向标定。 实现思路 安全环检测分为以下核心步骤&…...
Selenium 全面指南
Selenium 是一个强大的 Web 自动化工具,支持多种浏览器和语言绑定。 1. Selenium 的基本概念 WebDriver:Selenium 提供的核心接口,用于控制浏览器操作。显式等待:等待特定条件满足后再执行操作。隐式等待:全局设置一个…...

#error: WinSock.h has already been included解决方案
原因: 在工程中使用了 Boot 库之后,使用了socket、tcp 相关的头文件,在其他地方还是包括了头文件<windows.h>,该头文件内包含了<winsock.h>。导致遇到报错问题:WinSock.h has already been included 解决…...
2.Couchbase 的增量查询优化
在 Couchbase 中实现增量查询的优化是关键,尤其当数据量庞大时。通过合适的策略,可以显著提高增量查询的效率,确保系统在处理实时数据时的响应速度和性能。下面是一些针对 Couchbase 增量查询的优化策略。 1. 使用索引优化查询 为了提升增量…...

汽车IVI中控开发入门及进阶(46):FFmpeg
概述: FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人类和机器创建的东西。它支持最模糊的古老格式,直到最前沿。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg 在各种构建环境、机器架构…...
Spring Boot 中的 @Scheduled 定时任务以及开关控制
Scheduled注解是Spring框架(包括Spring Boot)中用于实现定时任务的一种方式。以下是对Scheduled注解的详细解析: 一、基本概念 Scheduled注解允许开发者在Spring容器中定义定时任务。通过简单地在一个方法上添加Scheduled注解,S…...
服务器证书原理
CA(Certificate Authority)证书是由 证书颁发机构(CA)本身签名的。具体来说,这取决于 CA 的类型和其在信任链中的位置: 1. 自签名证书 根 CA 证书 是信任链的起点,由 CA 自己签名。它们是信任链…...
重温设计模式--代理、中介者、适配器模式的异同
文章目录 1、相同点2、不同点 1、相同点 目的都是为了更好地处理对象之间的关系:这三种模式都是在软件设计中用于处理对象之间的关联和交互,以达到优化系统结构、增强可维护性等目的。它们都在一定程度上隐藏了对象之间的某些细节或者复杂性,…...
2024第十六届蓝桥杯模拟赛(第二期)-Python
# 2024第十六届蓝桥杯模拟赛(第二期)-Python题解 # 自己改注释# -----------------------1------------------------ # def prime(x): # if x < 2: # return 0 # for i in range(2, int(x ** 0.5) 1): # if x % i 0: # …...
分布式系统中的防抖策略一致性与性能优化
目录 引言分布式系统的挑战防抖策略简介确保多实例间一致性的方法 幂等操作TTL缓存 分布式一致性事件总线或消息队列异步任务调度器客户端或API网关层面的防抖一致性哈希与分区限流和熔断机制 避免锁竞争导致的性能瓶颈Java示例代码结论 引言 在现代软件架构中,…...

项目代码第6讲:UpdownController.cs;理解 工艺/工序 流程、机台信息;前端的“历史 警报/工艺 记录”
一、UpdownController.cs 1、前端传入 当用户在下图的“记录查询”中的 两个界面选项 中,点击“导出”功能时,向后端发起请求,请求服务器下载文件的权限 【权限是在Program.cs中检测的,这个控制器里只需要进行“谁在哪个接口下载了文件”的日志记录】 【导出:是用户把…...

【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解
本文将深入介绍鲜花分类数据集的加载与处理方式,同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向,为读者提供从数据组织、预处理、加载到可视化展示的完整过程,并为后续模型训练打下基础。 前言 在计算机视觉的深…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...