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

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

Что туннель переписывает до первого байта

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

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

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

ping -M do -s 1472 -c 3 203.0.113.10

Если это не удалось, спуститесь до 1,400 и попробуйте снова. Туннель, который несёт только 1,380 байт, говорит вам, что что-то сжимает сильнее ниже по пути, и никакая настройка на клиенте это не поднимет.

Почему тестовый сервер сдвигается, когда включается туннель

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

Закрепите сервер по имени или ID до первого прогона и удерживайте его в каждом следующем. Если инструмент его не удерживает, выберите цель, которую контролируете, и управляйте ею сами: iperf3 -c test.example.net -R -t 20 держит пункт назначения неподвижным и даёт число, которое можно сравнить со вчерашним.

Измените одну переменную, а нижний уровень — не одна

Беспроводное соединение — обычное скрытое изменение. Сила сигнала смещается, когда ноутбук двигается, а занятость канала смещается, когда сосед начинает звонок, поэтому два прогона с разницей в десять минут по Wi-Fi не являются повторениями одного теста. Кабель или неподвижное положение с записанным уровнем сигнала убирают большую часть этого шума. Записи уровня сигнала в начале и в конце каждого прогона обычно достаточно, чтобы показать, относятся ли два прогона друг к другу.

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

MeasurementWhat it answersWhat it misses
DownloadBulk capacity along the pathAny question about responsiveness
UploadCapacity from client to exitDownload health
RTT to a fixed targetDistance plus queueingWhether capacity is available
Jitter or lossStability under loadHow much the link can carry

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

Задержка, потери и ICMP отвечают на разные вопросы

Ping посылает маленький зонд на фиксированный адрес, и многие сети отвечают на ICMP с низким приоритетом или игнорируют его полностью. Отсутствующие ответы описывают зонд, а не пакеты приложения. Время кругового обхода, которое растёт под нагрузкой, обычно означает, что заполняется очередь, а не что маршрут удлинился.

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

Вернитесь к задаче, которая показалась медленной

Метрика, которая улучшается, пока звонок всё ещё прерывается ответила на что-то другое. Запустите заново ту задачу, с которой началось расследование, будь то встреча, общий файл или сеанс удалённого рабочего стола. Если число улучшилось, а задача нет, узкое место было там, куда тест так и не добрался, например сервер за туннелем или ваша восходящая линия.

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

Короткий список перед следующим сравнением

Закрепите цель и запишите, почему вы её выбрали. Отметьте размер пакета, который допускает путь, чтобы у позднего падения было объяснение. Держите сеть доступа одинаковой, отметьте нагрузку CPU и сделайте три прогона, прежде чем верить различию.

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

Похожие статьи