Почему VPN тормозит: разбор по участкам

Обновлено 30 августа 2026~45 мин чтения

«Тормозит» — это не поломка, а ощущение. За ним может стоять четыре совершенно разных причины, и лечатся они в разных местах.

ℹ️ О чём этот текст

Здесь по порядку разобрано, из чего складывается скорость VPN, что можно измерить, а что нет, и почему привычные проверки вроде «пинг нормальный» почти ничего не доказывают.

Между вами и сайтом, который вы открываете, стоит длинная цепочка. Ваш телефон, вышка оператора, его сеть, международный стык, чужие сети за границей, и только в конце — сервер VPN. Сломаться может любое звено, а на выходе вы скажете одну и ту же фразу.

Телефон Вышкаоператора Сетьоператора Магистраль Международныйстык Сетиза рубежом Сервер VPN и его канал клиент, Wi-Fi радио, соты свои узлы ёмкость чужая политика транзит, BGP канал, процессор Проверка из России: подключается через сервер и качает файл, как обычный клиент связь — каждые 15 минут, скорость и задержка под нагрузкой — раз в час Трассировка: через какие сети идёт путь и где начинаются потери раз в несколько часов: маршрут меняется реже, чем связь Счётчики самого сервера трафик, процессор, память
Рис. 1. Путь от телефона до сайта и приборы, которыми мы смотрим на каждый участок

Дальше — по главе на участок: канал сервера, его железо и связность с Россией. В каждой два вопроса: что именно ломается и по какому признаку это видно со стороны.


1. Канал сервера

Начнём с простого: сколько мегабит сервер вообще может отдать.

В тарифе хостера обычно написано что-то вроде «порт 10 Гбит/с». Это характеристика их оборудования, а не обещание лично вам. Виртуальные серверы живут на общем железе и делят общий канал — поэтому важнее не цифра в тарифе, а то, как хостер этот канал между всеми делит. Способов ровно три, и каждый чувствуется по-своему.

1.1 Никак не делит

Хостер не ограничивает никого. Тогда одна шумная машина способна забрать почти весь канал, а остальным достаётся что осталось.

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

1.2 Шейпинг: очередь

Шейпер — это ограничитель с очередью. Он ничего не выбрасывает: лишние пакеты просто ждут отправки.

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

1.3 Полисинг: ножницы

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

Ограничение одно и то же, а чувствуется по-разному — по этому и различают.

Шейпинг — очередь Полисинг — ножницы очередь копится Ничего не потеряно — всё доедет. Но каждый пакет ждёт, и ожидание превращается в задержку. Чувствуется: видео буферится. лишнее выброшено Очереди нет, задержка идеальная, зато часть пакетов просто не доезжает. Чувствуется: обрывы и рывки.
Рис. 2. Одно ограничение — два разных симптома

Казалось бы, теперь всё просто: увидели рост задержки — шейпер, увидели потери — полисер. На практике так не выходит.

1.4 Почему пинг и потери молчат, даже когда канал режут

Резонный вопрос: если канал действительно режут, мы же должны это увидеть? Должны — но только если смотреть тем, что нагружает канал. А пинг его не нагружает.

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

Теперь посчитаем, сколько «весит» проверка пингом. Двадцать пакетов в секунду по 64 байта — это около десяти килобит в секунду. Лимит, который мы ищем, — сто мегабит. Проверка идёт в десять тысяч раз ниже планки: до неё просто не дотягивается, и ограничителю нечего резать.

лимит: 100 Мбит/с — режется всё, что выше пинг 0,01 Мбит/с короткий замер живые люди упираются в планку Прибор находит ограничение, только если сам в него упрётся. Пинг не упирается никогда. Замер планку превышает, но живёт слишком мало, чтобы ограничение успело включиться.
Рис. 3. Почему пинг не видит ограничение: он идёт в тысячи раз ниже планки

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

⚠️ Как это выглядело у нас

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

1.5 Почему быстрая проверка скорости обманывает

С замером скорости история другая: он-то планку превышает. Но его спасает корзина всплеска.

Ограничитель обычно устроен так: небольшой запас разрешено потратить сразу на любой скорости, а дальше — только по лимиту. Замер «скачаем файл и посмотрим» длится секунду-две и целиком укладывается в этот запас.

