0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用 ebpf 能力加速ServiceMesh如何降低并消除网络时延带来的影响

openEuler 来源:openEuler 作者:openEuler 2021-12-21 14:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

服务网格的前世今生早期的微服务架构上存在着服务发现、负载均衡、授权认证等各种各样的难题与挑战。起初微服务践行者们大多自己实现这么一套分布式通信系统来应对这些挑战,但这无疑造成了业务功能的冗余,解决此问题的方法就是将共有的分布式系统通信代码提取出来设计成一套框架,以框架库的方式供程序调用。但这个看似完美的方法却存在着几个致命的弱点:

框架大部分对业务来说是侵入式修改,需要开发者学习如何使用框架

框架无法做到跨语言使用

处理复杂项目框架库版本的依赖兼容问题非常棘手,框架库的升级经常导致业务的被迫升级。

随着微服务架构的发展,以 Linkeerd/Envoy/NginxMesh 为代表的 sidecar 代理模式应运而生,这就是第一代的 serviceMesh。它作为一个基础设施层,与业务进程完全解耦,和业务一起部署,接管业务件之间的通信,将网络数据收发单独抽象出一层,在这层集中处理了服务发现、负载均衡、授权认证等分布式系统所需要的功能,实现网络拓扑中请求的可靠传输,较为完美的解决了微服务框架库中的问题。

但在软件开发领域没有万能的银弹。ServiceMesh 带来了这么多便利的同时,也不可避免的存在着一些问题。传统方式下,客户端到服务端的消息仅需进出一次内核协议栈即可完成消息传递,但在 sidecar 模式中,一般选择使用内核的 iptables 能力劫持业务流量,这就造成了业务数据需要多次进出内核协议栈,导致业务时延增大,吞吐量变低。

openEuler 21.03 版本下进行 sidecar(envoy)模式基准测试发现,with-envoy 与 non-envoy 模式下,时延有大幅增加

利用 ebpf 能力加速 ServiceMesh有没有什么方法可以在享受 ServiceMesh 提供便利服务的基础上同时降低并消除网络时延带来的影响呢?在这里就不得不说下 ebpf 技术,ebpf 是在 kernel 中的一项革命性技术,旨在提供不修改内核代码或加载内核模块的基础上更加安全有效的扩展内核的能力。使用 ebpf 能力短接内核网络协议栈来降低网络时延,提升 ServiceMesh 的使用体验,这是目前业界通用的做法。

为了实现短接内核网络协议栈的目标,我们需要使用到 ebpf 提供的两种能力,分别是:sockops 与 socket redirection,openEuler 使用的 kernel 版本为 5.10,已经支持了 ebpf 的这两种能力。

sockops 提供了在 tcp socket 创建连接时将 socket 使用 key(一般是四元组)标识后保存在 sockmap 数据结构中的能力

socket redirection 在传输 tcp 数据时支持使用 key 去 sockmap 中引用 socket,命中后可直接将数据转发到此 socket 中

对于未在 sockmap 中找到的 socket,正常将数据包通过内核网络协议栈发送出去

将这些能力结合在一起,就可以在不经过内核网络协议栈的前提下直接将数据包转发到对应的 socket 上,完成数据的一次传输,降低在内核网络协议栈上的时间消耗。

在 tcp socket 建立连接的过程中,实际上有两次连接建立的过程,我们通常称之为正向连接与反向连接。因正反向连接在建连过程中均需要通过 iptables 信息来获取实际的 ip 地址与端口号,openEuler 在 iptables 的工作原理上新增 helper 函数,将获取对端信息的能力下沉到内核中,可以在 ebpf 函数中主动获取到 iptables 转换过的地址。这样我们可以建立一个辅助 map 用于存放正反向连接的对应关系并在 socket redirection 转发时先从辅助 map 中寻找到对端的连接信息,成功找到对端的连接信息后再进行 socket 转发动作。原理如下图

通过 sockops 能力的加速,我们在 openEuler21.03 上实测的结果如下:

测试环境:openEuler-21.03 / 5.10.0-4.17.0.28.oe1.x86_64

组网:fortio-envoy-envoy80

qps 提升约为 18%,平均时延提升 15%

下一步的工作:彻底消除 ServiceMesh 性能损耗从 openEuler21.03 实际测试中可以看出,sockmap 对于 ServiceMesh 可以进行加速,但是加速的结果与不使用 ServiceMesh 相比仍然有较大差距。仔细分析,sockmap 并没有消耗 socket buff 之间的数据拷贝,也没有消耗 app/envoy 之间通信时的上下文切换,那问题可能仍然出在 ServiceMesh 架构上。有没有一种方法,既有 ServiceMesh 易管理、易部署的能力,又能消除其带来的性能劣化影响?目前 openEuler sig-high-performance-network 正在尝试这方面的工作,已经有了初步进展。

原文标题:openEuler结合ebpf提升ServiceMesh服务体验的探索

文章出处:【微信公众号:openEuler】欢迎添加关注!文章转载请注明出处。

审核编辑:彭菁
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7315

    浏览量

    93999
  • 代码
    +关注

    关注

    30

    文章

    4942

    浏览量

    73160
  • openEuler
    +关注

    关注

    2

    文章

    335

    浏览量

    6674

原文标题:openEuler结合ebpf提升ServiceMesh服务体验的探索

