¿Por qué mi aplicación tiene problemas de latencia y rendimiento cuando utilizo una VPN de sitio a sitio?

9 minutos de lectura
0

Mi aplicación local tiene problemas de latencia cuando utilizo una VPN de sitio a sitio de AWS para acceder a los recursos de AWS.

Resolución

Si tiene problemas de rendimiento o latencia al utilizar la VPN de sitio a sitio para acceder a los recursos, siga estos pasos de solución de problemas:

  • Aísle los sistemas de origen y destino uno por uno.
  • Compruebe la ruta de la red para ver si hay problemas que puedan estar causando la latencia.
  • Revise su aplicación para ver si hay errores comunes que causen problemas de latencia.

Aislar los sistemas de origen y destino

Para mitigar los problemas de rendimiento entre la aplicación local y AWS, primero aísle los sistemas de origen y destino. A continuación, utilice las herramientas de red para comprobar si hay pérdidas y latencias fuera de la aplicación que puedan afectar directamente al rendimiento.

1.    Cambie el origen y el destino. Utilice un origen diferente y luego un destino diferente, y compruebe si el problema persiste después de cada cambio. A continuación, compruebe el dispositivo para determinar si hay un problema de configuración del sistema operativo (SO) u otro problema.

2.    Realice una prueba de capacidades de ancho de banda de UDP. Los problemas de rendimiento pueden indicar complicaciones en el desempeño, de modo que debe utilizar la herramienta iperf3 para comprobar el ancho de banda aprovisionado. Realice esta prueba de forma bidireccional. El siguiente ejemplo de prueba de UDP utiliza la herramienta iperf3.

Nota: -i hace referencia al intervalo, -u hace referencia a UDP, -b hace referencia al ancho de banda (ajústelo como corresponda), -p hace referencia a los puertos UDP y -v hace referencia al detalle.

Server: sudo iperf -s -u [-p 5001]
client: sudo iperf3 -i 1 -u -p 33344 -b 1.2G -c <private IP> -V

Nota: Asegúrese de que el crédito de ancho de banda esté disponible para la instancia de Amazon Elastic Compute Cloud (Amazon EC2) que esté utilizando. O bien, intente usar un tamaño de instancia mayor y vuelva a hacer la prueba.

3.    Utilice iperf3 para realizar una prueba de rendimiento de TCP en su VPN de sitio a sitio. Realice esta prueba de forma bidireccional. Vea el siguiente ejemplo:

Nota: Para obtener un rendimiento óptimo, pruebe diferentes tamaños de intervalo de recepción de TCP para probar los búferes de memoria de origen y destino a medida que aumente el tamaño de la instancia.

Server : iperf3 -s [-p 5001]
Client:
sudo iperf3 -c <Private IP> -P 10 -w 128K -V
sudo iperf3 -c <Private IP> -P 10 -w 512K -V
sudo iperf3 -c <Private IP> -P 10 -w 1024K -V  

Comprobar si hay problemas en la ruta de red

Compruebe la ruta de red para identificar el salto o el dispositivo específicos que están causando problemas en la red:

  • Compruebe si hay pérdidas de paquetes a lo largo de la ruta entre pares de la VPN de sitio a sitio.
  • Compruebe el rendimiento del túnel de la VPN de sitio a sitio.
  • Compruebe la configuración del enrutador de la puerta de enlace de cliente.
  • Compruebe la MTU más baja de la ruta.

Comprobar si hay pérdidas de paquetes a lo largo de la ruta entre pares de la VPN de sitio a sitio

El túnel de la VPN de sitio a sitio es una comunicación cifrada entre pares. Sin embargo, es posible que la red subyacente presente pérdidas que afecten a la calidad de la comunicación cifrada. La pérdida de paquetes aumenta la latencia y afecta directamente al rendimiento.

Consulte la siguiente ecuación y ejemplo:

