stringtranslate.com

Opción de escala de ventana TCP

La opción de escala de ventana TCP es una opción para aumentar el tamaño de la ventana de recepción permitido en el Protocolo de Control de Transmisión por encima de su valor máximo anterior de 65.535 bytes. Esta opción TCP, junto con varias otras, se define en RFC  7323, que trata sobre redes largas y pesadas (LFN).

Ventanas TCP

El rendimiento de una comunicación TCP está limitado por dos ventanas: la ventana de congestión y la ventana de recepción. La ventana de congestión intenta no exceder la capacidad de la red ( control de congestión ); la ventana de recepción intenta no exceder la capacidad del receptor para procesar datos ( control de flujo ). El receptor puede verse desbordado por los datos si, por ejemplo, está muy ocupado (como un servidor web). Cada segmento TCP contiene el valor actual de la ventana de recepción. Si, por ejemplo, un remitente recibe un ACK que reconoce el byte 4000 y especifica una ventana de recepción de 10000 (bytes), el remitente no enviará paquetes después del byte 14000, incluso si la ventana de congestión lo permite.

Teoría

La opción de escala de ventana TCP es necesaria para una transferencia eficiente de datos cuando el producto de ancho de banda por retardo (BDP) es mayor que 64 KB [1] . Por ejemplo, si se utilizó una línea de transmisión T1 de 1,5 Mbit/s en un enlace satelital con un tiempo de ida y vuelta (RTT) de 513 milisegundos, el producto de ancho de banda por retardo es  de bits o aproximadamente 96.187 bytes. El uso de un tamaño máximo de búfer de 64 KB [1] solo permite que el búfer se llene hasta (65.535 / 96.187) = 68% de la velocidad máxima teórica de 1,5 Mbit/s, o 1,02 Mbit/s.

Al utilizar la opción de escala de ventana, el tamaño de la ventana de recepción se puede aumentar hasta un valor máximo de  bytes, o aproximadamente 1 GiB. [2] Esto se hace especificando un recuento de desplazamiento de dos bytes en el campo de opciones de encabezado. El tamaño real de la ventana de recepción se desplaza hacia la izquierda según el valor del recuento de desplazamiento. Se puede utilizar un valor máximo de 14 para el valor del recuento de desplazamiento. Esto permitiría que una única conexión TCP transfiera datos a través del enlace satelital de ejemplo a 1,5 Mbit/s utilizando todo el ancho de banda disponible.

Básicamente, no se puede transferir más de una ventana de transmisión completa dentro de un período de tiempo de ida y vuelta. La opción de escala de ventana permite que una única conexión TCP utilice por completo una LFN con un BDP de hasta 1 GB, por ejemplo, un enlace de 10 Gbit/s con un tiempo de ida y vuelta de 800 ms.

Posibles efectos secundarios

Debido a que algunos firewalls no implementan correctamente el escalamiento de ventana TCP, esto puede provocar que la conexión a Internet de un usuario funcione mal de manera intermitente durante unos minutos y luego parezca que vuelve a funcionar sin motivo. También existe un problema si un firewall no admite las extensiones TCP. [3]

Configuración de sistemas operativos

Ventanas

El escalado de ventana TCP se implementa en Windows desde Windows 2000. [ 4] [5] Está habilitado de forma predeterminada en Windows Vista/Server 2008 y posteriores, pero se puede desactivar manualmente si es necesario. [6] Windows Vista y Windows 7 tienen un búfer de recepción TCP predeterminado fijo de 64 kB, que se escala hasta 16 MB mediante "ajuste automático", lo que limita el ajuste manual de TCP en redes largas y pesadas . [7]

Linux

Los núcleos Linux (a partir de la versión 2.6.8, agosto de 2004) tienen habilitado el escalado de ventanas TCP de forma predeterminada. Los parámetros de configuración se encuentran en el sistema de archivos /proc , consulte el pseudoarchivo /proc/sys/net/ipv4/tcp_window_scaling y sus compañeros /proc/sys/net/ipv4/tcp_rmem y /proc/sys/net/ipv4/tcp_wmem (más información: , sección sysctl). [8]man tcp

El escalado se puede desactivar emitiendo el siguiente comando.

$ sudo  sysctl  -w "net.ipv4.tcp_window_scaling=0" 

Para mantener los cambios después de un reinicio, incluya la línea "net.ipv4.tcp_window_scaling=0" en /etc/sysctl.conf (o /etc/sysctl.d/99-sysctl.conf a partir de systemd 207).

FreeBSD, OpenBSD, NetBSD y Mac OS X

La configuración predeterminada para FreeBSD , OpenBSD , NetBSD y Mac OS X es tener habilitada la escala de ventanas (y otras funciones relacionadas con RFC 1323).
Para verificar su estado, un usuario puede verificar el valor de la variable " net.inet.tcp.rfc1323 " mediante el comando sysctl :

$ sysctl  net.inet.tcp.rfc1323

Un valor de 1 (salida "net.inet.tcp.rfc1323=1") significa que el escalamiento está habilitado, 0 significa "deshabilitado". Si está habilitado, se puede desactivar emitiendo el comando:

$ sudo  sysctl  -w  net.inet.tcp.rfc1323 = 0

Esta configuración se pierde al reiniciar el sistema. Para garantizar que se configure en el momento del arranque, agregue la siguiente línea a /etc/sysctl.conf :net.inet.tcp.rfc1323=0

Sin embargo, en macOS 10.14 este comando genera un error

sysctl: oid desconocido 'net.inet.tcp.rfc1323'

Fuentes

  1. ^ ab Aquí, K , M , G o T se refieren a los prefijos binarios basados ​​en potencias de 1024.
  2. ^ Borman, D., Braden, B., Jacobson, V. y Scheffenegger, R. (2014). Extensiones TCP para alto rendimiento (n.º rfc7323).
  3. ^ "La conectividad de red puede fallar cuando intenta utilizar Windows Vista detrás de un dispositivo de firewall". Support.microsoft.com . Consultado el 11 de julio de 2019 .
  4. ^ "Descripción de las características TCP de Windows 2000 y Windows Server 2003". Support.microsoft.com . Consultado el 11 de julio de 2019 .
  5. ^ "Tamaño de la ventana de recepción TCP y escala de la ventana". Archivado desde el original el 1 de enero de 2008.
  6. ^ "La conectividad de red falla cuando intenta utilizar Windows Vista detrás de un dispositivo de firewall". Microsoft . 8 de julio de 2009.
  7. ^ "MS Windows". Fasterdata.es.net . Consultado el 11 de julio de 2019 .
  8. ^ "/proc/sys/net/ipv4/* Variables".