¿Cómo soluciono los problemas de rendimiento de red entre las instancias de EC2 de Linux o Windows en una VPC y un host local a través de la puerta de enlace de Internet?

13 minutos de lectura
0

Existen problemas de pérdida de paquetes o latencia entre mis instancias de Amazon Elastic Compute Cloud (Amazon EC2) y el host local a través de la puerta de enlace de Internet. ¿Cómo puedo solucionar estos problemas relacionados con el rendimiento de la red?

Descripción breve

Para diagnosticar problemas de red, como la pérdida de paquetes o la latencia, primero pruebe la red para aislar el origen del problema. La siguiente resolución puede ayudar a determinar si el origen del problema es una red o una aplicación. Se recomienda comparar los resultados de rendimiento para poder compararlos cuando observe los problemas de rendimiento.

Antes de iniciar la solución de problemas, compruebe lo siguiente:

  • Asegúrese de que las utilidades de red estén instaladas en ambos puntos de conexión (en la instancia EC2 y en el host local).
  • Utilice una instancia EC2 que admita redes mejoradas y asegúrese de que los controladores estén actualizados. Las redes mejoradas proporcionan una mayor E/S con un bajo uso de la CPU, lo que ayuda a evitar problemas a nivel de instancia al ejecutar pruebas de rendimiento. Si las redes mejoradas no están activadas, consulte Redes mejoradas en Linux o Redes mejoradas en Windows.
  • Conéctese a su instancia de EC2 para acceder a las instancias y asegúrese de que haya conectividad de extremo a extremo entre su instancia de EC2 y su host local.

Resolución

Instale las siguientes herramientas para ayudar a solucionar problemas y probar la red:

  • AWSSupport-SetupIPMonitoringFromVPC recopila métricas de la red, como la pérdida de paquetes, la latencia, el MTR, el tcptraceroute y el tracepath.
  • MTR para comprobar si hay problemas de latencia y pérdida de paquetes ICMP o TCP.
  • Traceroute para determinar problemas de latencia o enrutamiento.
  • Hping3 para determinar los problemas de latencia y pérdida de paquetes TCP de extremo a extremo.
  • Tcpdump para analizar muestras de captura de paquetes.

Revise los saltos en los informes de traceroute o MTR utilizando un enfoque de abajo hacia arriba. Por ejemplo, compruebe si hay pérdidas en el último salto o destino y, a continuación, revise los siguientes saltos. Si los problemas de pérdida de paquetes o latencia continúan durante el último salto, es posible que haya un problema de red o de enrutamiento. La pérdida de paquetes o la latencia en un salto de la ruta pueden producirse si hay un problema con la limitación de velocidad del plano de control en ese nodo. Compruebe si el último salto registrado es el destino indicado en el comando. Si no es así, es posible que haya un problema causado por un grupo de seguridad restrictivo.

Pruebe el rendimiento mediante AWSSupport-SetupIpMonitoringFromVPC

Esta herramienta integrada recopila muchas de las métricas que necesita para solucionar problemas de su red. Para obtener más información, consulte la herramienta de depuración para la conectividad de red de Amazon VPC.

Solución de problemas de rendimiento para instancias de Linux

Consulte las estadísticas de rendimiento de Linux

Si tiene acceso a la instancia de origen o de destino, compruebe si hay problemas con la CPU, el uso de la memoria y el promedio de carga.

Pruebe el rendimiento mediante MTR

El comando MTR de Linux proporciona una salida continua y actualizada. Este resultado le permite analizar el rendimiento de la red. Esta herramienta de diagnóstico combina la funcionalidad de las utilidades traceroute y ping. La mayoría de las distribuciones de Linux vienen con traceroute y MTR preinstalados. También puede descargarlo desde el administrador de paquetes de software de su distribución.

Para instalar MTR, ejecute los siguientes comandos:

Amazon Linux:

sudo yum install mtr

Ubuntu:

sudo apt-get install mtr-tiny

Para probar el rendimiento de la red mediante MTR, ejecute esta prueba de forma bidireccional entre la dirección IP pública de sus instancias de EC2 y su host local. La ruta entre los nodos de una red TCP/IP puede cambiar si se invierte la dirección. Por lo tanto, es importante obtener los resultados de MTR en ambas direcciones. Puede utilizar un rastreo basado en TCP en lugar de ICMP, ya que la mayoría de los dispositivos de Internet no priorizan las solicitudes de rastreo basadas en ICMP.

Revise la pérdida de paquetes. La pérdida de paquetes en un solo salto no suele indicar un problema. La pérdida puede deberse a una política del plano de control que hace que se eliminen los mensajes de «tiempo de ICMP excedido». Si observa una pérdida sostenida de paquetes hasta el salto de destino o una pérdida de paquetes durante varios saltos, esta pérdida podría indicar un problema.

Nota: Es habitual que se agote el tiempo de espera de algunas solicitudes.