0 с 3 с 10 с время Мбит/с всплеск: очень быстро первые секунды идут в долг разрешённая скорость именно её сутками получают люди на сервере окно замера умещается внутри всплеска — и показывает не ту скорость
Рис. 4. Корзина всплеска: короткий замер попадает в неё целиком

Отсюда правило, которое стоило нам нескольких неверных выводов: короткий замер отвечает на вопрос «трафик вообще проходит?», а не «сколько достанется человеку». На второй вопрос честно отвечают только счётчики самого сервера, накопленные за часы.

1.6 Ограничение включается не сразу — и приёмка его не застаёт

Есть и вторая причина, по которой при проверке новой машины всё выглядит прекрасно.

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

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

⚠️ Что из этого следует

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

1.7 Два способа ограничить: по скорости или по объёму

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

Лимит скорости — потолок в мегабитах, действует всегда. Быстрее нельзя, но и хуже со временем не становится.

Лимит объёма — сколько всего можно передать за месяц. Пока пакет не исчерпан, скорость полная; как только он закончился, включается ограничение — скорость режут (иногда до совсем символической) либо просят доплатить.

Второй вариант коварнее именно тем, что первые недели ничем себя не проявляет.

Лимит скоростиЛимит объёма за месяц
Когда действуетвсегдапосле исчерпания пакета
Как проявляетсяскорость упирается в потолок с первого днясервер работал прекрасно, и вдруг стал медленным
Что видно на приёмкеиногда видно, если проверять долгоне видно вообще — трафика ещё не было
Как выглядит на графикахровная полка с самого началаобрыв в середине месяца, дальше низкая полка
Когда чинится самоникогдапервого числа следующего месяца
Что делатьменять тариф или площадкусчитать расход заранее, брать запас по объёму

Отсюда простое правило приёмки: у хостера нужно узнавать обе цифры — и какая скорость, и сколько трафика включено. «Безлимитный канал 1 Гбит/с» без второй цифры не означает ничего: за месяц по такому каналу можно передать сотни терабайт, и почти никто столько не отдаёт бесплатно.

1.8 Замер показывает пол, а не потолок

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

Пример из практики. Слева — что показал короткий замер, справа — какой трафик тот же сервер реально пропускал в течение суток:

СерверКороткий замерРеальный пик за суткиРазница
A19 Мбит/с225в 12 раз
B20116в 6 раз
C20104в 5 раз
D4245почти нет
E4749почти нет

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

Разница не теоретическая. В первом случае вопрос к хостеру уместен, во втором он покажет график со всплесками и будет прав.

1.9 Что тогда работает

Раз проверкам верить нельзя, признак строится на собственном трафике сервера — том, что он реально пропустил за час, за сутки, за неделю. Ограничитель рисует прямую линию; живой спрос прямую не рисует никогда.

Упёрся в лимит Свободный канал потолок Ровная линия — так рисует ограничитель. Рваная кривая — так выглядят живые люди.
Рис. 5. Час сервера, упёршегося в лимит, и час свободного — одна и та же шкала

Дальше — арифметика: сравниваем, насколько трафик «прижат» к одному и тому же значению, и проверяем, что сервер вообще умеет быстрее (например, на прошлой неделе он проходил заметно больше). Если и то и другое сходится, а людей на сервере много — это упор в потолок, а не тихий вечер.

Есть и обратная ловушка. Проверять ровность за целый час мало: одного всплеска внутри часа хватает, чтобы «полка» перестала быть заметной.

единственный всплеск задирает «максимум за час» ровная полка — люди делят её на всех окно в 15 минут: разброс почти нулевой живой спрос так не выглядит никогда за час признак не сработал и ограничение осталось незамеченным
Рис. 6. Один всплеск прячет ограничение, если смотреть только на час целиком

Поэтому рядом стоит вторая проверка на коротком окне — не «ровный ли час», а насколько разбросаны значения. У живого спроса разброс есть всегда, у ограничителя он практически нулевой. Между этими двумя состояниями на практике остаётся хороший запас, так что перепутать сложно.

1.10 Когда ограничение начинает мешать

Справедливый вопрос: если канал ограничен, но пользователи этого не замечают — кому от этого плохо?

Никому — пока пользователи не упираются в это ограничение.

Например, сервер может иметь лимит в 1 Гбит/с и при этом десятки пользователей. Если в каждый момент времени им достаточно 100–200 Мбит/с суммарно, ограничение никак себя не проявляет.

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

