Capítulo 8. Redes
Con el tiempo, la pila de redes de Red Hat Enterprise Linux ha sido mejorada con varias funcionalidades de optimización automatizadas. Para la mayoría de las cargas de trabajo, los parámetros de redes autoconfiguradas proporcionan rendimiento optimizado.
En la mayoría de los casos, los problemas de rendimiento de redes son causados por el mal funcionamiento del hardware o por una estructura defectuosa. Dichos casos van más allá de este documento; los problemas de rendimiento y las soluciones que se discuten en este capítulo son útiles para optimizar los sistemas funcionales.
Redes es un subsistema delicado, que consta de diferentes partes con conexiones sensitivas. Esta es la razón por la cual la comunidad de código abierto y Red Hat invierten mucho trabajo en implementar automáticamente formas para optimizar el rendimiento de redes. Como tal, dada la mayoría de cargas de trabajo, usted nunca necesitará reconfigurar las redes para rendimiento.
8.1. Mejoras de rendimiento de redes
Red Hat Enterprise Linux 6.1 proporciona las siguientes mejoras de rendimiento de redes:
Direccionamiento de paquetes recibidos (RPS)
RPS habilita una sola cola de NIC
rx
que tiene su carga de recepción softirq
distribuida entre varias CPU. Esto ayuda a evitar el embotellamiento de tráfico de redes de en una sola cola de hardware de NIC.
Para activar RPS, especifique los nombres de destino de CPU en
/sys/class/net/ethX/queues/rx-N/rps_cpus
, remplace ethX
por el nombre de dispositivo correspondiente de NIC (por ejemplo, eth1
, eth2
) y rx-N
con la cola de recepción del NIC especificado. Así, permitirá a las CPU especificadas en el archivo procesar datos de la cola rx-N
en ethX
. Al especificar las CPU, considere la afinidad de cache [4].
Direccionamiento de flujo recibido
RFS es una extensión de RPS que permite al administrador configurar una tabla hash generada automáticamente cuando las aplicaciones reciben datos y son interrogadas por la pila de redes. Esto determina cuáles aplicaciones están recibiendo cada parte de datos de redes.
Mediante esta información, la pila de redes puede programar la CPU óptima para recibir cada paquete. Para configurar RFS, use los siguientes ajustables:
/proc/sys/net/core/rps_sock_flow_entries
- Este ajustable controla el número máximo de sockets/flujos que el kernel puede dirigir hacia cualquier CPU especificada. Se trata de un sistema amplio y de límite compartido.
/sys/class/net/ethX/colas/rx-N/rps_flow_cnt
- Este ajustable controla el máximo número de sockets/flujos que el kernel puede dirigir para una cola de recibo especificada (
rx-N
) en un NIC (ethX
). Observe que la suma de todos los valores por cola para este ajustable en todos los NIC deben ser igual o menor que los/proc/sys/net/core/rps_sock_flow_entries
.
A diferencia de RPS, RFS le permite tanto a la cola de recibo como a la aplicación compartir la misma CPU al procesar flujos de paquetes. Esto mejora el rendimiento en algunos casos. Sin embargo, dichas mejoras dependen de factores tales como jerarquía de cache, carga de aplicación y similares.
Soporte getsockopt para corrientes finas TCP
Corriente fina o Thin-stream es un término utilizado para caracterizar protocolos de transporte donde las aplicaciones envían datos a una tasa tan baja que los mecanismos de retransmisión de protocolo no se saturan totalmente. Las aplicaciones que usan protocolos de corriente fina suelen transportarse a través de protocolos confiables tales como TCP; en la mayoría de los casos, dichas aplicaciones ofrecen servicios muy sensibles al tiempo (por ejemplo, comercio de acciones, juegos en línea y sistemas de control).
Para los servicios de tiempo sensible, la pérdida de paquetes puede ser devastadora en la calidad de servicios. Para evitar dicha pérdida, la llamada
getsockopt
ha sido mejorada para soportar dos opciones adicionales:
- TCP_THIN_DUPACK
- Este booleano habilita la activación dinámica de retransmisiones después de un dupACK para flujos finos.
- TCP_THIN_LINEAR_TIMEOUTS
- Este booleano habilita la activación dinámica de tiempos de espera para flujos finos.
Ambas opciones son activadas de forma específica por la aplicación. Para obtener mayor información, consulte
file:///usr/share/doc/kernel-doc-version/Documentation/networking/ip-sysctl.txt
. Para obtener mayor información sobre flujos finos, consulte file:///usr/share/doc/kernel-doc-version/Documentation/networking/tcp-thin.txt
.
Soporte de proxy transparente (TProxy)
Ahora el kernel puede manipular sockets IPv4 TCP y UDP no vinculados localmente para soportar proxis transparentes. Para habilitarlo, deberá configurar iptables como corresponde. También deberá activar y configurar la política de ruta correctamente.
Para obtener mayor información sobre proxis transparentes, consulte
file:///usr/share/doc/kernel-doc-versión/Documentation/networking/tproxy.txt
.
[4]
de la cola. Asegurar afinidad de cache entre una CPU y un NIC significa configurarlos para compartir la misma cache L2. Para obtener mayor información, consulte Sección 8.3, “Visión general de recepción de paquetes”.