性能提升1倍,成本直降50%!基于龙蜥指令加速的下一代云原生网关

技术背景

网络信息传输的可靠性、机密性和完整性要求日渐提升,HTTPS 协议已经广泛应用。HTTPS 的 SSL/TLS 协议涉及加解密、校验、签名等密码学计算,消耗较多 CPU 计算资源。因此 CPU 硬件厂商推出过多种加速卸载方案,如 AES-NI、QAT、KAE、ARMv8 安全扩展等。

业界软件生态在优化 HTTPS 的性能上也做了诸多探索(参考[1]),传统的软件优化方案有 Session 复用、OCSP Stapling、False Start、dynamic record size、TLS1.3、HSTS 等, 但软件层面的优化无法满足流量日益增长的速度,CPU 硬件加速成为业界一个通用的解决方案。

CPU 新特性

不久前发布的第三代英特尔®至强®可扩展处理器(代号 Ice Lake),单核性能提升 30%,整机算力提升 50% 以上(参考[9])。

ISA 指令集

在传统的 AES-NI 加速指令基础上,Ice Lake 新增了基于 Intel® Advanced Vector Extensions 512(Intel® AVX-512)的 Intel® Crypto Acceleration 特性,包括 Vector AES(VAES)、Integer Fused Multiply Add(IFMA 大数计算)、Galois Field New Instructions(GFNI)等(参考[2])。同时也补充支持了 SHA extension(SHA-NI),补足了上一代的 SHA256 性能短板。

(图 1/ Ice Lake 新增 Intel AVX512 指令集)

Multi-buffer

Multi-buffer 是一种集中批量请求进行并发处理的技术(参考[10])。应用软件通过异步 SSL 配合 multi-buffer library 使用 SIMD 向量指令(AVX/AVX2/AVX512)加速密码学计算。OpenSSL (BabaSSL,BoringSSL)、Nginx (Tengine)、DPDK Cryptodev、dm-crypt、ISA-L 等开源软件生态已部分支持。

(图 2/ Multi-buffer 配合 SIMD 加速)

龙蜥操作系统(Anolis OS)

阿里云操作系统通过龙蜥社区和 Intel 工程师合作(参考[2]),率先支持云上 Ice Lake CPU,输出了最新的指令加速特性(参考[10])。Ice Lake 单核 AES 性能加速 2.2 倍,达到上一代 Cascade Lake 的 3.4 倍。RSA 单核加速 4.9 倍,达到上一代的 5.1 倍。Tengine (Nginx)单核 SSL/TLS 握手性能相应地加速 3.1 倍,达到上一代的 3.2 倍

(图 3/系统 OpenSSL 基础性能)

(图 4/端到端应用HTTPS TLS短连接性能(左图 Tengine、右图 Nginx))

加速软件栈

受益于以往的 QAT 方案,OpenSSL、Nginx (Tengine)、DPDK、Envoy 等主流软件已经支持 SSL/TLS 加速。Intel®Crypto Acceleration 方案沿用和扩展了 QAT 的软件框架 QAT Engine(参考[2]),使之从专用的硬件加速卡场景扩展到了通用的 CPU 指令加速场景,极大扩展了适用范围。

(图 5/ Intel SSL/TLS 加速软件栈)

Tengine 加速方案

阿里统一接入网关 Tengine 承担着集团所有的入口流量(参考[1]),随着 HTTPS 化的全面推进,对于网关的性能挑战也非常大。业务驱动了技术创新,2017 年接入网关在硬件加速领域也迈出了第一步,开始尝试 QAT 卡硬件加速方案。在经历 Tengine QAT 的探索实践后,阿里云推出了基于开源 Envoy 构建的 MSE 云原生网关产品(参考[5])。

Tengine 从 2.2.2 版本开始支持 async SSL,支持 QAT 加速 SSL/TLS(参考[3]),支持的底层 lib 版本为:OpenSSL-1.1.0f 和 QAT_Engine-0.5.30(参考[4])。龙蜥 OS 引入 CPU 加速后升级到:OpenSSL-1.1.1g 和 QAT_Engine-0.6.6,不需要 QAT 驱动和 qatlib。

云原生网关演进

阿里巴巴在 2018 年,开启了云原生上云的序幕,将容器、服务网格作为核心技术点进行演进,并尝试阿里巴巴和蚂蚁通过这次技术演进,来统一双方的中间件技术栈,让业务更聚焦业务开发,屏蔽底层分布式复杂度。作为服务网格一个重要方向,我们开启了下一代网关的探索之路。