В этот момент важно смотреть не только на сам лимит, но и на то, сколько пользователей одновременно делят доступную полосу.

Например, если сервер упёрся в ограничение 100 Мбит/с, а одновременно через него проходит большой объём трафика от 250 пользователей, это в среднем всего около 0,4 Мбит/с на пользователя, если мысленно разделить доступную полосу поровну.

Этого недостаточно даже для стабильного просмотра видео в 360p.

012.5 5825 Мбит/с 360p480p 720p1080p4K упёрлись: 0.4 Мбит/с на человека сто мегабит на две с половиной сотни подключённых — не хватит даже на 360p Если упора нет, это деление ничего не значит: большинство подключённых в каждый момент ничего не качают, и маленькая доля бывает у совершенно здорового сервера. Смотреть на неё есть смысл только там, где трафик уже лежит на потолке.
Рис. 7. Что можно смотреть при разной скорости

Но это не означает, что каждый из 250 пользователей действительно получает 0,4 Мбит/с. Распределение трафика неравномерное: кто-то в этот момент ничего не передаёт, кто-то открывает страницу, а кто-то смотрит видео.

Поэтому такое деление имеет смысл только как грубая оценка того, насколько тесно серверу становится при текущей нагрузке.

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

Именно поэтому нас интересует не сам факт наличия лимита, а сочетание трёх факторов: величина ограничения, реальная нагрузка и количество одновременно активных пользователей.

Так технический факт «канал ограничен 100 Мбит/с» превращается в понятный вывод: если сервер постоянно упирается в этот потолок, пользователям начинает не хватать доступной полосы — и это уже может проявляться в виде просадок скорости и буферизации видео.

1.11 Как локализовать проблему

Одного измерения недостаточно, чтобы понять, где находится проблема. Замер на самом сервере показывает, что происходит с его собственным каналом, а проверка из России — что происходит на всём пути от пользователя до сервера.

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

Что видимЧто это может означатьКуда смотреть
Замер стабильно упирается в один и тот же пределВозможное ограничение каналаПроверить условия у хостера
Средняя скорость низкая, но периодически бывают всплески значительно вышеВозможно ограничена средняя скорость, а не максимальнаяПроверить тариф и настройки ограничения
На сервере доступна высокая скорость, но из России передаётся всего несколько Мбит/сПроблема, скорее всего, находится на маршруте до сервераПроверить связность, маршрут и площадку
Из России скорость высокая, хотя внутренний замер показывает ограничениеОграничение может не влиять на реальный пользовательский трафикПроверить, воспроизводится ли проблема из пользовательской сети
Трафик долго держится на одном уровне, а одновременно активно много пользователейСервер может упираться в доступную полосуОценить нагрузку и доступную полосу на одного активного пользователя

Важно: эта таблица не позволяет автоматически определить виновника. Каждый признак нужно сопоставлять с другими измерениями и проверять в динамике.

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

1.12 Что смотреть: канал сервера

Главное, о чём эта глава: по одному показателю вывод не делается. Ограничение канала видно только по совокупности, и проверять её надо по порядку.

Шаг 1. Есть ли полка. Смотрим трафик за час и за сутки по счётчикам интерфейса (/proc/net/dev, node_exporter), отдельно приём и отдачу.

Если линии нет — дальше можно не смотреть, машина в канал не упирается.

Шаг 2. Умеет ли машина быстрее. Полка сама по себе ещё ничего не значит: может, столько и просят. Ищем в истории случаи, когда через машину проходило заметно больше: пик за неделю против нынешнего уровня.

Шаг 3. Не кончился ли пакет трафика. Если у тарифа есть месячный объём, сверить израсходованное с включённым. Резкий обрыв в середине месяца и ровная низкая полка после него — это не поломка, а исчерпанный пакет.

ШагЧем измеритьКак прочитать
Есть ли полкасчётчики интерфейса за час и суткировная линия у одного значения = упор; рваная кривая = свободный канал
Умеет ли быстреепик за неделю; закачка в 4–8 потоковпроходило в разы больше — режут среднюю скорость, а не порт
Пакет трафикасчётчики за месяц против тарифаобрыв в середине месяца = кончился объём
⚠️ Чего в этом списке нет и почему

