A сетевой планировщик, также называемый планировщиком пакетов, дисциплиной организации очереди, qdisc или алгоритмом организации очереди, является арбитром на узел в сети связи с коммутацией пакетов. Он управляет последовательностью сетевых пакетов в очереди передачи и приема контроллера сетевого интерфейса . Для различных операционных систем доступно несколько сетевых планировщиков, которые реализуют многие из существующих сетевых алгоритмов планирования.
. Логика сетевого планировщика решает, какой сетевой пакет пересылать следующим. Сетевой планировщик связан с системой очередей, временно сохраняя сетевые пакеты, пока они не будут переданы. Системы могут иметь одну или несколько очередей, и в этом случае каждая может содержать пакеты одного потока, классификации или приоритета.
В некоторых случаях невозможно запланировать все передачи в рамках ограничений системы. В этих случаях сетевой планировщик отвечает за принятие решения о том, какой трафик пересылать, а что сбрасывается.
Сетевой планировщик может нести ответственность за реализацию конкретных управление сетевым трафиком инициатив. Контроль сетевого трафика - это общий термин для всех мер, направленных на уменьшение перегрузки, задержки и потери пакетов. В частности, активное управление очередью (AQM) - это выборочное отбрасывание сетевых пакетов в очереди для достижения более широкой цели предотвращения чрезмерной перегрузки сети. Планировщик должен выбрать, какие пакеты отбрасывать. Формирование трафика сглаживает требования к полосе пропускания потоков трафика, задерживая пакеты передачи, когда они ставятся в очередь пакетами. Планировщик определяет время для передаваемых пакетов. качество обслуживания (QoS) - это приоритезация трафика на основе класса обслуживания (дифференцированные услуги ) или зарезервированного соединения (интегрированные услуги ).
С течением времени было разработано множество дисциплин сетевого массового обслуживания. Каждый из них обеспечивает конкретное переупорядочивание или отбрасывание сетевых пакетов внутри различных буферов передачи или приема . Дисциплины организации очередей обычно используются как попытки компенсировать различные сетевые условия, такие как уменьшение задержки для определенных классов сетевых пакетов, и обычно используются как часть мер QoS.
Примеры алгоритмов подходящие для управления сетевым трафиком включают:
Некоторые из вышеперечисленных имеют b Они реализованы как модули ядра Linux и свободно доступны.
Bufferbloat - это явление в сетях с коммутацией пакетов, в котором избыточная буферизация пакетов вызывает высокую задержку и изменение задержки пакетов. Bufferbloat может быть адресован сетевому планировщику, который стратегически отбрасывает пакеты, чтобы избежать излишне большого объема невыполненной буферизации. Примеры включают CoDel и Случайное раннее обнаружение.
Планировщик пакетов ядра Linux является неотъемлемой частью сетевого стека ядра Linux и управляет кольцевыми буферами передачи и приема всех сетевых адаптеров, например, работая на уровне 2 модели OSI и обрабатывая кадры Ethernet.
Планировщик пакетов настраивается с помощью служебной программы tc
(сокращение от «управление трафиком»). В качестве дисциплины организации очереди по умолчанию планировщик пакетов использует реализацию FIFO под названием pfifo_fast, хотя systemd, поскольку ее версия 217 изменяет дисциплину организации очереди по умолчанию на fq_codel.
ifconfig <Утилиты 95>
и ip
позволяют системным администраторам настраивать размеры буфера txqueuelen
и rxqueuelen
для каждого устройства отдельно с точки зрения количества кадров Ethernet независимо от их размера. Сетевой стек ядра Linux содержит несколько других буферов, которые не управляются сетевым планировщиком.
Фильтр пакетов Berkeley может быть присоединен к классификаторам планировщика пакетов. Функциональность eBPF, представленная в версии 4.1 ядра Linux в 2015 году, расширяет классические программируемые классификаторы BPF на eBPF. Их можно скомпилировать с помощью бэкэнда LLVM eBPF и загрузить в работающее ядро с помощью утилиты tc
.
ALTQ - это реализация сетевого планировщика для BSD. Начиная с версии 5.5 OpenBSD ALTQ был заменен планировщиком HFSC.