传统网关

传统网关通过流量网关与业务网关两层网关来构建(参考[1]),流量网关提供全局性的、与后端业务无关的策略配置,例如 Tengine 就是典型的流量网关;业务网关提供独立业务域级别的、与后端业务紧耦合策略配置,随着应用架构模式从单体演进到现在的分布式微服务,业务网关也有了新的叫法 - 微服务网关。

(图 6/传统网关)

MSE 云原生网关

在容器技术与 K8s 主导的云原生时代,下一代的网关模式仍然会是传统的流量网关与微服务网关的两层架构吗?带着这个问题,并结合阿里巴巴内部沉淀的网关技术与运维经验,我们尝试来回答下,什么是下一代网关。

(图 7/下一代网关的产品画像)

我们对其中几个非常核心的要素展开说明下:

云原生:要支持标准 K8s Ingress、K8s Gateway API 以及 K8s 服务发现,在云原生时代,K8s 已经成为云 OS,而 K8s 原生集群内外部的网络是隔离的,负责外部流量进入,K8s 集群的规范定义就是 K8s Ingress,K8s Gateway API 是 K8s Ingress 的进一步演化,基于此,作为下一代网关,势必要支持这种特性。

拥抱开源:要基于开源生态构建网关,借助开源并助力开源,相信这点大家应该都不陌生。

高扩展:任何一个网关的能力都不可能覆盖所有的用户诉求,要具备可扩展能力,例如 K8s 的蓬勃发展其开放的扩展能力功不可没。

服务治理:随着应用架构演进到分布式微服务,网关本身就是为后端业务提供流量调度能力,其支持基本的服务治理能力也就顺其自然了。

丰富的可观测性:分布式微服务架构带来协同效率提升等益处的同时,对于问题排查及运维带来了更大的挑战,作为流量桥头堡的网关需要具备丰富的可观测数据,帮助用户来定位问题。

基于以上的分析和实践,我们认为在容器和 K8s 主导的云原生时代,Ingress 成为 K8s 生态的网关标准,赋予了网关新的使命,使得流量网关 + 微服务网关合二为一成为可能。

MSE 云原生网关将流量网关与微服务网关(Ingress)二合一,通过硬件加速、内核调优等手段在性能不打折的情况下,用户部署网关的资源成本直降 50%。

(图 8/云原生网关)

MSE 云原生网关优势:

  • 网关直连业务 Pod IP,不经过传统 Cluster IP,RT 更低。
  • 支持 HTTPS 硬件加速,QPS 提升 80%。
  • 支持 Wasm 插件市场,插件热加载,满足用户多语言自定义插件诉求。
  • 自研 Multi-Ingress Controller 组件支持多集群 Ingress 复用同一个网关实例。
  • 原生兼容原生 K8s Ingress 规范,且支持 Nginx Ingress 核心功能注解的无缝转换。

(图 9/云原生网关技术架构 )

客户案例分享

上海费芮网络科技有限公司之前一直使用 Nginx Ingress,使用过程中遇到运维成本高、安全差、原生功能弱等痛点,期望能够找到一款替代产品;在接触 MSE 云原生网关后,在上线前的测试过程中对于 HTTPS 硬件加速功能非常认可,测试验证开启后的加速效果非常明显;结合网关提供的 Nginx Ingress 注解兼容功能 + HTTPS 硬件加速两个差异功能,用户最终选择使用 MSE 云原生网关来替代 Nginx Ingress 网关。

(图 10/费芮客户迁移云原生网关)

业务配置

MSE 云原生网关已经将 HTTPS 硬件加速功能产品化,只需要在购买时开启即可,开启后的示意图如下:

(图 11/云原生网关开启硬件加速)

加速效果

加速前:

加速后:

  • 1C2G 压测 HTTPS QPS 从 1004 提升到 1873,提升约 86%。
  • TLS 握手 RT 从 313.84ms 降到 145.81ms,下降一倍。

方案优点:

  • 无需独立专用的硬件支持,运维成本低且易于弹性扩缩容。
  • 通用 CPU 加速特性的适用场景更广泛。

参考链接:

[1] https://developer.aliyun.com/article/870630

[2] https://openanolis.cn/sig/crypto/doc/390714951012679780

[3] https://tengine.taobao.org/changelog_cn.html

[4] http://tengine.taobao.org/document_cn/tengine_qat_ssl_cn.html