MTR basado en ICMP:

mtr -n -c 200 <Public IP EC2 instance/on-premises host> --report

MTR basado en TCP:

mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> --report

El argumento -T realiza un MTR basado en TCP y la opción --report pone el MTR en modo informe. El MTR se ejecuta durante el número de ciclos especificado por la opción -c. Imprima las estadísticas y, a continuación, salga.

Nota: El MTR basado en TCP prueba el puerto TCP de destino 80, para probar un puerto TCP de destino específico, al que se añade -P, seguido del número de puerto. El siguiente es un ejemplo del puerto TCP de destino MTR 443:

mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> -P 443 --report

Pruebe el rendimiento con traceroute

La utilidad traceroute de Linux identifica la ruta que se toma desde un nodo de cliente hasta el nodo de destino. La utilidad registra el tiempo en milisegundos que tarda cada router en responder a la solicitud. La utilidad también calcula la cantidad de tiempo que tarda cada salto antes de llegar a su destino.

Para instalar traceroute, ejecute los siguientes comandos:

Amazon Linux:

sudo yum install traceroute

Ubuntu:

sudo apt-get update
sudo apt-get install traceroute

Nota: Traceroute no es necesario si ejecuta un informe de MTR. El MTR proporciona estadísticas de latencia y pérdida de paquetes a un destino.

Asegúrese de que el puerto 22 o el puerto que está probando estén abiertos en ambas direcciones. Para solucionar problemas de conectividad de red mediante traceroute, ejecute el comando del cliente al servidor y del servidor al cliente. La ruta entre los nodos de una red TCP/IP puede cambiar si se invierte la dirección. Utilice un rastreo basado en TCP en lugar de ICMP (el puerto de su aplicación), ya que la mayoría de los dispositivos de Internet no priorizan las solicitudes de rastreo basadas en ICMP.

Ruta de rastreo basada en ICMP:

sudo traceroute -I <Public IP of EC2 instance/on-premises host>

Ruta de rastreo basada en TCP:

sudo traceroute -n -T -p 22 <Public IP of EC2 instance/on-premises host>

El argumento -T -p 22 -n realiza un rastreo basado en TCP en el puerto 22.

Nota: Puede utilizar el puerto específico de su aplicación para realizar pruebas. Utilice el puerto específico para saber si hay algún dispositivo intermedio en la ruta que esté bloqueando el tráfico de su aplicación.

Pruebe el rendimiento con hping3

Hping3 es un ensamblador y analizador de paquetes TCP/IP orientado a la línea de comandos que mide la pérdida de paquetes de extremo a extremo y la latencia a través de una conexión TCP. Además de las solicitudes de eco de ICMP, hping3 admite los protocolos TCP, UDP y RAW-IP. Hping3 también incluye un modo de traceroute que puede enviar archivos entre un canal cubierto. Hping3 está diseñado para escanear servidores, ayudar con las pruebas de penetración, probar los sistemas de detección de intrusos y enviar archivos entre servidores.

Los MTR y traceroute capturan la latencia por salto. Sin embargo, hping3 arroja resultados que muestran una latencia mínima/promedio/máxima de extremo a extremo a través de TCP, además de la pérdida de paquetes. Para instalar hping3, ejecute los siguientes comandos:

Amazon Linux 2. Instale el paquete de lanzamiento EPEL para RHEL 7 y, a continuación, active el repositorio EPEL.

sudo amazon-linux-extras install epel -y

Amazon Linux 2:

sudo yum --enablerepo=epel install hping3

Ubuntu:

sudo apt-get install hping3

El siguiente comando envía 50 paquetes TCP SYN a través del puerto 0. De forma predeterminada, hping3 envía los encabezados TCP al puerto 0 del host de destino, con un tamaño de ventana de 64 y sin un indicador TCP:

sudo hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host>

El siguiente comando envía 50 paquetes TCP SYN a través del puerto 22:

sudo hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host> -p 22

Nota: Asegúrese de que el puerto 22 o el puerto que está probando esté abierto.

Pruebe muestras de captura de paquetes con tcpdump

Se recomienda realizar capturas de paquetes simultáneas en la instancia de EC2 y en el host local al diagnosticar problemas de latencia o pérdida de paquetes. Hacerlo puede ayudar a identificar los paquetes de solicitud y respuesta para que podamos aislar el problema en las capas de red y aplicación. También se recomienda iniciar primero la captura de paquetes y, a continuación, iniciar el tráfico. Esto ayuda a capturar todos los paquetes del flujo. Para instalar tcpdump, ejecute los siguientes comandos:

Amazon Linux:

sudo yum install tcpdump

Ubuntu:

sudo apt-get install tcpdump

Una vez instalado tcpdump, puede ejecutar el siguiente comando para capturar el tráfico del puerto tcp 22 y guardarlo en un archivo pcap.

