menú

axustes do TCP

todo o que necesitas saber para axustar os parámetros de TCP do teu sistema operativo e acadar así os mellores rendementos


como funciona TCP e que parámetros inflúen na conexión?

cando un cliente se conecta a un servidor tras solicitar o seu enderezo nun navegador ou nun xestor de transferencia de ficheiros, establécese unha conexión entre ambos os dous equipos.

para facer un símil visual, podemos asimilar esta conexión a unha canalización que une o ordenador co servidor. En función do tamaño desa canalización, poderemos facer pasar por ela unha maior cantidade de información.

os parámetros que inflúen no tamaño desa canalización basicamente son dous:
- a velocidade da conexión do cliente
- a velocidade de conexión do servidor

tipicamente o factor limitante do tamaño desta canalización foi o tamaño da canalización do cliente, non obstante hai que ter en conta que con accesos de 100 Mbps no extremo do cliente, os límites do servidor poden chegar a ser un factor limitante, non tanto por a capacidade dos mesmo senón mesmo pola configuración que teñen establecida por exemplo con limitacións de conexión por usuario (como Youtube).

como vemos, o tamaño da canalización é importante xa que nos indica a cantidade de paquetes de información que pode haber en tránsito do servidor ao cliente. Á capacidade desta canalización chámaselle normalmente BDP (bandwith delay product).

cando alcanzamos tamaños de canalización considerables, existe un parámetro do TCP que debemos ter moi en conta para poder aproveitar semellantes fluxos de información.

referímonos á ventá de recepción TCP e imos ver como afecta á velocidade.

a ventá de recepción TCP é a cantidade de datos que podemos recibir do servidor sen ser confirmados (envío de ACK ou xustificante de recepción) por parte do cliente; é dicir, a cantidade de datos que podemos almacenar para ser procesados, unha vez que sexan procesados enviarase o xustificante de recepción correspondente ao servidor e estaremos listos para recibir outra ventá.

o tamaño máximo da ventá de recepción TCP é de 64 K, e esta adoita ser a configuración dos sistemas operativos por defecto.

vexamos cun exemplo que rendemento pode alcanzar un equipo con esta configuración:
Supoñamos unha comunicación na que nós somos un cliente coa nosa nova rede de 100 Mbps, e establecemos unha conexión a un servidor con interface giga, sendo o colo de botella nós mesmos, é dicir, os 100 Mbps.

supoñemos tamén que o servidor ao que nos conectamos está a 50 ms de nós (RTT=50, un paquete de información tarda 50 ms en ir e volver dende o servidor ata noso equipo).

- calculamos o BDP (a capacidade da canalización que se pode establecer):
BDP = RTT * cuelloBotella =0,05 seg * 100, 000, 000 bits/ 1 seg * 1 byte/ 8 bits = =625000 bytes =625 KB (aprox.)
- co noso tamaño de ventá de 64 KB, en cada RTT, é dicir, no tempo que transcorre dende que nos chega o primeiro paquete e nós lle mandamos a confirmación só podemos recibir 64 KB, se seguen chegando paquetes teriamos que descartalos, o que limítanos a 64 KB cada 50 ms co que obtemos unha velocidade máxima duns 10 Mbps.
- conclusión: estamos a aproveitar só o 10% da nosa conexión de 100Mbps. Dos 625 KB que pode haber en tránsito na conexión nós só podemos recibir 64 KB!!

como se mellora o rendemento da ventá TCP?

usando un escalado, existe un parámetro adicional no TCP que nos permite especificar cántos bits de escalado queremos e así conseguir tamaños moito maiores.

se ampliamos o tamaño da ventá, no tempo que tarda en chegar a nosa confirmación ao servidor podemos seguir recibindo paquetes xa que tardaría máis en encherse, deste modo aproveitamos mellor a conexión.

visita a sección de manuais para poder facer as modificacións necesarias que che permitan aproveitar ao máximo o teu acceso a internet de alta velocidade.

como é a configuración por defecto da ventá TCP para Windows XP?

