En este tutorial se describe cómo calcular el rendimiento de la red, tanto dentro deGoogle Cloud como en tus ubicaciones locales o en la nube de terceros que estén conectadas mediante Cloud Interconnect. En este documento se describe cómo analizar los resultados, se enumeran las variables que pueden afectar al rendimiento de la red y se ofrecen algunos consejos para solucionar problemas.
Limitaciones y consideraciones
- Se aplican limitaciones de Cloud Interconnect. Para obtener más información, consulta las cuotas de Cloud Interconnect.
- Límites de NIC: Google Cloud se tienen en cuenta el ancho de banda de cada instancia de máquina virtual, no de cada interfaz de red o dirección IP. El tipo de máquina de una VM define su tasa de salida máxima. Sin embargo, esa tasa solo se puede alcanzar en situaciones específicas. Consulta esta tabla para ver el número de vCPUs por tipo de máquina.
Se aplican las limitaciones de otros dispositivos de la ruta (cortafuegos, conmutadores con búferes pequeños y dispositivos de otros proveedores). Realiza las siguientes tareas para mitigar esas limitaciones.
- Recopila estadísticas de red sobre los cortafuegos y los conmutadores de la ruta.
- Para probar Cloud Interconnect, evita tantos dispositivos como sea posible entre el host on‐premise y el dispositivo Google Edge.
- Identifica y verifica todos los dispositivos de la ruta entre la red local y la VM de Google Cloud para determinar si pueden ser la causa de los problemas de rendimiento.
Descripción general de las herramientas para medir el rendimiento de la red
En este tutorial se muestra cómo usar las siguientes herramientas para calcular el rendimiento de la red:
iPerf3 una herramienta de pruebas de redes que puede crear flujos de datos TCP/UDP (de un solo subproceso o de varios subprocesos) y medir el rendimiento de la red que los transporta.
Nota: iPerf3 solo se recomienda para máquinas con una sola CPU.
Netperf una herramienta similar a iPerf3, pero adecuada para probar el rendimiento en instancias con varias CPUs que están limitadas por la CPU en una sola CPU.
tcpdump analizador de paquetes de línea de comandos que captura detalles de los paquetes y comunicaciones TCP/IP para solucionar problemas más avanzados. La herramienta tcpdump es compatible con otras herramientas, como Wireshark.
Netstat una utilidad de red de línea de comandos que muestra las conexiones de red del protocolo de control de transmisión (tanto entrantes como salientes), las tablas de enrutamiento y varias estadísticas de interfaz de red (controlador de interfaz de red o interfaz de red definida por software) y de protocolo de red.
mtr: una herramienta de diagnóstico de redes que realiza las funciones de traceroute y ping. Sondea los routers de la ruta limitando el número de saltos que pueden atravesar los paquetes individuales y escucha las respuestas de su vencimiento.
Medir el rendimiento con iPerf3
Sigue este procedimiento para medir el rendimiento de una sola instancia de VM.
Elegir un tipo de máquina grande
Para realizar pruebas de rendimiento, utiliza un tipo de máquina grande, como n1-standard-8. Este tipo de máquina proporciona un límite de rendimiento de salida máximo de 16 Gb/s, por lo que el rendimiento de salida por VM no interfiere en las pruebas.
Instalar las herramientas
Instalar iPerf3, mtr, netstat y tcpdump en una instancia de máquina virtual Linux
En las distribuciones basadas en Debian, ejecuta los siguientes comandos:
sudo apt-get update sudo apt-get install iperf3 tcpdump mtr netstat
En las distribuciones basadas en Red Hat, ejecuta los siguientes comandos:
yum update yum install iperf3 tcpdump mtr netstat
Instalar netperf
En las distribuciones basadas en Debian, ejecuta los siguientes comandos:
sudo apt-get install git build-essential autoconf texinfo -y git clone https://github.com/HewlettPackard/netperf.git cd netperf ./autogen.sh ./configure --enable-histogram --enable-demo=yes make cp src/netserver ~/.local/bin cp src/netperf ~/.local/bin
En las distribuciones basadas en Red Hat, ejecuta los siguientes comandos:
sudo yum install git build-essential autoconf texinfo -y git clone https://github.com/HewlettPackard/netperf.git cd netperf ./autogen.sh ./configure --enable-histogram --enable-demo=yes make cp src/netserver ~/.local/bin cp src/netperf ~/.local/bin
Ejecutar las pruebas de requisitos previos
- Asegúrese de que los tamaños de las vinculaciones de VLAN estén configurados correctamente. Para obtener más información, consulta Modificar vinculaciones de VLAN.
- En ambos extremos de la conexión (cada terminal), ejecuta el comando
top
ohtop
para monitorizar el uso de la CPU. Recoge estadísticas de la red con el comando
netstat
antes de ejecutar ninguna prueba.netstat -s >> netstat.log
En otra terminal, ejecuta el comando
tcpdump
antes de cualquier captura con el valor del parámetrosnaplen
de128
.Ejecuta este comando en ambos endpoints.
sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
Obtener el tamaño de la memoria de lectura y escritura en los hosts de origen y destino.
$ sysctl net.ipv4.tcp_rmem $ sysctl net.ipv4.tcp_wmem $ sysctl net.core.rmem_max $ sysctl net.core.rmem_default $ net.core.wmem_max $ net.core.wmem_default $ uname -r $ cat /etc/os-release
Ejecutar las pruebas de iperf3
Debido a la limitación de 3 Gbps por flujo, te recomendamos que ejecutes varias secuencias paralelas de pruebas de iperf3
. Te recomendamos que hagas un mínimo de cuatro pruebas y un máximo de diez para compensar las limitaciones de ancho de banda y obtener resultados útiles.
En otra terminal, ejecuta el servidor
iperf3
en un extremo de la conexión (una máquina virtual o una máquina local). Para tener varias emisiones, necesitas varios servidoresiperf3
.Ejecuta la herramienta iPerf3 con la marca
udp
para probar Cloud Interconnect. Si se consigue el rendimiento deseado con UDP, debes seguir otros pasos para solucionar el problema.Para ejecutar varios servidores
iperf3
desde la línea de comandos, ejecuta los siguientes comandos:$ iperf3 -s -p 5101&; iperf3 -s -t 30 -p 5102&; iperf3 -s -p 5103 &
Usa la siguiente secuencia de comandos bash para ejecutar varios servidores iperf3:
#!/bin/bash #start iperf3 server running in background for i in `seq 0 9`; do iperf3 -s -B 10.0.100.35 -t 30 -u -p 521$i & done
El iperf3 client
se ejecuta durante 10 segundos de forma predeterminada, lo que puede no ser suficiente para que TCP alcance el rendimiento máximo. Define el valor de DURATION
en al menos 30 segundos para obtener resultados más fiables.
iperf3 -c [server IP address] -P [THREADS] -t [DURATION]
Secuencia de comandos bash para ejecutar varias secuencias UDP de iperf3
echo "UDP iperf test - 10 streams" for i in `seq 0 9`; do iperf3 -B 10.0.100.35 -c 192.168.50.3 --logfile ~/gcpvm_client-521$i.log -u -b 1G -l 1390 -t10 -p 521$i & done
Secuencia de comandos bash para ejecutar varias secuencias TCP de iperf3
echo "UDP iperf test - 10 streams" for i in `seq 0 9`; do iperf3 -B 10.0.100.35 -c 192.168.50.3 --logfile ~/gcpvm_client-521$i.log -b 1G -l 1390 -t10 -p 521$i & done
Mientras se ejecuta la prueba iperf3
, monitoriza la carga de la CPU en ambos dispositivos.
Si la carga de la CPU se acerca al 100%, la CPU es un cuello de botella para un hilo de iperf3.
En este caso, usa la herramienta Netperf, ya que admite varias CPUs.
Si no puedes ejecutar Netperf, puedes iniciar varios servidores y clientes de iPerf3 en diferentes terminales y puertos simultáneamente.
Analizar los resultados de la prueba
Sigue estos pasos.
- Comprueba los resultados del cliente
iperf3
para ver el ancho de banda y la pérdida de paquetes. - Comprueba los resultados del servidor
iperf3
para ver si hay paquetes desordenados. Realiza un análisis de captura de paquetes. Ejecuta el siguiente comando para convertir el archivo pcap en un archivo de texto.
tcpdump -A -[PCAP-FILENAME].pcap > [TXT-FILENAME].txt
Ejecuta el siguiente comando para obtener el total de paquetes y los paquetes desordenados.
grep -e "Total" -A1 pcap [TXT-FILENAME]
El resultado es el siguiente:
gcpvm-send-5210.txt:Total UDP packets: 874032 gcpvm-send-5210.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5211.txt:Total UDP packets: 791218 gcpvm-send-5211.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5212.txt:Total UDP packets: 961510 gcpvm-send-5212.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5213.txt:Total UDP packets: 961517 gcpvm-send-5213.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5214.txt:Total UDP packets: 961501 gcpvm-send-5214.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5215.txt:Total UDP packets: 961521 gcpvm-send-5215.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5216.txt:Total UDP packets: 889932 gcpvm-send-5216.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5217.txt:Total UDP packets: 961483 gcpvm-send-5217.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5218.txt:Total UDP packets: 961479 gcpvm-send-5218.txt:Total out-of-order packets: 0, missing packets: 0 gcpvm-send-5219.txt:Total UDP packets: 961518 gcpvm-send-5219.txt:Total out-of-order packets: 0, missing packets: 0
En el siguiente análisis se muestra la pérdida de paquetes durante una prueba de rendimiento:
$ grep -e "Total" -A1 onPrem-send-*.txt
El resultado es el siguiente:
"Total" -A1 onPrem-send-*.txt onPrem-send-5210.txt:Total UDP packets: 858698 onPrem-send-5210.txt:Total out-of-order packets: 0, missing packets: 5408 -- onPrem-send-5211.txt:Total UDP packets: 857667 onPrem-send-5211.txt:Total out-of-order packets: 0, missing packets: 4929 -- onPrem-send-5212.txt:Total UDP packets: 857126 onPrem-send-5212.txt:Total out-of-order packets: 0, missing packets: 5349 -- onPrem-send-5213.txt:Total UDP packets: 857424 onPrem-send-5213.txt:Total out-of-order packets: 0, missing packets: 5495 -- onPrem-send-5214.txt:Total UDP packets: 857139 onPrem-send-5214.txt:Total out-of-order packets: 0, missing packets: 4692 -- onPrem-send-5215.txt:Total UDP packets: 857175 onPrem-send-5215.txt:Total out-of-order packets: 0, missing packets: 4789 -- onPrem-send-5216.txt:Total UDP packets: 857104 onPrem-send-5216.txt:Total out-of-order packets: 0, missing packets: 5196 -- onPrem-send-5217.txt:Total UDP packets: 857122 onPrem-send-5217.txt:Total out-of-order packets: 0, missing packets: 5423 -- onPrem-send-5218.txt:Total UDP packets: 857383 onPrem-send-5218.txt:Total out-of-order packets: 0, missing packets: 5283 -- onPrem-send-5219.txt:Total UDP packets: 857313 onPrem-send-5219.txt:Total out-of-order packets: 0, missing packets: 4934
Accede a la página del dispositivo para comprobar el rendimiento del puerto.
Si el resultado de
netstat
muestra errores de lectura o escritura, puede que sea necesario ajustar el flujo en bloque de TCP/UDP.Si hay paquetes desordenados, las capturas de paquetes deben realizarse en las pasarelas VPN para analizarlos más a fondo. Para obtener más información sobre cómo realizar capturas de paquetes en las pasarelas de VPN, abre un caso de asistencia.
Si la prueba
iperf3
UDP alcanza el rendimiento deseado, el problema debe estar en otro sitio y es posible que sea necesario ajustar el TCP.