Articulo de referencia

Planificador de red

Paquetes en cola en una estructura de datos FIFO (primero en entrar, primero en salir). Un planificador de red , también llamado planificador de paquetes , disciplina de cola ( ...

Paquetes en cola en una estructura de datos FIFO (primero en entrar, primero en salir).

Un planificador de red , también llamado planificador de paquetes , disciplina de cola ( qdisc ) o algoritmo de cola , es un árbitro en un nodo de una red de comunicación de conmutación de paquetes . Gestiona la secuencia de paquetes de red en las colas de transmisión y recepción de la pila de protocolos y el controlador de interfaz de red . Existen varios planificadores de red disponibles para los diferentes sistemas operativos , que implementan muchos de los algoritmos de planificación de red existentes .

La lógica del planificador de red decide qué paquete de red reenviar a continuación. El planificador de red está asociado a un sistema de colas que almacena temporalmente los paquetes de red hasta su transmisión. Los sistemas pueden tener una o varias colas, en cuyo caso cada una puede contener paquetes de un flujo , clasificación o prioridad específicos.

En algunos casos, puede que no sea posible programar todas las transmisiones dentro de las limitaciones del sistema. En estos casos, el planificador de red es responsable de decidir qué tráfico reenviar y cuál descartar .

Terminología y responsabilidades

Un planificador de red puede tener responsabilidad en la implementación de iniciativas específicas de control de tráfico de red . El control de tráfico de red es un término general que abarca todas las medidas destinadas a reducir la congestión de la red , la latencia y la pérdida de paquetes. Específicamente, la gestión activa de colas (AQM) es el descarte selectivo de paquetes de red en cola para lograr el objetivo más amplio de prevenir la congestión excesiva de la red. El planificador debe elegir qué paquetes descartar. La conformación del tráfico suaviza los requisitos de ancho de banda de los flujos de tráfico retrasando la transmisión de paquetes cuando se encolan en ráfagas. El planificador decide el tiempo para los paquetes transmitidos. La calidad de servicio (QoS) es la priorización del tráfico en función de la clase de servicio ( servicios diferenciados ) o la conexión reservada ( servicios integrados ).

Algoritmos

Con el tiempo, se han desarrollado numerosas disciplinas de encolamiento de red. Cada una de ellas proporciona un reordenamiento o descarte específico de paquetes de red dentro de diversos búferes de transmisión o recepción . [ 1 ] Las disciplinas de encolamiento se utilizan comúnmente para intentar compensar diversas condiciones de red, como la reducción de la latencia para ciertas clases de paquetes de red, y generalmente se utilizan como parte de las medidas de QoS. [ 2 ] [ 3 ] [ 4 ]

Las disciplinas de cola con clases permiten la creación de clases, que funcionan como ramas en un árbol. Se pueden establecer reglas para filtrar los paquetes en cada clase. Cada clase puede tener asignada otra disciplina de cola con o sin clases . Las disciplinas de cola sin clases no permiten añadir más disciplinas de cola. [ 5 ]

Algunos ejemplos de algoritmos adecuados para gestionar el tráfico de red son:

Varios de los anteriores se han implementado como módulos del kernel de Linux [ 13 ] [ 14 ] y están disponibles gratuitamente .

Bufferbloat

El búfer desbordado es un fenómeno en redes de conmutación de paquetes donde el almacenamiento excesivo de paquetes provoca alta latencia y variación en el retardo de los paquetes . El búfer desbordado se puede solucionar mediante un planificador de red que descarte estratégicamente paquetes para evitar una acumulación innecesaria de paquetes en el búfer. Algunos ejemplos son CoDel , FQ-CoDel y la detección temprana aleatoria .

Implementaciones

núcleo de Linux

El planificador de paquetes del kernel de Linux forma parte de la pila de red, junto con netfilter , nftables y Berkeley Packet Filter .

El planificador de paquetes del kernel de Linux es una parte integral de la pila de red del kernel de Linux y administra los búferes circulares de transmisión y recepción de todas las tarjetas de red.

El planificador de paquetes se configura mediante la utilidad llamada tc(abreviatura de control de tráfico ). Como disciplina de cola predeterminada, el planificador de paquetes utiliza una implementación FIFO llamada pfifo_fast , [ 15 ] aunque systemd desde su versión 217 cambia la disciplina de cola predeterminada a fq_codel. [ 16 ]

Las ifconfigutilidades ippermiten a los administradores del sistema configurar los tamaños de búfer txqueuelenpara rxqueuelencada dispositivo por separado en términos de número de tramas Ethernet, independientemente de su tamaño. La pila de red del kernel de Linux contiene varios otros búferes, que no son gestionados por el planificador de red. [ a ]

Los filtros de Berkeley Packet Filter se pueden adjuntar a los clasificadores del planificador de paquetes. La funcionalidad eBPF , introducida por la versión 4.1 del kernel de Linux en 2015, extiende los clasificadores programables BPF clásicos a eBPF. [ 17 ] Estos se pueden compilar utilizando el backend eBPF de LLVM y cargarse en un kernel en ejecución mediante la tcutilidad. [ 18 ]

BSD y OpenBSD

ALTQ es la implementación de un planificador de red para sistemas BSD . A partir de la versión 5.5 de OpenBSD, ALTQ fue reemplazado por el planificador HFSC.

Programación de redes sin celdas

Schedulers in communication networks manage resource allocation, including packet prioritization, timing, and resource distribution. Advanced implementations increasingly leverage artificial intelligence to address the complexities of modern network configurations. For instance, a supervised neural network (NN)-based scheduler has been introduced in cell-free networks to efficiently handle interactions between multiple radio units (RUs) and user equipment (UEs). This approach reduces computational complexity while optimizing latency, throughput, and resource allocation, making it a promising solution for beyond-5G networks.[19]

See also

Notes

  1. The overall size of all buffers has been the point of critique by the Bufferbloat project, which provided a partial solution with CoDel that has been primarily tested in OpenWrt.

References

  1. "Traffic Control HOWTO: Classless Queuing Disciplines (qdiscs)". tldp.org. Archived from the original on February 22, 2014. Retrieved November 24, 2013.
  2. "Traffic Control HOWTO: Components of Linux Traffic Control". tldp.org. Archived from the original on February 18, 2014. Retrieved November 24, 2013.
  3. "Traffic Control HOWTO: Traditional Elements of Traffic Control". tldp.org. Archived from the original on May 27, 2013. Retrieved November 24, 2013.
  4. "Queuing Disciplines: Order of Packet Transmission and Dropping"(PDF). tau.ac.il. October 25, 2006. Archived(PDF) from the original on March 4, 2016. Retrieved March 18, 2014.
  5. "Advanced traffic control - ArchWiki". wiki.archlinux.org. Archived from the original on 2023-09-22. Retrieved 2023-09-11.
  6. "Let them run CAKE". LWN.net. Archived from the original on 2024-11-12. Retrieved 2019-09-03.
  7. "Heavy-Hitter Filter qdisc". kernel.org. Archived from the original on 2017-02-22. Retrieved 2016-07-25.
  8. "Módulo de planificación de red del kernel de Linux emulador de red" . kernel.org . Archivado del original el 22 de febrero de 2017. Consultado el 7 de septiembre de 2013 .
  9. "Controlador Proporcional Integral Mejorado (PIE)" . kernel.org . Archivado del original el 22 de febrero de 2017. Consultado el 25 de julio de 2016 .
  10. "Módulo planificador de red del kernel de Linux DRR" . kernel.org . Archivado del original el 23 de febrero de 2017. Consultado el 7 de septiembre de 2013 .
  11. "Módulo planificador de red del kernel de Linux HTB" . kernel.org . Consultado el 7 de septiembre de 2013 .
  12. "Módulo planificador de red del kernel de Linux QFQ" . kernel.org . Archivado del original el 23 de febrero de 2017. Consultado el 7 de septiembre de 2013 .
  13. "El planificador de red del kernel de Linux" . kernel.org . 26 de diciembre de 2012. Consultado el 7 de septiembre de 2013 .
  14. "tc(8) - Página del manual de Linux" . man7.org . Archivado del original el 7 de septiembre de 2023. Consultado el 11 de septiembre de 2023 .
  15. "Linux Advanced Routing and Traffic Control HOWTO, Sección 9.2.1. pfifo_fast" . lartc.org . 19 de mayo de 2012. Archivado del original el 21 de septiembre de 2014. Consultado el 19 de septiembre de 2014 .
  16. "systemd Administrador de sistemas y servicios: archivo NEWS" . freedesktop.org . 22 de mayo de 2015. Archivado del original el 22 de diciembre de 2014. Consultado el 9 de junio de 2015 .
  17. "Núcleo de Linux 4.1, Sección 11. Redes" . kernelnewbies.org . 21 de junio de 2015. Archivado del original el 16 de octubre de 2015. Consultado el 19 de abril de 2016 .
  18. "Guía de referencia de BPF y XDP" . Sitio web de documentación de Cilium . Archivado del original el 24 de abril de 2018. Consultado el 21 de agosto de 2018 .
  19. Huleihel, Yara; Maman, Gil; Hadad, Zion; Shasha, Eli; Permuter, Haim H. (2025). "Planificador sin celdas basado en datos". Ad Hoc Networks . 169 103738. Elsevier. doi : 10.1016/j.adhoc.2025.103738 .