esta configuración depende do sistema operativo co que traballemos, vexamos os casos máis populares. De todos os xeitos, visita a sección de manuais para poder facer as modificacións necesarias que che permitan aproveitar ao máximo o teu acceso a internet de alta velocidade.

Windows XP por defecto ten un tamaño de ventá de 64 KB, e configurada sen escalado, de modo que este tamaño de ventá é fixo e estableceremos conexións sempre cunha ventá de 64 KB.

con este tamaño de ventá non teremos excesivos problemas mentres nos movamos nunha rede de área local (RTT <10 ms), pero cando nos afastamos un pouco o rendemento degrádase exponencialmente.

se accedemos a un servidor moi próximo:
RTT=10 ms: cada 10 ms eu son capaz de recibir 64 KB.
1000 ms/10 ms * 64 KB =6400 KB (uns 50 Mbps aprox.)

se a distancia co servidor é media:
RTT=30 ms: agora recibimos os 64 KB cada 30 ms.
1000 ms/30 ms * 64 KB =2133,3 KB (uns 18 Mbps aprox.)

pero nun caso de grande distancia entón o rendemento a vai moi penalizado:
RTT=100 ms: agora recibimos 64 KB cada 30 ms.
1000 ms /100 ms * 64 KB =640 KB (5 Mbps aprox.)

Windows XP permítenos modificar os parámetros do TCP co fin de adecuar a ventá TCP á velocidade da nosa conexión.

como é a configuración por defecto da ventá TCP para Windows Vista?

esta configuración depende do sistema operativo co que traballemos, vexamos os casos máis populares. De todos os xeitos, visita a sección de manuais para poder facer as modificacións necesarias que che permitan aproveitar ao máximo o teu acceso a internet de alta velocidade:

con Vista temos dúas situacións posibles: autotuning OFF ou autotuning ON.

por defecto, o sistema vén configurado con autotuning OFF.

nestas circunstancias, a situación é parecida á de Windows XP, coa diferenza de que Windows XP nos permite modificar manualmente os tamaños de ventá e búfferes de recepción e Windows Vista non, se eliximos traballar sen autotuning farémolo sempre cunha ventá fixa de 64 KB e en consecuencia estaremos na situación descrita no exemplo anterior, onde a velocidade se degrada ao aumentar a distancia do servidor ao que queremos acceder.

¿e se activamos o autotuning?

o autotuning de Vista en teoría resolve automaticamente o problema das ventás, a idea é que o propio sistema operativo calcularía para cada caso (en función da distancia do servidor ao que nos conectamos) o tamaño ideal e axustaría a conexión. Na práctica ésto non é así.

co autotuning activado, na práctica é imposible obter máis de 32 Mbps.

como é a configuración por defecto da ventá TCP para Windows 7?

esta configuración depende do sistema operativo co que traballemos, vexamos os casos máis populares. De todos os xeitos, visita a sección de manuais para poder facer as modificacións necesarias que che permitan aproveitar ao máximo o teu acceso a internet de alta velocidade.

nas probas realizadas con Windows 7, sen facer ningún cambio e cunha instalación limpa do sistema operativo, acadáronse nas probas unhas velocidades de 95-97 megas. Se aínda así Windows 7 non acada o rendemento esperado, é posible realizar algúns cambios para melloralo.

por defecto a instrución do sistema operativo "Nivel de ajuste automático de ventana de recepción", en casos dun baixo rendemento da conexión poderiamos utilizar o comando "netsh interface tcp set global autotuning level=highly restricted"

este cambio na configuración por defecto do sistema operativo podería afectar negativamente a outros factores da conexión ou do funcionamento do propio sistema operativo, polo que só debe utilizarse se fose imprescindible.

como é a configuración por defecto da ventá TCP para Mac OSX, Leopard?

esta configuración depende do sistema operativo co que traballemos, vexamos os casos máis populares. De todos os xeitos, visita a sección de manuais para poder facer as modificacións necesarias que che permitan aproveitar ao máximo o teu acceso a internet de alta velocidade.