[5] https://www.aliyun.com/product/aliware/mse

[6] https://developer.aliyun.com/article/941940

[7] 3rd-Gen-Intel-Xeon-Scalable-Platform-Press-Presentation:

https://newsroom.intel.com/wp-content/uploads/sites/11/2021/04/3rd-Gen-Intel-Xeon-Scalable-Platform-Press-Presentation-281884.pdf

[8] https://01.org/kubernetes/solutions/QAT-envoy-solution

[9] https://developer.aliyun.com/article/783678

[10] crypto-acceleration-enabling-path-future-computing:

https://newsroom.intel.com/articles/crypto-acceleration-enabling-path-future-computing

[11] Intel arch SIG链接地址:

https://openanolis.cn/sig/Intel-Kernel

[12] 商密软件栈 SIG 地址: https://openanolis.cn/sig/crypto

文 / Intel Arch SIG

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TiDB、OceanBase、PolarDB-X、CockroachDB 二级索引写入性能测评

为什么要做这个测试 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异。二级索引必须是强一致的,因此索引的写入需要与主键的写入放在一个事务当中,事务的性能是二级索引性能的基础。 目前市面上的分布式数据库中,从使用体验的角度看…

EMQX + PolarDB-X 一站式 IoT 数据解决方案

本文整理自 EMQX 产品经理李国伟,在PolarDB开源社区中关于EMQX与PolarDB-X构建一站式IoT数据解决方案的分享。本篇内容主要分为四个部分: 1. IoT数据特性 2. EMQX介绍 3. EMQX与PolarDB-X集成 4. EMQXPolarDB-X方案DEMO 一、IoT数据特性 物联网应用场景…

阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题

大家好,我是君哥。 今天来聊一聊阿里巴巴 Seata 新版本(1.5.1)是怎么解决 TCC 模式下的幂等、悬挂和空回滚问题的。 TCC 回顾 TCC 模式是最经典的分布式事务解决方案,它将分布式事务分为两个阶段来执行,try 阶段对每…

