programador de red


De Wikipedia, la enciclopedia libre
  (Redirigido desde programador de red de Linux )
Saltar a navegación Saltar a búsqueda
Paquetes en cola en una estructura de datos FIFO (primero en entrar, primero en salir).

Un programador de red , también llamado programador de paquetes , disciplina de colas ( qdisc ) o algoritmo de colas , es un árbitro en un nodo en una red de comunicación de conmutación de paquetes . Administra 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 . Hay varios programadores de red disponibles para los diferentes sistemas operativos , que implementan muchos de los algoritmos de programación de red existentes .

La lógica del programador de red decide qué paquete de red reenviar a continuación. El programador de red está asociado con un sistema de colas, que almacena los paquetes de red temporalmente hasta que se transmiten. Los sistemas pueden tener colas únicas o múltiples, en cuyo caso cada una puede contener los paquetes de un flujo , clasificación o prioridad.

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

Terminología y responsabilidades

Un programador de red puede tener responsabilidad en la implementación de iniciativas de control de tráfico de red específicas. El control del tráfico de red es un término genérico para todas las medidas destinadas a reducir la congestión , la latencia y la pérdida de paquetes de la red. Específicamente, la gestión activa de colas (AQM) es la eliminación selectiva de paquetes de red en cola para lograr el objetivo más amplio de evitar la congestión excesiva de la red. El programador debe elegir qué paquetes descartar. El modelado del tráfico suaviza los requisitos de ancho de banda de los flujos de tráfico al retrasar los paquetes de transmisión cuando se ponen en cola en ráfagas. El planificador decide el momento de los paquetes transmitidos. calidad de servicio(QoS) es la priorización del tráfico basado en la clase de servicio ( Servicios diferenciados ) o conexión reservada ( Servicios integrados ).

Algoritmos

Con el transcurso del tiempo, se han desarrollado muchas disciplinas de colas de red. Cada uno de estos proporciona un reordenamiento específico o eliminación de paquetes de red dentro de varios búferes de transmisión o recepción . [1] Las disciplinas de cola se usan comúnmente como intentos de compensar varias condiciones de red, como reducir la latencia para ciertas clases de paquetes de red, y generalmente se usan como parte de las medidas de QoS. [2] [3] [4]

Los ejemplos de algoritmos adecuados para administrar el tráfico de red incluyen:

  • Cola justa basada en crédito
  • DRR ( déficit round robin ) y DWRR, implementación, por ejemplo, escrita por Patrick McHardy para el kernel de Linux [7] y publicada bajo la Licencia Pública General GNU .
  • Preguntas más frecuentes (Cola de Favoritos) [8]
  • FQ-PIE (controlador integral proporcional de cola de flujo mejorado)
  • GCRA ( algoritmo de tasa de celda genérico )
  • HFF ( filtro de gran impacto ) [9]
  • HFSC (curva jerárquica de servicio justo )
  • HTB ( cubo de token jerárquico ) [10]
  • QFQ (puesta en cola justa rápida ) [11]
  • FQ ( cola justa ) y WFQ ( cola justa ponderada )
  • FIFO ( primero en entrar, primero en salir )
  • pkt_sched: fq: programador de paquetes de cola justa [12]
  • Emulador de red NETEM [13]
  • PIE ( controlador integral proporcional mejorado ) [14]
  • ROJO ( detección temprana aleatoria )
    • ARED ( detección temprana aleatoria avanzada )
    • GRED ( detección temprana aleatoria generalizada )
    • RRED ( detección temprana aleatoria robusta )
    • WRED ( detección temprana aleatoria ponderada )
  • RR ( round robin ) y WRR ( round robin ponderado )
  • SFB ( azul justo estocástico ) así como RSFB (SFB resiliente)
  • SFQ (cola de equidad estocástica) [15]
  • TBF ( filtro de balde de fichas ) [16]
  • TEQL ( ecualizador de enlace trivial )

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

hincharse

Bufferbloat es un fenómeno en las redes de conmutación de paquetes en las que el exceso de almacenamiento en búfer de los paquetes provoca una alta latencia y una variación en el retraso de los paquetes . Bufferbloat puede ser abordado por un programador de red que descarte paquetes estratégicamente para evitar una acumulación de almacenamiento en búfer innecesariamente alta. Los ejemplos incluyen CoDel , FQ-CoDel y detección temprana aleatoria .