Здесь нет ни пинга, ни потерь: ограничитель их не трогает — проверка идёт в тысячи
раз ниже планки и до неё просто не дотягивается (см. 1.4).
И нет «быстрой проверки скорости» как доказательства: она укладывается в разрешённый
всплеск и показывает числа, которых люди не видят (см. 1.5).

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


2. Железо сервера

Второй участок — сама машина. И здесь главное разочарование: число ядер в тарифе почти ничего не обещает.

Сервер с четырьмя ядрами старого процессора и сервер с двумя ядрами свежего — машины разного класса, и второй нередко везёт VPN лучше.

2.1 Кухня с поварами

Сто разных заказов Один заказ по этапам 👩‍🍳👩‍🍳👩‍🍳👩‍🍳 четыре медленных 👨‍🍳👨‍🍳 два быстрых Работа делится — лишние руки помогают. принятьготовитьупаковатьотдать Этапы идут по очереди: восемь поваров не приготовят ЭТОТ заказ в восемь раз быстрее. У VPN-сервера происходит и то, и другое сразу Сотни подключений он разбирает параллельно — тут лишнее ядро правда помогает. Но путь одного пакета — конвейер, и его ускоряет только быстрое ядро. Поэтому важен баланс, а не одна цифра из двух.
Рис. 8. Почему одних ядер мало, а быстрых ядер — не всегда

Грубо говоря, скорость ядра — это «сколько работы за такт» помноженное на «сколько тактов в секунду». Современное ядро на трёх гигагерцах спокойно обгоняет старое на трёх с половиной: за такт оно успевает больше. А максимальная частота из описания («до 5,7 ГГц») — это верхняя отметка на короткое время, а не режим постоянной работы.

ℹ️ Шифрование почти ничего не стоит — и это проверяется

Даже самый слабый процессор из тех, что мы видели, шифрует около двух с половиной гигабайт в секунду в один поток. Реальный трафик на сервер — сотни мегабит, то есть на шифрование уходят доли процента.
Тест шифрования всё равно полезен, но читать его надо как «какого класса это железо», а не «сколько машина потянет».

2.2 Десктопный процессор обгоняет серверный

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

Настольный AMD Ryzen 9 9950X — на такой работе он быстрее серверных. Фото: 4300streetcar, Wikimedia Commons, CC BY 4.0
Настольный AMD Ryzen 9 9950X — на такой работе он быстрее серверных. Фото: 4300streetcar, Wikimedia Commons, CC BY 4.0
ПроцессорКлассЦена одного пакета
AMD Ryzen 9 9950Xдесктопный17 мкс
AMD Ryzen 9 7950X3Dдесктопный18 мкс
AMD Ryzen 9 5950Xдесктопный29 мкс
AMD EPYC 7763серверный42 мкс
Intel Xeon Gold 6234серверный46 мкс
Intel Xeon E5-2697A v4серверный, 201682 мкс
Intel Xeon E5-2680 v2серверный, 201383 мкс

Между лучшим и худшим — разница в пять с половиной раз. Одна и та же нагрузка на первом даёт десять процентов загрузки, на последнем — пятьдесят пять.

Причина не в маркетинге. Обработка пакетов упирается в частоту и скорость одного потока, а не в количество ядер. От сорокавосьмиядерного серверного процессора виртуальной машине достаётся пара ядер по 2,75 ГГц, а настольный отдаёт свои 4,3 ГГц целиком. Отдельная проверка, гоняющая только пакеты, показала то же самое: 2,7 миллиона пакетов на ядро против 1,4 миллиона.

Старые серверные Intel в этом списке — самое слабое место: они впятеро дороже по пакету, и вдобавок несут полный набор защит от аппаратных уязвимостей (девять включённых против трёх у новых AMD). Каждая стоит времени на системных вызовах, а у прокси их миллионы в секунду.

⚠️ Одна и та же модель ведёт себя по-разному

Внутри одной модели разброс оказался больше, чем между поколениями: от 16 до 72 микросекунд на пакет. В эту цифру входит не только процессор, но и ядро операционной системы, и всё, что на машину навешено. Поэтому её нельзя переносить с «такой же» машины — только измерять на конкретной.

2.3 Виртуальное ядро — не ваше ядро

У виртуального сервера есть отдельная беда: ядро в тарифе не значит, что оно ваше целиком. Соседи по физической машине конкурируют за то же железо, и гипервизор может просто не дать вам процессорное время.

