Сетевой планировщик , также называемый планировщиком пакетов , дисциплиной очередей ( qdisc ) или алгоритмом очередей , является арбитром на узле в сети связи с коммутацией пакетов . Он управляет последовательностью сетевых пакетов в очередях передачи и приема стека протоколов и контроллера сетевого интерфейса . Существует несколько сетевых планировщиков, доступных для различных операционных систем , которые реализуют многие из существующих алгоритмов сетевого планирования .
Логика сетевого планировщика решает, какой сетевой пакет пересылать следующим. Сетевой планировщик связан с системой очередей, временно сохраняя сетевые пакеты до тех пор, пока они не будут переданы. Системы могут иметь одну или несколько очередей, в этом случае каждая может содержать пакеты одного потока , классификации или приоритета.
В некоторых случаях может быть невозможно запланировать все передачи в рамках ограничений системы. В этих случаях сетевой планировщик отвечает за принятие решения о том, какой трафик пересылать, а какой отбрасывать .
Планировщик сети может нести ответственность за реализацию конкретных инициатив по управлению сетевым трафиком . Управление сетевым трафиком — это обобщающий термин для всех мер, направленных на снижение перегрузки сети , задержек и потерь пакетов. В частности, активное управление очередями (AQM) — это выборочное отбрасывание поставленных в очередь сетевых пакетов для достижения более масштабной цели предотвращения чрезмерной перегрузки сети. Планировщик должен выбирать, какие пакеты отбрасывать. Формирование трафика сглаживает требования к пропускной способности потоков трафика, задерживая пакеты передачи, когда они ставятся в очередь в пакетах. Планировщик определяет время для передаваемых пакетов. Качество обслуживания (QoS) — это приоритезация трафика на основе класса обслуживания ( дифференцированные услуги ) или зарезервированного соединения ( интегрированные услуги ).
Со временем было разработано много дисциплин очередей в сети. Каждая из них обеспечивает определенное переупорядочивание или отбрасывание сетевых пакетов внутри различных буферов передачи или приема . [1] Дисциплины очередей обычно используются как попытки компенсировать различные сетевые условия, такие как уменьшение задержки для определенных классов сетевых пакетов, и обычно используются как часть мер QoS. [2] [3] [4]
Классовые дисциплины очередей позволяют создавать классы, которые работают как ветви на дереве. Затем можно задать правила для фильтрации пакетов в каждый класс. Каждый класс может сам назначить другую классовую или бесклассовую дисциплину очередей. Бесклассовые дисциплины очередей не позволяют добавлять к ним больше дисциплин очередей. [5]
Примеры алгоритмов, подходящих для управления сетевым трафиком, включают:
Алгоритм | Акроним | Тип | Поддержка оборудования |
---|---|---|---|
Алгоритм общего расчета скорости передачи ячеек | GCRA | ||
CHOose и Kill для неотвечающих потоков | Душить | Бесклассовый | |
Управляемая задержка | КоДел | Бесклассовый | |
Общие приложения поддерживаются в улучшенном состоянии [6] | ТОРТ | ||
Самый ранний TxTime First | ЕФО | Бесклассовый | Да |
Первый пришел, первый ушел | ФИФО | Бесклассовый | |
Справедливая очередь | FQ | Бесклассовый | |
Справедливая очередь с контролируемой задержкой | FQ-CoDel | Бесклассовый | |
Очередь потока с пропорционально-интегральным контроллером Enhanced | FQ-ПИЩ | Бесклассовый | |
Обобщенное случайное раннее обнаружение | ГРЭД | Бесклассовый | |
Фильтр «Мощный удар» [7] | ХХФ | Бесклассовый | |
Приоритет многоочередности | MQ-ПРИО | Бесклассовый | Да |
Многоочередность | МУЛЬТИК | Бесклассовый | Да |
Сетевой эмулятор [8] | НЕТЕМ | Бесклассовый | |
Пропорционально-интегральный регулятор - улучшенный [9] | ПИРОГ | Бесклассовый | |
Раннее случайное обнаружение | КРАСНЫЙ | Бесклассовый | |
Стохастический справедливый синий | СФБ | Бесклассовый | |
Стохастическая справедливость очередей | SFQ | Бесклассовый | |
Фильтр токенов | ТБФ | Бесклассовый | |
Очередь на основе классов | CBQ | Классный | |
Формирователь на основе кредита | CBS | Классный | Да |
Дефицитный циклический алгоритм [10] | ДРР | Классный | |
Улучшенный выбор трансмиссии | СТС | Классный | |
Иерархическая кривая справедливого обслуживания | HFSC | Классный | |
Иерархическое ведро токенов [11] | HTB | Классный | |
Приоритет | ПРИО | Классный | |
Быстрая справедливая организация очереди [12] | QFQ | Классный | |
Формирователь приоритетов с учетом времени | ТАПРИО | Классный | Да |
Некоторые из вышеперечисленных функций были реализованы в виде модулей ядра Linux [13] [14] и находятся в свободном доступе .
Bufferbloat — это явление в сетях с коммутацией пакетов, в котором избыточная буферизация пакетов приводит к высокой задержке и изменению задержки пакетов . Bufferbloat можно устранить с помощью сетевого планировщика, который стратегически отбрасывает пакеты, чтобы избежать ненужно большого отставания в буферизации. Примерами служат CoDel , FQ-CoDel и случайное раннее обнаружение .
Этот раздел нуждается в расширении . Вы можете помочь, дополнив его. ( Октябрь 2018 ) |
Планировщик пакетов ядра Linux является неотъемлемой частью сетевого стека ядра Linux и управляет кольцевыми буферами передачи и приема всех сетевых карт.
Планировщик пакетов настраивается с помощью утилиты, называемой 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]
ALTQ — это реализация сетевого планировщика для BSD . Начиная с версии OpenBSD 5.5 ALTQ был заменен планировщиком HFSC.
Планировщики в сетях связи управляют распределением ресурсов, включая приоритезацию пакетов, синхронизацию и распределение ресурсов. Расширенные реализации все чаще используют искусственный интеллект для решения сложностей современных сетевых конфигураций. Например, в сетях без ячеек был внедрен планировщик на основе контролируемой нейронной сети (NN) для эффективной обработки взаимодействий между несколькими радиоустройствами (RU) и пользовательским оборудованием (UE). Такой подход снижает вычислительную сложность, оптимизируя задержку, пропускную способность и распределение ресурсов, что делает его перспективным решением для сетей после 5G. [19]