基于龙蜥操作系统指令加速,降低云原生网关的构建成本

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 业界软件生态在优化 HTTPS 的性能上也做了诸多探索(参考[1]),传统的软件优化方案有 Session 复用、OCSP Stapling、False Start、dynamic record size、TLS1.3、HSTS 等, 但软件层面的优化无法满足流量日益增长的速度,CPU 硬件加速成为业界一个通用的解决方案。

技术背景


网络信息传输的可靠性、机密性和完整性要求日渐提升,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.png

图 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.png

图 2 Multi-buffer 配合 SIMD 加速


龙蜥操作系统


阿里云操作系统通过龙蜥社区和 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.png

图 3 系统 OpenSSL 基础性能


4.png

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


加速软件栈


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


5.png

图 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.png

图 6 传统网关


MSE 云原生网关


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


7.png

图 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.png

图 8 云原生网关


MSE 云原生网关优势:


  • 网关直连业务 Pod IP,不经过传统 Cluster IP,RT 更低。 


  • 支持 HTTPS 硬件加速,QPS 提升 80%。 


  • 支持 Wasm 插件市场,插件热加载,满足用户多语言自定义插件诉求。 


  • 自研 Multi-Ingress Controller 组件支持多集群 Ingress 复用同一个网关实例。


  • 原生兼容原生 K8s Ingress 规范,且支持 Nginx Ingress 核心功能注解的无缝转换。 

9.png

图 9 云原生网关技术架构


客户案例分享


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


10.png

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


业务配置


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


11.png

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


加速效果


加速前:


12.png


加速后:


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


13.png


方案优点:

  • 无需独立专用的硬件支持,运维成本低且易于弹性扩缩容。
  • 通用 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

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
13天前
|
安全 搜索推荐 物联网
构建未来:移动应用开发与操作系统的创新之路
【4月更文挑战第30天】 在数字化时代,移动应用和操作系统不仅是技术发展的产物,更是推动社会进步的关键力量。本文将深入探讨移动应用开发的最新趋势、挑战以及移动操作系统的演进,旨在为开发者和技术决策者提供洞见,以促进更高效、更智能、更安全的移动生态系统建设。
|
1月前
|
人工智能 安全 物联网
构建未来:移动应用开发与操作系统的融合创新
【4月更文挑战第2天】 随着移动设备成为日常生活的核心,移动应用开发和移动操作系统的协同进步已成为技术革新的重要驱动力。本文将探讨移动应用与系统领域的最新发展趋势,包括跨平台开发工具的兴起、人工智能集成、以及操作系统的安全性和性能优化。通过深入分析这些关键领域,我们旨在揭示如何通过技术融合推动用户体验和商业价值的最大化。
|
13天前
|
安全 Android开发 数据安全/隐私保护
构建未来:移动应用开发与操作系统的创新融合
【4月更文挑战第30天】 在数字化时代的浪潮中,移动应用与操作系统的协同进化不断推动着技术界的革新。本文深入探讨了移动应用开发的最新趋势、移动操作系统的关键进展以及两者间的相互作用。通过对跨平台开发工具、应用性能优化、安全性强化等议题的分析,揭示了如何借助先进的移动技术和策略来满足日益增长的用户期望,并预测了未来潜在的发展方向。
|
3天前
|
SQL 人工智能 自然语言处理
利用LangChain构建的智能数据库操作系统
LangChain库简化了数据库与AI结合,通过LLM将自然语言转为SQL语句进行查询和数据分析。它降低了数据查询的门槛,支持创建基于数据库的问答机器人和数据分析面板。实战案例展示了如何使用LangChain进行查询并以自然语言形式返回结果。通过限制表名,可处理大量数据。总结:掌握LangChain在数据库操作、查询及结果自然语言转换的应用。
11 0
|
4天前
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
12 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
13天前
|
Java 调度 开发者
构建高效微服务架构:后端开发的新趋势深入理解操作系统之进程调度策略
【4月更文挑战第30天】 随着企业数字化转型的不断深入,传统的单体应用逐渐不能满足快速迭代和灵活部署的需求。微服务架构以其高度模块化、独立部署和易于扩展的特性,成为现代后端开发的重要趋势。本文将探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术选型以及可能面临的挑战。
|
13天前
|
运维 Cloud Native 持续交付
构建未来:以云原生为基石的分布式系统架构深入理解操作系统的内存管理机制
【4月更文挑战第30天】 随着企业数字化转型的不断深入,传统的IT架构已难以满足市场对于敏捷性、可扩展性和成本效益的需求。云原生技术作为推动这一变革的关键因素,其设计理念和实现方式正在重塑软件开发和运维模式。本文将探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)、以及无服务器计算等,并分析其在构建分布式系统中的作用与挑战。通过实际案例,我们将展示如何利用云原生技术构建高效、弹性和可维护的分布式系统。
|
13天前
|
算法 安全 Android开发
深入理解操作系统的内存管理机制构建高效Android应用:Kotlin的协程优势
【4月更文挑战第30天】 在现代计算机系统中,操作系统的内存管理是确保系统高效、稳定运行的关键。本文将探讨操作系统内存管理的核心技术,包括内存分配、虚拟内存、分页和分段等概念,以及它们是如何协同工作以提高内存利用率和系统性能的。通过对这些技术的详细分析,我们可以更好地理解操作系统背后的原理,并评估不同内存管理策略对系统行为的影响。 【4月更文挑战第30天】 在移动开发领域,尤其是针对Android平台,性能优化和流畅的用户体验始终是开发者追求的核心目标。随着Kotlin语言的普及,协程作为其在异步编程领域的杀手锏特性,已经逐渐成为提高应用性能和简化代码结构的重要工具。本文将深入探讨Kotli
|
13天前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
|
14天前
|
vr&ar Android开发 开发者
构建未来:移动应用开发与操作系统的创新融合
【4月更文挑战第29天】 随着智能设备成为日常生活的延伸,移动应用和操作系统之间的协同进化不断推动技术界限。本文将深入探讨移动应用开发的最新趋势、移动操作系统的关键创新以及它们如何共同塑造着数字生态的未来。我们将分析跨平台开发工具的兴起、人工智能在移动应用中的角色、以及操作系统对性能和安全性的持续优化。通过实例分析和行业专家的见解,本文旨在为开发者、设计师以及技术决策者提供洞察,以利于他们在高度竞争的市场中保持领先地位。