自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

作者:楊?lèi)?ài)林, 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時(shí)需要用到大量計(jì)算資源,使得mTLS處理過(guò)程可能變成一個(gè)性能瓶頸,本文就服務(wù)網(wǎng)格入口網(wǎng)關(guān)和邊車(chē)sidecar代理中,如何使用CryptoMB Private Key Provider 配置來(lái)加速TLS(Transport Layer Security)握手。

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

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

CryptoMB簡(jiǎn)介

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

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

使用Intel AVX-512指令加速Envoy

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

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

      

Envoy <-> BoringSSL <-> PrivateKeyProvider

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

                   

Buffer timer started


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


Buffer timer expired

Envoy CryptoMB Private Key Provider配置

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

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

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

使用CryptoMB private key provider的TLS配置情況(開(kāi)啟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代理配置包括幾種類(lèi)型:

Pod 級(jí)別: Pod 級(jí)別的配置是通過(guò)資源批注 pod annotations來(lái)設(shè)置的

Mesh 級(jí)別: Mesh 級(jí)別是用全局Mesh 選項(xiàng)proxyConfig 來(lái)設(shè)置的

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

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

一個(gè)簡(jiǎn)單的全網(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)配置

如果用戶(hù)只想配置入口網(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來(lái)配置Istio 邊車(chē)代理

如果用戶(hù)只想配置具體的應(yīng)用Pods為private key provider 配置,那么最簡(jiǎn)單的方法就是使用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月開(kāi)始,CryptoMB代碼已經(jīng)集成到Envoy社區(qū)主線(xiàn)中,詳情請(qǐng)閱讀官方文檔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,而無(wú)需自己編譯, 這個(gè)基于CryptoMB加密/解密的加速能力可以適用于入口網(wǎng)關(guān)

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

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

  • 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é)合 這個(gè)Multi-Buffer 技術(shù),配置啟用此功能來(lái)提供 TLS 加速,使用方式如下:

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

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

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

在阿里云服務(wù)網(wǎng)格 ASM 產(chǎn)品中,目前提供了全局配置,并正在逐步支持多級(jí)別配置。在阿里云的 G7 類(lèi)型的機(jī)器上了進(jìn)行測(cè)試,啟用 multi-Buffer 后,對(duì)ASM產(chǎn)品進(jìn)行TLS 性能測(cè)試,請(qǐng)求
QPS 數(shù)目提升了 75%(此數(shù)據(jù)為公開(kāi)數(shù)據(jù),來(lái)源于阿里巴巴服務(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)格

2022-05-16 08:00:00

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

2020-01-07 09:25:02

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

2022-08-09 08:00:00

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

2018-08-28 18:11:40

華為云

2020-07-13 07:00:03

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

2020-08-26 05:45:40

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

2021-08-27 11:42:51

Nacos云原生阿里云

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)格開(kāi)源微服務(wù)

2020-10-10 10:37:54

微服務(wù)架構(gòu)技術(shù)API
點(diǎn)贊
收藏

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