偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

服務(wù)網(wǎng)格Istio中TLS握手性能加速CryptoMB

網(wǎng)絡(luò)
在阿里云服務(wù)網(wǎng)格 ASM 產(chǎn)品中,目前提供了全局配置,并正在逐步支持多級別配置。

作者:楊愛林, Intel 工程師 (Cloud Orchestration Engineer)

本文主要內(nèi)容翻譯于CryptoMB - TLShandshake acceleration for Istio ??blog??

在服務(wù)網(wǎng)格Istio中,在入口網(wǎng)關(guān),微服務(wù)與微服務(wù)之間的通信用到了大量的 mTLS(Mutual Transport Layer Security)身份認(rèn)證,而在處理mTLS時需要用到大量計算資源,使得mTLS處理過程可能變成一個性能瓶頸,本文就服務(wù)網(wǎng)格入口網(wǎng)關(guān)和邊車sidecar代理中,如何使用CryptoMB Private Key Provider 配置來加速TLS(Transport Layer Security)握手。

當(dāng)涉及mTLS, TLS安全連接協(xié)議時,加解密操作是其計算最密集和最關(guān)鍵的操作之一。服務(wù)網(wǎng)格Istio中使用代理程序Envoy作為“網(wǎng)關(guān)/邊車”,來處理安全連接并截獲網(wǎng)絡(luò)流量。

根據(jù)使用場景,當(dāng)入口網(wǎng)關(guān)必須處理大量TLS連接請求,以及通過邊車代理模式來處理服務(wù)之間的安全連接時,Envoy代理負(fù)載會增加,性能會下降。當(dāng)然性能下降取決于諸多因素,例如運行Envoy代理的cpuset的大小、傳入的流量模式和密鑰大小。這些因素必定會影響到Envoy代理對新的TLS請求的相應(yīng)時間。為了提高和加速握手性能,在Envoy 1.20和Istio 1.14中引入了一個新功能實現(xiàn)TLS加速。它可以通過利用第三代Intel?至強(qiáng)?可擴(kuò)展處理器指令A(yù)VX512、Intel? Integrated Performance Primitives(Intel?IPP)加密庫、Envoy中的CryptoMB Private Key Provider以及Istio中使用ProxyConfig配置來實現(xiàn)。

CryptoMB簡介

Intel?IPP加密庫Crypto library (https://github.com/intel/ipp-crypto/tree/develop/sources/ippcp/crypto_mb)支持多緩沖區(qū)加密操作。簡單地說,多緩沖區(qū)加密是指使用SIMD(單指令多數(shù)據(jù))機(jī)制,通過Intel? Advanced Vector Extensions 512(Intel?AVX-512)指令實現(xiàn)的。多達(dá)八個RSA或ECDSA操作被收集到一個緩沖區(qū)中,同時進(jìn)行處理,從而極大的提高加密操作性能。近年來Intel推出的第三代 Intel?至強(qiáng)?可擴(kuò)展處理器(Ice Lake服務(wù)器)支持 Intel?AVX-512 指令及其擴(kuò)展指令,比如AVX512 IFMA,AVX512VAES.

Envoy中實現(xiàn)CryptoMB Privatekey provider 的想法是在TLS握手時使用 Intel?AVX-512多緩沖區(qū)指令來加速RSA操作。

使用Intel AVX-512指令加速Envoy

Envoy使用BoringSSL作為默認(rèn)TLS協(xié)議庫。BoringSSL通過支持設(shè)置私鑰的方法來達(dá)到卸載異步私鑰操作,為此Envoy實現(xiàn)了一個私鑰提供程序框架Private Key Provider,以允許創(chuàng)建Envoy擴(kuò)展,該擴(kuò)展使用BoringSSL掛鉤(Hooks)處理TLS握手私鑰操作(簽名和解密)。

CryptoMB私鑰提供程序是一個Envoy擴(kuò)展 Private Key Provider 的具體實現(xiàn),它使用 Intel?AVX-512多緩沖區(qū)加速技術(shù)來處理BoringSSL中涉及 TLS RSA的操作。當(dāng)發(fā)生新的握手時,BoringSSL調(diào)用私鑰提供者請求加密操作,然后把控制返回給Envoy, RSA請求收集在緩沖區(qū)中。當(dāng)緩沖區(qū)已滿或計時器過期時,私鑰提供程序?qū)⒄{(diào)用英特爾AVX-512處理緩沖區(qū)。處理完成后,將通知Envoy 加解密操作已完成,并且可以繼續(xù)握手。下圖為實現(xiàn)TLS加速的過程調(diào)用:

      

Envoy <-> BoringSSL <-> PrivateKeyProvider

Envoy工作線程擁有用于8個RSA請求的緩沖區(qū)大小。當(dāng)?shù)谝粋€RSA請求被存儲在緩沖區(qū)中時,將啟動一個計時器(計時器時持續(xù)間由CryptoMB配置中的poll_delay字段設(shè)置)。

                   