Mathis Equation: Throughput = (MSS/RTT)*(1 / sqrt{p}):
Eg. 1375 MSS, 33ms latency, 0.001%= (1375B / 0.033 sec) * (1/𝑠𝑞𝑟𝑡{0.001})=  (41,666.6 * 31.6227)*8 <<< To go from Bps to bps= 10,540,925.5 bps (10.5 Mbps)

La medida del rendimiento es [tamaño del intervalo de TCP en bits] / [latencia (RTT) en segundos]. Vea el siguiente ejemplo:

Eg.  64K in receive Window, 33ms latency= 524288 bits / 0.033 = 15,887,515 = 15.8 Mbps MAX Possible Throughput

Para comprobar si hay pérdidas de paquetes en la ruta pública entre pares de la VPN de sitio a sitio, utilice una prueba de ICMP, como MTR. Para obtener más información sobre la instalación y el uso de MTR, consulte ¿Cómo soluciono los problemas de rendimiento de la 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?.

Vea el siguiente ejemplo:

Nota: La salida de MTR de este ejemplo incluye valores sin datos o con una pérdida del 100 %. Esto indica que el dispositivo ha descartado el paquete con un TTL de 0, pero no ha respondido con un mensaje de tiempo superado de ICMP (tipo 11, código 0). Por lo tanto, estos valores no indican ningún problema.

 [ec2-user@ip-10-7-10-67 ~]$ sudo mtr --no-dns --report --report-cycles 20 18.189.121.166Start: 2023-04-07T16:28:28+0000HOST: ip-10-7-10-67.ec2.internalr Loss%   Snt   Last   Avg  Best  Wrst StDev  1.|-- ???                       100.0    20    0.0   0.0   0.0   0.0   0.0  2.|-- ???                       100.0    20    0.0   0.0   0.0   0.0   0.0  3.|-- ???                       100.0    20    0.0   0.0   0.0   0.0   0.0  4.|-- 241.0.12.14                0.0%    20    0.4   0.4   0.3   0.8   0.1  5.|-- 240.0.204.2                0.0%    20    0.4   0.4   0.3   0.5   0.0  6.|-- 240.0.204.17               0.0%    20    0.4   0.4   0.3   0.5   0.0  7.|-- 240.0.204.5                0.0%    20    0.4   0.4   0.4   0.5   0.0  8.|-- 242.2.74.145               0.0%    20    1.2   4.0   0.4  23.9   5.7  9.|-- 52.93.29.71                0.0%    20    0.8   2.3   0.7   9.2   2.8 10.|-- 100.100.8.66               0.0%    20   10.8   2.5   0.7  12.8   4.0 11.|-- 100.92.53.85               0.0%    20   26.0  13.3  11.0  26.0   4.4 12.|-- 52.93.239.5                0.0%    20   11.6  12.8  11.4  23.7   2.7 13.|-- 52.95.1.159                0.0%    20   11.0  12.0  11.0  18.3   1.7 14.|-- 52.95.1.186                0.0%    20   11.5  14.1  11.2  32.6   5.9 15.|-- 15.230.39.135              0.0%    20   11.6  11.9  11.1  15.5   1.1 16.|-- 15.230.39.124              0.0%    20   11.7  12.8  11.2  27.2   3.6 17.|-- 108.166.252.38             0.0%    20   11.2  11.2  11.1  11.3   0.0 18.|-- 242.0.102.17               0.0%    20   12.1  12.4  11.2  23.9   2.8 19.|-- 108.166.252.35             0.0%    20   11.3  11.3  11.2  12.3   0.2 20.|-- 241.0.12.207               0.0%    20   11.2  11.3  11.1  13.2   0.5 21.|-- ???                       100.0    20    0.0   0.0   0.0   0.0   0.0 22.|-- ???                       100.0    20    0.0   0.0   0.0   0.0   0.0 23.|-- ???                       100.0    20    0.0   0.0   0.0   0.0   0.0 24.|-- 100.65.30.129              0.0%    20   57.2  24.9  11.6  76.4  17.9 25.|-- 18.189.121.166             0.0%    20   11.3  11.8  11.2  17.6   1.6[ec2-user@ip-10-7-10-67 ~]$

