tipos sirve significado que protocolos protocolo para internet funciona como capas networking tcp

networking - sirve - TCP ¿es posible lograr una tasa de transferencia más alta con conexiones múltiples?



tcp/ip capas (4)

¿Es posible lograr una mejor tasa de transferencia de datos con múltiples conexiones TCP paralelas en un entorno de alta latencia (Internet público con una gran distancia geográfica suponiendo que no hay configuración de tráfico por conexión o cosas por el estilo) o TCP puede utilizar todo el ancho de banda con una sola conexión?

¿TCP está enviando datos tan rápido como latas si el receptor no informa la congestión del búfer con un tamaño de 0 ventanas? Entonces, si RTT es, por ejemplo, de 60 segundos, ¿no afecta la velocidad en absoluto? ¿Hay algún tamaño de ventana máximo o algo más que limite la tasa?


Sí, pero no necesariamente fácil de implementar. Los CDN como akamai reclaman parte de su desempeño al comprimir paquetes más grandes que los que se enviarían normalmente debido a su tubería fiable dedicada. Es difícil dar más detalles sin saber más de su aplicación.


Si eres el único en el enlace, aumentará la sobrecarga y disminuirá la velocidad. Sin embargo, cuando se comparte un enlace totalmente saturado con otros, es una forma de jugar con el sistema y aumentar su velocidad general (cada conexión será más lenta que una sola, pero el agregado será más rápido ya que ahora tiene un mayor porcentaje de "espacios de tiempo" (¿cuál es el término técnico? Se me escapa ahora) asignado a usted).


Una ventaja que pueden brindarte múltiples conexiones simultáneas (sujeto a las mismas advertencias mencionadas por Dove y Brian) es que podrás superar mejor el problema de tener una ventana de recepción de TCP demasiado pequeña.

El principio al que se refiere esto es el producto de retardo de ancho de banda . (Hay una explicación más detallada aquí ).

Un breve resumen: en entornos de alta latencia y gran ancho de banda, las comunicaciones confiables como TCP a menudo están limitadas por la cantidad de datos en vuelo en cualquier momento dado. Las conexiones múltiples son una forma de evitar esto, ya que el producto de demora de ancho de banda se aplica a cada conexión individualmente.

Con más detalle, considere lo siguiente: tiene un ancho de banda extremo a extremo de 10 ^ 8 bits por segundo (10 megabits / segundo) y un retraso de ida y vuelta de 100 ms (0,1 segundos). Por lo tanto, puede haber hasta 10 ^ 7 bits (10 megabits = ~ 1.25 megabytes) de datos enviados antes de que el acuse de recibo del primer bit de datos haya vuelto al remitente.

Esto variará dependiendo de la pila TCP de su sistema operativo, pero un valor no muy común para el tamaño de ventana de recepción TCP es de 64Kbytes. Obviamente, esto es demasiado pequeño para permitirle hacer un uso completo del ancho de banda de extremo a extremo; una vez que se han enviado 64kbytes (512kbits) de datos, su proceso de envío esperará una actualización de ventana del receptor que indique que se han consumido algunos datos antes de poner más datos en el cable.

Tener múltiples sesiones TCP abiertas lo soluciona en virtud del hecho de que cada sesión TCP tendrá sus propios buffers de envío / recepción.

Por supuesto, en Internet es difícil determinar el verdadero ancho de banda disponible de extremo a extremo, debido al tamaño de la ventana TCP, contención, etc. Si puede proporcionar algunas cifras de muestra, es posible que podamos ayudarlo más.

La otra opción que debe tener en cuenta es establecer una ventana de recepción más grande cuando cree su socket, ya sea globalmente utilizando una configuración de sistema operativo o en base a un socket utilizando las opciones de socket.


La descripción de Muz sobre el tema es perfecta.

Tenga en cuenta que aprovecharlo puede depender de la implementación de TCP en su sistema operativo. En particular, para obtener los mejores resultados, desea una pila TCP que admita la opción Escala de ventana de RFC 1323 .

Además, es posible que deba modificar algunas configuraciones del sistema operativo para que esto funcione. En Windows hay una configuración de Registro llamada TcpWindowSize que puede necesitar ajustar. Existe un artículo 224829 de Microsoft KB : Descripción de las características TCP de Windows 2000 y Windows Server 2003 que describe cómo hacerlo.