PERF05-BP05 Elegir los protocolos de red para mejorar el rendimiento - AWS Well-Architected Framework

PERF05-BP05 Elegir los protocolos de red para mejorar el rendimiento

Evalúe los requisitos de rendimiento de su carga de trabajo y elija los protocolos de red que optimicen el rendimiento global de su carga de trabajo.

Existe una relación entre la latencia y el ancho de banda para lograr el rendimiento. Por ejemplo, si su transferencia de archivos utiliza el protocolo de control de transmisión (TCP), las latencias más altas reducirán el rendimiento general. Existen enfoques para solucionar esto con el ajuste de TCP y protocolos de transferencia optimizados (algunos métodos utilizan el protocolo de datagramas de usuario (UDP).

El protocoloScalable Reliable Datagram (SRD) es un protocolo de transporte de red creado por AWS para Elastic Fabric Adapters que proporciona una entrega de datagramas fiable. A diferencia del protocolo TCP, SRD puede reordenar paquetes y entregarlos fuera de orden. Este mecanismo de entrega fuera de orden de SRD envía paquetes en paralelo por rutas alternativas, lo que aumenta el rendimiento.

Antipatrones usuales:

  • Utiliza TCP para todas las cargas de trabajo, independientemente de los requisitos de rendimiento.

Beneficios de establecer esta práctica recomendada:

  • La selección del protocolo adecuado para la comunicación entre los componentes de la carga de trabajo le garantiza el mejor rendimiento para esa carga.

  • Verificar que se utiliza un protocolo adecuado para la comunicación entre los usuarios y los componentes de la carga de trabajo ayuda a mejorar la experiencia general del usuario para sus aplicaciones. Por ejemplo, mediante el uso conjunto de TCP y UDP, las cargas de trabajo de VDI pueden aprovechar la fiabilidad de TCP para datos cruciales y la velocidad de UDP para datos en tiempo real.

Nivel de riesgo expuesto si no se establece esta práctica recomendada: medio (El uso de un protocolo de red inadecuado puede dar lugar a un rendimiento deficiente, como tiempos de respuesta lentos, alta latencia y escasa escalabilidad)

Guía para la implementación

Una consideración primordial para mejorar el rendimiento de la carga de trabajo es comprender los requisitos de latencia y rendimiento, y luego elegir protocolos de red que optimicen el rendimiento.

Cuándo considerar el uso de TCP

TCP proporciona una entrega de datos fiable, y se puede utilizar para la comunicación entre los componentes de la carga de trabajo cuando la fiabilidad y la entrega garantizada de datos es importante. Muchas aplicaciones basadas en web dependen de protocolos basados en TCP, como HTTP y HTTPS, con el fin de abrir sockets TCP para la comunicación con servidores en AWS. El correo electrónico y la transferencia de datos de archivos son aplicaciones habituales que también hacen uso de TCP debido a la capacidad de TCP de controlar la velocidad del intercambio de datos y la congestión de la red. El uso de TLS con TCP puede añadir cierta sobrecarga a la comunicación, lo que puede provocar un aumento de la latencia y una reducción del rendimiento. La sobrecarga proviene principalmente de la sobrecarga añadida del proceso de establecimiento de comunicación, que puede tardar varias idas y vueltas en completarse. Una vez completado el proceso, la sobrecarga de cifrado y descifrado de datos es relativamente pequeña.

Cuándo considerar el uso de UDP

UDP es un protocolo sin conexión y, por tanto, adecuado para aplicaciones que necesitan una transmisión rápida y eficiente, como datos de registro, supervisión y VoIP. Además, considere el uso de UDP si tiene componentes de carga de trabajo que responden a pequeñas consultas de un gran número de clientes, a fin de garantizar un rendimiento óptimo de la carga de trabajo. El protocolo de seguridad de la capa de transporte (DTLS) es el equivalente UDP de TLS. Cuando se utiliza DTLS con UDP, la sobrecarga proviene del cifrado y descifrado de los datos, ya que el proceso de establecimiento de comunicación se simplifica. DTLS también añade una pequeña cantidad de sobrecarga a los paquetes UDP, ya que incluye campos adicionales para indicar los parámetros de seguridad y detectar manipulaciones.

Cuándo considerar el uso de SRD

Scalable reliable datagram (SRD) es un protocolo de transporte de red optimizado para cargas de trabajo de alto rendimiento debido a su capacidad para equilibrar la carga de tráfico a través de numerosas rutas y recuperarse rápidamente de las caídas de paquetes o errores de enlace. Por lo tanto, es mejor utilizar SRD para cargas de trabajo de computación de alto rendimiento (HPC) que exigen un alto rendimiento y una comunicación de baja latencia entre nodos de computación. Esto incluye tareas de procesamiento paralelo como simulación, modelado y análisis de datos que impliquen una gran cantidad de transferencia de datos entre nodos.

Pasos para la implementación

  1. Utilice los servicios AWS Global Accelerator y AWS Transfer Family para mejorar el rendimiento de sus aplicaciones de transferencia de archivos en línea. El servicio AWS Global Accelerator le ayuda a conseguir una latencia menor entre sus dispositivos cliente y su carga de trabajo en AWS. Con AWS Transfer Family, puede utilizar protocolos basados en TCP como el protocolo de transferencia de archivos de shell seguro (SFTP) y el protocolo de transferencia de archivos sobre SSL (FTPS) para escalar y administrar de forma segura las transferencias de archivos a los servicios de almacenamiento de AWS.

  2. Utilice la latencia de la red para determinar si TCP es adecuado para la comunicación entre los componentes de la carga de trabajo. Si la latencia de la red entre la aplicación cliente y el servidor es alta, la comunicación TCP de tres vías puede tardar un tiempo, lo que afectará a la capacidad de respuesta de la aplicación. Para medir la latencia de la red pueden utilizarse métricas, como el tiempo hasta el primer byte (TTFB) y el tiempo de ida y vuelta (RTT). Si su carga de trabajo sirve contenido dinámico a los usuarios, considere el uso de Amazon CloudFront, que establece una conexión persistente con cada origen para el contenido dinámico para eliminar el tiempo de configuración de la conexión que, de otro modo, ralentizaría cada solicitud del cliente.

  3. El uso de TLS con TCP o UDP puede aumentar la latencia y reducir el rendimiento de la carga de trabajo debido al impacto del cifrado y el descifrado. Para este tipo de cargas de trabajo, considere la posibilidad de descargar SSL/TLS en Elastic Load Balancing para mejorar el rendimiento de la carga de trabajo al permitir que el equilibrador de carga gestione el proceso de cifrado y descifrado SSL/TLS, en lugar de que lo hagan las instancias de backend. Esto puede ayudar a reducir la utilización de la CPU en las instancias backend, lo que puede mejorar el rendimiento y aumentar la capacidad.

  4. Utilice el Network Load Balancer (NLB) para desplegar servicios que dependan del protocolo UDP, como autenticación y autorización, registro, DNS, IoT y streaming multimedia, para mejorar el rendimiento y la fiabilidad de su carga de trabajo. El NLB distribuye el tráfico UDP entrante entre varios destinos, lo que le permite escalar su carga de trabajo horizontalmente, aumentar la capacidad y reducir la sobrecarga de un único destino.

  5. Para las cargas de trabajo de computación de alto rendimiento (HPC), considere el uso de la funcionalidad Elastic Network Adapter (ENA) Express, que utiliza el protocolo SRD para mejorar el rendimiento de la red al proporcionar un mayor ancho de banda de flujo único (25 Gbps) y una menor latencia de cola (percentil 99,9) para el tráfico de red entre instancias EC2.

  6. Utilice el Application Load Balancer (ALB) para enrutar y equilibrar la carga del tráfico gRPC (llamadas a procedimientos remotos) entre componentes de carga de trabajo o entre clientes y servicios habilitados para gRPC. gRPC utiliza el protocolo HTTP/2 basado en TCP para el transporte y proporciona ventajas de rendimiento como una huella de red más ligera, compresión, serialización binaria eficiente, compatibilidad con numerosos idiomas y streaming bidireccional.

Recursos

Documentos relacionados:

Vídeos relacionados:

Ejemplos relacionados: