50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

性能提升 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:252220

评论 1 条评论

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

可观测领域的王者Dynatrace的故障定位能力验证

乒乓狂魔

可观测性 故障定位 AIOPS

搭建Coze扣子文档智能问答Bot工作流,保姆级教程来了!

合合技术团队

人工智能 算法 #大数据

通义灵码2.5 | 一个更懂开发者的 AI 编程助手

阿里巴巴云原生

阿里云 通义灵码

屏蔽海外流量是什么意思

网络安全服务

CDN 防火墙 waf DDoS 攻击 海外IP

Nessus Professional 10.9 Auto Installer for Ubuntu 24.04

sysin

Nessus

AI驱动,治理升级!数造科技亮相中博会,打造一站式数据开发治理新范式

数造万象

人工智能 数据治理 数据开发 热门推荐 AI 智能体

某医药集团月结之战:从“数据泥潭”到“秒级决胜”的破局之路

YMatrix 超融合数据库

财务 HTAP 超融合数据库 HTAP 场景实践 YMatrix

通义灵码2.5 | 一个更懂开发者的 AI 编程助手

阿里云云效

阿里云 通义灵码

新《公司法》实施周年实务挑战加剧,Alpha系统「公司法专题库」破解律师专业升级困局

科技汇

淘宝图搜接口功能解析,精准搜索相似商品

tbapi

淘宝图片搜索接口 淘宝拍立淘接口 淘宝图片api

网站访问分析30分钟实战指南:ClkLog开源社区版

ClkLog

开源 埋点 sdk 用户行为分析 画像

Studio 3T 2025.12 发布,新增功能简介

sysin

Studio 3T

如何一眼定位SQL的代码来源:一款SQL染色标记的简易MyBatis插件

京东科技开发者

好消息!Apache DolphinScheduler 荣获上海上海菁英荟优秀开源项目奖

白鲸开源

大数据 开源 Apache DolphinScheduler 上海 大数据调度

喜讯!Apache SeaTunnel 荣获上海开源创新菁英荟优秀开源项目奖

白鲸开源

开源 ETL 数据集成 Apache SeaTunnel 上海

Tenable Nessus 10.9.0 (macOS, Linux, Windows) - 漏洞评估解决方案

sysin

Nessus

捷途汽车6月销售汽车55741辆,上半年累销突破299368辆

科技热闻

CAD图纸填充不完整是怎么回事?快试试这种方法!

在路上

cad cad看图

白鲸开源斩获「创业新星企业奖」,双开源项目同步摘奖!

白鲸开源

数据库 大数据 开源 DataOps 白鲸开源

基于华为开发者空间 - 开发平台,构建AI会议助手

华为云开发者联盟

welink 华为云FunctionGraph 华为开发者空间 MCP Server

FinClip驱动App轻量化重构:组件化生态赋能前端效能跃迁

xuyinyin

开放创新,昇腾 CANN 再向深处

极客天地

Nessus Professional 10.9 Auto Installer for macOS Sequoia

sysin

Nessus

Nessus Professional 10.9 Auto Installer for Windows

sysin

Nessus

扫描全能王联合上海电影博物馆发起特色探馆活动,AI助力存档百年光影

合合技术团队

人工智能 算法 #大数据

动态化-罗码(京东科技一码多端解决方案)介绍

京东科技开发者

政务一体化平台的小程序化构建路径:生态融合驱动下的数字化转型创新实践

xuyinyin

Nessus Professional 10.9 Auto Installer for RHEL 9, AlmaLinux 9, Rocky Linux 9

sysin

Nessus

低成本创业新方向:使用现成源码搭建游戏陪玩小程序平台

DUOKE七七

MySQL uniapp thinkphp

时序数据库 TDengine × Looker Studio:不懂设计也能做出高颜值报表

TDengine

tdengine 数据分析 可视化 时序数据库 时序数据库tdengine

商品中心—缓存与DB一致性的技术文档

不在线第一只蜗牛

Java 数据库

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