全网首次揭秘:微秒级“复活”网络的HARP协议及其关键技术

news2025/1/25 4:37:09

69ac9c72ef017241610a78d45b8f04a0.gif导读|云计算时代,承担服务器之间数据传输工作的交换机成了数据中心的“神经枢纽”,一旦出故障将波及上层业务。然而单个交换机故障时,腾讯云的新一代高性能网络却可以在100微秒内找到新的通路实现0断链,做到高可用、高可扩展、高性能,从而保证业务不受影响。本文邀请到了腾讯云资深网络专家金峰及其带领的IaaS前沿技术研究团队来揭秘背后的武器——高性能网络传输协议HARP。通过本文希望可以带你了解传统网络传输协议面临的困难和挑战、HARP是如何应对并全网首次解析其中4个关键技术。

腾讯云一直在自研一款高性能网络协议——HARP(Highly Available and Reliable Protocol)。目前,HARP已在腾讯云的块存储等业务上逐步落地,并已成为腾讯自研银杉智能网卡及玄灵芯片的标准化能力。在单个交换机故障时,腾讯云的新一代高性能网络,可以在100微秒内找到新的通路,实现0断链,从而保证上层业务不受影响。本篇中,我们团队将回顾云时代下数据中心网络应对的困难卡点,提出一个高性能传输协议HARP方案并对其中4个关键技术点做全网首度解析。

6ebb9afe434579ae1d52c3b51394fcd3.jpeg

数据中心网络的问题与挑战

为了满足数据中心的应用规模和性能要求日益增长的需求,数据中心的网络传输面临着巨大挑战:

1)无法保证可靠性

数据中心的交换机虽然已相当稳定,但仍然不可忽视它们出现亚健康的概率(设备软硬件故障或网络变更异常)。例如在我们的某个生产环境中,每年交换机硬件故障的比例约为0.15%。交换机的亚健康会直接影响到经过该交换机的业务应用的服务质量,轻则使得业务的吞吐下降和响应延时增加,重则造成连接中断,导致业务超时或失败。在一些对可靠性有严苛要求的应用,如高性能网络存储中,提高网络传输的可靠性已经迫在眉睫。

2)性能瓶颈

数据中心近年来涌现出很多具有高性能需求的应用,这些性能需求主要体现在高网络带宽,超低且一致的通信时延,超大的网络规模等方面。高带宽需求的应用,如大规模AI训练、高性能网络存储、分布式大数据应用等,促使着数据中心网络基础设施快速迈入100Gbps甚至400Gbps的时代。

然而要充分、稳定地利用好这些基础能力,网络传输在软硬件设计和成本控制上都面临着极大挑战。同时,数据中心里的时延敏感的应用,如内存数据库、传统HPC等,在时延上的极致需求给拥塞控制提出了严苛的挑战。最后,大规模数据中心应用(如分布式大数据应用和HPC)带来的大量的并发数据传输对网络传输协议的可扩展性也提出了更高的要求。

f0512966733738f6487cc2e0c55b1400.jpeg

常用传输协议的问题

当前,TCP与RoCE v2(RDMA over Converged Ethernet v2)是数据中心网络中的主流传输协议。面对上述挑战,传统的TCP与RoCE v2传输协议已经无法应对。首先,为了充分利用100Gbps甚至400Gbps的网络带宽能力,基于软件实现的通用协议栈(比如内核TCP协议栈)往往会占用过高的CPU负载。而且其还会受到操作系统大内核的机制及其他运行软件的影响,导致性能不稳定。

其次,硬件卸载的网络协议栈(比如RoCE v2)虽然可以在降低CPU开销的同时获得较好的传输性能,但是由于成本的限制,其片上可以被用于存储连接的状态的资源十分有限。这意味着实现RoCE v2的网卡往往有着并发连接规模小的问题,导致其部署的规模及使用的场景会受到极大的限制。此外,TCP和现有的RoCE v2实现都面临拥塞控制性能不足(动态时延和尾时延大)和可靠性欠佳的问题

而RoCE v2作为RDMA技术在数据中心的应用,已经被大量部署在生产系统。但其在可靠性和连接故障恢复方面的能力尚难满足应用需求。一方面,RoCE v2的多路径方案MP-RDMA(Multi-path RDMA)目前仅停留在学术界的研究,离实际落地还很遥远。另一方面,智能网卡上有限的片上资源一直制约着RoCE v2在单卡上的并发连接数,也就是其在大规模并发连接场景下的传输性能会急剧下降,增加多路径传输只会让其雪上加霜。

