Modificando RWIN para mejorar la velocidad

De Wiki de BandaAncha.eu
Saltar a: navegación, buscar

¿Problemas con tu velocidad de descarga? En este documento puedes encontrar la solución.

Qué es el RWIN

El TCP Receive Window es, básicamente, la cantidad de datos en bytes que un servidor remoto puede enviar sin haber recibido los paquetes ACK (confirmación) que nosotros le tenemos que mandar. Un valor pequeño de RWIN provoca que el servidor mande una cantidad de datos (conocida por las dos partes, ya que se transmite al iniciar la conexión y luego en cada paquete) hasta que la "ventana" se llena. Luego cada ACK por así decirlo se "vacía" esta ventana un poco, permitiendo que el servidor mande más datos. Si la latencia es grande, la espera de ACKs cuando la ventana está llena hace que el servidor deje de mandar, por lo que la velocidad de descarga será baja. La latencia es muy importante en esto del RWIN, por eso bajamos mejor del ftp de rediris que de un servidor de Microsoft.

Valor del RWIN

No hay valor de RWIN óptimo para todo, el valor que se suele aconsejar es el mínimo posible para que una descarga vaya al máximo de tu línea. Si se usa un valor de RWIN muy alto también puede ser contraproducente, porque se satura mucho más el canal de bajada, sube la latencia, la velocidad de transferencia se hace menor y la navegación mientras se está descargando más incómoda. Aquí daré unos cuantos valores como guía.

Para saber a qué velocidad deberíais bajar con vuestra velocidad de sincronización, usad la calculadora de descarga (versión java) gracias MBKiller por la programación y diseño.

Para cambiar el RWIN, simplemente bajad este programa (freeware, de la conocida [dslreports.com]), id a esta página y descargad DRTCP021.exe a donde querais. Ejecutadlo y solo hay que especificar 2 valores, el resto lo dejais como default:

  • Tcp Receive Window: aquí se especifica el valor de RWIN deseado.

Unos cuantos como referencia (ajustados a una latencia máxima de 300ms):

NOTA: Fijaos en la velocidad de sincronización de vuestro modem/router para ajustar estos valores.

Valor RWIN para cada velocidad de conexión
Velocidad (en Mbps) RWIN
1 33580
2 67160
3 100740
4 132860
6 198560
8 264260
10 322660
12 388360
15 484720
>=18 581080
  • Window Scaling: Seleccionar Yes

El resto dejadlo en Default, le dais a 'Save', cerráis el programa y reiniciáis Windows. Así de fácil. Probad ahora alguna descarga, debería ir mucho mejor que antes.

Podéis comprobar que los cambios han sido realizados con el analizador de Speedguide, ahí os mostrará el RWIN actual para vuestra configuración.

Qué hacer si DrTCP no funciona

Algunos usuarios cuentan que no es posible usar el DrTCP con el SP2 de Windows XP instalado. Si es tu caso, habrá que usar entonces la utilidad de speedguide (TCP Optimizer), la podeis bajar de aquí:

http://www.speedguide.net/downloads.php

Se recomienda especificar manualmente el valor de RWIN ya que por defecto el TCP Optimizer ajusta unos valores demasiado elevados.

Para comprobar si ha surgido efecto el cambio de RWIN recordad la dirección del analizador:

http://speedguide.net:8080

Gracias a Kalimist y Ximin por los links y sugerencias.


Un test de velocidad

Para medir la velocidad se recomienda la siguiente utilidad:

TPTEST

Es un programa bastante flexible, el "Standard test" suele ser suficiente en la mayoría de los casos.

De los test por web, uno de los más fiables es Speedtest.

De todas formas lo mejor es descargar de servidores "grandes", como isos de linux y cosas de ese estilo. Por razones de ancho de banda no linkearé aquí ningún servidor.

Mi descarga va bien, pero mi subida fatal!

Hay que ajustar en send window, también llamado sndbuf o send buffer, entre otros nombres.

El defaultsendwindow es lo mismo que el rwin, pero para el envío. Ahora con 512k de subida que tenemos en muchas conexiones, o incluso más, el swin que trae Windows por defecto no es suficiente para enviar a alguien a tope con una única conexión. Quizá lo habréis notado con el mIRC por ejemplo, que no mandáis a más de 20-30k/s un único archivo. Aunque la otra persona tenga un rwin alto, si vuestro swin es bajo irá lento porque el más bajo de los dos es el valor limitante. He creado dos .reg para corregir esto con un valor más adecuado de swin con el que se puede mandar bien al máximo con una única conexión.

Los archivos son estos: [1] para ADSL 6mb/512 y [2] para ADSL hasta 20 megas.

Ejecutar y reiniciar. Lo podeis editar y ver lo que hace por si no os fiais. Añade un solo valor al registro. Para "desinstalarlo", se borra la clave "Parameters" y listo.

Esto solo afecta a programas que usen el swin por defecto de windows. Los servidores normalmente, como el serv-u de ftp, dejan elegir este valor en la configuración, y el azureus por ejemplo también. Pero simplemente con este .reg ya sobra. Recordad que solo es para llegar al máximo con una única conexión así que no mejorará la subida de los p2p.

MTU/MSS PPPoE/PPPoA

Si usas PPPoE el valor de MTU óptimo es 1492
Si usas PPPoA el valor óptimo de MTU es 1478.