Изнутри это не выглядит как нагрузка — просто всё идёт медленнее.

Что показывает график загрузки своя работа — 60% кажется, свободно 40% Что происходит на самом деле своя работа — 60% ждём соседей свободно У большинства машин это время близко к нулю. Но попадаются и такие, где сосед забирает каждое четырнадцатое мгновение постоянно, а в пике — каждое четвёртое.
Рис. 9. «Загружено на 60%» не значит «40% в запасе»

Отсюда правило: смотреть надо не на красивое число ядер в тарифе, а на цепочку класс процессора → скорость одного ядра → сколько ядер → сколько времени отнимают соседи → сколько машина реально пропускает под нашей нагрузкой.

И ещё одно наблюдение, которое стоит держать в голове: у VPN-сервера почти всегда первым упирается процессор, а не канал. Рекорды по трафику, которые мы видели, — это несколько процентов от гигабитного порта.

2.4 Что смотреть: железо сервера

Что смотретьЧем измеритьНормаО чём говорит отклонение
Загрузка процессора, все ядраtop, mpstat, node_exporterдо 60–70%с 75–80% начинает портиться качество: растёт разброс задержки
Steal — время, отнятое соседямиmpstat (%steal), node_exporterоколо нуляот 5% постоянно — машину сильно теснят, переезжать
Доля softirq в занятостиmpstat -P ALL, /proc/statзаметно меньше пользовательскойвысокий softirq при низкой своей нагрузке — упор в обработку пакетов, а не в шифрование
Пакетов в секунду, приём и отдачасчётчики интерфейсасамо по себе ни о чём не говоритсмотреть в паре с загрузкой: их отношение и есть цена пакета на этом железе
Приём не успевает/proc/net/softnet_stat (dropped, squeezed)нулирастут — очередь приёма переполняется, ядро не успевает разбирать
Свободная памятьMemAvailable (не «free»), ps по процессу проксиесть запасупор в память у прокси — редкость; если она кончается, смотреть на утечку
Свопvmstat (si/so)нулиненулевой своп на сетевой машине — уже беда
Ошибки и потери на интерфейсеip -s link, ethtool -Sнулирастут — проблема на стороне сети или драйвера, а не нагрузки
Таблица соединенийconntrack -C против лимитадалеко от пределау предела — новые соединения начнут отбиваться

Отдельно, при приёмке машины: openssl speed -evp aes-256-gcm — но читать это надо как «какого класса железо», а не «сколько машина потянет». Шифрование у нас не узкое место, и по нему сравнивать серверы бессмысленно (см. 2.1).

Порядок действий. Сначала загрузка и steal: если steal большой, дальше можно не копать — время у машины отнимают соседи. Если загрузка высокая, а steal нулевой, смотреть, чем она занята: пользовательской работой или softirq. И уже потом — память, интерфейс и conntrack, они ломаются реже.


Самое важное — это так называемая связность

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

Возьмём простой пример: вы подключились к мобильной сети МТС, включили наш VPN и открыли ChatGPT.

Упрощённо путь выглядит так:

устройство → базовая станция → сеть МТС → магистраль → международный стык → зарубежная сеть → VPN-сервер → ChatGPT

Но за этими несколькими словами скрывается довольно много оборудования.

ℹ️ Это же мы проверяем при вводе каждой новой машины

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

1. Устройство → базовая станция

Ваш телефон передаёт данные по радиоканалу на базовую станцию мобильного оператора.

телефон 4G / 5G базовая станция оптика Сеть оператора узлы, маршрутизаторы Здесь трафик ещё целиком внутри инфраструктуры оператора — и мы его не видим.
Рис. 10. Телефон и вышка: данные идут по радио, а дальше — по оптике

На этом этапе трафик ещё находится внутри инфраструктуры мобильного оператора.

2. Базовая станция → региональная сеть

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

Дальше трафик проходит через различные узлы сети МТС.

Региональный узел — это физическая площадка, где размещается сетевое оборудование оператора: маршрутизаторы, коммутаторы, оптическое и транспортное оборудование.

Это может быть отдельное здание оператора, узел связи или часть дата-центра.

Упрощённо:

📡 Базовые станции
       ↓
   транспортная сеть
       ↓