为提高TCP对于网络故障的容忍度,行业内近年来一直在关注MPTCP(Multipath TCP)方案。尽管在广域网开始部署应用,MPTCP应用在数据中心网络时、在路径切换、选择和聚合时存在明显的性能瓶颈。同时,由于它是基于TCP内核工作,在可扩展性方面亦存在较大的缺陷。此外,TCP协议栈更为复杂,很难把全功能稳定地实现在智能网卡上,这也导致其无法在内网场景获得极致的性能

因此,我们需要设计一套新的网络传输协议,既能满足上层应用对于高可靠网络传输的要求,又能提供高带宽、低时延的数据传输服务,还能保持在大规模部署下的网络性能。

81152d809db24e1164477bc2b2dce6d7.png

 HARP与TCP、RoCE v2的特性对比

注:MPTCP(Multi-path TCP)方案未被广泛采用。MP-RDMA(Multi-path RDMA)方案停留在实验室阶段。HARP既有智能网卡版本的实现,也有用户态库版本的实现。TCP指最常被使用的内核TCP协议栈。

f9a6665718c21e946b5a1ad1c3910351.jpeg

HARP是什么

HARP是腾讯云完全自研的数据中心高性能传输协议,主要针对上述可靠性、软硬件设计、拥塞控制和可扩展性等难点进行攻克。在保证端到端数据报文可靠传输的同时,HARP可以为上层应用提供高可靠、高性能(高带宽和低时延)、高可扩展的网络传输服务。就目前已经公开的传输协议而言,HARP是首个能够同时提供高可用和高扩展性的高性能传输协议。为达到高可靠传输,HARP采用了确定性多路径出传输,采用多条具有不重叠物理路径的通道进行并行传输,提高了对网络故障的抵抗力。

同时,为了达成高带宽和低时延的性能,HARP采用了软硬件分层设计来提高传输效率,并利用自研的拥塞控制算法(PEAD)保证了优良的数据流公平性和超低的网络排队。最后,为获得对大规模网络的高度扩展性,HARP采用了粒度可控的连接共享模式。通过把一条HARP连接复用来承接多条应用连接的流量,HARP可轻松支持大规模网络应用。

97f1e5bbf7f87b37542e5eab0cc0d98c.jpeg

HARP关键技术点

HARP主要有以下四点的关键技术点:

f32f469e3ad22c4012d9826699a8822d.png

7b7a95745c7002dc88a43a1050e9c216.png

1)软硬件的事务分离与能力结合

HARP采用软硬件分层的事务层和可靠传输层设计,以兼顾硬件可实现性、可靠传输的效率和消息事务的灵活性,如图所示。软硬件分离的架构设计为高效传输和低成本实现引入了新的可能性。在此架构下,可靠传输层可以专注于实现报文粒度的端到端可靠传输,而把更粗粒度的事务处理分化到了软件事务层。

特别地,HARP通过自研的报文编号方案追踪每个报文的发送和接收状态,以极低的开销支持乱序接收和选择性重传。同时,软件事务层可以提供高度灵活(贴合业务特性需求)的消息处理,而不占用昂贵的硬件资源。得益于此架构,HARP的软硬件系统可以在维持成本竞争力的前提下,提供业界领先的网络与业务性能。最终,HARP可以支持在10000节点的网络规模的业务中,提供最高性能输出。

2)粒度可配置的共享连接

为了满足多种业务环境的使用需求(裸金属,VM,CBS等)和大规模组网要求,HARP支持裸连接、VM级共享、主机级共享等粒度的连接模式。通过共享连接,HARP可以大幅减少连接数量,降低硬件实现的资源消耗,实现高度的可扩展性,轻松支持10K+级节点的大规模组网。在拥有N个服务器的大规模网络中,HARP可工作于主机级(IP对)共享模式,如图 2所示。假定每个服务器的通信进程数为P,为应对最严重情形的进程fullmesh通信,传统的TCP或RoCEv2在单服务器上需要N*P*P个连接,而HARP需要的连接数为N。可见HARP的连接规模与通信进程数无关,其在大规模网络有优良的扩展性。例如在100个服务器,每个服务器运行100个进程的场景,TCP/RoCEv2需要的连接数为100*100*100=1000K,这个数字已经远远超出高效率的硬件网卡可高性能支持的范围。

