Calcula la capacidad de procesamiento de la red a través de Interconnect

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

  1. 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.
  2. En ambos extremos de la conexión (cada terminal), ejecuta el comando top o htop para supervisar el uso de CPU.
  3. Recopila estadísticas de redes con el comando netstat antes de ejecutar cualquier prueba.

    netstat -s >> netstat.log
    
  4. En otra terminal, ejecuta el comando tcpdump antes de cualquier captura con el valor del parámetro snaplen de 128.

    Ejecuta este comando en ambos extremos.

    sudo /usr/sbin/tcpdump -s 128 -i [DEVICE_INTERFACE] host [IP_ADDRESS of remote side] -w mycap.pcap
    
  5. 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.

  1. 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 servidores iperf3.

  2. 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.

  3. 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 &
    
  4. 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:

  1. Verifica los resultados del cliente iperf3 para obtener ancho de banda y la pérdida de paquetes.
  2. Verifica los resultados del servidor iperf3 en busca de paquetes desordenados.
  3. 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
    
  4. 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
    
  5. Accede a la página del dispositivo para verificar la capacidad de procesamiento del puerto.

  6. Si el resultado netstat muestra errores de lectura o escritura, es posible que se requiera un ajuste del flujo masivo de TCP/UDP.

  7. 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.

  8. 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.