Las técnicas de optimización de TCP ajustan los parámetros de prevención de congestión de red de las conexiones del Protocolo de Control de Transmisión (TCP) en redes de alto ancho de banda y alta latencia . En algunos casos, las redes bien optimizadas pueden ser hasta 10 veces más rápidas. [ 1 ] Sin embargo, seguir las instrucciones a ciegas sin comprender sus consecuencias reales también puede perjudicar el rendimiento.
Características de la red y del sistema
Producto ancho de banda-retardo (BDP)
El producto ancho de banda-retardo (BDP, por sus siglas en inglés) es un término que se utiliza principalmente junto con TCP para referirse a la cantidad de bytes necesarios para llenar una "ruta" TCP; es decir, es igual a la cantidad máxima de bits simultáneos en tránsito entre el transmisor y el receptor.
Las redes de alto rendimiento tienen BDP muy grandes. Para dar un ejemplo práctico, dos nodos que se comunican a través de un enlace satelital geoestacionario con un tiempo de retardo de ida y vuelta (o RTT) de 0,5 segundos y un ancho de banda de 10 Gbit/s pueden tener hasta 0,5 × 10 Gbits , es decir, 5 Gbit de datos no confirmados en tránsito. A pesar de tener latencias mucho menores que los enlaces satelitales, incluso los enlaces de fibra terrestre pueden tener BDP muy altos debido a su gran capacidad de enlace. Los sistemas operativos y protocolos diseñados hace tan solo unos años, cuando las redes eran más lentas, estaban optimizados para BDP de órdenes de magnitud menores, con implicaciones para un rendimiento limitado.
búferes
Las configuraciones TCP originales admitían búferes de ventana de recepción TCP de hasta 65 535 (64 KiB - 1) bytes, lo cual era suficiente para enlaces lentos o con tiempos de ida y vuelta (RTT) reducidos. Las opciones de alto rendimiento que se describen a continuación requieren búferes de mayor tamaño.
El almacenamiento en búfer se utiliza en sistemas de red de alto rendimiento para gestionar las demoras del sistema. En general, el tamaño del búfer debe ajustarse proporcionalmente a la cantidad de datos en tránsito en cada momento. Para aplicaciones de muy alto rendimiento que no son sensibles a las demoras de la red, es posible interponer grandes demoras de almacenamiento en búfer de extremo a extremo mediante la incorporación de puntos de almacenamiento de datos intermedios en el sistema, y posteriormente utilizar transferencias de datos automatizadas y programadas, aunque no en tiempo real, para que los datos lleguen a sus destinos finales.
Límites de velocidad TCP
El rendimiento máximo que puede alcanzar una conexión TCP está determinado por diversos factores. Una limitación obvia es el ancho de banda máximo del enlace más lento de la ruta. Sin embargo, existen otros límites menos evidentes para el rendimiento de TCP. Los errores de bits pueden limitar tanto la conexión como el tiempo de ida y vuelta (RTT).
Tamaño de la ventana
En redes informáticas , RWIN (TCP Receive Window) es la cantidad de datos que un ordenador puede aceptar sin confirmar la recepción del remitente. Si el remitente no ha recibido la confirmación del primer paquete que envió, se detendrá y esperará; si esta espera supera un cierto límite, incluso podría retransmitir el paquete . Así es como TCP logra una transmisión de datos fiable .
Aunque no haya pérdida de paquetes en la red, el uso de ventanas puede limitar el rendimiento. Dado que TCP transmite datos hasta alcanzar el tamaño de la ventana antes de esperar las confirmaciones, es posible que no siempre se utilice todo el ancho de banda de la red. La limitación causada por el tamaño de la ventana se puede calcular de la siguiente manera:
donde RWIN es la ventana de recepción TCP y RTT es el tiempo de ida y vuelta para la ruta.
En cualquier momento dado, la ventana anunciada por el receptor de TCP corresponde a la cantidad de memoria de recepción libre que ha asignado para esta conexión. De lo contrario, correría el riesgo de descartar los paquetes recibidos por falta de espacio.
Para un buen rendimiento , el emisor debe asignar la misma cantidad de memoria que el receptor. Esto se debe a que, incluso después de enviar los datos por la red, el emisor debe mantenerlos en memoria hasta que se confirme su recepción, por si fuera necesario retransmitirlos. Si el receptor está lejos, las confirmaciones tardarán mucho en llegar. Si la memoria de envío es pequeña, puede saturarse y bloquear la transmisión. Un cálculo sencillo proporciona el mismo tamaño óptimo de memoria de envío que el de la memoria de recepción mencionado anteriormente.
Pérdida de paquetes
Cuando se produce una pérdida de paquetes en la red, se impone un límite adicional a la conexión. [ 2 ] En el caso de una pérdida de paquetes leve a moderada, cuando la tasa TCP está limitada por el algoritmo de prevención de congestión , el límite se puede calcular según la fórmula (Mathis, et al.):
donde MSS es el tamaño máximo del segmento y P loss es la probabilidad de pérdida de paquetes. Si la pérdida de paquetes es tan poco frecuente que la ventana TCP se extiende completamente de forma regular, esta fórmula no se aplica.
Opciones TCP para alto rendimiento
A lo largo de los años, se han realizado varias extensiones a TCP para aumentar su rendimiento en enlaces rápidos con alto RTT (redes "largas y anchas" o LFN).
Las marcas de tiempo TCP (RFC 1323) cumplen una doble función: evitan ambigüedades debidas al desbordamiento del campo de número de secuencia de 32 bits y permiten una estimación más precisa del RTT en presencia de múltiples pérdidas por RTT. Con estas mejoras, resulta razonable aumentar la ventana TCP más allá de 64 kB, lo cual se puede lograr mediante la opción de escalado de ventana (RFC 1323).
La opción de acuse de recibo selectivo TCP (SACK, RFC 2018) permite que un receptor TCP informe con precisión al emisor TCP sobre qué segmentos se han perdido. Esto mejora el rendimiento en enlaces con un RTT elevado, donde pueden producirse múltiples pérdidas por ventana.
La función Path MTU Discovery evita la necesidad de fragmentación en la red , lo que aumenta el rendimiento en presencia de pérdida de paquetes.
Optimización de conexiones lentas
La longitud predeterminada de la cola IP es de 1000, lo cual suele ser demasiado grande. Imaginemos una estación base Wi-Fi con una velocidad de 20 Mbit/s y un tamaño de paquete promedio de 750 bytes. ¿Qué tamaño debería tener la cola IP? Un cliente de voz sobre IP debería poder transmitir un paquete cada 20 ms. El número máximo estimado de paquetes en tránsito sería entonces:
Tamaño estimado del búfer = 20000000 * 0,020 / 8 / 750 = 66
Una longitud de cola más adecuada sería:
ifconfig wlan0 mtu 1492 txqueuelen 100
Véase también
Referencias
Enlaces externos
- RFC 1323 - Extensiones TCP para alto rendimiento
- RFC 2018 - Opciones de acuse de recibo selectivo de TCP
- RFC 2582 - La modificación NewReno al algoritmo de recuperación rápida de TCP
- RFC 2488 - Mejora de TCP sobre canales satelitales mediante mecanismos estándar
- RFC 2883 - Una extensión de la opción de acuse de recibo selectivo (SACK) para TCP
- RFC 3517 - Un algoritmo conservador de recuperación de pérdidas basado en acuse de recibo selectivo para TCP
- RFC 4138 - Recuperación de RTO hacia adelante (F-RTO): Un algoritmo para detectar tiempos de espera de retransmisión espurios con TCP y el Protocolo de transmisión de control de flujo (SCTP)
- Guía de optimización de TCP archivada el 18 de junio de 2010 en Wayback Machine , ESnet.
- El técnico de cable: Ajuste automático de la ventana de recepción TCP
- Pruebas de ancho de banda de datos de Web100
- DrTCP : una utilidad para Microsoft Windows (anterior a Vista ) que permite modificar rápidamente los parámetros de rendimiento de TCP en el registro.
- Información sobre cómo optimizar su pila TCP , Informes de banda ancha
- Analizador TCP/IP , speedguide.net
- Herramienta de prueba de rendimiento de red NTTTCP , Blog del equipo de rendimiento de Microsoft Windows Server
- Mejores prácticas para la optimización de TCP - ExtraHop
- Guía de ajuste TCP del Centro de Supercomputación de Pittsburgh (PSC)
- Protocolo de control de transmisión
- Rendimiento de la red