Compartir a través de


Información general sobre el rendimiento de TCP/IP

Nota:

Este artículo se incluye en una serie de tres partes. Puede revisar la parte 2: Problemas de red subyacentes de rendimiento TCP/IP y Parte 3: Problemas conocidos de rendimiento de TCP/IP.

El rendimiento del Protocolo de control de transmisión/Protocolo de Internet (TCP/IP) es una comparación. La comparación debe realizarse con puntos de conexión idénticos en términos de hardware, ruta de acceso de red y sistema operativo (SO). El rendimiento real es diferente porque hay varios factores implicados y pueden provocar un cuello de botella. Estos factores suelen ser la red subyacente, el diseño de TCP y la velocidad de transmisión real de las E/S de almacenamiento.

Obtenga más información sobre el ajuste del rendimiento para establecer la configuración de mejor rendimiento para los puntos de conexión.

El ajuste automático de ventana de recepción TCP es una característica definida por la aplicación que se usa para escalar verticalmente la conexión con el fin de usar el ancho de banda en redes de alta latencia. Por ejemplo, si tcp está configurado para usar el nivel de autoajuste a normal y si la aplicación tiene suficiente búfer definido para la ventana TCP, el sistema operativo escalará el TCP al máximo rápidamente. Sin embargo, esta característica está diseñada para redes de mayor latencia. En el caso de las redes de baja latencia, no hay ningún requisito, ya que no habrá muchos segmentos sobre la marcha (por ejemplo, en la infraestructura de red).

En el caso de las redes de latencia alta con una ventana TCP que no se escala al máximo a la vez, hay algoritmos como CUBIC, NewReno y TCP compuesto para determinar el producto de retraso de ancho de banda (BDP) y escalar la ventana en consecuencia. El sistema operativo Windows asigna un algoritmo de congestión a cada socket creado.

La configuración de TCP está predefinida en Windows 10. Use el cmdlet Get-NetTCPSettings para obtener la configuración de TCP y usar el cmdlet Get-NetTCPConnection para ver las propiedades de conexión TCP, como la dirección IP local o remota, el puerto local o remoto y el estado de la conexión.

Estas son sugerencias para mejorar el rendimiento:

  • Asegúrese de que no haya problemas de red subyacentes (pérdida de paquetes).
  • Habilite las propiedades avanzadas de NIC para las características de rendimiento (como tramas Jumbo, RSS/VMQ, características de descarga y RSC), excepto si hay un problema de compatibilidad de red subyacente o con fines de solución de problemas.
  • Asegúrese de que tcp está configurado para usar el nivel de autoajuste con normalidad.
  • Use Monitor de rendimiento análisis para asegurarse de que no haya cuellos de botella de CPU o almacenamiento.
  • Seleccione características de seguridad en función de los requisitos reales de las organizaciones.
  • Cree una línea base.

Herramienta de pruebas para el rendimiento de TCP

Para lograr el mayor rendimiento posible para un hardware determinado, debe ajustar los factores de rendimiento. Asegúrese de que no haya problemas de red subyacentes (pérdida de paquetes). Use la herramienta NTttcp.exe o ctsTraffic.exe para probar el rendimiento. Consulte Herramientas de rendimiento para cargas de trabajo de red.

Cuellos de botella para el rendimiento de TCP

No use el monitor de red ni realice registros de nivel de paquete de red durante las pruebas de rendimiento de TCP. Los filtros de supervisión de la especificación de interfaz de controlador de red (NDIS) agregan un retraso para el remitente y los receptores cada vez que se registra un paquete. Esta operación requiere recursos de CPU y genera muchos E/S de almacenamiento. El rendimiento disminuye cuando se toman los registros de nivel de paquete porque el TCP está intentando recuperarse de la pérdida de paquetes.

Agregar seguridad tiene sus propios problemas de costo y rendimiento. Los protocolos de seguridad, como seguridad de protocolos de Internet (IPsec), tienen requisitos de procesamiento adicionales y de sobrecarga. Al comparar la protección de datos con la integridad de los datos, se debe preferir el modo de integridad de IPsec para reducir el costo de procesamiento. El software de seguridad también tiene un costo enorme en el procesamiento de paquetes, lo que provocará salidas más lentas.

Si el rendimiento probado no satisface las expectativas, tome registros como se define en Contadores de rendimiento relacionados con la red.

Después de comprobar si hay problemas de rendimiento tcp, compruebe los protocolos asociados a la capa superior, como los protocolos del sistema de archivos (Bloque de mensajes del servidor (SMB) o Sistema de archivos de red (NFS)). Estos protocolos requieren recursos de procesador e IO de disco. La velocidad lenta se debe a un controlador o hardware defectuosos, a una cola de llamadas a procedimiento diferido (DPC) o a IOs de disco lentos. Averiguar qué componente del sistema operativo está provocando un alto nivel de DPC es un desafío, ya que requiere un análisis mediante el registro de Xperf/Windows Performance Recorder (WPR) (CPU). Encontrar problemas de lentitud relacionados con el disco es comparativamente más fácil. Para obtener más información, consulte Examen y optimización del rendimiento del disco.