我们注意到业界最先进的RoCEv2网卡在10K连接数附近就已经可观测到严重吞吐损失。而HARP在此场景只需要N=100条连接。在大规模场景,如10K节点,每节点100进程,HARP需要的连接数也只有10K条(与进程数无关)。对于此数量的连接,在分离式优化架构和共享连接的加持下,HARP的硬件化网卡仍可达到最高吞吐。从上面可见,HARP在大规模高性能计算场景把支持的网络规模提高了两个数量级。

3)自研高性能拥塞控制

鉴于现有的拥塞控制难以满足我们多样化且高性能的业务需求,HARP采用深度自研的拥塞控制算法PEAD。PEAD基于交换机普遍支持的概率性ECN(显式拥塞通知)功能通过定制配置精确地感知网络拥塞,在维持高吞吐的同时,带来更公平的流吞吐、更通畅的网络和更准确的网络状态感知能力。相较于TCP,PEAD的消息完成时间FCT的中位数降低了35%(高带宽体现), p99分位值降低了70%(公平性体现),同时PEAD网络排队时延的p99分位值降低了90%(网络通畅性体现),如图所示。另外,HARP也支持使用基于网卡RTT探测的自研算法DARC,可在无任何交换机功能支持的网络中完成高性能拥塞控制。

180a594acf470f33daba326608b86209.png

4)确定性多路径并行传输及快速的故障路径切换

为提高连接对网络热点的规避能力,减轻网络负载不均衡性的影响和增强连接对网络故障的抵抗力,HARP在每个连接内采用多路径传输,如图 4所示。在HARP中,每条路径有独立的拥塞探测能力,连接会根据路径的发送能力(拥塞情况)进行调度发送报文。当某条路径有设备故障时,连接仍然可以通过其他路径继续进行传输。同时,得益于自研拥塞控制算法优良的网络控制和感知能力,连接的路径管理模块可以快速可靠地检测到路径故障,并在百微秒级时间内重新探测一条新的可用路径。例如当有单个Spine交换机故障时,其所在网络的 TCP连接的断链概率为24%,而HARP连接的断链概率为0。而当有单个Edge交换机故障时,其所在机架的 TCP连接的断链概率为75%,而HARP连接的断链概率仍然为0。同时TCP的典型重连恢复时间约为1s,而HARP的路径即使遭遇故障,也可以在百微秒级的时间内探测到新的路径恢复正常,恢复时间相比TCP减小了99.9%以上。HARP的快速故障检测主要得益于自研拥塞控制算法能把网络排队控制得非常低。从而我们可以在百微秒级的时间内以高置信度判断网络出现了故障,继而触发路径切换。

与传统的基于ECMP(等价多路径)哈希的多路径方案不同的是,HARP采用的是确定性多路径传输。原因在于,基于ECMP随机生成的多路径虽然能一定程度上避免网络热点问题,但其不可控的路径走向并不能最大化地发挥多物理路径带来的高带宽和高可靠性潜力。确切地说,一方面,在ECMP多路径方案下,一条连接的多条路径可能会在网络中的一段或多段链路中发生重叠,这会导致连接的有效可用带宽降低;另一方面,若重叠路径的节点发生故障,可能会导致连接的所有路径都故障(部分路径的数据传输和其他路径的ACK传输经过同一个故障设备),如图所示。

6e853a385da521f2b29401bcfb1669e4.png

26b1c2f2065759ffcea68eb7f67712cc.png

为了规避ECMP多路径的缺陷,在腾讯网络团队带来的自研路径控制能力支持下,HARP的确定性多路径最大限度地使用了非重叠路径的聚合带宽和它们带来的独立冗余性。在有4个Spine交换机的网络测试中,在单Spine交换机故障时,对比相较于基于ECMP的随机多路径的96%的连接存活率,HARP可以达到100%的连接存活率,如图 5所示。而在2个Spine交换机故障时,HARP相比ECMP多路径可以提高55%的连接存活率。

b2a5d76d655c2d6bdc0281c016e77045.png

2ef7d17214d42977d334ab52ba4ac3e5.jpeg

HARP特点与优势

“高可用”:主要面向对服务可靠性极高的存储业务(如腾讯的云硬盘服务(CBS,Cloud Block Storage)),当网络发生故障时上层业务仍然可用且其性能抖动小。

高可扩展”:主要面向传统的高性能计算业务(如汽车制造商关于汽车流体力学的仿真),当参与计算的处理器核数不断增多时,系统的性能能够保持近似线性增长。

