En este instructivo, se describe cómo calcular la capacidad de procesamiento de la red, tanto en Google Cloud como en tus ubicaciones de nube locales o 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 el rendimiento de la red y se proporcionan algunas sugerencias para solucionar problemas.
Limitaciones y consideraciones
- Se aplican las limitaciones de Cloud Interconnect. Para obtener más información, consulta Cuotas de Cloud Interconnect.
- Límites de NIC: Google Cloud incluye el ancho de banda de cada instancia de máquina virtual (VM), no de cada interfaz de red (NIC) ni dirección IP. El tipo de máquina de una VM define su tasa de salida máxima; Sin embargo, esa frecuencia solo se puede lograr en situaciones específicas. Consulta esta tabla para conocer la cantidad de CPU virtuales por tipo de máquina.
Se aplican otros dispositivos a la ruta (firewall, interruptores con búferes pequeños y de otros proveedores) y sus limitaciones. Realiza las siguientes tareas para mitigar esas limitaciones.
- Recopila estadísticas de red sobre los firewalls y los interruptores en la ruta.
- Para las pruebas de Cloud Interconnect, omite tantos dispositivos como sea posible entre el host local y el dispositivo de Google Edge.
- Identifica y verifica todos los dispositivos en la ruta entre la red local y la VM de Google Cloud, si es que pueden ser la fuente de problemas de capacidad de procesamiento.
Descripción general de las herramientas para medir la capacidad de procesamiento de la red
En este instructivo, se muestra el uso de las siguientes herramientas para calcular la capacidad de procesamiento de la red:
iPerf3: Es una herramienta de prueba de red que puede crear flujos de datos TCP/UDP (de un solo subproceso o de varios subprocesos) y medir la capacidad de procesamiento de la red que los transporta.
Nota: iPerf3 solo se recomienda para máquinas con una sola CPU.
Netperf: Es una herramienta similar a iPerf3, pero adecuada para realizar pruebas de capacidad de procesamiento en instancias de varias CPU que están vinculadas a una sola CPU.
tcpdump: Es un analizador de paquetes de línea de comandos que captura detalles de paquetes y comunicaciones TCP/IP para solucionar problemas más avanzados. La herramienta tcpdump es compatible con otras herramientas, como Wireshark.
Netstat: Es una utilidad de red de la línea de comandos que muestra conexiones de red para el Protocolo de control de transmisión (tanto entrantes como salientes), tablas de enrutamiento y varias interfaces de red (controlador de interfaz de red o la interfaz de red definida por software) y las estadísticas del protocolo de red.
mtr: Es una herramienta de diagnóstico de redes que realiza funciones de traceroute y ping. Sondea los routers de la ruta de acceso mediante la limitación del número de saltos que pueden recorrer los paquetes individuales y escucha las respuestas de su caducidad.
Mide la capacidad de procesamiento con iPerf3
Sigue este procedimiento para medir la capacidad de procesamiento de una sola instancia de VM.
Elige un tipo de máquina grande
Para realizar pruebas de capacidad de procesamiento, usa un tipo de máquina grande, como n1-standard-8. Este tipo de máquina proporciona un límite máximo de capacidad de procesamiento de salida de 16 Gbps, por lo que la capacidad de procesamiento de salida por VM no interfiere en las pruebas.
Instala las herramientas
Instala iPerf3, mtr, netstat y tcpdump en una instancia de VM de Linux
Para las distribuciones basadas en Debian, ejecuta los siguientes comandos:
sudo apt-get update sudo apt-get install iperf3 tcpdump mtr netstat
Para las distribuciones basadas en Red Hat, ejecuta los siguientes comandos:
yum update yum install iperf3 tcpdump mtr netstat
Instala netperf
Para 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
Para 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
Ejecuta las pruebas de requisitos previos
- Asegúrate de que los tamaños de los adjuntos de VLAN estén configurados de forma correcta. Para obtener más información, consulta Modifica adjuntos de VLAN.
- En ambos extremos de la conexión (cada terminal), ejecuta el comando
top
ohtop
para supervisar el uso de CPU. Recopila estadísticas de redes con el comando
netstat
antes de ejecutar cualquier 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 extremos.
sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
Obtén el tamaño de memoria de lectura y escritura en los hosts de origen y de 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
Ejecuta las pruebas de iperf3
Debido a la limitación de 3 Gbps para cada flujo, te recomendamos que ejecutes varias transmisiones paralelas de pruebas iperf3
. Te recomendamos ejecutar un mínimo de cuatro pruebas y un máximo de diez para compensar las limitaciones del ancho de banda y obtener resultados útiles.
En otra terminal, ejecuta el servidor
iperf3
en un extremo de la conexión (una VM o una máquina local). Varias transmisiones requieren varios servidoresiperf3
.Ejecuta la herramienta iPerf3 con la marca
udp
para realizar pruebas de Cloud Interconnect. Si se logra la capacidad de procesamiento deseada con UDP, debes seguir más pasos para la solución de problemas.Para ejecutar los servidores múltiples de
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
iperf3 client
se ejecuta durante 10 segundos de forma predeterminada, lo que puede no ser suficiente para que TCP alcance la capacidad de procesamiento máxima. Establece el valor DURATION
en al menos 30 segundos para lograr resultados más confiables.
iperf3 -c [server IP address] -P [THREADS] -t [DURATION]
Secuencia de comandos Bash para ejecutar varias transmisiones 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 transmisiones 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
, supervisa la carga de CPU en ambos dispositivos.
Si la carga de la CPU es cercana al 100%, la CPU es un cuello de botella para un subproceso de iperf3.
En este caso, usa la herramienta Netperf, ya que admite varias CPU.
Si no puedes ejecutar Netperf, puedes iniciar varios servidores y clientes de iPerf3 en diferentes terminales y puertos de forma simultánea.
Analiza los resultados de la prueba
Completa los siguientes pasos:
- Verifica los resultados del cliente
iperf3
para obtener ancho de banda y la pérdida de paquetes. - Verifica los resultados del servidor
iperf3
en busca de paquetes desordenados. Realiza el análisis de la 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 paquetes desordenados.
grep -e "Total" -A1 pcap [TXT-FILENAME]
Este es el resultado:
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
Este es el resultado:
"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 verificar la capacidad de procesamiento del puerto.
Si el resultado
netstat
muestra errores de lectura o escritura, es posible que se requiera un ajuste del flujo masivo de TCP/UDP.Si hay paquetes desordenados, las capturas de paquetes se deben realizar en las puertas de enlace de VPN para un análisis más detallado. Para obtener más información sobre cómo llevar a cabo capturas de paquetes en las puertas de enlace de VPN, abre un caso de asistencia.
Si la prueba UDP de
iperf3
alcanza la capacidad de procesamiento deseada, el problema debe estar en otro lugar y es posible que se requiera un ajuste de TCP.