Сетевой планировщик - Network scheduler
А сетевой планировщик, также называемый планировщик пакетов, дисциплина в очереди, qdisc или же алгоритм очередности, является арбитр на узел в коммутация пакетов сеть связи. Он управляет последовательностью сетевые пакеты в передаче и приеме очереди из контроллер сетевого интерфейса. Доступно несколько сетевых планировщиков для разных операционные системы, которые реализуют многие из существующих сетей алгоритмы планирования.
Логика сетевого планировщика решает, какой сетевой пакет пересылать следующим. Сетевой планировщик связан с системой очередей, временно сохраняя сетевые пакеты, пока они не будут переданы. Системы могут иметь одну или несколько очередей, и в этом случае каждая может содержать пакеты одного поток, классификация или приоритет.
В некоторых случаях невозможно запланировать все передачи в рамках ограничений системы. В этих случаях сетевой планировщик отвечает за решение, какой трафик пересылать и что получать. упавший.
Терминология и обязанности
Сетевой планировщик может нести ответственность за реализацию конкретных контроль сетевого трафика инициативы. Контроль сетевого трафика - это общий термин для всех мер, направленных на уменьшение перегрузки, задержки и потери пакетов. Конкретно, активное управление очередью (AQM) - это выборочное отбрасывание сетевых пакетов в очереди для достижения более широкой цели предотвращения чрезмерной перегрузки сети. Планировщик должен выбрать, какие пакеты отбрасывать. Формирование трафика сглаживает требования к полосе пропускания потоков трафика, задерживая пакеты передачи, когда они помещаются в очередь пакетами. Планировщик определяет время для передаваемых пакетов. качество обслуживания (QoS) - это приоритезация трафика на основе класса обслуживания (Дифференцированные услуги ) или зарезервированное соединение (Комплексные услуги ).
Алгоритмы
С течением времени было разработано множество дисциплин сетевого очередей. Каждый из них обеспечивает конкретное переупорядочивание или отбрасывание сетевых пакетов внутри различных передаваемых или принимаемых буферы.[1][2]Дисциплины организации очередей обычно используются как попытки компенсировать различные сетевые условия, такие как уменьшение задержка для определенных классов сетевых пакетов и обычно используются как часть мер QoS.[3][4][5]
Примеры алгоритмов, подходящих для управления сетевым трафиком, включают:
- AVQ (адаптивная виртуальная очередь )[6]
- CBQ (организация очереди на основе классов ) дисциплина
- CHOKe (CHOose и Keep для реагирующих потоков, CHOose и Kill для неотзывчивых потоков) - это вариант RED
- CoDel (контролируемая задержка) и очередь ярмарки / потока CoDel
- ТОРТ (Common Applications Kept Enhanced), реализованный в ядре Linux[7]
- Справедливая организация очереди на основе кредита
- СРБ (круговая система с дефицитом ) и DWRR, реализация, например, написано Патриком Макхарди для Ядро Linux[8] и опубликовано под Стандартная общественная лицензия GNU.
- FaQ (FavourQueue)[9]
- FQ-PIE (Расширенный пропорциональный интегральный контроллер очереди потока)
- GCRA (общий алгоритм скорости передачи ячеек )
- HFF (тяжелый фильтр )[10]
- HFSC (иерархическая кривая справедливого обслуживания )
- HTB (иерархическая корзина токенов )[11]
- QFQ (быстрая честная очередь )[12]
- FQ (честная очередь ) и WFQ (взвешенная справедливая очередь )
- FIFO (первым пришел-первым вышел )
- pkt_sched: fq: планировщик пакетов справедливой очереди [13]
- Сетевой эмулятор NETEM[14]
- ПИРОГ (улучшенный пропорциональный интегральный регулятор )[15]
- КРАСНЫЙ (случайное раннее обнаружение )
- RR (по-круговой ) и WRR (взвешенный круговой алгоритм )
- SFB (стохастический светлый синий ), а также RSFB (устойчивый SFB)
- SFQ (очередность стохастической справедливости)[16]
- TBF (фильтр корзины токенов )[17]
- TEQL (тривиальный эквалайзер ссылок )
Некоторые из вышеперечисленных реализованы как Модули ядра Linux[18] и есть свободно доступны.
Bufferbloat
Bufferbloat это явление в сетях с коммутацией пакетов, в котором избыток буферизация пакетов вызывает высокий задержка и изменение задержки пакета. Bufferbloat может быть адресован сетевому планировщику, который стратегически отбрасывает пакеты, чтобы избежать излишне большого объема невыполненной буферизации. Примеры включают CoDel и Случайное раннее обнаружение.
Реализации
Эта секция нуждается в расширении. Вы можете помочь добавляя к этому. (Октябрь 2018 г.) |
Ядро 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.
Смотрите также
- Перегрузка сети
- Очередь (абстрактный тип данных)
- Теория массового обслуживания
- Статистическое мультиплексирование с временным разделением
- Формирование трафика
- Классификация трафика
- Тип сервиса
Примечания
- ^ Общий размер всех буферов был предметом критики со стороны Bufferbloat проект, который предоставил частичное решение с CoDel, которое в основном было протестировано в OpenWrt.
Рекомендации
- ^ «HOWTO по контролю трафика: бесклассовые правила организации очередей (qdiscs)». tldp.org. Получено 24 ноября, 2013.
- ^ Сараванан Радхакришнан (30 сентября 1999 г.). «Поддержка QoS в Linux: правила организации очередей». qos.ittc.ku.edu. Получено 18 марта, 2014.
- ^ "Traffic Control HOWTO: Компоненты Linux Traffic Control". tldp.org. Получено 24 ноября, 2013.
- ^ "Traffic Control HOWTO: Традиционные элементы управления трафиком". tldp.org. Получено 24 ноября, 2013.
- ^ «Дисциплины организации очереди: порядок передачи и отбрасывания пакетов» (PDF). tau.ac.il. 25 октября 2006 г.. Получено 18 марта, 2014.
- ^ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.4477&rep=rep1&type=pdf
- ^ "Пусть запускают ТОРТ". LWN.net.
- ^ "Модуль сетевого планировщика ядра DRR Linux". kernel.org. Получено 2013-09-07.
- ^ «FavorQueue: управление активной очередью без параметров для повышения производительности TCP-трафика» (PDF).
- ^ "Фильтр тяжелых ударов qdisc". kernel.org.
- ^ "Модуль сетевого планировщика ядра HTB Linux". kernel.org. Получено 2013-09-07.
- ^ "Модуль сетевого планировщика ядра QFQ Linux". kernel.org. Получено 2013-09-07.
- ^ "Планировщик пакетов Fair Queue, предназначенный для ядра Linux 3.12".
- ^ «Сетевой эмулятор ядра Linux, модуль сетевого планировщика». kernel.org. Получено 2013-09-07.
- ^ «Пропорционально-интегральный регулятор Enhanced (PIE)». kernel.org.
- ^ "Модуль сетевого планировщика ядра SFQ Linux". kernel.org. Получено 2013-09-07.
- ^ "Модуль сетевого планировщика ядра TBF Linux". kernel.org. Получено 2013-09-07.
- ^ "Сетевой планировщик ядра Linux". kernel.org. 2012-12-26. Получено 2013-09-07.
- ^ "Linux Advanced Routing and Traffic Control HOWTO, раздел 9.2.1. Pfifo_fast". lartc.org. 2012-05-19. Получено 2014-09-19.
- ^ "systemd System and Service Manager: файл NEWS". freedesktop.org. 2015-05-22. Получено 2015-06-09.
- ^ «Ядро Linux 4.1, раздел 11. Сеть». kernelnewbies.org. 2015-06-21.
- ^ «Справочное руководство по BPF и XDP». Веб-сайт документации Cilium.