性能提升一倍!云原生网关支持 TLS 硬件加速
简介:业界在优化 HTTPS 的性能上也做了诸多探索,传统的软件优化方案有 Session 复用、OCSP Stapling、False Start、dynamic record size、TLS1.3、HSTS 等, 但软件层面如何优化也无法满足流量日益增长的速度,加上 CPU 摩尔定律已入暮年,使得专用硬件卸载 CPU 密集型运算成为业界一个通用解决方案。
作者|井轶
审核&校对|如葑
随着网络环境的日渐复杂,传统 HTTP 明文传输协议带来的传输安全风险也日渐升高,因此 HTTPS 的密文传输协议得到了业界的普遍认可与广泛应用;任何事情都有其两面性,HTTPS 带来更高传输安全性的同时,由于需要做认证及数据加解密,相比 HTTP 使用 HTTPS 后使得网站访问速度变“慢”,且导致服务器 CPU 消耗变高、从而机器成本变得更“贵”。
业界在优化 HTTPS 的性能上也做了诸多探索,传统的软件优化方案有 Session 复用、OCSP Stapling、False Start、dynamic record size、TLS1.3、HSTS 等, 但软件层面如何优化也无法满足流量日益增长的速度,加上 CPU 摩尔定律已入暮年,使得专用硬件卸载 CPU 密集型运算成为业界一个通用解决方案。
网关为什么是 HTTPS 优化(TLS 卸载优化)的最佳路径?
网关作为请求流量进入业务应用的桥头堡,对于 HTTPS 优化这种跨业务的通用诉求是非常适合的落脚点,具体优势如下:
- 运维降本:网关统一处理 HTTPS 显然相比各业务分散处理运维成本更低。
- 机器降本:通常网关采用集群化的规模部署,统一 HTTPS 优化能够带来显著的机器成本优化。
- 业务提效:网关处理 HTTPS 后,业务只需关注自身逻辑即可,提升业务开发效率。
阿里在硬件加速上的探索
阿里统一接入网关 Tengine 承担着集团所有的入口流量,随着 HTTPS 化的全面推进,对于网关的性能挑战也非常大。业务驱动了技术创新,2017 年接入网关在硬件加速领域也迈出了第一步,开始尝试 QAT 卡硬件加速方案。
基于 QAT 卡的 TLS 硬件加速方案
整体方案由三部分组成:Tengine的ssl_async 指令、OpenSSL + QAT Engine 及 QAT Driver。其中 Tengine 通过适配 OpenSSL-1.1.0 的异步接口,将私钥操作卸载至硬件的 QAT engine 中,引擎通过 QAT 驱动调用硬件完成非对称算法取回结果。方案图示如下:
方案优点
- HTTPS 卸载由独立硬件 QAT 完成,不额外增加 CPU 消耗,使用不同的加密套件测试,整体上性能非常好。详细性能数据可见文末文章链接《在阿里的统一接入层上进行了硬件加速的探索》。
方案缺点
- 运维成本非常高,独立的 QAT 卡需要提前独立采购,尤其对于电商大促的突发流量场景无法做到弹性。
- 在目前容器化部署的大背景下,QAT 的使用有很多稳定性问题。
基于 CPU Multi-Buffer 特性的 TLS 卸载加速方案
在经历 Tengine QAT 的探索实践后,阿里云推出了基于开源 Envoy 构建的 MSE 云原生网关产品,读到这里有的同学可能会疑惑为什么选择 Envoy 而不是内部的 Tengine,关于这个问题的答案在《阿里巴巴云原生网关三位一体的选择与实践》 中。
阿里云 2021 年发布了 搭载最新至强处理器 Ice Lake 的 ECS 产品,利用 CPU 的硬件特性使得算力大幅提升 50% 以上。其中提供的 Crypto Acceleration 特性,包括 Vector AES ,通过 multi-buffer lib 配合,能够加速 AES、 RSA、EC 等密码学计算。利用该特性使得 HTTPS 硬件加速得以摆脱专用硬件加速卡的限制,使用 CPU 内置指令结合 SIMD 机制也可以大幅提升 HTTPS 的性能。基于此云原生网关率先完成了对其适配,将硬件加速的性能优势带给用户,在不增加用户资源成本的同时大幅度提升 HTTPS 的性能。


