简介:业界在优化 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%以上-阿里云开发者社区

新建云原生网关

新建云原生网关 - 微服务引擎MSE - 阿里云

原文链接

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

性能提升一倍!云原生网关支持 TLS 硬件加速的更多相关文章

  1. Web 应用性能提升 10 倍的 10 个建议

    转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...

  2. 重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!

    点击上方 蓝字关注我们 社区的小伙伴们,好消息!经过 100 多位社区贡献者近 10 个月的共同努力,我们很高兴地宣布 Apache DolphinScheduler 2.0 alpha 发布.这是 ...

  3. 存算分离下写性能提升10倍以上,EMR Spark引擎是如何做到的?

    ​引言 随着大数据技术架构的演进,存储与计算分离的架构能更好的满足用户对降低数据存储成本,按需调度计算资源的诉求,正在成为越来越多人的选择.相较 HDFS,数据存储在对象存储上可以节约存储成本,但与此 ...

  4. Nacos 2.0 正式发布,性能提升 10 倍!!

    3月20号,Nacos 2.0.0 正式发布了! Nacos 简介: 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 通俗点讲,Nacos 就是一把微服务双刃剑:注册中心 + 配置中 ...

  5. 性能提升 40 倍!我们用 Rust 重写了自己的项目

    前言 Rust 已经悄然成为了最受欢迎的编程语言之一.作为一门新兴底层系统语言,Rust 拥有着内存安全性机制.接近于 C/C++ 语言的性能优势.出色的开发者社区和体验出色的文档.工具链和IDE 等 ...

  6. 查询性能提升3倍!Apache Hudi 查询优化了解下?

    从 Hudi 0.10.0版本开始,我们很高兴推出在数据库领域中称为 Z-Order 和 Hilbert 空间填充曲线的高级数据布局优化技术的支持. 1. 背景 Amazon EMR 团队最近发表了一 ...

  7. Elasticsearch Reindex性能提升10倍+实战

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484134&idx=1&sn=750249a ...

  8. 在MongoDB中创建一个索引而性能提升1000倍的小例子

    在https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法.部分同学还想看看MongoDB的威力到底有多大,所 ...

  9. 有史以来性价比最高最让人感动的一次数据库&SQL优化(DB & SQL TUNING)——半小时性能提升千倍

    昨天,一个客户现场人员急急忙忙打电话找我,说需要帮忙调优系统,因为经常给他们干活,所以,也就没多说什么,先了解情况,据他们说,就是他们的系统最近才出现了明显的反应迟钝问题,他们的那个系统我很了解,软硬 ...

  10. 从CLR GC到CoreCLR GC看.NET Core对云原生的支持

    内存分配概要 前段时间在园子里看到有人提到了GC学习的重要性,很赞同他的观点.充分了解GC可以帮助我们更好的认识.NET的设计以及为何在云原生开发中.NET Core会占有更大的优势,这也是一个程序员 ...

随机推荐

  1. Web service是什么? (转载)

    转载自 : Web service是什么?- 阮一峰的网络日志 作者: 阮一峰 日期: 2009年8月26日 我认为,下一代互联网软件将建立在Web service(也就是"云") ...

  2. 实时3D渲染它是如何工作的?可以在哪些行业应用?

    随着新兴技术--3D渲染的发展,交互应用的质量有了极大的提高.用实时三维渲染软件创建的沉浸式数字体验,几乎与现实没有区别了.随着技术的逐步改进,在价格较低的个人工作站上渲染3D图像变得更加容易,设计师 ...

  3. 聚焦“云XR如何赋能元宇宙”,3DCAT实时云渲染首届行业生态合作交流会成功举办

    2021年12月17日下午,由深圳市瑞云科技有限公司主办,深圳市虚拟现实产业联合会协办的云XR如何赋能元宇宙--3DCAT实时云渲染首届行业生态合作交流会圆满落幕.此次活动围绕 "云XR如何 ...

  4. 08.Java反射问题

    目录介绍 8.0.0.1 反射的原理是什么?有哪些途径获取到Class对象,Class类的含义和作用是什么?什么是class类? 8.0.0.2 有哪些方式可以提高反射效率?为何反射消耗性能?究竟是怎 ...

  5. 记录--JS精粹,原型链继承和构造函数继承的 “毛病”

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 先从面向对象讲起,本瓜认为:面向对象编程,它的最大能力就是:复用! 咱常说,面向对象三大特点,封装.继承.多态. 这三个特点,以" ...

  6. 【教程】深入探究 JS代码混淆与加密技术

    引言 在网络世界中,保护代码安全是至关重要的一环.JS代码混淆与加密技术则成为了开发者们常用的手段之一.本文将深入探讨混淆和加密的概念,以及其实现原理和应用方法,帮助读者更好地了解并运用这些技术. 概 ...

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

  8. 【Spring注解驱动开发】你敢信?面试官竟然让我现场搭建一个AOP测试环境!

    写在前面 今天是9月1号,金九银十的跳槽黄金期已拉开序幕,相信很多小伙伴也在摩拳擦掌,想换一个新的工作环境.然而,由于今年疫情的影响,很多企业对于招聘的要求是越来越严格.之前,很多不被问及的知识点,最 ...

  9. 【Oracle】手动安装和卸载Oracle,这是最全的一篇了!!

    写在前面 之前写过一篇在CentOS 7/8上安装Oracle的文章,按照我写的文章安装成功了,但是卸载Oracle时出现了问题.今天,我就整理一篇手动安装和卸载Oracle的文章吧.全文为实战型内容 ...

  10. 使用MFT进行加密文件传输的7个好处

    至少,托管文件传输(MFT)解决方案是一种产品,它包含入站和出站文件传输的所有方面,同时使用行业标准的网络协议和无缝加密.它可以从单个集中管理点在您的网络,系统,应用程序,贸易伙伴和云环境中自动化和传 ...