文章出处:【微信号:openEulercommunity,微信公众号:openEuler】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    利用DMA如何降低MCU功耗?

    利用DMA(直接内存访问)降低MCU功耗的核心在于最小化CPU介入,通过硬件自动完成数据传输任务,使CPU能尽可能长时间处于休眠状态。 CPU休眠时间最大化 DMA接管数据搬运(如外设↔内存、内存
    发表于 11-18 07:34

    时钟移项电路加速模块的设计

    门电路延迟是一种简单通用的方法,但是利用逻辑门作延时的缺点是单个逻辑门的时微乎其微,若需要一定的延时往往需要大量的逻辑门串联的形式,信号的驱动能力减弱,也浪费了系统资源。设计中采用了锁相环的形式,
    发表于 10-29 07:38

    CPO技术加速未来数据中心网络发展

    生成式 AI 的快速普及正在推动数据中心网络需求的指数级增长。光电一体化封装(CPO)技术以其高带宽密度、低功耗和可靠性优势,成为满足 AI 时代网络性能需求的关键方案。CPO 通过光电融合显著提升网络带宽和能效,同时
    的头像 发表于 09-23 14:24 1259次阅读

    全球应用加速服务如何实现?网络服务推荐排行榜

    前言在数字化转型浪潮中,全球应用加速服务已成为企业提升用户体验、拓展国际市场的重要基础设施。通过内容分发网络(CDN)、边缘计算和云网融合技术,这些服务将内容缓存至离用户最近的节点,大幅降低延迟
    的头像 发表于 09-10 09:48 1600次阅读
    全球应用<b class='flag-5'>加速</b>服务如何实现?<b class='flag-5'>网络</b>服务推荐排行榜

    基于eBPF的Kubernetes网络异常检测系统

    作为一名在云原生领域深耕多年的运维工程师,我见过太多因为网络问题导致的生产事故。传统的监控手段往往是事后诸葛亮,当你发现问题时,用户已经在抱怨了。今天,我将分享如何利用 eBPF 这一革命性技术,构建一套能够实时检测 Kuber
    的头像 发表于 07-24 14:09 515次阅读

    信而泰×DeepSeek:AI推理引擎驱动网络智能诊断迈向 “自愈”时代

    对工程师个人经验的过度依赖,降低主观因素导致的误判风险,实现数据驱动的客观决策。l 持续自进化:模型通过持续学习新的故障案例和网络变化,动态更新知识库,自适应网络架构演进,保持诊断能力
    发表于 07-16 15:29

    华为AI UBB解决方案加速网络迈向高阶智能

    解决方案,包括AI FAN、AI OTN、AI WAN和ADN四大部分,端到端覆盖家庭网络、承载网络和UBB智能管控系统。AI UBB解决方案通过端到端设备内生智能和全面能力提升,为AI应用提供极致体验,实现高品质入算和高效算力
    的头像 发表于 06-23 15:56 1207次阅读

    神经网络AI降噪回音消除模块 A-29说明书

    设备获得更好的语音品质。在同类型模块中,主芯片的处理能力,及算法差异,在外形结构比较小,喇叭音量又很 大的通话产品中,回音消除功能很难处理。而 A-29P 的优异处理性能,则很好解决了这个问 题,保持非常好的全双工流畅度。
    发表于 06-18 15:23 0次下载

    鸿蒙5开发宝藏案例分享---点击完成时分析

    : 动画时长 完成时 100ms 99ms 1000ms 1007ms 优化建议 : 默认300ms可缩减至150-200ms 高频操作区域建议≤100ms 使用硬件加速动画 ?** 案例3:网络请求
    发表于 06-12 17:03

    工业级MIFI全栈式解决方案:快速构建高可靠、低时Wi-Fi网络

    工业自动化与实时控制场景中,传统Wi-Fi网络因部署周期冗长、时波动大、抗干扰能力弱等问题难以匹配智能制造需求。本期特别分享Wi-Fi联网AP应用示例(Air8000作为热点):   以
    的头像 发表于 04-17 13:46 555次阅读
    工业级MIFI全栈式解决方案:快速构建高可靠、低时<b class='flag-5'>延</b>Wi-Fi<b class='flag-5'>网络</b>

    RAKsmart智能算力架构:异构计算+低时网络驱动企业AI训练范式升级

    在AI大模型参数量突破万亿、多模态应用爆发的今天,企业AI训练正面临算力效率与成本的双重挑战。RAKsmart推出的智能算力架构,以异构计算资源池化与超低时网络为核心,重构AI训练基础设施,助力企业实现训练速度提升、硬件成本下降与算法迭代
    的头像 发表于 04-17 09:29 603次阅读

    MathWorks和Altera利用AI加速无线通信系统发展

    降低前传流量和带宽要求,共同加速 Altera FPGA 的无线开发。从事 5G 和 6G 无线通信系统的工程师现可以在降低成本的同时,确保用户数据的完整性,维持无线通信系统的可靠性
    的头像 发表于 03-20 15:32 1113次阅读

    利用eBPF程序绕过内核以加速存储访问

    随着微秒级NVMe存储的蓬勃发展,Linux内核存储栈的开销几乎是存储访问时间的两倍,已经成为性能瓶颈。
    的头像 发表于 03-01 16:09 889次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>eBPF</b>程序绕过内核以<b class='flag-5'>加速</b>存储访问

    利用GaN HEMTs降低电机驱动应用的系统成本

    电子发烧友网站提供《利用GaN HEMTs降低电机驱动应用的系统成本.pdf》资料免费下载
    发表于 01-23 08:30 0次下载
    <b class='flag-5'>利用</b>GaN HEMTs<b class='flag-5'>降低</b>电机驱动应用的系统成本

    HarmonyOS应用点击完成时问题定位流程及原理

    在HarmonyOS应用开发中,完成时是指用户操作HarmonyOS移动终端时,从输入触控指令到界面完全刷新结束达到可以阅读的稳定状态所用时间,点击完成时依据页面转场类型可以分为页面内跳转
    的头像 发表于 12-23 11:15 1278次阅读
    HarmonyOS应用点击完成时<b class='flag-5'>延</b>问题定位流程及原理