Введение
Передаваемые пакеты, не достигающие места назначения
Потеря пакетов происходит, когда один или несколько пакетов данных, передаваемых по компьютерной сети, не достигают своего адресата. Потеря пакетов может быть вызвана ошибками при передаче данных, чаще всего в беспроводных сетях, или перегрузкой сети. Потеря пакетов измеряется в процентах от общего числа отправленных пакетов. Протокол управления передачей (TCP) обнаруживает потерю пакетов и выполняет повторную передачу, чтобы обеспечить надежную доставку сообщений. Потеря пакетов в TCP-соединении также используется для предотвращения перегрузки, что приводит к намеренному снижению пропускной способности соединения. В приложениях, работающих в реальном времени, таких как потоковое видео или онлайн-игры, потеря пакетов может негативно сказаться на качестве пользовательского опыта (QoE).
Причины
Интернет-протокол (IP) разработан в соответствии с принципом «от конца к концу» как сервис доставки, основанный на принципе максимальных усилий, с целью максимально упростить логику, которую должны реализовывать маршрутизаторы. Если бы сеть самостоятельно обеспечивала надежную доставку, это потребовало бы инфраструктуры хранения и пересылки, где каждый маршрутизатор выделял бы значительный объем памяти для пакетов, ожидая подтверждения их правильного получения следующим узлом. Надежная сеть не смогла бы поддерживать гарантии доставки в случае отказа маршрутизатора. Кроме того, надежность не требуется для всех приложений. Например, при прямой трансляции потокового мультимедиа важнее быстро доставлять актуальные пакеты, чем гарантировать доставку устаревших. Приложение или пользователь также могут решить повторить операцию, если она занимает слишком много времени, в этом случае к нагрузке на доставку исходного набора пакетов будет добавлен еще один набор. Такая сеть также может потребовать протокол командного управления для управления перегрузками, что еще больше усложнит ее. Чтобы избежать всех этих проблем, Интернет-протокол позволяет маршрутизаторам просто отбрасывать пакеты, если маршрутизатор или сегмент сети слишком загружены для своевременной передачи данных. Это не идеально для быстрой и эффективной передачи данных и не должно происходить в сети, не испытывающей перегрузок. Отбрасывание пакетов служит неявным сигналом о перегрузке сети и может побудить отправителей уменьшить используемую пропускную способность или попытаться найти альтернативный маршрут. Например, используя потерю пакетов в качестве обратной связи для обнаружения перегрузки, протокол управления передачей (TCP) разработан таким образом, что при чрезмерной потере пакетов отправитель снижает скорость передачи и прекращает перегружать узкое место данными.
Перегрузка сети
Перегрузка сети является причиной потери пакетов, которая может затронуть все типы сетей. Когда контент поступает на определенный маршрутизатор или сетевой сегмент в течение продолжительного времени со скоростью, превышающей пропускную способность, единственным решением остается отбрасывать пакеты или использовать методы принудительного снижения нагрузки в сети для целей оперативного управления.
Эффекты
Потеря пакетов напрямую снижает пропускную способность для конкретного отправителя, так как часть отправленных данных не доходит до адресата и не учитывается при расчете пропускной способности. Потеря пакетов косвенно снижает пропускную способность, поскольку некоторые протоколы транспортного уровня интерпретируют потерю как признак перегрузки и снижают скорость передачи данных, чтобы избежать коллапса сети. В случае необходимости надежной доставки, потеря пакетов увеличивает задержку из-за дополнительного времени, требуемого для повторной передачи. При отсутствии повторной передачи, пакеты с наибольшей задержкой могут быть отброшены в первую очередь (в зависимости от используемого алгоритма управления очередью), что в итоге может привести к снижению общей задержки.
Измерение
Потеря пакетов может измеряться как процент потерянных кадров, определяемый как отношение количества кадров, которые должны были быть переданы сетью, но не были, к общему количеству кадров.
Допустимые потери пакетов
Потеря пакетов тесно связана с вопросами качества обслуживания. Допустимый уровень потери пакетов зависит от типа передаваемых данных. Например, один эксперт отметил, что для голосового трафика по IP "[п]отеря одного-двух пакетов время от времени не повлияет на качество связи. Потери в диапазоне от 5% до 10% от общего потока пакетов существенно ухудшат качество". Другой оценил потерю менее 1% пакетов как "хорошую" для потоковой передачи аудио или видео, а 1–2,5% – как "приемлемую".
Диагноз
Потеря пакетов обнаруживается надежными протоколами, такими как TCP. Надежные протоколы автоматически реагируют на потерю пакетов, поэтому, когда сетевому администратору или другому специалисту необходимо обнаружить и диагностировать потерю пакетов, они обычно используют информацию о состоянии сетевого оборудования или специализированные инструменты. Протокол управления интернет-сообщениями (ICMP) предоставляет функцию эхо-запроса, при которой передается специальный пакет, который всегда вызывает ответное сообщение. Инструменты, такие как ping, traceroute, MTR и PathPing, используют этот протокол для визуализации пути следования пакетов и измерения потерь пакетов на каждом участке пути. Многие маршрутизаторы имеют страницы состояния или журналы, где можно найти количество или процент потерянных пакетов за определенный период времени.
Восстановление пакетов для надежной доставки
Согласно принципу "от конца к концу", протокол Интернет оставляет ответственность за восстановление пакетов посредством повторной передачи потерянных пакетов на конечные точки – компьютеры, отправляющие и принимающие данные. Они находятся в наилучшем положении для определения необходимости повторной передачи, поскольку приложение, отправляющее данные, должно знать, лучше ли повторно передавать сообщение целиком или частично, актуальна ли еще необходимость его отправки и как контролировать используемую полосу пропускания с учетом возможной перегрузки сети. Сетевые транспортные протоколы, такие как TCP, предоставляют конечным точкам простой способ обеспечения надежной доставки пакетов, избавляя отдельные приложения от необходимости самостоятельно реализовывать соответствующую логику. В случае потери пакета, получатель запрашивает повторную передачу, либо отправитель автоматически повторно отправляет любые сегменты, не получившие подтверждения. Хотя TCP способен восстанавливаться после потери пакетов, повторная передача недостающих пакетов снижает пропускную способность соединения, поскольку получатели ожидают повторной передачи, а на нее расходуется дополнительная полоса пропускания. В некоторых вариантах TCP, при потере переданного пакета, он будет повторно отправлен вместе со всеми пакетами, отправленными после него. Протоколы, такие как User Datagram Protocol (UDP), не предусматривают восстановление потерянных пакетов. Приложения, использующие UDP, должны самостоятельно реализовывать механизмы обработки потери пакетов, если это необходимо.
Влияние дисциплины в очереди
Существует множество дисциплин управления очередью, используемых для определения, какие пакеты отбрасывать. Большинство базового сетевого оборудования использует FIFO-очередь для пакетов, ожидающих прохождения узкого места, и отбрасывает пакет, если очередь заполнена в момент его получения. Этот тип отбрасывания пакетов называется tail drop (отбрасывание хвоста). Другие механизмы обработки полной очереди включают раннее обнаружение перегрузки (RED) и взвешенное раннее обнаружение перегрузки (WRED). Отбрасывание пакетов нежелательно, так как пакет либо теряется, либо должен быть повторно передан, что может повлиять на пропускную способность в реальном времени. Однако увеличение размера буфера может привести к bufferbloat (раздуванию буфера), что негативно сказывается на задержке и джиттере при возникновении перегрузки. В случаях, когда качество обслуживания ограничивает скорость соединения, например, с использованием алгоритма "утечающего ведра", пакеты могут быть намеренно отброшены для замедления работы определенных сервисов, чтобы обеспечить доступную полосу пропускания для других сервисов с более высоким приоритетом. Поэтому потеря пакетов не обязательно указывает на низкую надежность соединения или наличие узкого места по полосе пропускания.