Путь игрока до сервера: как работает маршрутизация и почему иногда бывает пинг 1000

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

<i>Как пример: моя трассировка из Москвы в Новую Зеландию </i>
Как пример: моя трассировка из Москвы в Новую Зеландию 

Ты запускаешь любимый онлайн-шутер, заходишь на "ближайший" европейский сервер и видишь пинг 800мс. В чате начинается срач: "у меня 15мс, купи нормальный интернет", "провайдер говно", "переезжай в цивилизацию". Но, на самом деле, причина может быть куда интереснее — твои пакеты могут лететь до Франкфурта через Лос-Анджелес, потому что какой-то админ в DTAG неправильно настроил BGP.

Как интернет находит дорогу: основы маршрутизации

Internet Protocol и концепция пакетов

Начнем с основ. Когда ты нажимаешь WASD в игре, твой компьютер формирует IP-пакет согласно RFC 791 (Internet Protocol). Этот пакет содержит:

  • Source IP — твой IP-адрес
  • Destination IP — IP сервера игры
  • TTL (Time To Live) — счетчик "прыжков", который уменьшается на каждом маршрутизаторе
  • Payload — собственно данные игры

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

Border Gateway Protocol: как интернет договаривается сам с собой

Сердце интернет-маршрутизации — протокол BGP (Border Gateway Protocol), описанный в RFC 4271. Представь интернет как огромный город, где каждая автономная система (AS) — это район со своими дорогами.

Автономная система — это сеть под единым административным управлением. У провайдера "Ростелеком" есть своя AS (AS12389), у Cloudflare— своя (AS13335), у хостинга игрового сервера — своя.

BGP работает как система навигации между районами. Каждая AS объявляет соседям: "До сетей 203.0.113.0/24 и 198.51.100.0/24 лучше всего идти через меня". Эти объявления называются анонсами (announcements).

AS12389 (Ростелеком) → AS3356 (Level3)
Маршрут до 203.0.113.0/24, AS-path: 12389

AS3356 → AS174 (Cogent)
Маршрут до 203.0.113.0/24, AS-path: 3356 12389

Почему "кратчайший путь" не всегда кратчайший

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

  1. Local preference — внутренние предпочтения AS
  2. AS-path length — количество автономных систем в пути
  3. Origin type — как маршрут был изучен
  4. Multi-Exit Discriminator (MED) — предпочтения соседней AS

Получается, что маршрут через 3 AS может быть предпочтительнее географически короткого через 5 AS.

Реальные примеры: когда маршрутизация идет не так

Case 1: Сломанный анонс и черные дыры(BGP-Hijack)

Путь игрока до сервера: как работает маршрутизация и почему иногда бывает пинг 1000

В 2008 году пакистанский провайдер Pakistan Telecom (AS17557) по ошибке анонсировал всему интернету, что YouTube находится у них. Согласно RFC 4271, более специфичный маршрут (/24 вместо /22) имеет приоритет.

Результат: половина мира не могла попасть на YouTube, потому что трафик уходил в "черную дыру" в Пакистане.

Case 2: Submarine cable break

Когда в 2008 году были повреждены подводные кабели в Средиземном море, трафик из Европы в Азию пошел через трансатлантические кабели и США. Пинг из Лондона в Мумбаи вырос с 150мс до 400мс.

Техническая сторона: что происходит с твоим пакетом

OSPF vs BGP: внутренняя и внешняя маршрутизация

Обычно внутри автономной системы работает протокол внутренней маршрутизации (IGP). Чаще всего это OSPF (Open Shortest Path First, RFC 2328), который строит граф сети и ищет кратчайший путь по метрикам типа задержки или пропускной способности. Но в некоторых сетях вместо него используют, например, IS-IS или даже более простые протоколы вроде RIP — всё зависит от архитектуры и политики провайдера.

BGP работает на границах AS и учитывает политические и коммерческие соображения. Твой пакет может пройти такой путь:

[Твой ПК] → OSPF внутри провайдера → BGP границы → BGP границы игрового хостинга → OSPF до сервера → [Игровой сервер]

Анатомия высокого пинга

Пинг 1000мс может складываться из:

  • Propagation delay: физическое время распространения сигнала (≈1мс на 300км)
  • Transmission delay: время передачи пакета в сеть
  • Processing delay: время обработки на маршрутизаторах
  • Queuing delay: время в очереди на отправку

Если твой пакет летит из Владивостока в Москву (9000 км), только физическая задержка в оптоволокне составит около 45 мс в одну сторону. А если маршрут идёт через спутниковую связь (геостационарная орбита 36 000 км), добавляется ещё примерно 240 мс в одну сторону или почти 500 мс туда-обратно. И это без учёта обработки и очередей — поэтому в реальности на спутнике легко поймать 600–700 мс пинга.

Quality of Service и игровой трафик

Современные сети используют механизмы QoS для приоритизации трафика. RFC 2475 описывает Differentiated Services — способ маркировки пакетов по важности.

DSCP маркировка игрового трафика:

  • EF (Expedited Forwarding) — критически важные пакеты
  • AF31 (Assured Forwarding) — важные пакеты с низким drop rate
  • BE (Best Effort) — обычный трафик

Но реальность такова: большинство провайдеров игнорирует DSCP маркировку от клиентов или сбрасывает ее на границах AS.

Современные решения и их ограничения

Content Delivery Networks (CDN)

Игровые компании размещают сервера в CDN-сетях типа Cloudflare или Akamai. Эти сети имеют точки присутствия (PoP) в крупных интернет-узлах и соглашения о пиринге с большинством провайдеров.

Но CDN хорош для статического контента. Для реального времени игр нужны dedicated серверы в правильных местах.

Anycast и игровые серверы

Anycast (RFC 4786) позволяет анонсировать один IP-адрес из разных географических точек. BGP автоматически направит игрока на ближайший сервер.
Игрок из Казани → 203.0.113.1 (анонсируется из Москвы)
Игрок из Киева → 203.0.113.1 (анонсируется из Варшавы)

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

Заключение

Высокий пинг в играх — это редко проблема "плохого интернета". Чаще всего это следствие сложной экосистемы интернет-маршрутизации, где технические решения переплетаются с коммерческими интересами провайдеров.

Понимание принципов работы BGP, автономных систем и пиринга поможет тебе:

  • Правильно диагностировать проблемы с подключением
  • Выбирать интернет-провайдера осознанно
  • Объяснять тиммейтам, что "лагает не у меня, а интернет устроен сложно"

В следующий раз, когда увидишь пинг 500мс до европейского сервера, запусти mtr и посмотри, через какие страны летают твои пакеты. Возможно, твой виртуальный солдат успевает увидеть половину мира, прежде чем выстрелить. Подписывайся на наш блог, здесь мы объясняем про сети и многое другое.

Ваши Cloud & Coffee и HostVDS.com

6
1
5 комментариев