在线乱码卡一卡二卡新HD,最近韩国免费观看视频,国产色无码精品视频国产,亚洲男人的天堂久久香蕉

世界微資訊!服務網格Istio中TLS握手性能加速CryptoMB
來源:51CTO.COM    時間:2022-07-02 05:59:03

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


(資料圖)

本文主要內容翻譯于CryptoMB - TLShandshake acceleration for Istio ??blog??

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

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

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

CryptoMB簡介

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

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

使用Intel AVX-512指令加速Envoy

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

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

Envoy <-> BoringSSL <-> PrivateKeyProvider

Envoy工作線程擁有用于8個RSA請求的緩沖區大小。當第一個RSA請求被存儲在緩沖區中時,將啟動一個計時器(計時器時持續間由CryptoMB配置中的poll_delay字段設置)。

Buffer timer started

當緩沖區已滿或計時器到期,將同時對所有RSA請求進行執行加密操作。與非加速情況相比,SIMD(單指令多數據)處理具有潛在的性能優勢。

Buffer timer expired

Envoy CryptoMB Private Key Provider配置

Envoy使用中,常規TLS配置僅使用私鑰。使用Private Key Provider時,私鑰字段Private key filed將被替換為私字段private key provider field, Private Key Provider字段包含兩個字段: 提供者名稱 “providername” 和類型配置 “typed config”。類型配置設定為CryptoMbPrivateKeyMethodConfig,這個配置參數用來指定私鑰和輪詢延遲,這個輪詢延遲就是要設置上文中提到的”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: cryptombtyped_config: "@type":type.googleapis.com/envoy.extensions.private_key_providers.cryptomb.v3alpha.CryptoMbPrivateKeyMethodConfig private_key: { "filename": "/path/key.pem" } poll_delay: 10msIstio 中CryptoMB Private Key Provider 配置

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

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

Mesh 級別: Mesh 級別是用全局Mesh 選項proxyConfig 來設置的

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

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

一個簡單的全網配置如下如:

Sample mesh wide configuration

Istio Mesh 全網配置示例:

apiVersion: install.istio.io/v1alpha1kind: IstioOperatormetadata:namespace: istio-system name:example-istiocontrolplanespec: profile:democomponents:egressGateways: -name: istio-egressgateway enabled: true ingressGateways:-name: istio-ingressgateway enabled: truemeshConfig:defaultConfig: privateKeyProvider: cryptomb: pollDelay: 10msIstio 入口網關配置

如果用戶只想配置入口網關為Private key Provider 配置,示例如下:

apiVersion: install.istio.io/v1alpha1kind: IstioOperatormetadata:namespace: istio-system name:example-istiocontrolplanespec: profile:democomponents: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 邊車代理

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

apiVersion: v1kind: ServiceAccountmetadata: name:httpbin---apiVersion: v1kind: Servicemetadata: name: httpbin labels: app:httpbin service: httpbinspec: ports: - name:http port:8000 targetPort: 80 selector: app:httpbin---apiVersion: apps/v1kind: Deploymentmetadata: name:httpbinspec:replicas: 1 selector: matchLabels: app:httpbin version: v1template: 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應用案例

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

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

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

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

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

CryptoMB加速TLS已經被Alibaba 阿里云服務網格產品ASM所采用,阿里云服務網格 ASM 結合 這個Multi-Buffer 技術,配置啟用此功能來提供 TLS 加速,使用方式如下:

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

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

3)阿里云服務網格ASM 通過判斷機器型號,確認此機型是否支持 AVX512 指令集,然后決定是否啟用此功能.

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

關鍵詞: 安全連接 加密操作 阿里巴巴 操作性能 另外一個

上一篇:

下一篇:

X 關閉

X 關閉

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>