sudo tcpdump -i eth0 port 22 -s0 -w samplecapture.pcap

Nota: El indicador tcpdump -i especifica la interfaz de la instancia en la que tcpdump captura el tráfico. Puede que necesite cambiar la interfaz de eth0 a la interfaz configurada en su entorno.

Solución de problemas de rendimiento para Windows

Compruebe la capacidad de ECN

1.    Ejecute el siguiente comando para determinar si la función de notificación explícita de congestión (ECN) está activada:

netsh interface tcp show global

2.    Si la función ECN está activada, ejecute el siguiente comando para desactivarla:

- netsh interface tcp set global ecncapability=disabled

3.    Si no ve ninguna mejora en el rendimiento, puede volver a activar la capacidad de ECN mediante el siguiente comando:

netsh interface tcp set global ecncapability=enabled

Revise los saltos y solucione los problemas de conectividad del puerto TCP

Primero, use MTR o tracert para revisar los saltos:

Método MTR:

1.    Descargue e instale WinMTR.

2.    Introduzca la IP de destino en la sección Host y, a continuación, seleccione Iniciar.

3.    Deje que la prueba se ejecute durante un minuto y, a continuación, seleccione Detener.

4.    Seleccione Copiar texto al portapapeles y pegue el resultado en un archivo de texto.

5.    Busque cualquier pérdida en la columna % que se propague al destino.

Nota: Ignore cualquier salto con el mensaje No hay respuesta del host. Este mensaje indica que esos saltos en particular no responden a los sondeos ICMP.

6.    Revise los saltos de los informes de MTR utilizando un enfoque de abajo hacia arriba. Por ejemplo, compruebe si hay pérdidas en el último salto o destino y, a continuación, revise los saltos anteriores.

Método Tracert:

Si no quiere instalar MTR, puede usar la herramienta de utilidades de comandos tracert.

1.    Realice un tracert a la URL o la dirección IP de destino.

2.    Busque cualquier salto que muestre un aumento abrupto en el tiempo de ida y vuelta (RTT). Un aumento brusco del RTT podría indicar que hay un nodo con una carga elevada, lo que a su vez provoca latencia o caídas de paquetes en el tráfico.

Nota: La opción -d no resuelve las direcciones IP de los nombres de host. Elimine -d si se requiere una resolución de IP a nombre de host.

tracert -d <Public IP of EC2 instance/on-premises host>

A continuación, compruebe la conectividad del puerto TCP.

Nota: Dado que tanto WinMTR como tracert están basados en ICMP, puede usar tracetcp para solucionar problemas de conectividad del puerto TCP.

1.    Descargue WinPcap y tracetcp.

2.    Extraiga el archivo ZIP tracetcp.

3.    Copie tracetcp.exe a su unidad C.

4.    Instale WinPcap.

5.    Abra la línea de comandos y rootee WinPcap en la unidad C mediante el comando **C:\Users\username>cd **.

6.    Ejecute tracetcp con los siguientes comandos: tracetcp.exehostname:port o tracetcp.exe ip:port.

Compruebe el Administrador de tareas de Windows

Si tiene acceso a la instancia de origen o de destino, consulte el Administrador de tareas de Windows. Busque problemas con el uso de la CPU y la memoria, o con el promedio de carga.

Realizar una captura de paquetes

Nota: Se recomienda realizar capturas de paquetes simultáneas en la instancia de EC2 y en el host local al diagnosticar problemas de latencia o pérdida de paquetes. Esto ayuda a identificar los paquetes de solicitud y respuesta para aislar el problema en las capas de red y aplicación. También se recomienda iniciar primero la captura de paquetes y, a continuación, iniciar el tráfico. Esto ayuda a capturar todos los paquetes del flujo.

1.    Instale Wireshark y realice una captura de paquetes.

2.    Utilice el siguiente filtro para aislar el tráfico entre determinadas fuentes en la captura de paquetes: (ip.addr eq source_IP) &&(tcp.flags.syn == 1). El resultado muestra todos los flujos tcp iniciados por esa IP de origen.

3.    Seleccione la fila con la IP de origen y la IP de destino pertinentes.

4.    Seleccione el menú contextual (haga clic con el botón derecho) y, a continuación, elija Follow, TCP Stream. Esto da como resultado un flujo TCP entre la IP de origen y la IP de destino que desea investigar.

5.    Busque retransmisiones, paquetes duplicados o notificaciones de tamaño de ventana TCP, como ventana TCP llena o ventana tamaño cero. Estas notificaciones podrían indicar que los búferes TCP se están quedando sin espacio.

Si detecta una pérdida de paquetes o si el número de saltos cambia significativamente con respecto a sus puntos de referencia, consulte la documentación del proveedor de equipos de red. Si trabaja en un entorno de red con varios inicios, realice estas pruebas con un ISP diferente.


Información relacionada

Redes mejoradas en Linux

Redes mejoradas en Windows

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año