Расходует ли VPN больше данных? Накладные заголовки, keepalive и счётчики
Туннель добавляет заголовки, keepalive и повторные попытки, поэтому внешний трафик больше. Счётчики измеряют ещё и разные уровни и окна, поэтому суммы не сойдутся.
Вопрос приходит вместе с предупреждением о данных после месяца поездок: съел ли VPN лимит? Туннель действительно добавляет байты, потому что каждый пакет получает новый внешний заголовок, а соединение несёт собственный управляющий трафик. Чего он не делает — не удваивает скачанный файл и не заставляет провайдера перестать считать. Честный ответ состоит из двух половин: одна о накладных расходах, другая о том, как получаются цифры.
Миф: VPN умножает ваш расход
Считается, что туннелирование примерно удваивает трафик, поэтому лимит исчезает вдвое быстрее. Для этого накладные расходы должны приближаться к размеру полезной нагрузки, а так бывает только с очень маленькими пакетами и болтливыми протоколами. При обычном просмотре и стриминге лишние байты — небольшая доля целого, и туннель редко бывает причиной того, что месяц заканчивается раньше. Нестабильный туннель — другая история, и именно там живёт настоящее умножение.
Провайдер измеряет внешнее соединение независимо от того, что внутри, поэтому туннель не может сделать трафик бесплатным. Он также не может скрыть объём от оператора, потому что именно оператор его перемещает.
Что действительно добавляет байты
Инкапсуляция заворачивает каждый пакет в новый заголовок, а аутентификация добавляет свои поля, причём точная цена зависит от протокола и используемых семейств адресов. Сильнее всего страдают маленькие пакеты, потому что фиксированный заголовок — большая доля небольшой суммы. Непрерывная передача с полной полезной нагрузкой платит пропорционально меньше, поэтому два человека на одном VPN могут видеть очень разные проценты. Размер пакета и MTU решают, сколько пути уходит на заголовки, а не на содержимое.
Keepalive и рукопожатия добавляют трафик, который существует только для того, чтобы держать туннель открытым, и остаётся незаметным, пока что-нибудь не сломается. Нестабильный канал превращает их в реальные расходы, потому что каждое переподключение повторяет настройку, а каждый оборванный поток приглашает приложение повторить попытку. Повтор — это дорогая часть: загрузка, начинающаяся с нуля, может стоить больше недели keepalive.
Приложения отправляют и больше, чем содержимое файлов. Запросы, подтверждения и протокольная болтовня существовали до туннеля и всё ещё считаются, поэтому разница между с и без — это обёртка, а не весь разговор. Обёртка — единственная часть, которой VPN действительно владеет.
Почему два счётчика никогда не сходятся
Четыре места могут сообщать о расходе: телефон, приложение VPN, роутер и оператор, и каждое измеряет разный интерфейс за разное окно. Счётчик виртуального интерфейса видит внутренний трафик, а физический интерфейс видит внешние пакеты, поэтому они различаются примерно на те накладные расходы, которые вы пытаетесь измерить. Некоторые представления атрибуции тоже перекрываются, а значит, сложение каждой показанной цифры может посчитать одни и те же байты дважды. Цикл оплаты, сеанс приложения и сброс операционной системы тоже начинаются в разные моменты.
В Android поддерживаемое представление об этом — NetworkStatsManager, который сообщает группы по интерфейсам и по uid за временные окна. Во всём, что касается денег, доверяйте учёту провайдера больше, чем сумме сеанса приложения. Приложение — это представление для удобства, и оно может включать или исключать трафик в зависимости от реализации, а задержка в отчётности заставляет более позднее показание выглядеть неверным, хотя ничего не изменилось.
adb shell dumpsys netstats | grep -A3 "iface=wlan0"
adb shell dumpsys netstats detail | grep -i vpn
Прочитайте имя интерфейса в каждой строке, прежде чем что-либо сравнивать. Две суммы для разных интерфейсов — не два измерения одного и того же, и если считать их одним, получится цифра накладных расходов, которая на самом деле является разницей учёта.
Измеряйте повторяемую задачу, а не тест скорости
Выберите один счётчик, одно устройство, одну сеть и одну задачу, затем повторите задачу и сравните показания. Тест скорости — неподходящий инструмент, потому что он намеренно расходует как можно больше, и его стоимость может превысить повседневную проблему, которую вы изучали. Сначала приостановите резервное копирование и обновления, дайте фоновой активности утихнуть и запишите протокол и версию клиента рядом с цифрой. Возобновлённая загрузка — иная рабочая нагрузка, чем чистая передача, поэтому сравнение этих двух ничего полезного не измеряет.
Если прямое сравнение противоречит вашим требованиям к приватности, сравните вместо этого две поддерживаемые конфигурации VPN и укажите это ограничение рядом с результатом. Запишите, какая конфигурация дала какую цифру, чтобы сравнение пережило следующего читателя.
Где смотреть, когда счёт и приложение не сходятся
Сначала проверьте окно, затем интерфейс, затем уровень. Несовпадение, которое переживает все три, — это вопрос к провайдеру, а не настройка клиента, и ответ обычно называет задержку отчётности или общий лимит.
Держите настройки обновления приложений и мобильных данных соответствующими лимиту, а массовые передачи планируйте на соединение, которое их выдержит. Если вы раздаёте интернет, отдельно проверьте покрытие точки доступа, потому что туннель телефона ничего не говорит о том, как маршрутизируется или считается розданный трафик.