从上图压测数据可以看出使用 TLS 硬件加速后,相比普通 HTTPS 请求 TLS 握手时延降低一倍,极限 QPS 提升 80% 以上。
方案压测
1、压测基础环境
- 云原生网关规格: 1C2G * 1
- 压测工具:Grafana k6
- 请求大小: 1kb
- 证书:RSA2048
- 加密套件:
ECDHE-RSA-CHACHA20-POLY1305(TLS1.2) TLS_AES_256_GCM_SHA384(TLS1.3)
2、压测结论
1C2G 情况下,开启硬件加速后极限 QPS 提高 80% 以上,TLS 握手时间降低一倍。注:采用 1C2G 规格是因为更容易观察单核极限性能。
3、测试数据
| TLS版本 | 是否开启硬件加速 | 并发度 | QPS | TLS握手平均时间 | TLS握手最长时间 |
| 1.2 | 未开启 | 200 | 1009 | 98.5ms | 177.37ms |
| 1.2 | 未开启 | 500 | 1004 | 313.84ms | 457.56ms |
| 1.3 | 未开启 | 200 | 995 | 77.81ms | 177.24ms |
| 1.3 | 开启 | 200 | 1886 | 48.71ms | 104.04ms |
| 1.2 | 开启 | 200 | 1876 | 59.98ms | 113.55ms |
| 1.2 | 开启 | 500 | 1873 | 145.81ms | 262.91ms |
500 并发没开启硬件加速时的数据
500 并发,开启硬件加速时的数据
方案优点
- 无需独立硬件支持,运维成本低且易于弹性扩缩容。
- 适用场景更广泛。
写在最后
目前硬件加速功能已经正式上线,相比自建,您无需关心底层硬件加速机器的运维就能在同规格下获取一倍的 HTTPS 性能提升,具体可参考新建云原生网关进行硬件加速机器的购买。
相关链接
《在阿里的统一接入层上进行了硬件加速的探索》阿里七层流量入口 Tengine硬件加速探索之路-阿里云开发者社区
《阿里云上新了:搭载最新至强处理器 Ice Lake,算力提升 50% 以上》
阿里云上新了:搭载最新至强处理器Ice Lake,算力提升50%以上-阿里云开发者社区
新建云原生网关
本文为阿里云原创内容,未经允许不得转载。
性能提升一倍!云原生网关支持 TLS 硬件加速的更多相关文章
- Web 应用性能提升 10 倍的 10 个建议
转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...
- 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!
点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...
- 存算分离下写性能提升10倍以上,EMR Spark引擎是如何做到的?
引言 随着大数据技术架构的演进,存储与计算分离的架构能更好的满足用户对降低数据存储成本,按需调度计算资源的诉求,正在成为越来越多人的选择.相较 HDFS,数据存储在对象存储上可以节约存储成本,但与此 ...
- Nacos 2.0 正式发布,性能提升 10 倍!!
3月20号,Nacos 2.0.0 正式发布了! Nacos 简介: 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 通俗点讲,Nacos 就是一把微服务双刃剑:注册中心 + 配置中 ...
- 性能提升 40 倍!我们用 Rust 重写了自己的项目
前言 Rust 已经悄然成为了最受欢迎的编程语言之一.作为一门新兴底层系统语言,Rust 拥有着内存安全性机制.接近于 C/C++ 语言的性能优势.出色的开发者社区和体验出色的文档.工具链和IDE 等 ...
- 查询性能提升3倍!Apache Hudi 查询优化了解下?
从 Hudi 0.10.0版本开始,我们很高兴推出在数据库领域中称为 Z-Order 和 Hilbert 空间填充曲线的高级数据布局优化技术的支持. 1. 背景 Amazon EMR 团队最近发表了一 ...
- Elasticsearch Reindex性能提升10倍+实战
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484134&idx=1&sn=750249a ...
- 在MongoDB中创建一个索引而性能提升1000倍的小例子
在https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法.部分同学还想看看MongoDB的威力到底有多大,所 ...
- 有史以来性价比最高最让人感动的一次数据库&SQL优化(DB & SQL TUNING)——半小时性能提升千倍
昨天,一个客户现场人员急急忙忙打电话找我,说需要帮忙调优系统,因为经常给他们干活,所以,也就没多说什么,先了解情况,据他们说,就是他们的系统最近才出现了明显的反应迟钝问题,他们的那个系统我很了解,软硬 ...
- 从CLR GC到CoreCLR GC看.NET Core对云原生的支持
内存分配概要 前段时间在园子里看到有人提到了GC学习的重要性,很赞同他的观点.充分了解GC可以帮助我们更好的认识.NET的设计以及为何在云原生开发中.NET Core会占有更大的优势,这也是一个程序员 ...
随机推荐
- Web service是什么? (转载)
转载自 : Web service是什么?- 阮一峰的网络日志 作者: 阮一峰 日期: 2009年8月26日 我认为,下一代互联网软件将建立在Web service(也就是"云") ...
- 实时3D渲染它是如何工作的?可以在哪些行业应用?
随着新兴技术--3D渲染的发展,交互应用的质量有了极大的提高.用实时三维渲染软件创建的沉浸式数字体验,几乎与现实没有区别了.随着技术的逐步改进,在价格较低的个人工作站上渲染3D图像变得更加容易,设计师 ...
- 聚焦“云XR如何赋能元宇宙”,3DCAT实时云渲染首届行业生态合作交流会成功举办
2021年12月17日下午,由深圳市瑞云科技有限公司主办,深圳市虚拟现实产业联合会协办的云XR如何赋能元宇宙--3DCAT实时云渲染首届行业生态合作交流会圆满落幕.此次活动围绕 "云XR如何 ...
- 08.Java反射问题
目录介绍 8.0.0.1 反射的原理是什么?有哪些途径获取到Class对象,Class类的含义和作用是什么?什么是class类? 8.0.0.2 有哪些方式可以提高反射效率?为何反射消耗性能?究竟是怎 ...
- 记录--JS精粹,原型链继承和构造函数继承的 “毛病”
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 先从面向对象讲起,本瓜认为:面向对象编程,它的最大能力就是:复用! 咱常说,面向对象三大特点,封装.继承.多态. 这三个特点,以" ...
- 【教程】深入探究 JS代码混淆与加密技术
引言 在网络世界中,保护代码安全是至关重要的一环.JS代码混淆与加密技术则成为了开发者们常用的手段之一.本文将深入探讨混淆和加密的概念,以及其实现原理和应用方法,帮助读者更好地了解并运用这些技术. 概 ...
- Informix日志报错:Could not do a physical-order read to fetch netxt row
jmeter请求接口,1线程不报错,2线程及以上报错"无法执行查询",看后台日志,报错Could not do a physical-order read to fetch net ...
- 【Spring注解驱动开发】你敢信?面试官竟然让我现场搭建一个AOP测试环境!
写在前面 今天是9月1号,金九银十的跳槽黄金期已拉开序幕,相信很多小伙伴也在摩拳擦掌,想换一个新的工作环境.然而,由于今年疫情的影响,很多企业对于招聘的要求是越来越严格.之前,很多不被问及的知识点,最 ...
- 【Oracle】手动安装和卸载Oracle,这是最全的一篇了!!
写在前面 之前写过一篇在CentOS 7/8上安装Oracle的文章,按照我写的文章安装成功了,但是卸载Oracle时出现了问题.今天,我就整理一篇手动安装和卸载Oracle的文章吧.全文为实战型内容 ...
- 使用MFT进行加密文件传输的7个好处
至少,托管文件传输(MFT)解决方案是一种产品,它包含入站和出站文件传输的所有方面,同时使用行业标准的网络协议和无缝加密.它可以从单个集中管理点在您的网络,系统,应用程序,贸易伙伴和云环境中自动化和传 ...