Ir al contenido

Configuración de Buffers de Red para UDP

Una configuración adecuada de los buffers evita la pérdida de datos al enviar o recibir flujos UDP.

Agrega las siguientes configuraciones al archivo /etc/sysctl.conf.

Para adaptadores Ethernet de 1G:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.udp_mem = 8388608 12582912 16777216
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
net.core.wmem_default = 16777216
net.core.rmem_default = 16777216
net.ipv4.tcp_tw_reuse = 1

Para adaptadores Ethernet de 10G:

net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.udp_mem = 8388608 16777216 33554432
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
net.core.wmem_default = 33554432
net.core.rmem_default = 33554432
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_tw_reuse = 1

Para adaptadores Ethernet de 40G:

net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.udp_mem = 8388608 33554432 67108864
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.core.wmem_default = 67108864
net.core.rmem_default = 67108864
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_tw_reuse = 1

Para aplicar los cambios sin reiniciar, ejecuta:

Ventana de terminal
sysctl -p

Verifica los valores actuales de los buffers:

Ventana de terminal
sysctl \
net.core.rmem_default \
net.core.rmem_max \
net.core.wmem_default \
net.core.wmem_max \
net.ipv4.udp_mem \
net.ipv4.tcp_wmem

En servidores con alta carga, configura el buffer de la tarjeta de red para evitar la pérdida de paquetes.

Consulta la configuración actual del buffer:

Ventana de terminal
ethtool -g eth1

Ejemplo de salida:

Ring parameters for eth1:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 256

El tamaño óptimo del buffer depende de tu hardware. Para procesadores multinúcleo de alta frecuencia (más de 3 GHz), normalmente funcionan mejor los valores máximos. Para otros sistemas, un valor promedio es un buen punto de partida.

Para aumentar el tamaño del buffer:

Ventana de terminal
ethtool -G eth1 rx 2048
  • System Tune - script para optimizar la configuración de Linux para streaming