martes, 10 de febrero de 2009

Optimización de red TCP / IP en linux

Con los siguientes datos es posible mejorar el rendimiento de las redes TCP / IP de linux. Hay que tener en cuenta que me refiero a las funciones disponibles dentro de la instalación del sistema Linux.

Sólo muestro los parámetros que pueden ser usados para optimizar el protocolo TCP / IP. Todas las sugerencias que hago en esta sección son válidas para todo tipo de equipos, la única diferencia es la cantidad de MB de RAM de la máquina.

La mayoría de los cambios funciona bien con equipos con >= 512 MB de RAM y un mínimo de 256 MB de RAM. Por debajo de esta cantidad de memoria es mejor usar la configuración predeterminada.

Este truco hace menor el tiempo para la conexión TCP / IP, consiguiendo más conexiones. Con lo siguiente se reducirá la cantidad de tiempo que la máquina Linux utilizará para cerrar una conexión.
  • net.ipv4.tcp_window_scaling , TCP/IP normalmente permite ventanas de hasta 65535 bytes. En redes muy rápidas esto podría no ser suficiente. Las opciones de escalado permiten ventanas de hasta casi un gigabyte, lo cual es bueno para productos con gran ancho de banda y mucho retraso.
  • net.ipv4.tcp_keepalive_time, Frecuencia con que TCP envía mensajes keepalive cuando se activa keepalive. Por defecto: 2 horas.
  • net.ipv4.tcp_sack, Usar ACK Selectivo que puede servir para comprobar si se están perdiendo paquetes específicos (por tanto, ayuda a una recuperación rápida).
  • net.ipv4.tcp_timestamps, Los registros de tiempo se usan, entre otras cosas, para protegerse contra números de secuencia que se solapen. Es concebible que un enlace de 1 gigabit reencuentre un número de secuencia previo con un valor fuera de línea, porque fue de una generación previa. El registro de tiempo ayudará a reconocer este "paquete antiguo".
Estos cambios se deben hacer en el siguiente archivo de configuración del sistema:

vim /etc/sysctl.conf

# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 15
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off the tcp_window_scaling
net.ipv4.tcp_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0

Recuerda que se debe reiniciar la red

[root@nexus7 /]# /etc/init.d/network restart


Referencias:
http://www.gulic.org/almacen/03_www/