鲲鹏社区首页
中文
注册
鲲鹏加速引擎KAE简介

鲲鹏加速引擎KAE简介

BoostKit

发表于 2023/09/06

0

尊敬的鲲鹏开发者你好,为了给大数据加解密、分布式存储压缩、视频转码等应用场景提供高性能加速,充分释放硬件算力,鲲鹏BoostKit提供基于ARM指令深度优化和基于鲲鹏硬件加速引擎开发的加速库,覆盖系统库、压缩、加解密、媒体、数学库、存储和网络7类加速库。其中鲲鹏加速引擎(Kunpeng Accelerator Engine,简称:KAE)是基于鲲鹏920处理器提供的硬件加速解决方案,包含了KAE加解密和KAEzip,归属加解密和压缩两类库,分别用于加速SSL/TLS应用加解密和数据压缩,可以显著降低处理器消耗,提高处理器效率。

您可以通过本文学习如何在Web场景下使用KAE。

本文主要介绍了以下知识:

(1)鲲鹏加速引擎KAE简介。

(2) 如何在Web场景下使用KAE。

什么是KAE

鲲鹏920处理器内置KAE硬件引擎,支持硬件加解密和压缩/解压缩特性,同时提供适配KAE硬加速的zlib和OpenSSL库,让开发者在不修改应用程序的同时获得成倍的性能提升。

在使用KAE之前,我们先来了解一下什么是KAE,掌握了KAE的基础概念和作用原理,才能更好的将其运用在实际业务场景中。

鲲鹏加速引擎KAE的背景可以追溯到云计算和大数据时代的爆发需求。随着云服务、人工智能和大数据分析的快速发展,数据中心和服务器面临着更高的计算要求和能源效率要求。为了满足这些需求,华为推出了鲲鹏加速引擎KAE。该加速引擎可以通过优化许多关键任务的执行效率和资源利用率,提供更快的数据处理速度和更低的能耗。同时,它还支持虚拟化技术,提供更灵活的资源分配和管理能力。鲲鹏加速引擎KAE的出现,进一步加强了华为在云计算和数据中心领域的竞争力,为企业和组织提供了强大的计算能力,帮助他们更好地应对日益增长的数据处理和应用需求。

KAE是基于鲲鹏920处理器提供的硬件加速解决方案,包含了KAE加解密和KAEzip,分别用于加速SSL/TLS应用加解密和数据压缩,可以显著降低处理器消耗,提高处理器效率。此外,KAE对应用层屏蔽了其内部实现细节,开发者通过OpenSSL、zlib标准接口即可实现快速迁移现有业务。KAE系统逻辑架构如下图所示:

KAE使能与调用流程如下:

(1)BMC子系统管理芯片加速器子系统的License,当系统初始化时,BMC将License传递给BIOS系统。

(2)BIOS子系统解析License信息,并根据解析结果对芯片加速器子系统进行使能控制,同时上报加速器ACPI(Advanced Configuration and Power Interface)表到内核。

(3)上层应用基于OpenSSL/zlib加速库调用鲲鹏加速引擎,并通过寄存器操作调用芯片加速器子系统。

各子系统详细功能描述如表2-1所示,其中芯片加速器子系统、BIOS子系统和BMC子系统为基于鲲鹏920处理器的硬件服务器自带子系统。

表2-1 子系统功能描述

子系统名称

功能描述

子系统名称

功能描述

芯片加速器子系统

集成在鲲鹏920处理器中,提供加速器的能力,对上层提供寄存器接口。该子系统是加速器的硬件实现,不直接开放给客户。

BIOS子系统

单板BIOS软件系统,主要负责根据License决定对加速器哪些模块初始化,并上报加速器ACPI表到内核(加速器驱动子系统处理)。

BMC子系统

服务器BMC软件系统,在这里主要负责对加速器License的管理。

加速器驱动子系统

本系统的核心,向上层提供各子加速器模块统一的驱动接口。

应用库子系统

应用库子系统包括基于OpenSSL加速器引擎、zlib替代库等,向上层提供标准接口。

应用系统

通过调用应用库子系统或驱动子系统实现对应用加速的功能,包括大数据应用、Web应用等,属于开发者层面系统。

如下图所示,KAE主要包含3个模块:高性能RSA加速引擎HPRE(High Performance RSA Engine)、高性能zlib/Gzlib压缩引擎ZIP和硬件安全加速引擎SEC(Security Engine),通过内核态运行,有着非常强的安全防护能力,且已经通过底层适配OpenSSL/zlib通用开源库,应用层使用简单,直接调用OpenSSL、zlib的API就可以使用。如果开发者原有的程序已经使用了OpenSSL等,那基本不用修改代码,就可以享受到KAE给软件带来的性能提升。

