В Массачусетском технологическом институте (MIT) установили, что многие алгоритмы, разработанные для контроля задержек в компьютерных сетях, могут «поступать весьма несправедливо»: предоставлять некоторым пользователям неограниченный трафик без задержек, а другим — ровно наоборот. Так бывает: и, как выяснилось, сделать с этим ничего нельзя.
Гаджеты, отправляющие данные через интернет, разбивают их на более мелкие пакеты, а затем используют специальные алгоритмы для определения скорости отправки этих пакетов. За последнее десятилетие было разработано несколько алгоритмов управления перегрузкой, направленных на достижение высокой скорости передачи данных. Некоторые из них, такие как алгоритм Google BBR, в настоящее время широко используются многими веб-сайтами и приложениями.
Специалист по информатике MIT Венкат Арун вместе с коллегами разработал математическую модель предсказания работы таких систем. И обнаружил, что алгоритмы управления перегрузкой вовсе не исключают сценарий, когда некоторые пользователи (по меньшей мере, один) столкнутся с серьезной задержкой трафика. Слишком быстрая отправка пакетов может привести к перегрузке сети, что приведет к потере пакетов, которые придется отправлять заново, что и приведет к задержкам.
Кроме того, существует такое явление, как джиттер — это разница в задержке полученных пакетов. На стороне отправителя пакеты отправляются в непрерывном потоке с равномерно разнесенными пакетами. В результате перегруженности сети, некорректной организации очереди или ошибок конфигурации время задержки для каждого пакета может меняться. И задержку, и джиттер необходимо контролировать и минимизировать, чтобы поддерживать интерактивный трафик в реальном времени.
Это сбивает с толку системы управления перегрузкой, из-за чего они могут по-разному оценивать задержку и отправлять пакеты с разной скоростью. А в некоторых случаях такие процессы приводят либо к серьезной задержке для отдельных пользователей, либо к полному отключению.
Венкат Арун вместе с коллегами проанализировали, могут ли различные алгоритмы избежать таких ситуаций, а также смоделировали различные сценарии действий алгоритмов. И пришли к выводу, что всегда может иметь место сценарий, когда кто-то получает всю пропускную способность трафика, а хотя бы один юзер не получает почти ничего. Сам факт, что этот баг в широко используемых алгоритмах так долго оставался неизвестным, вероятно, связан с тем, что выявить его можно было только путем эмпирического тестирования.
Арун отмечает, что это исследование может найти применение помимо анализа перегрузки сети. «В настоящее время мы используем наш метод моделирования компьютерных систем, чтобы рассуждать о других алгоритмах, распределяющих ресурсы в компьютерных системах», — говорит он. «Цель состоит в том, чтобы помочь создавать системы с предсказуемой производительностью, поскольку мы полагаемся на компьютеры для решения все более важных задач. Например, жизнь может зависеть от принятия своевременных решений беспилотными автомобилями».