10分钟部署一个别人可以访问的在线网站(文末有礼

你是否幻想过拥有自己的个人网站?但是不会编程,没有任何网站搭建经验,搭建的时候也不知道怎么去选择系统…… 等等这一系列疑惑让大部分人还没开始就选择放弃,本期教大家用一个最简单的方式,在10分钟内搭建一个线上的…

菜鸟 CPaaS 平台微服务治理实践

背景 CPaaS(cainiao platform as a service)是以公有云为基座,结合先进的云原生理建设的企业级 DevOps 的 PaaS 平台,CPaaS 主要目前主要支持的场景:菜鸟生态的云上研发运维、菜鸟公有云 SaaS 化的能力透出、菜鸟商业…

RocketMQ 消息集成:多类型业务消息-普通消息

引言 Apache RocketMQ 诞生至今,历经十余年大规模业务稳定性打磨,服务了 100% 阿里集团内部业务以及阿里云数以万计的企业客户。作为金融级可靠的业务消息方案,RocketMQ 从创建之初就一直专注于业务集成领域的异步通信能力构建。本篇将从业务…

【总结】字符串匹配: KMP 和 拓展KMP

比起ac自动机,kmp就一个next数组,理解了如何初始化next后就可以搞一些模板题了,下面是还不错的学习资料,清晰易懂,自己用的模板也来自它: http://chaoswork.com/blog/2011/06/14/kmp%E7%AE%97%E6%B3%95%E5%B0%8F%E7%BB%93/ kmp模板 next[0]-1;j-1; for(i0;i<m;) {while(j>…

最小生成树(普利姆算法、克鲁斯卡尔算法)

给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树. 求最小生成树的算法 (1) 克鲁斯卡尔算法 图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间. (2) 普里姆算法 图…

《数字化与碳中和(园区篇)》报告正式发布,助力加快推进国家“双碳”战略实施

2021年10月&#xff0c;国务院印发《2030年前碳达峰行动方案》&#xff0c;明确提出要建设绿色低碳园区&#xff0c;并选择100个具有典型代表性的城市和园区开展碳达峰试点建设&#xff0c;在政策、资金、技术等方面对试点城市和园区给予支持。此后&#xff0c;碳达峰、碳中和正…

基于开放共享的自主研发—MaxCompute 持续增强生态与开放性建设

MaxCompute产品与生态架构 MaxCompute是一个具有先进架构的Serverless云数据仓库&#xff0c;自从商业化后&#xff0c;使用的用户涉及各个行业的头部客户。在生态上需要支持主流的开源产品以及阿里云云产品。其主要包括以下几个方面&#xff1a; 数据接入生态。目前官方提供…

构建数据中台的组织架构

一、中台是一种企业架构 1.TOGAF企业架构标准 TOGAF是一套企业架构标准。企业架构是指整个公司或企业的软件和其他技术的整体观点和方法。企业架构又细分为业务架构、应用架构、数据架构、技术架构几个方向。 其中业务架构的定义是“定义业务战略和组织&#xff0c;关键业务…

源于加速,不止加速——10年沉淀,破局改变

20余年技术&#xff0c;面临破局。CDN(Content Delivery Network&#xff0c;内容分发网络) 是一个超大规模的分布式系统&#xff0c;为互联网各类App和Web站点提供动 / 静态内容、实时流媒体加速以及网络安全防护等能力。在线购物、直播、音乐、游戏、社交等等一切&#xff0c…

5分钟让你在大火的多模态领域权威榜单VQA上超越人类

ModelScope上开源了达摩院众多业界最强多模态模型&#xff0c;其中就有首超人类的多模态预训练视觉问答模型mPLUG&#xff0c;小编激动的搓搓小手&#xff0c;迫不及待的体验了一下。 一探&#xff1a;浅草才能没马蹄 市面上有好多号称“用户上手简单”&#xff0c;“一步到位…

私有化输出的服务网格我们是这样做的

介绍 微服务开发的问题 微服务架构下我们在开发中遇到的常见的问题有以下 4 个&#xff1a; 多语言问题&#xff1a;有多种编程语言&#xff0c;node.js, JAVA, GoLang…微服务需要为每种语言都维护一种中间件 SDK升级推动难&#xff1a;SDK 升级需要推动业务应用进行代码修…

技术解读:Dragonfly 基于 P2P 的智能镜像加速系统

背景 网络下载 提起网络下载领域&#xff0c;你应该首先会想到基于 TCP/IP 协议簇的 C/S 模式。这种模式希望每一个客户机都与服务器建立 TCP 连接&#xff0c;服务器轮询监听 TCP 连接并依次响应&#xff0c;如下图&#xff1a; 上世纪末期&#xff0c;基于 C/S 模式的思想&…

Kruise Rollout:灵活可插拔的渐进式发布框架

前言 Kruise Rollout 是 OpenKruise 社区开源的渐进式交付框架。Kruise Rollout 支持配合流量和实例灰度的金丝雀发布、蓝绿发布、A/B Testing 发布&#xff0c;以及发布过程能够基于 Prometheus Metrics 指标自动化分批与暂停&#xff0c;并提供旁路的无感对接、兼容已有的多…

最小生成树的Prime算法的思想

Prime算法的核心步骤是&#xff1a;在带权连通图中V是包含所有顶点的集合&#xff0c; U已经在最小生成树中的节点&#xff0c;从图中任意某一顶点v开始&#xff0c;此时集合U{v}&#xff0c;重复执行下述操作&#xff1a;在所有u∈U,w∈V-U的边(u,w)∈E中找到一条权值最小的边…

一线技术人应该关注的四种思维能力

引言 作为长期奋战在一线的技术人&#xff0c;我深刻体会到如下几个思维能力对技术人成长的重要性&#xff0c;熟练运用这几种思维可以帮助我们快速的进入到新的领域&#xff0c;在分析、定位和解决问题上有很大帮助。 抽象思维&#xff1a;帮助我们快速抽取面对问题的关键要素…

Nacos 企业版如何提升读写性能和可观测性

概述 微服务引擎 MSE 发布 2.0.4.0 版本&#xff0c;新版本主要在性能和可观测能力升大幅提升&#xff0c;也加固了安全性。性能方面&#xff0c;基于 Dragonwell 进行构建&#xff0c;服务发现和配置性能提升达 40%以上&#xff1b;可观测方面&#xff0c;提供了服务注册的轨…

「技术人生」第9篇:如何设定业务目标

写在前面 上一篇文章讲了如何构建业务大图&#xff0c;看到有评论说这和设定 OKR 差不多啊。希望其他读者不要被类似的看法带偏。业务大图是业务顶层设计&#xff0c;是战略目标、业务长期价值、业务维度拆分、业务组织设计、业务长期发展方向、关键业务战役、短期重点事项的综…