写点什么

性能提升 57% ,SMC-R 透明加速 TCP 实战解析

  • 2022-05-20
  • 本文字数:1420 字

    阅读完需:约 5 分钟

性能提升 57% ,SMC-R 透明加速 TCP 实战解析

TCP 协议作为当前使用最为广泛的网络协议,场景遍布移动通信、数据中心等。对于数据中心场景,通过弹性 RDMA 实现高性能网络协议 SMC-R,透明替换应用 TCP 协议,实现应用网络透明加速。

为什么需要新的内核网络协议栈?



Linux 内核网络协议栈没有银弹,当前 Linux 网络协议栈是在性能(吞吐、CPU 使用率)、时延和通用性权衡下的实现。


在真实场景中,我们可能需要高性能但是并不通用的用户态协议栈,亦或是通用、更高性能更低时延的方案,但是基于传统以太网卡的方案很难有大幅度的提升,更多是基于硬件的红利,例如 100G/400G 网络。


鉴于此,我们考虑是否可以基于其他高性能网络,提供 TCP 兼容的行为和 socket 接口,提供更优的性能。

基于共享内存的网络通信


在谈跨主机通信之前,我们先把视线放到单机维度,如何在单机维度实现 IPC?下面是几种常见的 IPC 方式:



不出意外,共享内存是最快的 IPC 方式,但是缺少一种 OS 层面的统一实现和接口,多数是在语言的 library 中提供。


这里我们分解一下单机维度的共享内存 IPC 流程:


  1. 发送方写到预先分配好的一块内存区域;

  2. 通知对端,并更新新写入内存的偏移量;

  3. 接收方按照新更新的偏移量读取数据;

  4. 接收方更新读取内存的偏移量。



如果有一种技术,可以实现在两台机器间“搬运”内存,那么我们可以把这种高性能 IPC 方案从单机维度拓展到不同的主机间。很显然,Remote Direct Memory Access RDMA 可以帮助我们高效地搬运内存。


相对于单机的共享内存通信流程,基于 RDMA 的流程:


  • 发送方写到本机预先分配好的一块内存区域;

  • 通过 RDMA 将该内存写入到对端维护的内存区域的相同位置;

  • 通过 RDMA 通知接收方,并更新新写入内存的偏移量;

  • 接收方按照新更新的偏移量读取数据;

  • 接收方通过 RDMA 更新读取内存的偏移量。



基于 RDMA 的共享内存模型,SMC-R 应运而生,SMC-R 缩写即为 Shared Memory Communcation over RDMA。


下面让我们看下 SMC-R 是如何加速 TCP 应用。



SMC-R 是一种混合协议,即通过 TCP 实现建联时信息交互,通过 RDMA 网络实现数据路径高性能数据传输。同时,一旦 RDMA 链路建联失败,可以 fallback 到 TCP,实现兜底 TCP 的能力。除此之外,SMC-R 借助多个 RNIC,可以实现运行时的故障迁移,确保运行时可靠性。



RDMA 本身提供了 verbs 接口供应用使用,SMC-R 基于共享内存的模型,提供了一套完全兼容 TCP socket 的内核接口,可以通过 LD_PRELOAD 基于 eBPF 的规则替换等方式,实现将 TCP socket 透明替换成 SMC socket,进而实现透明替换和加速。


基于 SMC-R 透明替换,我们测试了几种应用场景,其中 Redis 有最高 57% 的性能提升,此时 Redis 无需进行任何改造,即可享受 SMC-R 带来的性能加速。


使用 SMC-R 加速应用


透明替换并加速 TCP 应用,可以使用下面三种方案:


  1. 使用 LD_PRELOAD 的方式,这种方式原理是将动态链接的二进制文件中,关于 socket 创建的 SOCK_STREAM 协议,替换为 AF_SMC 协议,从而实现将 TCP 透明替换 SMC 协议;

  2. 通过 net namespace 级别的 sysctl,可以实现网络命名空间(容器等)纬度的所有 TCP 连接的替换;

  3. 通过 eBPF 规则(例如五元组、进程 ID 等),动态匹配需要替换的连接进行替换。



SMC-R 在龙蜥


在龙蜥社区中,我们也正在持续不断地增强优化 SMC,包括性能、使用场景、稳定性和透明替换。参与龙蜥社区贡献的半年时间内,共为 Linux 上游社区贡献了 60+ 的补丁。



