En Linux 6.8 ya se implementaron los parches que aceleran TCP
La versión del Kernel de Linux 6.7 fue lanzada hace apenas pocas semanas (a inicios de enero) y desde ese entonces los trabajos sobre el desarrollo de Linux 6.8 se pusieron en marcha y actualmente ya se encuentra en su segunda RC y hasta el momento ha experimentado una variedad de mejoras en diferentes áreas, con un enfoque en redes, protocolos principales, BPF, API de controladores, soporte para hardware nuevo y actualizaciones de controladores.
Y entre los cambios más importantes que se han dado a conocer, uno de ellos destaca y es que se han implementado las mejoras que impulsa la pila TCP, lo que resulta en mejoras sustanciales en el rendimiento, especialmente en escenarios que involucran múltiples conexiones TCP paralelas. Estas mejoras han llevado a una aceleración que puede alcanzar hasta el 40%.
La optimización se centró en la reorganización de los campos dentro de las estructuras de la pila de red, como socks, netdev, netns y mibs. Estos ajustes, que se implementaron debido a razones históricas, han permitido una mejor eficiencia en el manejo del caché del procesador. En particular, se minimizó el uso de líneas de caché durante la transferencia de datos y se optimizó el acceso a las variables relevantes.
Actualmente, las estructuras con muchas variables en la pila de redes están organizadas cronológicamente, lógicamente y, a veces, mediante acceso a la línea de caché.
Esta serie de parches intenta reorganizar la pila de redes central para minimizar el consumo de líneas de caché durante la fase de transferencia de datos. Específicamente, analizamos la pila TCP/IP y la velocidad en TCP.
Como resultado de estas revisiones, se ha observado un aumento significativo en la velocidad de TCP, especialmente cuando se trata de manejar un gran número de conexiones TCP simultáneas. Esta mejora es especialmente notable en entornos donde las operaciones de red son intensivas y la gestión eficiente de conexiones TCP es crucial.
De los demás cambios y mejoras que se destacan:
- Adición de introspección basada en netlink para exponer el uso de memoria y estadísticas de reciclaje.
- Refactorización del manejo de SYN-Cookie TCP para futura compatibilidad con eBPF.
- Reducción de la sobrecarga de análisis de encabezados de extensión en GRO.
- Reorganiza los miembros de la estructura de nftables para mantener los datos accedidos por datapath al principio.
- Introducción de soporte para eliminación masiva de entradas de puente MDB y seguimiento de puertos de bloqueo TC.
- Mejoras en el verificador, incluyendo lógica de límites de registro BPF, mejoras en el registro y soporte para argumentos de subprograma BPF globales del usuario.
- Implementación inicial de metadatos de TX para AF_XDP con soporte en controladores mlx5 y stmmac.
- Corrección de errores kCFI en todas las formas de llamadas indirectas BPF.
- Soporte para opciones uid/gid al montar bpffs y extensiones adicionales al verificador.
- Generación automática de documentación de familias Netlink desde especificaciones YAML y correcciones adicionales en descripciones de módulos.
- Prevención de liberación incorrecta de páginas pertenecientes a un pool de páginas.
- Abstracciones en Rust para controladores PHY de red e introducción de soporte para cola y NAPI en la interfaz de netdev Netlink.
- Filtrado de notificaciones para devlink y mejoras en la validación PHY.
- Exposición del valor de compensación de frecuencia fraccional y conversión de controladores antiguos a devoluciones de llamada de eliminación de plataforma que devuelven void.
- Adición de soporte para lectura/escritura de paquetes MMD de PHY.
- Adición de soporte para varios dispositivos Ethernet, incluidos dispositivos Octeon CN10K, Broadcom 5760X P7, Qualcomm SM8550 SoC y PHY Texas Instrument DP83TG720S.
- Introducción de la radio Bluetooth IMC Networks.
- Actualizaciones para NICs de alta velocidad, NICs integradas, conmutadores de centros de datos, conmutadores integrados y PHYs de Ethernet.
- Mejoras y adiciones de soporte para varios controladores WiFi y Bluetooth.
- Eliminación de varios controladores WiFi, incluidos libertas, Atmel at76c50x, HostAP, zd1201, Orinoco, Aviator/Raytheon, Planet WL3501 y controladores USB 802.11b RNDIS.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.