高性能”:这是该协议的基本目标,主要体现在尽可能避免网络拥塞,并在各种负载时都能获得极高的传输带宽和最小的时延(包括平均时延和尾时延)。

腾讯云独创的“确定性多路径传输”、“自适应连接复用”、“自研拥塞控制算法”及“协议栈Offload”等技术,是HARP实现“高可用”、“高可扩展”、“高性能”等目标的关键。

204bbdb47b586a25fb6a9d15d3a9feb7.png


f2bcb22d3c0d50cf459df72a70614f14.jpeg

HARP的典型应用

除面向云硬盘(CBS)与高性能计算(HPC)等基础场景外,HARP作为一个高性能的通信底座,还可以被应用于数据中心对网络性能要求较高的业务中,如AI训练、键值存储、分布式大数据应用、VPC网络等。

df1d301402738068c9f7de2b42ed786e.png

1e9be152126b4350255ca278fa0d4870.jpeg

HARP发展展望

当前,腾讯云正不断地完善HARP的高性能通信库,包括使用Socket、IB Verbs、libfabric、UCX等通信接口接入HARP传输协议,以扩大HARP的生态。在硬件层面,腾讯云既可以基于友商标准以太网卡使能HARP的高可用、高可扩展的特性,又可以通过硬件卸载的形式将HARP全协议栈运行于自研银杉、玄灵智能网卡,以实现最高性能。此外,在虚拟化场景下,与AWS将EFA构建于SRD之上类似,HARP还将作为虚拟服务器间的高性能网络传输底座。随着HARP生态的不断完善,“HARP for Everything”的目标最终会实现。

腾讯工程师技术干货直达:

1、H5开屏从龟速到闪电,企微是如何做到的

2、只用2小时,开发足球射门游戏

3、闰秒终于要取消了!一文详解其来源及影响

4、发布变更又快又稳?腾讯运维工程师经验首发

⬆️关注我:洞察腾讯最新技术,学专家工程师经验⬆️

d81c296a681e59ba8ea4c99ebc98b264.png

点个 在看展示你的技术态度

960448af7ce01ab7fad4c844224d13f7.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot layui疫苗接种信息管理系统源码

开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 开发技术:springboot layui 伴随着社会的迅速发展,电子计算机对世界的作用影响是全面并且长久的。人们日常生活消费综合应用水平的持续增高,生活中人…

[ 数据结构 -- 手撕排序算法总结篇 ]

文章目录前言一、常见的排序算法二、测试排序的性能对比随机数排序时间对比有序数排序时间对比三、排序算法的复杂度四、排序算法的稳定性前言 手撕排序算法总结 本篇文章进行总结,我会对比并分析常见的几种排序,例如像插入排序,冒泡排序&am…

【金猿案例展】福特电马——一键五联私域流量运营

‍映盛中国案例本项目案例由映盛中国投递并参与“数据猿年度金猿策划活动——《2022大数据产业年度创新服务企业》榜单/奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业随着中国电动车市场及消费者对电动汽车的需求的不断变化,汽车市场进入存量竞争时…

如何用VS2010创建并生成动态链接库

1、目的 在某些应用程序场景下,需要将一些类或者方法编译成动态链接库dll,以便别的.exe或者.dll文件可以通过第三方库的方式进行调用,下面就简单介绍一下如何通过VS2010来创建动态链接库。 2、新建动态链接库 1) 打开VS2010&…

546103-85-9,PR-AMC,二肽标记肽

PR-AMC, a fluorogenic Plasmodium falciparum dipeptidyl aminopeptidase 1 (DPAP1, cathepsin C) substrate.一种含氟恶性疟原虫二肽基氨基肽酶1 (DPAP1,组织蛋白酶C)底物。编号: 177167 中文名称: 二肽标记肽PR-7-氨基-4-甲基香豆素2HCl英文名: H-Pro-Arg-AMCCAS…

clickhouse 数据字典使用详解

一、数据字典介绍 数据字典是ClickHouse提供一种非常简单且实用的存储媒介,他以键值和属性映射的形式定义数据。字典中的数据会主动或被动加载到内存并支持动态更新。由于字典数据常驻内存的特性,所以非常适合保存常量或经常使用的维度表数据&#xff0c…

2001-2020年沪深A股上市公司管理者短视主义指标数据

2001-2020年沪深A股上市公司管理者短视主义指标数据 1、时间:2001-2020年 2、包括所有沪深A股所有上市公司 3、指标包括: 证券代码:以上海证券交易所和深圳证券交易所公布的证券代码为准。 证券简称:以上海证券交易所和深圳证…