相关链接地址:

1、代码仓库:hpn-cloud-kernel

2、高性能网络 SIG 地址:https://openanolis.cn/sig/high-perf-network

2022-05-20 13:251918

评论 1 条评论

发布
用户头像
2022-05-21 11:48
回复
没有更多了
发现更多内容

【案例分享】如何利用京东云建设高可用业务架构

京东科技开发者

云计算 架构 高可用架构 后端、 企业号 1 月 PK 榜

揭开华为云CodeArts TestPlan启发式测试设计神秘面纱!

华为云开发者联盟

云计算 后端 华为云 企业号 1 月 PK 榜

英特尔CEO帕特·基辛格:五大“超级技术力量”,推动人类社会发展

科技之家

如何训练开发者记忆能力

SEAL安全

开发者 实用技能 记忆

使用MTK迁移Mysql源库后主键自增列导致数据无法插入问题

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

还在用Excel和SQL?火山引擎VeDI这款产品帮你更快处理数据

字节跳动数据平台

大数据 数据分析 企业 数据看板

荣誉+1,龙蜥荣获“2022年度杰出开源运营团队”奖项

OpenAnolis小助手

开源 InfoQ 运营 获奖 龙蜥团队

2022Q4消费级AR眼镜市场季度分析:雷鸟创新领跑,华为强势入局

易观分析

市场 消费 AR眼镜

嘉为蓝鲸研运一体化解决方案荣获信通院XOps领域年度明星解决方案

嘉为蓝鲸

自动化运维 嘉为蓝鲸

声网许振明:RTC 场景 UHD 视频应用和探索

声网

前端 音视频 RTC

SQL 嵌套 N 层太长太难写怎么办?

王磊

什么是AutodeskMaya?为什么要学习它?

Finovy Cloud

3DMAX maya

免费下载 | 2023 中国技术成熟度评估曲线发布,共看六大发展趋势

博睿数据

可观测性 智能运维 博睿数据 权威报告

【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)

码界西柚

dubbo 注册中心 配置中心 Dubbo3 元数据中心

Svelte框架实现表格协同文档

葡萄城技术团队

图像增强及运算:局部直方图均衡化和自动色彩均衡化处理

华为云开发者联盟

Python 人工智能 华为云 企业号 1 月 PK 榜

深度 | 新兴软件研发范式崛起,云计算全面走向 Serverless 化

阿里巴巴云原生

阿里云 Serverless 云原生

​洞悉获客之道,林肯汽车开展高端社区精准营销俘获消费者芳心

联营汇聚

如何对小程序进行更高效的管理

Onegun

小程序 微信小程序 小程序管理平台

如何通过C#和VB.NET合并Excel文档

Geek_249eec

C# Excel VB.NET

如何打造一个“无需激励”自运转的技术团队?

石云升

极客时间 复盘 激励 1月月更 技术领导力实战笔记

云原生安全系列 5:ETCD 安全加固

HummerCloud

etcd Kubernetes, 云原生, eBPF

证券服务应用评测系列:海通e海通财发布9.0版本,探索证券APP持续提升用户体验

易观分析

App 证券

NFTScan 与 SeeDAO 孵化器达成战略合作,为开发者提供专业的 NFT 数据服务!

NFT Research

NFT

聚焦技术与体验极致提升,阿里云视频云连续5年领跑!

阿里云CloudImagine

阿里云 IDC 视频云

岁末年初捷报频传 HashData斩获多项行业殊荣

酷克数据HashData

数据库·

使用 YonBuilder 进行报表分析 - 扩展篇

YonBuilder低代码开发平台

实力领跑 | 旺链科技入选《2022中国区块链技术创新典型企业名录》

旺链科技

区块链 区块链技术 产业区块链

昆仑万维深耕AIGC领域 昆仑天工助力内容创作者创造无限可能

极客天地

标准升级 |《企业数字化成熟度模型IOMM标准》(企业整体视角)发布

信通院IOMM数字化转型团队

数字化转型 IOMM ICT深度观察

运联智库发布2022供应链及合同物流百强排行榜

联营汇聚

性能提升 57% ,SMC-R 透明加速 TCP 实战解析_文化 & 方法_龙蜥社区高性能网络SIG_InfoQ精选文章