Durante la prueba, las aplicaciones de prueba (aplicaciones cliente y servidor) se pueden ajustar para usar varios subprocesos con valores de búfer lo suficientemente altos como para alcanzar el rendimiento máximo. Sin embargo, es posible que no refleje las condiciones reales porque el número de subprocesos y el búfer que puede utilizar cada llamada API está limitado en función de la programación. Además, el protocolo de capa de aplicación (SMB o Common Internet File System (CIFS)) tiene su propio búfer y optimización (Optimización del rendimiento para servidores de archivos o SMB: Guía de solución de problemas). Si la aplicación no funciona según lo esperado para la línea base, trabaje con un especialista en aplicaciones para encontrar el cuello de botella.

Creación de una línea base

Se debe crear una línea base de rendimiento para comparar el rendimiento actual. Para comprender mejor la red, cree la línea base al principio de la implementación.

Una línea base está formada por los siguientes puntos principales:

  • Redes de origen y destino
  • Latencia y recuento de saltos entre estas redes
  • Capacidad y configuración del procesador/interfaz
  • Período de tiempo de las pruebas (horas de trabajo/horas no laborables/horas punta)
  • Versiones del sistema operativo
  • Extracción de rendimiento e inserción de rendimiento

Nota:

Cree la línea base con los mismos modelos de servidor (el mismo número de tarjetas NIC y capacidad de procesador) para mantener la potencia de procesamiento casi igual.

Observe el búfer y realice un seguimiento del número de sesiones de transporte creadas por las herramientas de prueba. Cuatro sesiones de transporte TCP simultáneas pueden evaluar el uso de la CPU uniformemente con RSS habilitado.

Estos son los pasos para medir el rendimiento y crear una línea base:

  1. Descargue la herramienta ctsTraffic . Esta es una descripción de algunos parámetros de la herramienta ctsTraffic.

    Parámetro Descripción
    -listen:<IP/*> Esta opción se usa para la escucha de puertos en servidores. Si * se especifica, la herramienta ctsTraffic escucha todas las direcciones IP disponibles en esa máquina. Por ejemplo, -listen:*.
    -target:<IP> Esta opción se usa en los clientes y especifica la dirección IP del servidor en el que se ejecuta ctsTraffic.exe y está en estado de escucha. Por ejemplo, -target:192.168.1.10.
    -pattern:pull La herramienta CtsTraffic usa el patrón Push de forma predeterminada. Esto significa que los datos se envían desde el cliente al servidor. Cuando se usa este modificador tanto en el cliente como en el servidor, los datos se reciben en el cliente. No use esta opción al realizar una prueba push.
    -connections:<num> Esta opción especifica el número de conexiones TCP. Los sockets TCP se crearán a partir del cliente simultáneamente. Ocho se usa normalmente como las colas RSS en tarjetas de red de nivel medio son 8. Por ejemplo, -connections:8.
    -iterations:<num> Esta opción especifica el número multiplicado de conexiones en -connections:. Por ejemplo, -iterations:10. Con 10 iteraciones, el cliente intentará 80 conexiones en total. Si no se especifica esta opción, el cliente seguirá intentando 8 conexiones hasta 1000 conexiones.
    -statusfilename:<filename.csc> Use esta opción para vaciar la opción de nivel de consola 1 en un .txt archivo compatible con Microsoft Excel.
    -connectionfilename:<filename.csv> Use esta opción para vaciar detalles detallados. Por ejemplo, información de nivel de socket, como el tiempo que tarda cada socket en transferir los datos. Puede comprobar si hay errores o solución de problemas avanzada con esta opción.
    -consoleverbosity:<0|1|2|3> Esta opción especifica la vista o la salida en el monitor mientras se ejecuta la prueba. Por ejemplo, -consoleverbosity:1.
  2. Abra Resource Monitor en el lado receptor. Por ejemplo, si usa -pattern:pull, ábralo en el cliente; de lo contrario, ábralo en el servidor.

  3. Inicie la herramienta ctsTraffic en el servidor y ejecute el siguiente comando:

    Ctstraffic.exe -listen:* -consoleverbosity:1 <-pattern:pull>
    

    Ejecutar el comando ctsTraffic en el lado servidor.

  4. Inicie la herramienta ctsTraffic en el cliente y ejecute el siguiente comando:

    Ctstraffic.exe -target:<serverip> -consoleverbosity:1 <-pattern:pull> -connections:8 -iterations:10
    

    Ejecutar el comando ctsTraffic en el lado cliente.

  5. Asegúrese de que los procesadores del lado receptor se usan uniformemente. Si no es así, compruebe el problema con RSS para averiguar cuál no funciona según lo esperado.

    Detalles del uso de cpu en el lado receptor.

  6. Calcule el rendimiento en bits/segundo según el resultado en el cliente. Consulte el ejemplo de la captura de pantalla siguiente:

    El resultado del comando ctsTraffic en el lado cliente.

    En este ejemplo, el rendimiento es de casi 19 Gb/s y se calcula de la siguiente manera:

    (85.899.349.200 bytes/36.678 segundos) * 8 = 18.735.885.097.33355 (bits/segundo)

Pasos siguientes