En entornos de microservicios a gran escala, puede habilitar la función Multi-Buffer para acelerar el procesamiento de Transport Layer Security (TLS) en el proxy Envoy. Esta función gestiona de manera eficiente grandes volúmenes de solicitudes HTTPS concurrentes. Para ello, acelera el cifrado y descifrado de paquetes de datos, reduce la latencia de red y mejora tanto el rendimiento como la seguridad del sistema.
Requisitos previos
Creó una instancia de ASM Enterprise Edition o Ultimate Edition con la versión 1.10 o posterior. Para consultar las instrucciones, consulte Create an ASM instance.
-
Creó un clúster de ACK. Los nodos del clúster deben usar una familia de instancias basada en la arquitectura de CPU Intel Ice Lake, que es compatible con Multi-Buffer. Para consultar las instrucciones, consulte Create an ACK managed cluster.
Contexto
Conforme evoluciona la tecnología de seguridad de red, TLS se ha vuelto fundamental para la comunicación en red. Una sesión de TLS consta de dos fases principales: el handshake y la transferencia de datos. Durante el handshake, se utiliza cifrado asimétrico para negociar una clave de sesión compartida. Posteriormente, en la fase de transferencia de datos, el cifrado simétrico usa esta clave para proteger la información transmitida.
En una arquitectura de microservicios, Envoy actúa como gateway de entrada y como proxy sidecar, lo que implica procesar un gran volumen de solicitudes TLS. La criptografía asimétrica que requiere la fase de handshake consume muchos recursos de CPU y puede convertirse en un cuello de botella de rendimiento en despliegues a gran escala. ASM se integra con la tecnología Multi-Buffer de Intel para acelerar el procesamiento de TLS en Envoy.
La tecnología Multi-Buffer utiliza el conjunto de instrucciones AVX-512 de las CPU Intel para procesar simultáneamente varios búferes criptográficos independientes. Esto permite completar múltiples operaciones de cifrado y descifrado en un solo ciclo de ejecución, lo cual mejora significativamente la eficiencia. Esta función no requiere hardware adicional; únicamente necesita una CPU con el conjunto de instrucciones específico. Los procesadores Ice Lake de Alibaba Cloud incluyen el conjunto de instrucciones AVX-512 más reciente.
Procedimiento
Método 1: habilitación global
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, elija .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, elija .
En la página Base Information, haga clic en Settings a la derecha.
-
En el panel Settings Update, seleccione Enable MultiBuffer-based TLS encryption and decryption performance optimization y haga clic en OK.
Si utiliza nodos de la familia de instancias de uso general g7, habilitar Multi-Buffer puede aumentar las consultas por segundo (QPS) hasta en un 75 %. Si utiliza nodos de ECS Bare Metal Instance, la mejora de rendimiento es aún mayor.
Método 2: habilitación a nivel de gateway
Para un nuevo gateway de ASM
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, elija .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, elija .
-
En la página Ingress Gateway, haga clic en Create. En la sección Advanced Options de la página Create, seleccione TLS performance optimization, configure los ajustes correspondientes y luego haga clic en Create.
Para obtener más información sobre los parámetros, consulte Create an ingress gateway.
Parámetro
Descripción
supported nodeaffinity
Selecciona los nodos para la optimización de rendimiento según sus etiquetas.
Poll Delay(ms)
Por lo general, no es necesario ajustar este parámetro.
Multi-Buffer procesa varias operaciones criptográficas en lotes. Por ejemplo, si se configura para procesar un lote de ocho operaciones, espera hasta que haya ocho solicitudes en cola antes de ejecutarse. Si el volumen de solicitudes es alto, el lote se llena rápidamente. Si el volumen es bajo, la espera puede ser prolongada. Establecer un retardo de sondeo obliga a Multi-Buffer a procesar las solicitudes que ya están en cola, incluso si el lote no está completo, lo que reduce el tiempo de espera en tráfico de bajo volumen.
Para un gateway de ASM existente
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, elija .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, elija .
-
Para obtener más información sobre los parámetros, consulte Create an ingress gateway.
En la página Ingress Gateway, haga clic en el nombre del gateway de destino. En la página , busque la sección Advanced Options. Haga clic en el ícono
junto a Performance Optimization, seleccione TLS performance optimization, configure los parámetros y luego haga clic en Submit.Parámetro
Descripción
supported nodeaffinity
Selecciona los nodos para la optimización de rendimiento según sus etiquetas.
Poll Delay(ms)
Por lo general, no es necesario ajustar este parámetro.
Multi-Buffer procesa varias operaciones criptográficas en lotes. Por ejemplo, si se configura para procesar un lote de ocho operaciones, espera hasta que haya ocho solicitudes en cola antes de ejecutarse. Si el volumen de solicitudes es alto, el lote se llena rápidamente. Si el volumen es bajo, la espera puede ser prolongada. Establecer un retardo de sondeo obliga a Multi-Buffer a procesar las solicitudes que ya están en cola, incluso si el lote no está completo, lo que reduce el tiempo de espera en tráfico de bajo volumen.
Método 3: habilitación a nivel de pod
Este método requiere la versión 1.14.3 o posterior de ASM. Para actualizar su instancia, consulte Upgrade an ASM instance.
Asegúrese de que el pod esté programado en un nodo compatible con Multi-Buffer.
-
Agregue una anotación específica al pod.
A continuación se muestra un ejemplo de anotación:
proxy.istio.io/config: | privateKeyProvider: cryptomb: pollDelay: 10ms Reinicie el pod para aplicar los cambios.
Preguntas frecuentes
¿Qué sucede si se habilita Multi-Buffer en nodos no compatibles?
El proxy Envoy registra una advertencia y la función Multi-Buffer no surte efecto.
2021-11-09T15:24:03.269127Z info sds service generate, Multibuffer enable: true
2021-11-09T15:24:03.269158Z info cache returned workload trust anchor from cache ttl=23h59m59.730845791s
2021-11-09T15:24:03.269177Z info proxyConfig: config_path:"/etc/istio/proxy" binary_path:"/usr/local/bin/envoy" service_cluster:"istio-ingressgateway" drain_duration:<seconds:45 > parent_shutdown_duration:<seconds:60 > discovery_address:"istiod.istio-system.svc:15012" proxy_admin_port:15000 control_plane_auth_policy:MUTUAL_TLS stat_name_length:189 concurrency:<> tracing:<zipkin:<address:"zipkin.istio-system:9411" > > proxy_metadata:<key:"DNS_AGENT" value:"" > status_port:15020 termination_drain_duration:<seconds:5 > multi_buffer:<enabled:true poll_delay:<nanos:20000000 > >
2021-11-09T15:24:03.269185Z info sds service generate, Multibuffer enable: true
2021-11-09T15:24:03.269211Z info cache returned workload certificate from cache ttl=23h59m59.730792927s
2021-11-09T15:24:03.269223Z info pollDelay config: 20ms
2021-11-09T15:24:03.269456Z info sds SDS: PUSH resource=ROOTCA
2021-11-09T15:24:03.269589Z info sds SDS: PUSH resource=default
2021-11-09T15:24:03.270330Z warning envoy config gRPC config for type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret rejected: Multi-buffer CPU instructions not available.
2021-11-09T15:24:03.271696Z warn ads ADS:SDS: ACK ERROR router~172.18.96.137~istio-ingressgateway1-d7447cb55-khr8s.istio-system~istio-system.svc.cluster.local-2 Internal:Multi-buffer CPU instructions not available.
2021-11-09T15:24:04.309379Z info Initialization took 1.267025329s
2021-11-09T15:24:04.309416Z info Envoy proxy is ready
2021-11-09T15:24:04.458149Z warning envoy config gRPC config for type.googleapis.com/envoy.config.cluster.v3.Cluster rejected: Error adding/updating cluster(s) outbound|15021||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available., outbound|80||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available., outbound|443||istio-ingressgateway1.istio-system.svc.cluster.local: Multi-buffer CPU instructions not available.
Las instancias de ASM Enterprise Edition y Ultimate Edition con la versión 1.10 o posterior incluyen una comprobación adaptativa para esta función. Si un pod de servicio o de gateway se programa en un nodo que no pertenece a la familia Intel Ice Lake, el plano de control no envía la configuración de aceleración y la aceleración de TLS permanece deshabilitada para ese pod.
¿Cómo se agrega y habilita Multi-Buffer en un nodo?
Agregue un nuevo nodo a su clúster de Kubernetes. El nodo debe usar una instancia de una familia basada en la arquitectura de CPU Intel Ice Lake. Para consultar las instrucciones, consulte Add existing nodes.
Establezca la etiqueta
multibuffer-support:trueen el nodo recién agregado. Para obtener más información, consulte Manage node labels and taints.-
Agregue la siguiente configuración YAML a la definición de su gateway de ASM. Para consultar las instrucciones, consulte CRD fields for an ASM gateway.
Esto añade afinidad de nodos para garantizar que la instancia del gateway se programe en un nodo recién agregado y compatible con Multi-Buffer.
affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: feature.node.kubernetes.io/mb-feature-enabled operator: In values: - 'true' weight: 1 -
Habilite la función Multi-Buffer en su instancia de ASM Enterprise Edition o Ultimate Edition. Para consultar las instrucciones, consulte procedures described earlier in this topic.
Una vez habilitada la función, el nuevo nodo podrá utilizar Multi-Buffer para acelerar el procesamiento de TLS.
Documentos relacionados
ASM ofrece funciones como la delimitación del alcance del descubrimiento de servicios, las recomendaciones de recursos para sidecars y la optimización adaptativa del envío de configuraciones. Estas funciones optimizan la eficiencia con la que el plano de control envía configuraciones y reducen el tamaño de la configuración de los sidecars. Para obtener más información, consulte Configuration push optimization overview.