Leopard por defecto ten tamén unha ventá de 64 KB, cun factor de escala de 3 (2 ^ 3), que nos proporciona un tamaño máximo de ventá de 0,5 MB.

para os escenarios de distancias do exemplo de Xp, Leopard na súa configuración por defecto comportaríase do seguinte xeito:

para un servidor próximo:
RTT=10 ms.
1000 ms/10 ms * 500 KB =50.000 KB (uns 50 MB aprox.)

se a distancia é media:
RTT=30 ms.
1000 ms/30 ms * 500 KB =16.666 KB (16 MB aprox.)

con distancias maiores:
RTT=100 ms.
1000 ms/100 ms * 500 KB =5000 KB (uns 40 Mbps aprox.)

neste caso, o sistema operativo permítenos modificar manualmente a ventá TCP e podemos mellorar o rendemento.

por que cando fago as modificacións propostas no sistema operativo ás veces nas descargas a velocidade oscila?

porque ampliar o escalado da ventá non quere dicir que sempre traballamos co tamaño máximo de ventá alcanzable, senón que sempre empezamos a conexión cun tamaño de ventá pequeno, e pouco a pouco se vai ampliando se todo vai ben ata alcanzar o seu valor máximo.

agora ben, se atopamos algún router con conxestión polo camiño, ou algún elemento de rede saturado que nos faga perder moitos paquetes, pode ser que se resetee o tamaño da nosa ventá, xa que é o que fai tcp, se se detecta conxestión inicia outra vez o algoritmo coa ventá máis pequena para intentar que se solucione a conxestión e a ventá se irá agrandando pouco a pouco (igual que cando empezamos a conexión). De modo que se nun momento a velocidade baixa bruscamente e logo sobe outra vez pouco a pouco estamos ante un caso deste tipo.

como inflúe na velocidade a distancia á que se atopa o servidor ao que estou conectado?

a distancia é un aspecto fundamental á hora de establecer unha conexión. Obviamente en canto a aspectos de velocidade non será o mesmo conectarse a un servidor que está preto de nós (e polo tanto os paquetes terán que percorrer un camiño pequeno) que conectarse a un servidor que se atopa lonxe (os paquetes teñen que percorrer un longo camiño ata o seu destino). Se traballamos sempre coa mesma ventá, obviamente veremos como o rendemento é moito peor se nos conectamos a un servidor afastado que a un servidor próximo. Ademais, aparte de que o camiño sexa máis longo, o feito de que sexa máis longo aumenta as posibilidades de toparnos na ruta con algún elemento de rede saturado que nos faga perder eficacia na conexión. A xeito de exemplo, se facemos o test de velocidade contra os servidores de R obteremos un resultado próximo á velocidade da nosa conexión; se o facemos contra un servidor que se atopa en Xapón, non obteremos máis de un 30% da velocidade, e isto non quere dicir que a nosa conexión non está ben, simplemente quere dicir que non a estamos a saber aproveitar cando facemos conexións a sitios afastados; xa que os sistemas operativos por defecto veñen configurados para traballar en redes de área local.

nos manuais de configuración da ventá TCP explícase como mellorar este aspecto.

visita a sección de manuais para poder facer as modificacións necesarias para aproveitar ao máximo o teu acceso a internet.

por que non obteño sempre velocidades próximas aos 100 Mbps?

hai que ter en conta que non todas as páxinas ou sitios de descarga/streaming de Internet están preparados para servirnos ás velocidades que queiramos. Fundamentalmente hai dous aspectos a considerar:

  • que os servidores de Internet ás veces están sobrecargados, con millóns de visitas ao día, de modo que non poden servir os seus contidos a grandes velocidades porque o sitio sería inmanexable.

  • hai moitos sitios que aínda podendo servirnos a estas velocidades simplemente non o fan, por política deciden non servir a máis dunha certa velocidade que poidan considerar axeitada. Os motivos por os cual interéselles facer isto é varios: por aforro económico ou para garantir un funcionamento axeitado a todos os usuarios.