Введение

Феномен ограничения производительности в компьютерных сетях Блокировка головы линии (HOL-блокировка) в компьютерных сетях - это феномен ограничения производительности, который возникает, когда очередь пакетов задерживается первым пакетом в очереди. Это происходит, например, в входных буферированных сетевых коммутаторах, в непорядочной доставке и в многократных запросах в HTTP-проводах.

Сетевые коммутаторы

Выключатель может состоять из буферных входных портов, конструкции выключателя и буферных выходной портов. Если используются входные буферы "первый вход, первый выход" (FIFO), только самый старый пакет доступен для пересылки. Если самый старый пакет не может быть передан из-за занятого выхода, то более поздние пакеты не могут быть переданы. Выход может быть занят, если есть выходная ссора. Без блокировки HOL, новые прибывшие потенциально могли бы быть перенаправлены вокруг застрявшего старейшего пакета к их соответствующим пунктам назначения. Блокировка HOL может привести к снижению производительности в системах с буферным входом. Это явление ограничивает пропускную способность коммутаторов. Для буферов FIFO, простые модели фиксированных ячеек с равномерно распределенными пунктами назначения, приводят к тому, что пропускная способность ограничивается 58,6% от общей, поскольку количество ссылок становится большим. Один из способов преодолеть это ограничение - использование виртуальных выходной очередей. Только коммутаторы с буферизированной входной системой могут страдать от блокировки HOL. При наличии достаточной внутренней полосы пропускания буферизация входа не требуется; вся буферизация обрабатывается на выходах и блокировка HOL избегается. Эта архитектура без буферизации входа распространена на небольших и средних Ethernet-свичах.

Непоставка по заказу

Непорядочная доставка происходит, когда последовательность пакетов прибывает не в порядке. Это может произойти из-за различных путей, которые проходят пакеты, или из-за пакетов, которые падают и пересылаются. Блокировка HOL может значительно увеличить переустройство пакетов. Надежное передача сообщений через сеть с потерями среди большого количества сверстников является сложной проблемой. В то время как алгоритмы атомной трансляции решают проблему с одной точкой сбоя централизованных серверов, эти алгоритмы вводят проблему блокировки головных линий. Бимодальный алгоритм мультикаста, рандомизированный алгоритм, использующий протокол сплетен, избегает блокировки линий, позволяя получать некоторые сообщения не в порядке.

В HTTP

Одной из форм блокировки HOL в HTTP/1.1 является то, что количество разрешенных параллельных запросов в браузере исчерпано, и последующие запросы должны ждать, пока предыдущие завершатся. HTTP/2 решает эту проблему посредством мультиплексирования запросов, что устраняет блокировку HOL на уровне приложения, но HOL все еще существует на уровне транспорта (TCP).

В надежных потоках байтов

Блокировка на начале линии может возникать в надежных байтовых потоках: если пакеты перестроены или потеряны и их нужно перенаправить (и, таким образом, они прибывают не в порядке), данные из последовательно более поздних частей потока могут быть получены до последовательно более ранних частей потока; однако поздние данные обычно не могут быть использованы до получения более ранних данных, что приводит к задержке сети. Если несколько независимых сообщений более высокого уровня инкапсулированы и мультиплексированы в один надежный байтовый поток, то блокировка на начале строки может привести к обработке полностью полученного сообщения, которое было отправлено позже, чтобы дождаться доставки сообщения, которое было отправлено ранее. Это влияет, например, на HTTP/2, который встраивает несколько пар запросов и ответов в один поток; HTTP/3, который имеет конструкцию встраивания на уровне приложения и использует датграмму, а не транспорт потока, избегает этой проблемы. Ухудшение латентности от блокировки на начале линии зависит от базовой скорости потери пакетов и времени прибытия и возвращения, причем более высокие потери приводят к ухудшению латентности. Без изменения абстракции потока, уменьшение потери пакетов может уменьшить вред от блокировки линии; альтернативным вариантом является реализация надежного потока байтов с использованием коррекции ошибок вперед для отправки избыточных данных, чтобы можно было терпеть определенное количество потерь без возникновения ретрансляций.