┌─────────────────────┐
│ Региональный узел   │
│                     │
│ маршрутизаторы      │
│ коммутаторы         │
│ оптическое оборудование │
└─────────────────────┘
       ↓
   дальше по сети

Важно понимать, что это не один «главный компьютер», который решает судьбу каждого пакета. Маршрутизация распределена между множеством сетевых устройств.

3. Магистральная сеть и магистральные узлы

Если трафику нужно попасть из одного региона в другой или к международному выходу, он может пройти по магистральной сети оператора.

Магистраль — это высокопроизводительная транспортная инфраструктура, которая соединяет крупные узлы сети.

Например:

Региональный узел
       ↓
      100G
       ↓
Магистральный узел
       ↓
      400G
       ↓
Магистральный узел
       ↓
Международный выход

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

При этом не существует обязательного правила:

«регион → Москва → магистральный узел → зарубежье».

Конкретный путь зависит от топологии сети оператора и используемой маршрутизации.

4. Международный стык

Здесь важно не путать магистраль и международный стык.

Магистраль — это сама транспортная сеть.

Международный стык — это соединение между сетями разных операторов или сетями разных стран.

Например:

Российский оператор
        │
        │ собственная / арендованная
        │ международная линия
        ↓
┌──────────────────────────┐
│  Площадка / дата-центр   │
│                          │
│ [маршрутизатор РФ]       │
│          │               │
│       оптика             │
│          │               │
│ [маршрутизатор зарубежного│
│        оператора]        │
└──────────────────────────┘
        ↓
Зарубежная сеть

Физически это не обязательно выглядит как какой-то специальный «международный сервер».

В простейшем случае это два маршрутизатора разных операторов, соединённых оптическим каналом.

одна площадка: дата-центр или узел связи Маршрутизатор оператора из РФ его сеть, его правила Маршрутизатор зарубежного оператора другая сеть, другие правила оптический кабель иногда — пара метров внутри одной стойки трафик из России дальше за границу На одной такой площадке подобных стыков бывают десятки — у каждой пары операторов свой.
Рис. 11. Международный стык вблизи: два маршрутизатора и кабель между ними

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

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

Именно здесь российский трафик может перейти из сети российского оператора в сеть зарубежного оператора.

5. Дальше трафик движется по зарубежным сетям

После международного стыка трафик оказывается в сети зарубежного оператора.

Дальше происходит примерно то же самое:

Международный стык
       ↓
Зарубежный оператор
       ↓
магистральная сеть
       ↓
другой оператор
       ↓
сеть хостера
       ↓
🖥 VPN-сервер

Причём между российским оператором и нашим VPN-сервером может находиться несколько разных автономных систем и транзитных операторов.

И вот здесь возникает главный вопрос:

откуда каждый из этих операторов знает, куда отправлять пакет?

6. Здесь появляется BGP

Каждое сетевое устройство не хранит в памяти «весь Интернет» в виде списка всех возможных физических дорог.

Внутри сетей операторы используют протоколы маршрутизации, которые позволяют сетевому оборудованию определить, куда отправлять трафик.

А когда речь идёт о взаимодействии разных автономных систем (AS), одним из главных протоколов становится BGP — Border Gateway Protocol.

Упрощённо можно представить это так:

AS МТС
   ↓
AS транзитного оператора
   ↓
AS другого оператора
   ↓
AS хостера
   ↓
VPN-сервер

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

Поэтому путь от телефона до VPN-сервера — это не просто физическая цепочка кабелей.

Это одновременно:

физическая инфраструктура + маршрутизаторы + транспортные сети + международные стыки + маршрутизация между автономными системами.

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

Как мы проверяем связность с Россией

Именно поэтому при заказе нового сервера мы смотрим не только на его процессор, канал и расположение.

Нас интересует ещё один важный вопрос:

Насколько хорошо этот сервер связан с российскими сетями?

Потому что сервер может находиться, например, в Германии, иметь мощный процессор и канал 10 Гбит/с, но при этом иметь плохой маршрут до пользователей из России.

Условно:

Россия → оператор → магистраль → ??? → сервер

Нас интересует, что находится на месте ???: через каких операторов и сети проходит трафик, какая задержка получается, есть ли потери и насколько стабилен маршрут.

Поэтому перед тем, как принять сервер в нашу инфраструктуру, мы проверяем его связь с несколькими российскими сетями.

Проверяем маршрут