Implementaciones

núcleo de linux

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

El programador de paquetes del kernel de Linux es una parte integral de la pila de red del kernel de Linux y administra los búfer de anillo de transmisión y recepción de todas las NIC, trabajando en la capa 2 del modelo OSI y manejando tramas de Ethernet , por ejemplo.

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

Las utilidades ifconfigy ippermiten a los administradores del sistema configurar los tamaños de búfer txqueueleny rxqueuelenpara cada 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úfer, que no son administrados por el programador de red. [un]

Los filtros de Berkeley Packet Filter se pueden adjuntar a los clasificadores del planificador de paquetes. La funcionalidad eBPF que trajo la versión 4.1 del kernel de Linux en 2015 extiende los clasificadores programables BPF clásicos a eBPF. [20] Estos pueden compilarse usando el backend LLVM eBPF y cargarse en un kernel en ejecución usando la tcutilidad. [21]

BSD y OpenBSD

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

Ver también

  • teoría de colas
  • Multiplexación estadística por división de tiempo
  • Tipo de servicio

notas

  1. ^ El tamaño total de todos los búferes ha sido el punto de crítica del proyecto Bufferbloat , que proporcionó una solución parcial con CoDel que se probó principalmente en OpenWrt .

Referencias

  1. ^ "CÓMO de control de tráfico: Disciplinas de colas sin clase (qdiscs)" . tldp.org . Consultado el 24 de noviembre de 2013 .
  2. ^ "CÓMO de control de tráfico: componentes de control de tráfico de Linux" . tldp.org . Consultado el 24 de noviembre de 2013 .
  3. ^ "CÓMO de control de tráfico: elementos tradicionales de control de tráfico" . tldp.org . Consultado el 24 de noviembre de 2013 .
  4. ^ "Disciplinas de cola: orden de transmisión y caída de paquetes" (PDF) . tau.ac.il . 25 de octubre de 2006 . Consultado el 18 de marzo de 2014 .
  5. ^ "Resumen" . 2002. CiteSeerX 10.1.1.108.4477 .  {{cite journal}}: Citar diario requiere |journal=( ayuda )
  6. ^ "Déjalos ejecutar CAKE" . LWN.net .
  7. ^ "Módulo de programador de red del núcleo Linux DRR" . kernel.org . Consultado el 7 de septiembre de 2013 .
  8. ^ "FavorQueue: una gestión de cola activa sin parámetros para mejorar el rendimiento del tráfico TCP" (PDF) .
  9. ^ "Qdisc de filtro de bateador pesado" . kernel.org .
  10. ^ "Módulo de programador de red del kernel de Linux HTB" . kernel.org . Consultado el 7 de septiembre de 2013 .
  11. ^ "Módulo de programador de red del kernel QFQ Linux" . kernel.org . Consultado el 7 de septiembre de 2013 .
  12. ^ "Programador de paquetes Fair Queue comprometido con el kernel de Linux 3.12" .
  13. ^ "Módulo de programador de red del kernel de Linux del emulador de red" . kernel.org . Consultado el 7 de septiembre de 2013 .
  14. ^ "Controlador integral proporcional mejorado (PIE)" . kernel.org .
  15. ^ "Módulo de programador de red del kernel de Linux SFQ" . kernel.org . Consultado el 7 de septiembre de 2013 .
  16. ^ "Módulo de programador de red del kernel de Linux TBF" . kernel.org . Consultado el 7 de septiembre de 2013 .
  17. ^ "El programador de red del kernel de Linux" . kernel.org . 2012-12-26 . Consultado el 7 de septiembre de 2013 .
  18. ^ "CÓMO de control de tráfico y enrutamiento avanzado de Linux, Sección 9.2.1. pfifo_fast" . lartc.org . 2012-05-19 . Consultado el 19 de septiembre de 2014 .
  19. ^ "Administrador de sistemas y servicios de systemd: archivo de NOTICIAS" . freedesktop.org . 2015-05-22 . Consultado el 9 de junio de 2015 .
  20. ^ "Linux kernel 4.1, Sección 11. Redes" . kernelnewbies.org . 2015-06-21.
  21. ^ "Guía de referencia de BPF y XDP" . Sitio web de documentación de Cilium .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Network_scheduler&oldid=1082827387#Linux_kernel "