martes, 10 de febrero de 2009

John Nagle

Este señor hizo un algorimo que está documentado en la RFC896 y habla del control de congestión y del problema de los paquetes pequeños en las redes TCP/IP.

Este algoritmo debe activarse en los routers para mejorar en general el rendimiento de las sesiones telnet ya sean entrantes o salientes.

Si no lo usamos TCP va a intentar enviar cada caracter de la sesión en un paquete distinto, generando muchos paquetes de tamaño muy pequeños que pueden terminar congestionando el enlace.

El algoritmo de Nagle en general funciona de la siguiente manera:

  • El primer caracter enviado viaja en un paquete como siempre, pero TCP mantiene en espera los siguientes caracteres hasta que llegue el acuse de recibo del primero.

  • Luego, el segundo paquete (más grande porque contiene varios caracteres) se envía y se retienen los caracteres nuevos en el búfer hasta que llegue el acuse de recibo de este paquete.

  • Se sigue realizando este proceso para enviar varios caracteres en un mismo paquete, logrando que el mismo tenga un tamaño considerable y no ayude a la congestión.


Habilitar este sistema en un router Cisco es toda una odisea, veamos los pasos:
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#service nagle
Router(config)#end
Router#

Otra curiosidad es que en el IOS es que en una sesión de telnet, cada caracter representa una {es:Interrupcion|interrupción}, por lo que un comando show puede forzar la generación de cientos o miles de interrupciones y más aún si corremos algún comando con mucha salida, tal como es el show tech-support que genera tanta información que puede llegar a colgar el router.

Ahora sí, ya no hay excusas para no tener habilitado este servicio en nuestros equipos.

4 comentarios:

Titi dijo...

SSH también trabaja igual con respecto a los paquetes TCP caracter a caracter, no?
De ser así, se puede habilitar Nagle para SSH?

Abrazo Genio!!

Ariel Weher dijo...

No, según tengo entendido SSH no transmite diferente debido principalmente al tema de la encriptación.

Otra cosa a tener en cuenta es que el algoritmo funciona contra los paquetes que van dirigido al control plane del router y no los que son forwardeados.

Saludos

fede dijo...

Hola de buevo Ariel,
podrias hacer un articulo sobre la configuracion de SSH en lugar de Telnet??
Gracias, saludos:D

Ariel Weher dijo...

Me lo agendo y lo preparo.

Saludos y gracias por la sugerencia...

Publicar un comentario