С самого сервера запускаем трассировку до нескольких независимых российских сетей.

Например:

VPN-сервер
    ↓
оператор хостинга
    ↓
транзитный оператор
    ↓
российская магистраль
    ↓
российская сеть

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

Это важно, потому что два сервера в одной стране могут иметь совершенно разную связность:

Сервер A → оператор 1 → оператор 2 → Россия
Сервер B → оператор 3 → оператор 4 → оператор 5 → Россия

Географически они могут находиться рядом, но сетевой путь до России будет совершенно разным.

У трассировки есть одна ловушка, о которой стоит знать заранее: потери на промежуточном узле почти никогда не означают потерю трафика.

УчастокПотери по трассировке 1–456–10сервер 0% 95% 0% 0% Промежуточный узел экономит на ОТВЕТАХ, а чужой трафик пропускает дальше. Потеря настоящая, только если дошла до конца пути. Так выглядит подавляющее большинство «потерь»: пугающий процент в середине и совершенно чистый последний участок. И величину потерь даёт не трассировка, а отдельная проверка: она шлёт больше пакетов.
Рис. 12. Страшный процент в середине маршрута — почти всегда мираж

Что мы измеряем

Для каждого маршрута смотрим три основных показателя:

RTT — задержка туда и обратно.

Packet Loss — процент потерянных пакетов.

Jitter (mdev) — насколько сильно меняется задержка между отдельными пакетами.

Например:

Сервер A
RTT:     42 мс
Loss:     0%
Jitter:  0.3 мс

Сервер B
RTT:     45 мс
Loss:     0%
Jitter:  8.7 мс

На первый взгляд оба сервера имеют практически одинаковый пинг.

Но второй маршрут значительно менее стабильный: задержка гуляет намного сильнее. Под реальной нагрузкой это может проявляться как рывки, просадки скорости и нестабильная работа TCP-соединений.

Сервер A: пакеты приходят ровным шагом видео и звонки живут спокойно Сервер B: то пусто, то густо скорость проседает рывками, загрузки обрываются
Рис. 13. Одинаковая задержка, разное качество связи

Почему мы проверяем несколько российских сетей

Одна точка назначения может дать неправильное представление о маршруте.

Например, ICMP-пакеты до одного оператора могут фильтроваться или обрабатываться с низким приоритетом. Тогда мы увидим потери, хотя с реальным каналом всё нормально.

Поэтому мы проверяем несколько независимых сетей.

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

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

Проверяем не только маршрут, но и реальную полосу

Низкий пинг ещё не означает хорошую связность.

Поэтому отдельно проверяем скорость передачи данных между сервером и российскими точками.

Для этого используем iperf3 и смотрим реальную пропускную способность.

Получается уже более полная картина:

Связность с Россией

├── маршрут
│   ├── через каких операторов идёт
│   ├── RTT
│   ├── потери
│   └── jitter
│
└── пропускная способность
    └── реальная скорость передачи данных

Отдельно — задержка под нагрузкой

Вхолостую задержка почти всегда прекрасная. Интереснее другое: что с ней происходит, пока канал занят. Если на пути стоит ограничитель с очередью, она набивается именно в этот момент — видео не успевает наполнить буфер и встаёт, хотя «пинг нормальный».

Поэтому пинг снимается во время загрузки, а не отдельно от неё.

мс идёт загрузка в покое — ровно под нагрузкой задержка выросла в полтора раза Так выглядит очередь. Если её нет, линия под нагрузкой почти не меняется — и тогда человеку не хватает не скорости отклика, а полосы.
Рис. 14. Один и тот же сервер: пинг в покое и пинг под нагрузкой

Почему низкий пинг не гарантирует хороший VPN

Это один из самых важных моментов.

Можно получить:

RTT: 25 мс
Loss: 0%

и при этом иметь практически неработающий VPN.

Например, ICMP с сервера в Россию может проходить нормально, а входящие TCP-соединения из России на этот IP могут блокироваться или теряться.

Получается:

Сервер → Россия
   ICMP ✓
   TCP  ✓

Россия → Сервер
   ICMP ✓
   TCP  ✗

Обычный ping этого не покажет.

Поэтому отдельно нужно проверять доступность сервера именно из России, то есть реальное подключение к VPN-ноде с российской стороны.

Есть и обратная проблема

Даже если соединение устанавливается, пинг ничего не говорит о доступной полосе.