Comprobar el rendimiento del túnel de la VPN de sitio a sitio

Compruebe si su rendimiento supera el límite de 1,2 Gbps:

1.    Abra la consola de Amazon CloudWatch para ver las métricas de la VPN de sitio a sitio.

2.    Elija las métricas de TunnelDataIn y TunnelDataOut.

3.    En Estadística, elija Suma y en Periodo, elija 5 minutos.

4.    Aplique el siguiente cálculo a los puntos de datos en su punto máximo. En esta ecuación, m1 = TunnelDataIn y m2 = TunnelDataOut.

Nota: Si el rendimiento es superior a 1,2 Gbps durante un periodo prolongado, implemente dos túneles de BGP con ECMP y puerta de enlace de tránsito.

(((m1+m2)/300)*8)/1000000

Comprobar la configuración del enrutador de la puerta de enlace de cliente

Compruebe si su dispositivo de puerta de enlace de cliente tiene las siguientes configuraciones:

  • Asegúrese de que no haya políticas regulatorias o de configuración que limiten el rendimiento.
  • Restablezca la marca Don't Fragment (DF) en los paquetes de IP.
  • Asegúrese de fragmentar los paquetes de IPSec antes de cifrarlos.
  • Confirme que la puerta de enlace de cliente tiene una configuración de MSS para que los encabezados IP, TCP, UDP o ESP y la carga útil de datos no superen los 1500. Siga las directrices de la MTU para el algoritmo de cifrado que utilice. Para obtener más información, consulte Prácticas recomendadas para su dispositivo de puerta de enlace de cliente.

Comprobar la MTU más baja de la ruta

Pruebe la ruta para asegurarse de que la MTU más baja de la ruta es la esperada:

Para ello, haga ping \ -s 1460 <DESTINATION> -M do:

[ec2-user@ip-10-7-10-67 ~]$ ping -s 1460 1.1.1.1 -M doPING 1.1.1.1 (1.1.1.1) 1460(1488) bytes of data.1468 bytes from 1.1.1.1: icmp_seq=1 ttl=51 time=1.06 ms1468 bytes from 1.1.1.1: icmp_seq=2 ttl=51 time=1.04 ms1468 bytes from 1.1.1.1: icmp_seq=3 ttl=51 time=1.10 ms1468 bytes from 1.1.1.1: icmp_seq=4 ttl=51 time=1.07 ms1468 bytes from 1.1.1.1: icmp_seq=5 ttl=51 time=1.10 ms1468 bytes from 1.1.1.1: icmp_seq=6 ttl=51 time=1.06 ms

 Si un dispositivo a lo largo de la ruta no puede transportar la carga útil, devuelve un mensaje de MTU de ruta de ICMP superada:

[ec2-user@ip-10-7-10-67 ~]$ ping -s 1480 1.1.1.1 -M doPING 1.1.1.1 (1.1.1.1) 1480(1508) bytes of data.From 10.7.10.1 icmp_seq=1 Frag needed and DF set (mtu = 1500)ping: local error: Message too long, mtu=1500ping: local error: Message too long, mtu=1500ping: local error: Message too long, mtu=1500ping: local error: Message too long, mtu=1500

Comprobar si hay errores comunes en la aplicación

Compruebe si hay alguno de los problemas más comunes en su aplicación local:

  • Problemas de configuración de la aplicación.
  • Uso de subprocesos paralelos en la transferencia de datos. Si observa un rendimiento de la VPN de sitio a sitio que parece ser más lento de lo esperado, utilice subprocesos paralelos para confirmar el rendimiento sin tener que recurrir a la aplicación.
  • Implementación del algoritmo de reintento con retroceso exponencial. Si ve tiempos de espera al llamar a los servicios de AWS, utilice el algoritmo de reintento con retroceso exponencial.

Información relacionada

Redes mejoradas en Linux

Preguntas frecuentes acerca de AWS VPN

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año