stringtranslate.com

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

Пакеты выстраиваются в очередь в структуре данных FIFO (первым пришел, первым ушел).

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

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

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

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

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

Алгоритмы

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

Классовые дисциплины очередей позволяют создавать классы, которые работают как ветви на дереве. Затем можно задать правила для фильтрации пакетов в каждый класс. Каждый класс может сам назначить другую классовую или бесклассовую дисциплину очередей. Бесклассовые дисциплины очередей не позволяют добавлять к ним больше дисциплин очередей. [5]

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

Некоторые из вышеперечисленных модулей были реализованы как модули ядра Linux [13] [14] и находятся в свободном доступе .

Раздувание буфера

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

Реализации

ядро Linux

Планировщик пакетов ядра Linux является частью сетевого стека вместе с netfilter , nftables и Berkeley Packet Filter .

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

Планировщик пакетов настраивается с помощью утилиты, называемой tc(сокращение от traffic control ). В качестве дисциплины очередей по умолчанию планировщик пакетов использует реализацию FIFO, называемую pfifo_fast , [15] хотя systemd с версии 217 изменяет дисциплину очередей по умолчанию на fq_codel. [16]

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

Фильтры Berkeley Packet Filter могут быть присоединены к классификаторам планировщика пакетов. Функциональность eBPF, представленная в версии 4.1 ядра Linux в 2015 году, расширяет классические программируемые классификаторы BPF до eBPF. [17] Их можно скомпилировать с помощью бэкэнда LLVM eBPF и загрузить в работающее ядро ​​с помощью tcутилиты. [18]

BSD и OpenBSD

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

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

Примечания

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

Ссылки

  1. ^ "Traffic Control HOWTO: Classless Queuing Disciplines (qdiscs)". tldp.org . Получено 24 ноября 2013 г. .
  2. ^ "Traffic Control HOWTO: Компоненты управления трафиком Linux". tldp.org . Получено 24 ноября 2013 г. .
  3. ^ "HOWTO по управлению дорожным движением: Традиционные элементы управления дорожным движением". tldp.org . Получено 24 ноября 2013 г. .
  4. ^ "Дисциплины очередей: порядок передачи и отбрасывания пакетов" (PDF) . tau.ac.il . 25 октября 2006 г. . Получено 18 марта 2014 г. .
  5. ^ «Расширенный контроль трафика — ArchWiki» . wiki.archlinux.org . Проверено 11 сентября 2023 г.
  6. ^ "Пусть управляют ТОРТОМ". LWN.net .
  7. ^ "Мощный фильтр qdisc". kernel.org .
  8. ^ "Модуль сетевого планировщика ядра Linux для сетевого эмулятора". kernel.org . Получено 2013-09-07 .
  9. ^ "Пропорционально-интегральный регулятор Enhanced (PIE)". kernel.org .
  10. ^ "Модуль сетевого планировщика ядра DRR Linux". kernel.org . Получено 2013-09-07 .
  11. ^ "HTB Linux kernel network scheduler module". kernel.org . Получено 2013-09-07 .
  12. ^ "Модуль сетевого планировщика ядра QFQ Linux". kernel.org . Получено 2013-09-07 .
  13. ^ "Сетевой планировщик ядра Linux". kernel.org . 2012-12-26 . Получено 2013-09-07 .
  14. ^ "tc(8) - Страница руководства Linux". man7.org . Получено 2023-09-11 .
  15. ^ "Linux Advanced Routing and Traffic Control HOWTO, Раздел 9.2.1. pfifo_fast". lartc.org . 2012-05-19 . Получено 2014-09-19 .
  16. ^ "Systemd System and Service Manager: NEWS file". freedesktop.org . 2015-05-22 . Получено 2015-06-09 .
  17. ^ "Ядро Linux 4.1, Раздел 11. Сеть". kernelnewbies.org . 2015-06-21.
  18. ^ "Справочное руководство по BPF и XDP". Веб-сайт документации Cilium .