Cómo estimar el caudal TCP entre servidores

Cómo estimar el caudal TCP entre servidores

Nataliya Oteir Leer 8 minutos

Acaba de adquirir un servidor con un canal dedicado que le garantiza 1Gbit/s (o más) y se siente decepcionado al comprobar que las transferencias de archivos no son tan rápidas como esperaba. Antes de escribir al servicio de asistencia técnica y buscar problemas de red, intente evaluar el rendimiento TCP real de un host a otro.

Hay dos factores más importantes para el éxito de la transferencia de datos a través de TCP:

- Tamaño de la ventana TCP - es el número de bytes que un lado aceptará sin confirmación;

- Retardo circular de transmisión-recepción (latencia) - es el tiempo que tarda en enviarse un paquete y confirmarse su entrega.

- Conocer estas dos cosas te permitirá calcular el máximo ancho de banda posible que se puede compartir entre dos hosts, independientemente del ancho de banda.

La fórmula para calcular el ancho de banda TCP

Rendimiento TCP (bits/s) = Tamaño de ventana TCP (bits) / Latencia de ida y vuelta (s)

Desglosémoslo con un ejemplo sencillo. Tenemos un enlace gigabit Ethernet entre servidores con una latencia circular de 30 ms. Necesitamos enviar un archivo de gran tamaño de un servidor a otro por FTP. ¿Qué ancho de banda real podemos esperar?

Primero hay que convertir el tamaño de la ventana TCP de bytes a bits. En este caso, utilizaremos el tamaño de ventana TCP estándar de máquina Windows de 64 KB = 65 536 B = 65 536 * 8 = 524 288 bits.

A continuación, hay que tomar el tamaño de ventana TCP en bits y dividirlo por la latencia circular del canal, expresada en segundos. A efectos de estos cálculos, 30 ms se convierten en 0,030 s.

Rendimiento máximo de TCP = 524.288 bits / 0,030 s = 17.476.266 bps = 17,4 Mbps

Aunque hay una conexión gigabit Ethernet entre los dos servidores, no puedes esperar más de 17 Mbit/s cuando transfieras archivos.

¿Cómo podemos hacer que la red sea más rápida? La respuesta es obvia: aumentar el tamaño de la ventana TCP y/o reducir el retardo de la señal.

Negociar un mayor tamaño de ventana TCP requiere configuración manual individual de cada servidor. Esto, a su vez, lleva a la siguiente pregunta: ¿cuál es el tamaño óptimo de ventana TCP? Para averiguarlo, es necesario hacer un cálculo inverso basado en el ancho de banda.

La fórmula para calcular el tamaño óptimo de la ventana TCP

Tamaño de ventana TCP (bytes) = Tamaño de ventana TCP (bits) / 8 = Ancho de banda (bits/s) * Latencia circular (s) / 8

En el ejemplo anterior para una ruta gigabit Ethernet entre servidores con una latencia circular de 30 ms, se obtiene el siguiente valor:

1.000.000.000 bits/s * 0,030 s = 30.000.000 bits / 8 = 3.750.000 bytes.

En otras palabras, si configuras ambos servidores para una ventana TCP de 3.750 KB, la conexión FTP llenará completamente el ancho de banda y alcanzará un ancho de banda de 1 Gbit/s.

Debes tener en cuenta que aumentar el tamaño de la ventana TCP tiene sus desventajas.

En primer lugar, requerirá más memoria para el buffer de los servidores, necesaria para almacenar datos no confirmados en caso de que los haya.

En segundo lugar, un aumento del tamaño de la ventana TCP puede dar lugar a un mayor número de paquetes perdidos, que a su vez requieren que se reenvíe una ventana entera. Esto puede repercutir negativamente en el rendimiento. Para resolver este problema, la pila TCP/IP del servidor puede activar la opción de "acuse de recibo selectivo", que está desactivada por defecto.

Para resolver el problema, se pueden colocar aceleradores WAN -pedales de gas de la red global- en ambos extremos de la línea. Pueden hacer lo siguiente

- Abrir una ventana TCP ampliada;

- proporcionar la capacidad de optimizar finamente el protocolo TCP (por ejemplo, acuse de recibo selectivo sólo entre aceleradores);

- no requieren una configuración especial del servidor ni memoria intermedia adicional;

- pueden utilizar funciones especiales de la capa de aplicación del modelo OSI (Capa 7 - acceso a servicios de red) para reducir el retardo circular.

Latencia

¿Quiere reducir el retardo de la señal? Se puede hacer en principio? Dado que no podemos superar la velocidad de la luz, no podemos influir en el tiempo que tarda una señal en recorrer una determinada distancia. La mejor forma de optimizar todo un sistema es instalar un acelerador WAN en cada extremo de la línea, que transmita los paquetes TCP recibidos al servidor local, "engañándole" así en cuanto a la velocidad real de transferencia de datos.En lugar de esperar una respuesta estancada del servidor remoto, el servidor local recibe acuses de recibo instantáneos del acelerador. Así nos ahorramos tener que ajustar el tamaño de la ventana TCP en los propios servidores. Un par de dispositivos WAAS utiliza un tamaño de ventana TCP incrementado y acuses de recibo selectivos en todo el segmento de línea.

Además, WAAS purga eficazmente un flujo TCP de datos redundantes, proporcionando un nivel extremadamente alto de compresión (compresión). Cada pedal de gas recuerda los datos vistos anteriormente. Si vuelve a aparecer un fragmento duplicado, se elimina y se sustituye por una diminuta marca de 2 bytes. Esta diminuta marca es reconocida por el acelerador remoto, que inserta el fragmento de datos original en su lugar antes de enviar tráfico al servidor local.

El resultado probado de la optimización es un mayor rendimiento entre servidores sin ningún ajuste especial de TCP de los servidores locales.

Fórmula para calcular el retardo máximo admisible para un caudal determinado

Ejemplo. En un sitio entre dos servidores remotos, debe garantizar un caudal FTP de 10 Gbps utilizando un tamaño de ventana TCP estándar (64KB). ¿Cuál es el retardo de señal máximo permitido?

Retardo de ida y vuelta (ms) = tamaño de ventana TCP (bits) / ancho de banda necesario (bps)

524.288 bits / 10.000.000 bps = 52,4 microsegundos

¿Qué hacer?

Básicamente, no necesitas aumentar la ventana TCP ni instalar amplificadores WAN. Basta con utilizar multithreading y podrás utilizar el canal al 100% de su ancho de banda.

How useful was this post?

Click on a star to rate it!
Рейтинг: 0/5 - 0 голосов