Buffer timer started


當(dāng)緩沖區(qū)已滿或計時器到期,將同時對所有RSA請求進(jìn)行執(zhí)行加密操作。與非加速情況相比,SIMD(單指令多數(shù)據(jù))處理具有潛在的性能優(yōu)勢。


Buffer timer expired

Envoy CryptoMB Private Key Provider配置

Envoy使用中,常規(guī)TLS配置僅使用私鑰。使用Private Key Provider時,私鑰字段Private key filed將被替換為私字段private key provider field, Private Key Provider字段包含兩個字段: 提供者名稱 “providername” 和類型配置 “typed config”。類型配置設(shè)定為CryptoMbPrivateKeyMethodConfig,這個配置參數(shù)用來指定私鑰和輪詢延遲,這個輪詢延遲就是要設(shè)置上文中提到的”poll_delay”. 具體的TLS配置請看如下:

僅使用私鑰的TLS配置情況(這種情況下沒有開啟multi-buffer加速能力)

tls_certificates:
certificate_chain: { "filename":
"/path/cert.pem" }
private_key: { "filename": "/path/key.pem" }

使用CryptoMB private key provider的TLS配置情況(開啟multi-buffer加速能力)

tls_certificates:
certificate_chain: { "filename": "/path/cert.pem" }
private_key_provider:
provider_name: cryptomb
typed_config:
"@type":
type.googleapis.com/envoy.extensions.private_key_providers.cryptomb.v3alpha.CryptoMbPrivateKeyMethodConfig
private_key: { "filename": "/path/key.pem" }

poll_delay: 10ms

 Istio 中CryptoMB Private Key Provider 配置

在Istio中, Sidecar代理配置包括幾種類型:

Pod 級別: Pod 級別的配置是通過資源批注 pod annotations來設(shè)置的

Mesh 級別: Mesh 級別是用全局Mesh 選項proxyConfig 來設(shè)置的

EnvoyFilter: 提供一種機(jī)制來自定義Istio Pilot生成的Envoy配置

CryptoMB Private Key Provider 配置可以使用pod注釋 pod annotations應(yīng)用于整個網(wǎng)格、特定網(wǎng)關(guān)或特定pod的配置。用戶也可以通過ProxyConfig為PrivateKeyProvider設(shè)置”poll_delay“值, 此配置也可以應(yīng)用于全網(wǎng), 即入口網(wǎng)關(guān)和所有邊車代理sidecar。

一個簡單的全網(wǎng)配置如下如:

                  

Sample mesh wide configuration

Istio Mesh 全網(wǎng)配置示例:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
namespace: istio-system
name:
example-istiocontrolplane
spec:
profile:
demo
components:
egressGateways: -
name: istio-egressgateway
enabled: true
ingressGateways:
-
name: istio-ingressgateway
enabled: true
meshConfig:
defaultConfig:
privateKeyProvider:
cryptomb:
pollDelay: 10ms

Istio 入口網(wǎng)關(guān)配置

如果用戶只想配置入口網(wǎng)關(guān)為Private key Provider 配置,示例如下:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
namespace: istio-system
name:
example-istiocontrolplane
spec:
profile:
demo
components:
egressGateways:
-
name: istio-egressgateway
enabled: true
ingressGateways:
-
name: istio-ingressgateway
enabled: true
k8s:
podAnnotations:
proxy.istio.io/config: |
privateKeyProvider:
cryptomb:
pollDelay: 10ms

使用pod annotations來配置Istio 邊車代理

如果用戶只想配置具體的應(yīng)用Pods為private key provider 配置,那么最簡單的方法就是使用pod annotations, 示例如下:

apiVersion: v1
kind: ServiceAccount
metadata:
name:
httpbin
---
apiVersion: v1
kind: Service
metadata:
name: httpbin
labels:
app:
httpbin

service: httpbin
spec:
ports:
- name:
http
port:
8000

targetPort: 80

selector:
app:
httpbin
---
apiVersion: apps/v1
kind: Deployment
metadata:
name:
httpbin
spec:
replicas: 1
selector:
matchLabels:
app:
httpbin
version: v1
template:

metadata:

labels:

app: httpbin

version: v1

annotations:

proxy.istio.io/config: |

privateKeyProvider:

cryptomb:

pollDelay: 10ms
spec:

serviceAccountName: httpbin

containers:
-
image: docker.io/kennethreitz/httpbin

imagePullPolicy: IfNotPresent

name: httpbin

ports:
-
containerPort: 80

 應(yīng)用案例

從2021年9月開始,CryptoMB代碼已經(jīng)集成到Envoy社區(qū)主線中,詳情請閱讀官方文檔Envoy 1.23.0

