Потеря пакетов

Потеря пакетов (англ. packet loss) возникает, когда один или несколько передаваемых по сети пакетов данных не достигают места назначения. Это может привести к заметному снижению производительности и другим сетевым проблемам для всех типов цифровой связи.

Что такое потеря пакетов?

Пакет — это ёмкая единица данных, которую сетевой протокол передает между источником и получателем в сети с коммутацией пакетов. В сетевых пакетах содержатся небольшие объёмы информации, состоящие из данных: источник и адрес назначения, идентификационные номера и протоколы. Вся интернет-активность, от передачи электронных писем до загрузки видеотрафика, нуждается в передаче пакетов данных.

Когда пакеты не доходят до места назначения, конечные пользователи могут заметить сбои, такие как замедление сервиса или потеря сетевого подключения. Для домашней сети замедление или потеря сети могут привести к ухудшению взаимодействия с пользователем, а для бизнеса проблемы с сетью могут повлиять на повседневную работу.

Потеря пакетов обычно вызвана либо ошибками при передаче данных, либо перегрузкой сети. Коэффициент потери пакетов выражается в процентах и рассчитывается как количество потерянных пакетов по сравнению с общим количеством отправленных.

Каковы причины потери пакетов?

Основными причинами потери пакетов могут быть естественные или созданные человеком помехи, недостаточный уровень сигнала в пункте назначения, чрезмерный системный шум, повреждение программного обеспечения или перегруженность сетевых узлов. Часто задействовано более одного из этих факторов.

К дополнительным причинам относятся следующие:

  • Перегрузка сети. Когда сеть работает на максимальных пропускных возможностях, её соединение задерживается настолько, что она начинает отбрасывать входящие пакеты или игнорировать их, чтобы получить резервную копию. В случае сетевой перегрузки приложение может повторно отправлять потерянные пакеты данных.
  • Сетевое оборудование. Устаревшая сетевая инфраструктура может снижать скорость трафика, что приведёт к потере пакетов. Это может произойти с брандмауэрами, маршрутизаторами и модемами. В этом случае оборудование должно быть обновлено или заменено.
  • Программные ошибки. Повреждённое программное обеспечение может влиять на сеть, приводя к неожиданному поведению, включая потерю пакетов.
  • Нарушения безопасности. При атаках типа «отказ в обслуживании» хакеры могут вызвать внезапное и резкое увеличение потери пакетов. Цель хакера — завалить систему большим количеством запросов, чтобы сеть вышла из строя. Ресурсы жертвы станут настолько перегружены, что это затруднит или сделает невозможным доступ к ним для кого-либо ещё. Неожиданная активная потеря пакетов может быть признаком киберугрозы.

В случаях, когда ситуацию исправить невозможно, для минимизации последствий потери пакетов может быть использован метод сокрытия потерянных пакетов (Packet Loss Concealment).

Как потеря пакетов влияет на сеть?

Последствия потери пакетов ощущаются по мере снижения производительности сети и включают в себя:

  • Низкое качество связи. Приложения, работающие в режиме реального времени, испытывают «дрожание» (jitter) и частые пропуски (провалы) в принятом аудио. Потери пакетов даже менее 2% могут быть заметны.
  • Снижение пропускной способности. Некоторые протоколы транспортного уровня интерпретируют потерю как перегрузку. Таким образом протокол регулирует скорость передачи, чтобы избежать предполагаемой перегрузки.
  • Менее безопасная связь. Потеря пакетов позволяет киберпреступникам производить атаки через низкоприоритетные бэкдоры. Таким образом могут быть взломаны приложения VoIP.
  • Потеря зашифрованных данных. Взломанные системы из-за потери пакетов могут позволить киберпреступникам обойти меры безопасности и украсть зашифрованные данные.
  • Отбрасывание пакетов. Пакеты с наихудшими задержками могут отбрасываться.
  • Неполные данные. В худших случаях потеря пакетов может привести к серьёзному искажению принятых данных, искажению изображений, неразборчивой речи или даже полному отсутствию принятого сигнала.

Кроме того, последствия потери пакетов будут отличаться в зависимости от используемого протокола.

Протокол управления передачей данных TCP предназначен для предотвращения потери пакетов. В случае потери пакета TCP может повторно передать его. Вторая передача подбирает потерянные пакеты и восстанавливает поток данных. Однако это не означает, что замедления не происходит. Сеть может работать медленнее, поскольку для повторной передачи данных всё ещё требуется время.

Протокол UDP может использоваться в некоторых сетевых архитектурах, но не может повторно передавать пакеты, поэтому данные необходимо повторно отправлять вручную. Вместо этого соединение по UDP можно использовать для прерывания сетевого соединения при потере пакетов.

В разных сценариях допустимы разные уровни потери пакетов. Например, потеря пакетов менее 2% может привести к искажению VoIP-вызова, тогда как потеря пакетов до 10% может быть приемлемой для небольших загрузок.

Как можно обнаружить потерю пакетов?

Один из простых способов — через протокол TCP, поскольку он предназначен для предотвращения потери пакетов.

Но, если пользователь сам хочет обнаружить потерю пакетов, он может использовать диагностический инструмент, такой как ping test. Сетевая утилита ping, встроенная в каждую операционную систему, отправляет специальные пакеты заданному адресату, а затем следит за тем, правильно ли реагирует дальний узел. Лучший способ измерить потерю пакетов — отправить большое количество пингов адресату и поискать неудачные ответы. Например, если пользователь пингует адресата 50 раз и получает только 49 ответов, он может оценить потерю пакетов примерно в 2%.

Как исправить потерю пакетов?

Не существует универсального решения для минимизации потери пакетов, поскольку она может быть вызвана рядом различных проблем.

Методы минимизации:

  • Полосы пропускания. Если проблема заключается только в перегрузке сети, то увеличение полосы пропускания позволит обрабатывать больше запросов одновременно, избегая дальнейших задержек.
  • Выполнить глубокую проверку пакетов. DPI — это тип фильтрации пакетов, который находит, идентифицирует, классифицирует, перенаправляет или блокирует пакеты с определёнными специфическими данными или кодом. Это может способствовать перегрузке сети, за счёт оптимизации потока сетевого трафика.
  • Обновление аппаратного и программного обеспечения. Старое аппаратное и программное обеспечение может замедлять сетевой трафик и вызывать потерю пакетов. Диспетчер задач Microsoft Windows может помочь сетевому администратору определить программное обеспечение, занимающее слишком большую полосу пропускания. Обновление аппаратного и программного обеспечения также может помочь избежать появления дополнительных ошибок.
  • Использование проводных соединений. По сравнению с беспроводными сетями, в проводных сетях вероятность потери пакетов данных при передаче меньше, поскольку проводное соединение более стабильное (при условии, что проводные кабели Ethernet находятся в рабочем состоянии).
  • Уменьшение препятствий. Например, устройства с функцией Bluetooth могут вызывать статические помехи. Может помочь отключение этих устройств.

Как можно предотвратить потерю пакетов?

Одним из способов предотвратить потерю пакетов или поддерживать её на приемлемом уровне является мониторинг производительности сети. Некоторые инструменты мониторинга включают в себя датчики, которые изолируют и фиксируют потерю пакетов, в то время как другие предлагают инструменты глубокой проверки пакетов. Таким образом, для минимизации потери пакетов, организации нужно регулярно проводить сканирование своих устройств.