Например:

RTT:       40 мс
Loss:       0%
Speed:     50 Мбит/с

и:

RTT:       40 мс
Loss:       0%
Speed:      2 Гбит/с

Для пользователя это будут совершенно разные серверы.

Поэтому связность — это не один показатель.

Нам важно одновременно понимать:

куда идёт маршрут → насколько он стабильный → сколько по нему реально можно передать → устанавливаются ли соединения из России.

И наконец — проверка изнутри не заменяет проверку снаружи

Есть принципиальная разница между двумя измерениями:

1. Сервер → Россия

2. Россия → сервер

Первое показывает, насколько хорошо сам сервер может достичь российских сетей.

Второе показывает, насколько российский пользователь может достичь сервера.

Эти направления могут работать совершенно по-разному.

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

Именно это позволяет увидеть проблемы, которые невозможно обнаружить обычным ping с самой ноды.

В итоге при выборе сервера мы оцениваем не просто:

«Сколько миллисекунд до России?»

а гораздо более важный вопрос:

«Насколько хорошо этот сервер связан с российскими сетями и способен стабильно передавать через них большой объём трафика?»

Что смотреть: дорога до пользователя

Третий чек-лист. Здесь всё меряется не с сервера, а из сети пользователя — проверка с самой машины отвечает на другой вопрос и не заменяет эту.

Что смотретьЧем измеритьНормаО чём говорит отклонение
Задержка и потери из Россииping 50 пакетов и большепотери 0, задержка ровнаяпотери от 3% — путь теряет пакеты, а не «фон интернета»
Разброс задержкиmdev у того же pingединицы миллисекунд8 мс и выше при нормальном пинге — дёрганый транзит
Устанавливается ли соединениеподключение на клиентский порт, 20 попыток100% успехапинг идёт, а соединение нет — адрес блокируют
Где начинаются потериmtr до сервера, 20 циклов и большепотерь на последнем участке нетпотери держатся до конца — путь битый; только в середине — почти всегда мираж
Скорость через туннель из Россиизагрузка файла в 1 поток и в 8оба близкивосемь потоков сильно быстрее одного — почерк потерь на пути
Задержка под нагрузкойping во время загрузкипочти не меняетсявыросла в полтора раза и больше — на пути очередь, шейпер
Повторные отправки на сервереnstat -az TcpRetransSegs, ss -tiдоли процентапроценты — потери на пути, TCP постоянно переспрашивает

Порядок действий. Сначала «доезжает ли вообще»: соединение и потери. Если доезжает — скорость в один и в восемь потоков. Если скорость низкая в обоих случаях, а канал у машины широкий — дело в дороге, и хостер тут не поможет. Если задержка под нагрузкой выросла — на пути очередь, и это уже вопрос к хостеру.


Чем и на что смотрят

ПриборГде стоитНа что отвечаетЧего не умеет
Счётчики серверана самой машинесколько реально прошло, есть ли полкане видит дорогу до клиента
Быстрый замер скоростина машиненижняя граница каналане видит потолок и корзину всплеска
Проверка из Россииотдельная машина в РФпроходит ли клиентский путь, задержка, потериеё число нельзя читать как «скорость у человека»
Трассировкаоттуда жегде на пути начинаются потерине даёт величину потерь
Процессор, память, соседина машинеупирается ли сервер в железоничего не знает о том, что снаружи

Как этим пользоваться. Каждая глава заканчивается своим чек-листом: канал, железо, дорога. Идти по ним стоит сверху вниз — от самого дешёвого измерения к самому долгому:

  1. Железо — загрузка и steal. Меряется за секунды и сразу отсекает половину случаев.
  2. Канал — счётчики за час и сутки: есть ли полка и есть ли запас.
  3. Дорога — проверка из сети пользователя: доезжает ли, с какой скоростью, что с задержкой под нагрузкой.

И одно правило поверх всех трёх: вывод делается там, где сошлись два независимых источника. Один прибор всегда допускает несколько объяснений.

Ни один из них не отвечает на вопрос целиком — и в этом главная мысль всего текста. «Быстрый сервер» это не одно число, а совпадение нескольких: широкий канал, свободный процессор, короткая и ровная дорога до вас и работающее соединение из вашей сети.

Вопросы по статье — в обсуждении выше, в поддержку из бота или из кабинета.