Linux IP Stack tuning guide

En general Linux ha mejorado mucho en la configuración por defecto de la pila IP, sin embargo en redes de alto tráfico (los 10 Gbs son cada vez más habituales) es posible que necesitemos personalizarla algo, para mejorar el rendimiento.

La parametrización de la pila ip en Linux se hace en el fichero /etc/sysctl.conf y su contenido para una Centos 6.2 recién instalada es:

# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536

# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

¿Qué podemos mejorar aquí?

cuentarevoluciones

 

 

 

 

 

Parámetros net.core.wmem_max y net.core.rmem_max que por defecto tienen un valor de 128KB y aunque este parámetro es adecuado en redes con latencia baja si no es nuestro caso puede que necesitemos ampliarlos

net.core.wmem_max=12582912
net.core.rmem_max=12582912

también sera necesario fijar los tamaños iniciales, mínimos y máximos

net.ipv4.tcp_rmem= 10240 87380 12582912
net.ipv4.tcp_wmem= 10240 87380 12582912

habilitar  window_scaling

net.ipv4.tcp_window_scaling = 1

habilitar timestamp conforme a RFC1323

net.ipv4.tcp_timestamps = 1

número máximo de paquetes encolados para proceso

net.core.netdev_max_backlog = 300000

net.core.somaxconn = 3000000
net.ipv4.tcp_max_tw_buckets = 1440000
¿Son estos parámetros validos para todos los escenarios?

No, cada escenario es diferente y deberemos hacer pruebas hasta conseguir la configuración óptima para todos los elementos de la red.

Recordad que los cambios deben realizarse de uno en uno y comprobando en cada uno de ellos su efecto positivo o negativo.

Se pueden hacer algunas cosas más, pero eso lo dejamos para una segunda entrega :-).

Referencias:

http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.