Сетевой планировщик - Network scheduler

Пакеты в очереди в ФИФО (первым пришел - первым ушел) структура данных.

А сетевой планировщик, также называемый планировщик пакетов, дисциплина в очереди, qdisc или же алгоритм очередности, является арбитр на узел в коммутация пакетов сеть связи. Он управляет последовательностью сетевые пакеты в передаче и приеме очереди из контроллер сетевого интерфейса. Доступно несколько сетевых планировщиков для разных операционные системы, которые реализуют многие из существующих сетей алгоритмы планирования.

Логика сетевого планировщика решает, какой сетевой пакет пересылать следующим. Сетевой планировщик связан с системой очередей, временно сохраняя сетевые пакеты, пока они не будут переданы. Системы могут иметь одну или несколько очередей, и в этом случае каждая может содержать пакеты одного поток, классификация или приоритет.

В некоторых случаях невозможно запланировать все передачи в рамках ограничений системы. В этих случаях сетевой планировщик отвечает за решение, какой трафик пересылать и что получать. упавший.

Терминология и обязанности

Сетевой планировщик может нести ответственность за реализацию конкретных контроль сетевого трафика инициативы. Контроль сетевого трафика - это общий термин для всех мер, направленных на уменьшение перегрузки, задержки и потери пакетов. Конкретно, активное управление очередью (AQM) - это выборочное отбрасывание сетевых пакетов в очереди для достижения более широкой цели предотвращения чрезмерной перегрузки сети. Планировщик должен выбрать, какие пакеты отбрасывать. Формирование трафика сглаживает требования к полосе пропускания потоков трафика, задерживая пакеты передачи, когда они помещаются в очередь пакетами. Планировщик определяет время для передаваемых пакетов. качество обслуживания (QoS) - это приоритезация трафика на основе класса обслуживания (Дифференцированные услуги ) или зарезервированное соединение (Комплексные услуги ).

Алгоритмы

С течением времени было разработано множество дисциплин сетевого очередей. Каждый из них обеспечивает конкретное переупорядочивание или отбрасывание сетевых пакетов внутри различных передаваемых или принимаемых буферы.[1][2]Дисциплины организации очередей обычно используются как попытки компенсировать различные сетевые условия, такие как уменьшение задержка для определенных классов сетевых пакетов и обычно используются как часть мер QoS.[3][4][5]

Примеры алгоритмов, подходящих для управления сетевым трафиком, включают:

Некоторые из вышеперечисленных реализованы как Модули ядра Linux[18] и есть свободно доступны.

Bufferbloat

Bufferbloat это явление в сетях с коммутацией пакетов, в котором избыток буферизация пакетов вызывает высокий задержка и изменение задержки пакета. Bufferbloat может быть адресован сетевому планировщику, который стратегически отбрасывает пакеты, чтобы избежать излишне большого объема невыполненной буферизации. Примеры включают CoDel и Случайное раннее обнаружение.

Реализации

Ядро Linux

Планировщик пакетов ядра Linux является частью сетевого стека вместе с сетевой фильтр, столы, и Пакетный фильтр Беркли.

Планировщик пакетов ядра Linux является неотъемлемой частью сетевого стека ядра Linux и управляет передачей и приемом. кольцевые буферы всех сетевых карт, работая над слой 2 из Модель OSI и обработка Кадры Ethernet, Например.

Планировщик пакетов настраивается с помощью утилиты под названием tc (сокращение от «контроль дорожного движения»). В качестве дисциплины организации очереди по умолчанию планировщик пакетов использует реализацию FIFO, называемую pfifo_fast,[19] несмотря на то что systemd так как его версия 217 изменяет дисциплину очереди по умолчанию на fq_codel.[20]

В ifconfig и ip утилиты позволяют системным администраторам настраивать размеры буфера txqueuelen и rxqueuelen для каждого устройства отдельно по количеству кадров Ethernet независимо от их размера. Сетевой стек ядра Linux содержит несколько других буферов, которые не управляются сетевым планировщиком.[а]

Пакетный фильтр Беркли фильтры могут быть прикреплены к классификаторам планировщика пакетов. В eBPF Функциональность, представленная в версии ядра Linux 4.1 в 2015 году, расширяет классические программируемые классификаторы BPF на eBPF.[21] Их можно скомпилировать с помощью LLVM eBPF и загружается в работающее ядро ​​с помощью tc полезность.[22]

BSD и OpenBSD

ALTQ реализация сетевого планировщика для BSD. Начиная с версии 5.5 OpenBSD ALTQ был заменен планировщиком HFSC.

Смотрите также

Примечания

  1. ^ Общий размер всех буферов был предметом критики со стороны Bufferbloat проект, который предоставил частичное решение с CoDel, которое в основном было протестировано в OpenWrt.

Рекомендации

  1. ^ «HOWTO по контролю трафика: бесклассовые правила организации очередей (qdiscs)». tldp.org. Получено 24 ноября, 2013.
  2. ^ Сараванан Радхакришнан (30 сентября 1999 г.). «Поддержка QoS в Linux: правила организации очередей». qos.ittc.ku.edu. Получено 18 марта, 2014.
  3. ^ "Traffic Control HOWTO: Компоненты Linux Traffic Control". tldp.org. Получено 24 ноября, 2013.
  4. ^ "Traffic Control HOWTO: Традиционные элементы управления трафиком". tldp.org. Получено 24 ноября, 2013.
  5. ^ «Дисциплины организации очереди: порядок передачи и отбрасывания пакетов» (PDF). tau.ac.il. 25 октября 2006 г.. Получено 18 марта, 2014.
  6. ^ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.4477&rep=rep1&type=pdf
  7. ^ "Пусть запускают ТОРТ". LWN.net.
  8. ^ "Модуль сетевого планировщика ядра DRR Linux". kernel.org. Получено 2013-09-07.
  9. ^ «FavorQueue: управление активной очередью без параметров для повышения производительности TCP-трафика» (PDF).
  10. ^ "Фильтр тяжелых ударов qdisc". kernel.org.
  11. ^ "Модуль сетевого планировщика ядра HTB Linux". kernel.org. Получено 2013-09-07.
  12. ^ "Модуль сетевого планировщика ядра QFQ Linux". kernel.org. Получено 2013-09-07.
  13. ^ "Планировщик пакетов Fair Queue, предназначенный для ядра Linux 3.12".
  14. ^ «Сетевой эмулятор ядра Linux, модуль сетевого планировщика». kernel.org. Получено 2013-09-07.
  15. ^ «Пропорционально-интегральный регулятор Enhanced (PIE)». kernel.org.
  16. ^ "Модуль сетевого планировщика ядра SFQ Linux". kernel.org. Получено 2013-09-07.
  17. ^ "Модуль сетевого планировщика ядра TBF Linux". kernel.org. Получено 2013-09-07.
  18. ^ "Сетевой планировщик ядра Linux". kernel.org. 2012-12-26. Получено 2013-09-07.
  19. ^ "Linux Advanced Routing and Traffic Control HOWTO, раздел 9.2.1. Pfifo_fast". lartc.org. 2012-05-19. Получено 2014-09-19.
  20. ^ "systemd System and Service Manager: файл NEWS". freedesktop.org. 2015-05-22. Получено 2015-06-09.
  21. ^ «Ядро Linux 4.1, раздел 11. Сеть». kernelnewbies.org. 2015-06-21.
  22. ^ «Справочное руководство по BPF и XDP». Веб-сайт документации Cilium.