鲲鹏处理器内置KAE加速引擎,具备以下价值优势:

(1) 高性能:独立硬件引擎,不占用CPU资源,相比软件加密(无指令加速)和外挂密码卡,性能倍级提升。

(2)更安全:加解密引擎集成在CPU片内,明文只通过片内总线传输,数据计算时明文存在,传输存储时密文存在,数据泄露也不泄密。

(3)业务透明无感知:实现平台内部管理密钥、数据加解密,对上层业务系统透明。

1. KAE加解密

KAE加解密是鲲鹏加速引擎的加解密模块,使用鲲鹏硬件加速模块实现RSA/SM3/SM4/DH/MD5/AES算法,结合无损用户态驱动框架,提供高性能对称加解密、非对称加解密算法能力,兼容OpenSSL 1.1.1a及其之后版本,支持同步和异步机制。

目前主要支持以下算法:

(1)摘要算法SM3/MD5,支持异步模型。

(2)对称加密算法SM4,支持异步模型,支持CTR/XTS/CBC/ECB/OFB模式。

(3)对称加密算法AES,支持异步模型,支持ECB/CTR/XTS/CBC模式。

(4)非对称算法RSA,支持异步模型,支持Key Sizes 1024/2048/3072/4096。

(5)密钥协商算法DH,支持异步模型,支持Key Sizes 768/1024/1536/2048/3072/4096。

2. KAEzip

KAEzip是鲲鹏加速引擎的压缩模块,使用鲲鹏硬件加速模块实现deflate算法,结合无损用户态驱动框架,提供高性能Gzip/zlib格式压缩接口。

(1) 支持zlib/Gzip数据格式,符合RFC1950/RFC1952标准规范。

(2)支持deflate算法。

(3)支持同步模式。

(4)单处理器(鲲鹏920处理器)最大压缩带宽7GB/s,最大解压带宽8GB/s。

(5)支持的压缩比≈2,与zlib 1.2.11接口保持一致。

通过加速引擎可以实现不同场景下应用性能的提升,例如在分布式存储场景下,通过zlib加速库加速数据压缩和解压。

KAE应用场景

KAE加解密可以应用于Web场景,KAEzip可以应用于分布式存储和大数据场景,本文主要介绍KAE加解密在Web场景下的使用。

HTTPS作为Web场景一个常见通用的协议,应用十分广泛,HTTPS协议中的短连接很频繁,是Web场景的性能瓶颈;作为安全协议,其中的RSA2048是加解密的瓶颈,我们通过TaiShan 200服务器(鲲鹏处理器)中内置的鲲鹏加速引擎KAE对HTTPS传输场景中的SSL/TLS加解密算法进行卸载,从而助力HTTPS处理性能的大幅提升。其实现原理如下图所示:

该加速方案主要对HTTPS请求处理中SSL/TLS握手时的非对称加解密运算进行加速,如上图所示,加速主要通过Tengine异步调用OpenSSL的鲲鹏加速引擎Engine来实现,主要针对加密中的RSA2048算法进行硬件卸载。

目前鲲鹏加速引擎KAE对外提供了OpenSSL API和自定义API两种类型的接口,分别可以通过Nginx及客户自研软件进行应用。

(1)OpenSSL API主要是指鲲鹏加速引擎以Engine方式集成到OpenSSL中,供Nginx和客户自研软件调用。

(2) 自定义API主要是指鲲鹏加速引擎用户态Library,提供自定义API供客户自研软件调用。

鲲鹏加速引擎KAE对SSL/TLS加解密的卸载主要包括以下几个关键步骤:

(1)接收客户端请求:KAE作为服务器的一部分,首先接收从客户端发送过来的HTTPS请求。

(2)SSL/TLS握手:KAE负责与客户端进行SSL/TLS握手过程,建立安全连接。这包括验证客户端身份和生成会话密钥等操作。

(3)SSL/TLS加密/解密操作:一旦安全连接建立,KAE会使用硬件加速模块来执行SSL/TLS的加密和解密操作。这些操作通常是计算密集型的,通过硬件加速可以提高执行速度。

(4)转发明文数据:一旦数据被解密,KAE将明文数据转发给后端服务器进行进一步处理。这样,后端服务器就可以专注于处理业务逻辑,而不需要关心SSL/TLS的加解密过程。

(5)加密返回数据:当后端服务器生成响应数据后,KAE会使用硬件加速模块对数据进行加密操作,以确保数据在传输过程中的安全性。

通过SSL/TLS卸载,KAE可以将SSL/TLS加解密的计算任务转移到硬件加速模块上,减轻了后端服务器的负担,提高了系统的性能和响应速度。同时,由于硬件加速模块的优化设计,KAE可以更高效地执行加解密操作,达到更好的性能表现。

本页内容