api-v3  擴(kuò)展模塊??CryptoMb private key provider??,如果你正在使用Istio 1.13,Istio 1.14版本或者后續(xù)版本,它已經(jīng)包括相應(yīng)版本的Envoy,比如Envoy 1.22, 其中缺省已經(jīng)包含了CryptoMB,而無需自己編譯, 這個基于CryptoMB加密/解密的加速能力可以適用于入口網(wǎng)關(guān)

istio-ingress-gateway ,也可以適用于微服務(wù)代理istio-proxy sidecar 容器。在使用前檢查你的系統(tǒng)是否第三代 Intel?至強(qiáng)?可擴(kuò)展處理 (代號Ice Lake) ,這個處理器支持

AVX512 擴(kuò)展指令,多緩存指令. 并且這個加速能力包括:

  • AVX-512 crypto acceleration for TLS connections
  • AVX-512 vector AES for symmetric data encryption

CryptoMB加速TLS已經(jīng)被Alibaba 阿里云服務(wù)網(wǎng)格產(chǎn)品ASM所采用,阿里云服務(wù)網(wǎng)格 ASM 結(jié)合 這個Multi-Buffer 技術(shù),配置啟用此功能來提供 TLS 加速,使用方式如下:

1)在未啟用 Multi-Buffer 時, TLS 的配置只需要包含一個 private key。而一旦啟用了 Multi-Buffer, TLS 的配置里就需要提供一個 private key provider, 也就是上文中提到的cryptoMB private key provider,provider 處理的消息為 CryptoMbPrivateKeyMethodConfig 類型, 包括了 2 個主要的字段, 一個是使用到的 private key, 另外一個是用來設(shè)置每個線程處理隊列應(yīng)當(dāng)被執(zhí)行的等待時間pool_delay, 用來控制延遲和吞吐量之間的平衡;

2)控制面的配置可以通過 xDS 協(xié)議下發(fā)到數(shù)據(jù)面 Envoy 代理中。結(jié)合 Intel?IPP 加密庫和 CryptoMB private key provider,使用 AVX512 指令集,服務(wù)網(wǎng)格實現(xiàn)可以卸載 TLS 握手,以處理更多連接,降低延遲并節(jié)省 CPU.

3)阿里云服務(wù)網(wǎng)格ASM 通過判斷機(jī)器型號,確認(rèn)此機(jī)型是否支持 AVX512 指令集,然后決定是否啟用此功能.

在阿里云服務(wù)網(wǎng)格 ASM 產(chǎn)品中,目前提供了全局配置,并正在逐步支持多級別配置。在阿里云的 G7 類型的機(jī)器上了進(jìn)行測試,啟用 multi-Buffer 后,對ASM產(chǎn)品進(jìn)行TLS 性能測試,請求
QPS 數(shù)目提升了 75%(此數(shù)據(jù)為公開數(shù)據(jù),來源于阿里巴巴服務(wù)網(wǎng)格產(chǎn)品
??介紹??


責(zé)任編輯:張燕妮
相關(guān)推薦

2022-11-24 14:21:27

微服務(wù)ISTIO

2024-09-27 10:05:02

2023-11-01 08:08:22

k8s服務(wù)網(wǎng)格

2020-11-04 08:00:57

虛擬機(jī)stio網(wǎng)格

2023-05-08 07:05:26

2023-06-18 19:21:04

技術(shù)架構(gòu)服務(wù)網(wǎng)格

2020-11-15 23:48:57

服務(wù)網(wǎng)格微服務(wù)網(wǎng)絡(luò)網(wǎng)絡(luò)技術(shù)

2019-08-29 08:00:00

微服務(wù)架構(gòu)服務(wù)網(wǎng)格

2021-11-08 10:17:48

gRPC Istio網(wǎng)格

2020-01-07 09:25:02

服務(wù)網(wǎng)格微服務(wù)Kubernetes

2022-08-09 08:00:00

服務(wù)網(wǎng)格云原生工具

2022-05-16 08:00:00

服務(wù)網(wǎng)格架構(gòu)Kuma

2018-08-28 18:11:40

華為云

2020-07-13 07:00:03

微服務(wù)服務(wù)網(wǎng)格架構(gòu)

2021-04-02 22:00:50

服務(wù)網(wǎng)格微服務(wù)

2021-04-25 08:48:36

Traefik mes服務(wù)網(wǎng)格Kubernetes集

2020-10-21 13:31:53

服務(wù)網(wǎng)格開源微服務(wù)

2020-08-26 05:45:40

服務(wù)網(wǎng)格DevOps開發(fā)

2021-08-27 11:42:51

Nacos云原生阿里云
點贊
收藏

51CTO技術(shù)棧公眾號