SMC-R透明加速TCP技术,在Redis场景下的应用实践

本文在浪潮信息云峦服务器操作系统KeyarchOS环境下,使用SMC-R透明加速TCP技术在Redis场景下进行了应用验证。

一. 背景

当前 Linux 网络协议栈是在性能(吞吐、CPU 使用率)、时延和通用性权衡下的实现。在真实场景中,常常需要高性能但是并不通用的用户态协议栈,亦或是通用、更高性能更低时延的方案,但是基于传统以太网卡的方案很难有大幅度的提升,更多是基于硬件的红利,例如 100G/400G 网络。

在大规模数据中心内部,如何为跨服务器之间的数据传输,提供高性能、低延迟的通信,从而加速数据中心内不同服务器之间的数据共享、数据备份、容灾等;在分布式存储系统中,如何为节点之间的数据传输,提供高带宽、低延迟的存储访问,加速数据的读写操作,提高存储系统的性能等;这些都成为新型网络协议栈的应用场景。

二. 简介

共享内存通信(Shared Memory Communication,SMC)是一种兼容 socket 层,利用共享内存操作实现高性能通信的内核网络协议栈。当共享内存通信基于远程内存直接访问(Remote Direct Memory Access,RDMA)技术实现时,称为 SMC over RDMA(SMC-R)。

SMC-R 兼容 socket 接口的特点使得 TCP 应用程序无需任何改造即可运行在 SMC协议栈上,底层使用的RDMA网络使SMC拥有相较于TCP更好的网络性能。SMC协议栈通过 TCP 连接自主发现对侧SMC能力,协商成功后使用SMC协议栈承载应用数据流量,协商失败则安全回退至TCP/IP协议栈,保证数据正常传输。

三. 协议透明替换

使用 SMC-R 协议有两种方法。

其一,是在应用程序中显式创建 AF_SMC 族的 socket;

其二,是利用 LD_PRELOAD 或 ULP + eBPF 的方式透明的将应用程序中的 AF_INET 族 socket 替换为 AF_SMC 族socket。我们默认使用 SMC-R 通信的节点已经加载了SMC 内核模块,并通过这种方法将应用程序运行在 SMC-R 协议上。

对于第二种方法:

使用 LD_PRELOAD 实现协议栈透明替换,在运行TCP应用程序时预加载一个动态库,在动态库中实现自定义 socket() 函数,将 TCP应用程序创建的 AF_INET 类型 socket 转换为 AF_SMC 类型的 socket,再调用标准 socket 创建流程,从而将 TCP 应用流量引入 SMC-R 协议栈。开源用户态工具集smc-tools中的 smc_run 指令即实现上述功能。

四. SMC-R在高性能数据查询和处理中的应用

SMC-R 作为一套与 TCP/IP 协议平行、向上兼容 socket 接口、底层使用 RDMA 完成共享内存通信的内核协议栈,其设计意图是为 TCP 应用提供透明的 RDMA 服务,同时保留了 TCP/IP 生态系统中的关键功能。基于此,本文针对redis数据库应用场景,在无需对redis进行任何改造的情况下,测试使用SMC-R前后吞吐性能对比,结果如下:

测试结果:redis-banchmarh测试中,SET方法在使用TCP协议下,无论线程数或数据包大小场景下均比较稳定,在使用SMC协议下,提升幅度较大,达到40%以上,在线程数8、数据包大小64情况下提升60%。GET方法测试结果与SET方法相近,性能提升趋势也基本一致。

五. 总结

基于SMC-R的高性能、透明替换等优势,适用于网络通信占比高的场景,在Redis等高性能数据查询与处理的场景,SMC-R为应用提供无侵入式透明替换TCP协议栈的能力,无需应用二次开发和适配,即可为应用提升QPS(Queries Per Second),在Redis应用场景下(64字节、8线程)可提升至60%。

相关推荐
syseptember4 小时前
Linux网络基础
linux·网络·arm开发
Exquisite.6 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
qq_411262428 小时前
用 ESP32-C3 直接连 Starlink 路由器/热点并完成配网
网络·智能路由器
LucDelton10 小时前
Java 读取无限量文件读取的思路
java·运维·网络
Wasim40411 小时前
【渗透测试】SQL注入
网络·数据库·sql
..过云雨11 小时前
五种IO模型与非阻塞IO
网络·网络协议·tcp/ip
源远流长jerry12 小时前
dpdk之kni处理dns案例
linux·网络·网络协议·ubuntu·ip
玉梅小洋12 小时前
iperf 网络性能测试完整指南(含多服务端测试)
网络·测试工具·性能测试·iperf
Danileaf_Guo12 小时前
我们的WireGuard管理系统支持手机电脑了!全平台终端配置,支持扫码连接,一键搞定
网络
犀思云13 小时前
构建全球化多云网格:FusionWAN NaaS 在高可用基础设施中的工程实践
运维·网络·人工智能·系统架构·机器人