性能透明提升 50%!SMC + ERDMA 云上超大规模高性能网络协议栈

本文探讨了为何需要新的内核网络协议栈,介绍了SMC(共享内存通信)与ERDMA(增强型RDMA)技术,以及它们如何在网易Curve存储系统中实现性能提升。SMC+ERDMA通过硬件卸载和兼容socket接口,实现对TCP应用的透明替换,带来高达50%的性能提升,同时在云上大规模部署和DPU硬件卸载方面展现出优势。
摘要由CSDN通过智能技术生成

编者按:当前内核网络协议栈有什么问题?新的协议栈是不是重新发明轮子?一个协议栈能否解决所有问题?适配所有场景?本文整理自 2022 年阿里巴巴开源开放周技术演讲,这里我们将自己的思考分享出来,和大家一起交流。

本文主要分为三部分:第一部分是我们为什么需要一个新的内核网络协议栈,我们是不是在重复发明轮子?第二部分是 SMC + ERDMA 的原理、优劣等等,快速为大家了解 SMC 技术。第三部分是 SMC-R 在网易 Curve 分布式系统的实践。

一、我们为什么需要一个新的内核网络协议栈?

当前内核网络协议栈有什么问题?新的协议栈是不是重新发明轮子?一个协议栈能否解决所有问题?适配所有场景?这里我们将自己的思考分享出来,和大家一起交流。

首先我想要抛出一个观点,没有一个网络栈是万能的,之于此没有银弹。要谈现状,离不开背景:

  • 第一是 100G/400G 网络的普及,此时 CPU 是瓶颈。
  • 第二是云、规模,当前越来越多的业务迁移到云上,云上支持传统 RDMA 网卡成本很高。
  • 第三是 DPU,硬件卸载,承接第一点,CPU 成为瓶颈后,是否可以让网络栈将越来越多的逻辑卸载到网卡和 DPU 上,让 CPU 做更多更重要的事情。

我们如何平衡吞吐和时延?或者说如何用最少的 CPU 达到相同的吞吐,如何尽可能地降低时延。首先 Linux 内核的网络栈倾向于吞吐,而不是时延。提升吞吐很重的一点是,降低拷贝的开销。在大包吞吐的场景,我们很容易看到拷贝占据了 CPU 的绝大部分时间。而且内核网络栈的 context switch 开销,拷贝开销也会增加额外的时延。

那么这个问题变成了选择在内核态还是用户态实现一个网络栈?我想很多应用,或者说云上 99% 以上的应用使用的是 socket 接口,如果侵入性改造,对于用户态方案最大的壁垒。比如 DPDK 等,此时不仅仅是改造成本,也包括了运维成本、部署成本等等。当然用户态也可以劫持 socket 实现用户态协议栈,但此时 zero copy 等优势不在。并且同样需要改造,此处的改造是运维改造,调度改造和环境改造,这也是额外的成本。此时用户态的优势也不再显著。

软件 vs 硬件卸载?一开始 Linux 网络栈,例如 TCP 协议是从纯软件实现到越来越多的将功能卸载到网卡,甚至 TOE 完全卸载到网卡。如果提到卸载到网卡,是不是可以用一种更加成熟的硬件卸载方案?也就是 RDMA,也就是传统以太网卡 vs RDMA 网卡,部分卸载到成熟的完全卸载。RDMA 网络本身有规模的限制,我们可以在小规模把 RDMA 网络玩得很好。那是否有一种大规模 RDMA 的能力。我们现在看到的是阿里云发布的 ERDMA 网络,一种普惠、高性能、完全兼容 RDMA 的生态。我们借助 SMC + ERDMA 可以实现硬件卸载 RDMA 、大规模部署,二者相辅相成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值