从搭建到落地,详解证券基金行业数字化运营体系

近年来,金融行业的数字化转型呈现了新的特点,即要做更精准的营销和数字化运营。本文根据神策数据杨雪杉关于《面向落地的证券基金行业运营体系搭建》的主题演讲整理,点击文末“阅读原文”即可观看完整版演讲回放。一、基于 SDAF 数据闭环方法…

ubuntu20.04 设置 rc.local 开机自启动脚本一文配置

前言 系统:ubuntu20.04LTS 本来觉得似乎好像是一件简单的事情 实际运行处理的时候发现还是有点复杂,面对这样的过程中的总结如下: 第一步 终端执行查看开机可以启动的服务, 执行 ls /lib/systemd/system 你可以看到有很多启动脚本, 其中就有我们需要的 rc-local.s…

让你室友、工友、小孩断网 安全风险演示

前提: ① 、你需要 和 你室友处于同一个局域网,互相能ping通 ②、你需要知道你室友的IP ③、您可能需要一个linux 设备,手机也行(需要安装termux 来执行命令)、linux系统电脑、树莓派等都可以。 -----------------…

【MAX7800羽毛板更新固件及下载bug修复】

【MAX7800羽毛板更新固件及下载bug修复】1. 前言2. 首次固件更新2.1 更新MAX32625PICO(“PICO”)调试适配器固件2.2 使用eclipse开发3. 下载bug修复3.1 当你的下载口出现Error: Target not examined yet3.2 修复方法5. 小结1. 前言 原理图和BOM可在MAX7…

express再度复习,小白篇

js----后端编程,Express框架,npm包管理工具,- es6模块化,使用express创建web应用,路由拆分,中间件 , 热更新,脚手架_阿 尭的博客-CSDN博客之前学习的时候整理的一篇草率博客,复习的时候混忘了。今天再重新学习一下expr…

【强化学习基础】强化学习的基本概念:状态、动作、智能体、策略、奖励、状态转移、轨迹、回报

文章目录1.状态(State)2.动作(Action)3.智能体(Agent)4.策略(Policy)5.奖励(Reward)6.状态转移(State transition)7.智能体与环境交互…

“margin”外边距的各种奇特现象

我们大家在初学css布局html页面结构的时候,肯定会经常使用到“margin”外边距这个属性,这个属性对我们的页面布局十分有用,也十分方便,但是这个属性在使用的时候经常会出现一些奇特的现象,导致我们的页面布局和想要完成…

开发一个MyBatis通用Mapper的轮子

目录 一、前言 二、需求 三、实现原理 1、基于MyBatis3提供的SqlProvider构建动态Sql 2、基于自定义注解,为实体和数据库表建立对应关系 四、代码实现 1、自定义注解 2、几个pojo,用来保存实体对应的信息 3、定义开头说的BaseMapper 4、SqlPro…

Nginx-负载均衡

负载均衡的意思是在服务器集群中,需要有一台服务器作为调度者,客户端所有的请求都有调度者接收,调度者再根据每台服务器的负载情况,将请求分配给对应的服务器去处理 配置过程 1、需要在nginx.conf配置文件中添加服务组 服务组中…

linux安装stable diffusion2.0完整教程-还不会安装sd2.0?一篇文章教会你AI绘画

以下教程出自飞链云AI技术人员,欢迎使用目前国内顶尖的AI绘画工具,微信小程序搜索:【飞链云版图】 注意:请严格按照以下步骤进行,可非常容易进行安装,其他环境不保证丝滑安装; 安装前准备 ub…

分析GC日志

文章目录1.GC日志格式1.1 GC分类1.2 GC日志结构剖析1.3 GC日志分析工具1.4 人生感悟1.GC日志格式 1.1 GC分类 针对HotSpot VM的实现,它里面的Gc按照回收区域又分为两大种类型: 一种是部分收集(Partial GC),一种是整堆收集&#…

三.线程的状态

正常线程的五大状态 :新建状态,就绪状态,运行状态,阻塞状态,死亡状态 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 运行(RUNNABLE):Java线程中将就绪(re…

小白想学习python?怎么学?

首先,学习Python编程技术,自学或者参加培训学习都适用,每个人都有自己的学习方式和方法。 一:明确自己的学习目标。 不管我们学习什么样的知识,都要对自己的学习目标有一个明确的认识。只有这样才能朝着目标持续的前…