Разработчик iOS-приложения NetDiag+ обнаружил ошибку в механизме измерения bufferbloat. Тест загрузки не создавал реальной нагрузки на сеть, так как игнорировал HTTP-ответы 403 от сервера Cloudflare, ограничивающие объем передачи одним байтом. В результате приложение фиксировало скорость 0,0000008 Мбит/с, но присваивало соединению оценку A+.

Из-за отсутствия нагрузки на входящем канале классификатор ошибочно приписывал всю задержку исходящему трафику. Это делало невозможным определение очереди на стороне провайдера. Ошибка была выявлена при попытке внедрить «Индекс здоровья», который требует точных данных о скорости для оценки качества соединения.

Обновленный алгоритм теперь проверяет HTTP-ответы и считает объем переданных данных через делегат. Загрузка тестируется порциями по 50 МБ, а отдача — по 8 МБ, что позволяет поддерживать очередь заполненной на протяжении всего времени теста. Приложение теперь корректно помечает скорость как неизмеренную, если тест не проходит успешно.

«Индекс здоровья» рассчитывается как взвешенная сумма пяти компонентов, включая джиттер, потери пакетов и задержку под нагрузкой. Система анализирует состояние Wi-Fi, роутера и провайдера, выявляя источник проблем. Индекс работает локально на устройстве без отправки данных на сервер, а веса компонентов открыты для пользователей.

Автор предупреждает, что результаты версий 1.4.5–1.4.8 содержат некорректные данные о загрузке. На очень быстрых линиях ограничением может выступать само устройство или Wi-Fi, поэтому приложение одинаково оценивает все соединения выше 100 Мбит/с. Приложение доступно в App Store, премиум-функции стоят $2,99.