RE:NODE

Как читать ping и hops в панели игрового сервера

Автор Команда RE:NODE
17 мин чтения


В панели RE:NODE есть три сетевых показателя, и каждый отвечает на свой вопрос. Ping на дашборде - это время прохождения пакета туда и обратно от вашего браузера до машины, на которой работает сервер; он замеряется раз в несколько секунд. Average Ping на вкладке Console - это среднее время прохождения пакета до этой машины от проб в 12 странах; он измеряется только тогда, когда вы нажимаете "Test now". Hops - это число маршрутизаторов между нашей сетью и вашим подключением, а "≥N" означает, что трассировка замолчала раньше, чем дошла до вас. Ни один из трёх показателей не равен ping, который игрок видит в таблице результатов, и ни один не измеряет саму игру. Вместе они отвечают на первый вопрос в любой жалобе на лаги: это сеть или нет, а если сеть, то чья её часть. В этой статье - из чего складывается каждый показатель, что он упускает и в каком порядке их читать, когда кто-то говорит, что сервер лагает.

Три показателя, три разных измерения#

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

ПоказательГде находитсяОткуда измеряется
PingДашборд, строка каждого сервераВаш браузер, каждые 5 секунд
Average PingВкладка Console, полоса статистикиПробы в 12 странах, по запросу
HopsВкладка Console, полоса статистикиНаша сторона, в сторону вашего адреса

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

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

Ping на дашборде: от браузера до ноды#

В списке серверов в каждой строке рядом с памятью, CPU и диском есть метрика Ping. Это время прохождения пакета туда и обратно от браузера, которым вы пользуетесь, до ноды, на которой размещён сервер. Несколько деталей о том, как он снимается, объясняют, почему он ведёт себя именно так.

  • Это HTTP-запрос с замером времени. Браузер не умеет отправлять ICMP echo так, как это делает команда ping, поэтому панель посылает на ноду крошечный веб-запрос и засекает, сколько идёт ответ. Содержимое ответа не читается; любой ответ доказывает, что круговой путь пройден.
  • Два запроса, берётся более быстрый. Первому запросу из пары, возможно, придётся открыть новое соединение, а это лишние обороты туда и обратно, которые никто не имеет в виду под словом ping. Второй идёт по уже открытому соединению. Панель оставляет более быстрый из двух.
  • Показатель - медиана. Это среднее по порядку значение из последних пяти замеров, поэтому один медленный пакет не заставляет число скакать.
  • Один сэмплер на ноду. Строки серверов на одной ноде используют одно общее измерение, так что длинный список серверов не множит трафик.
  • Скрытые вкладки не замеряются. Дашборд, оставленный открытым в фоновой вкладке, перестаёт измерять, пока вы снова на него не посмотрите.
  • Выше 250 мс - отметка. Когда значение превышает 250 мс, метрика подсвечивается стилем тревоги.

Поскольку это HTTP-замер в браузере, а не чистый пакет ICMP, ожидайте, что он будет на несколько миллисекунд выше того, что печатает ping с той же машины. Планировщик браузера, слой TLS и ответ веб-сервера добавляют понемногу. Разница небольшая и постоянная, так что для сравнений показатель честный: ваше число этим вечером против вашего числа неделю назад или одна нода против другой.

Ping на дашборде хорош тем, что быстро отвечает на вопрос "это у меня?". Если ваш показатель вырос вдвое со вчерашнего дня, а на сервере ничего не менялось, первым подозреваемым будет ваше собственное подключение: wifi, закачка на той же линии, VPN, о котором вы забыли. Если он держится на обычном значении, а игроки жалуются, ваш путь в порядке, и проблема, если она вообще в сети, находится на их стороне.

Average Ping: мир по запросу#

Под консолью находится панель "Latency around the world". Нажмите Test now, и панель попросит сеть Globalping (globalping.io), бесплатную сеть добровольных проб, отправить ping на ноду сервера по одной пробе из каждой из 12 стран, разбросанных по Европе, Ближнему Востоку, Америке, Африке, Азии и Океании. Каждая проба отправляет по три пакета. Результаты приходят в течение нескольких секунд; примерно через 25 секунд панель перестаёт ждать и показывает то, что успело прийти.

В сетке по одной ячейке на страну с её средним значением в миллисекундах, от самых быстрых к самым медленным, плюс ячейка "You" с показателем вашего браузера для сравнения. Цвет ячеек зависит от скорости: меньше 100 мс - хорошо, от 100 до 199 мс - средне, 200 мс и больше - медленно. Если проба теряла пакеты, при наведении на ячейку показывается процент потерь. Проба, которая так и не ответила, показывает "no reply" вместо числа.

Average Ping в полосе статистики над консолью - это среднее по ответившим пробам, округлённое до целой миллисекунды. Пробы, которые не сработали, из среднего исключаются, а не считаются нулём или бесконечностью.

Несколько вещей, которые стоит помнить при чтении:

  • Он запускается только по нажатию кнопки. Тест отправляет адрес ноды стороннему сервису, поэтому панель никогда не запускает его при загрузке страницы. Пока вы не провели тест, в полосе стоит прочерк, а подсказка предлагает нажать "Test now". После теста следующий запустится только через 20 секунд.
  • У бесплатной сети есть лимит. Если за короткое время запущено слишком много тестов, Globalping отказывает, и панель пишет "The free test limit was reached. Try again in a few minutes." Это их лимит, а не неисправность сервера.
  • Пробы - это настоящие устройства на настоящих подключениях. Одни стоят в дата-центрах, другие - на домашних линиях. Если одна страна показывает значение намного выше соседних, возможно, это подключение именно этой пробы в именно эту минуту. Прежде чем делать выводы по одной странной ячейке, запустите тест ещё раз.
  • Три пакета - это снимок. Он показывает время прохождения в тот момент. Он не показывает джиттер во времени или потери, которые появляются и исчезают раз в несколько минут. Для этого нужен более долгий тест со стороны игрока, о нём речь в одном из следующих разделов.

Почему среднее выглядит высоким и всё равно в порядке

Мировое среднее - это среднее по всей планете. Любой отдельный сервер, где бы он ни стоял, близок к одним из этих 12 стран и далёк от других, и далёкие тянут среднее вверх. Сервер может быть отличным для своего региона и всё равно показывать трёхзначный Average Ping, потому что Австралия и Бразилия далеко почти от всего. Это арифметика, а не неисправность.

Поэтому читайте сетку, а не только среднее. Полезные вопросы такие: что показывают страны, в которых на самом деле живут ваши игроки, и изменилось ли это с прошлого раза? Диапазоны из нашей статьи про ping игровых серверов по регионам дают представление о том, чего должно стоить каждое расстояние. Если ваши игроки в основном в двух странах, обе показывают двузначные значения без потерь, то сеть справляется, что бы ни говорило среднее.

Hops: считаем маршрутизаторы#

Показатель Hops в полосе статистики - это число маршрутизаторов между нашей стороной и адресом, с которого вы заходите в панель. Браузер не видит собственный маршрут, поэтому трассировка идёт в обратную сторону: наша сторона проходит путь к вашему адресу с помощью tracepath, который отправляет UDP-пробы с возрастающими значениями TTL и отмечает, какой маршрутизатор отвечает на каждом шаге. Принцип тот же, что у инструментов traceroute, которые вы, возможно, уже знаете.

Как выглядит трассировка (для примера)
 1?: [LOCALHOST]                      pmtu 1500 1:  10.0.0.1                          0.412ms 2:  192.0.2.17                        1.006ms 3:  198.51.100.4                      4.880ms ...14:  203.0.113.9                      31.207ms reached     Resume: pmtu 1500 hops 14 back 14

Когда пункт назначения отвечает, tracepath печатает строку Resume: с реальным числом хопов, и в полосе показывается обычное число: 14. Когда не отвечает, панель берёт последнюю пронумерованную строку, на которой был адрес, и показывает её как нижнюю границу: ≥11. Подсказка говорит именно об этом: "≥" означает, что последние маршрутизаторы не ответили, так что реальное число не меньше показанного.

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

Несколько практических деталей:

  • Результат кэшируется на десять минут. Трассировка может занимать до двадцати секунд, а маршруты не меняются поминутно, поэтому результат для адреса хранится десять минут, и полоса запрашивает его снова с этим интервалом. Смена маршрута проявится при следующем обновлении, а не мгновенно.
  • Если измерить не удаётся, показывается прочерк. Если ваш адрес частный или зарезервированный (вы в той же сети, что и панель, или за некоторыми прокси) либо трассировка ещё идёт, в полосе стоит прочерк, и вскоре она пробует снова.
  • VPN меняет то, что измеряется. Если вы заходите через VPN, трассировка заканчивается на выходе VPN, а не у вас дома. Тогда число показывает расстояние до VPN-сервера.
  • Ваш адрес не сохраняется. Кэш ключуется по хэшу адреса и хранит только число.

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

Число хопов напрямую не переводится в миллисекунды. Современный маршрутизатор пересылает пакет намного быстрее миллисекунды, так что десять лишних хопов внутри одного города почти ничего не стоят. Расстояние стоит гораздо дороже: свет в оптоволокне проходит примерно 200 км за миллисекунду, поэтому путь, который делает крюк в 3 000 км, добавляет около 30 мс к круговому времени, независимо от того, проходит он через пять маршрутизаторов или пятнадцать.

И всё же хопы важны по трём причинам:

  1. Они выдают объезды. Если у игрока в соседней стране до сервера 25 хопов, а у того, кто живёт дальше, 12, провайдер первого, скорее всего, гонит трафик в обход, через обменный узел в другой стране. Это классическая причина фразы "у меня плохой ping, а у друга нормальный".
  2. Каждый хоп - это очередь. Каждый маршрутизатор - место, где в час пик пакеты могут ждать позади другого трафика. Больше хопов - больше мест, откуда могут взяться джиттер и потери, особенно там, где трафик переходит из одной сети в другую.
  3. Сравнение полезно, даже когда абсолютное число не очень. Ваше число сегодня против вашего числа неделю назад - дешёвый способ заметить, что маршрут изменился. Если число хопов подскочило и вместе с ним вырос ping, маршрут сменился, и вы знаете, где искать.

Чего хопы не скажут, так это какой именно хоп медленный. Для этого нужен просмотр по каждому хопу, и его даёт MTR. Наша статья про чтение traceroute и MTR объясняет, как читать его, не поддаваясь на уловки маршрутизаторов, которые отвечают на пробы с пониженным приоритетом.

Когда игроки говорят, что сервер лагает#

"Лаг" объединяет четыре-пять несвязанных проблем, а показатели панели помогают лишь с одним их семейством. Прежде чем смотреть на любое сетевое число, исключите сам сервер. Логика простая: если сервер не справляется, это чувствуют все игроки сразу, независимо от их ping; если дело в сети, жалоба привязана к конкретным игрокам, местам или времени суток.

Рабочий порядок:

  1. Это у всех или у некоторых? Если у всех откат позиции случается в один и тот же момент, смотрите сначала на сервер. Если недоволен один игрок или одна страна, это почти наверняка сеть между ними и сервером.
  2. Проверьте графики сервера. Вкладка Console рисует память, CPU и диск относительно лимитов тарифа. Линия CPU, прижатая к лимиту, пока игроки жалуются, означает, что сервер не держит свой tick rate; это ощущается как лаг у каждого игрока, и никакие правки сети тут не помогут. В нашей статье про то, что на самом деле означает tick rate есть игровые команды, которые показывают его для каждой игры.
  3. Проверьте свой Ping на дашборде. Если ваш показатель нормальный, нода достижима и отзывчива хотя бы из одного места.
  4. Запустите мировой тест. Нажмите "Test now" и посмотрите на страны, откуда играют ваши игроки. Нормальные значения и отсутствие потерь означают, что связность ноды с этой частью мира в данный момент в порядке.
  5. Попросите жалующегося игрока о собственном измерении. Именно этот шаг реально локализует проблему, потому что под вопросом его путь.

Если шаги со 2 по 4 чистые, а один игрок всё равно страдает, проблема где-то на пути этого игрока: его wifi, маршрутизация его провайдера, перегруженный стык между сетями в часы пик. Вы не можете починить его провайдера, но можете дать ему ясный ответ, а он может отнести хорошее измерение своему провайдеру.

Что попросить у игрока

Показатели панели измеряются из мест, где игрока нет. Попросите его запустить тест со своей машины до адреса сервера (IP, показанный в панели, без порта, поскольку ping не использует порты). В Windows:

bash
$ ping -n 50 203.0.113.10$ tracert 203.0.113.10$ pathping 203.0.113.10

В Linux или macOS при установленном mtr:

bash
$ ping -c 50 203.0.113.10$ mtr -rwc 100 203.0.113.10

Просите провести тест в то время, когда лаг происходит, а не на следующее утро. Вечерняя перегрузка реальна, и чистый тест в 10:00 ничего не говорит о 21:00. Пятьдесят пингов показывают среднее, разброс между минимумом и максимумом (грубая оценка джиттера) и любые потери. Отчёт mtr или вывод pathping показывают, на каком участке пути начинаются задержки или потери и доходят ли они до конца.

Некоторые сети отбрасывают ICMP до места назначения, поэтому ping, который полностью уходит в таймаут, пока игра подключается нормально, ничего не доказывает. В таком случае лучшим свидетельством будут трассировка и собственный индикатор ping в игре.

Сопоставляем числа и симптомы#

Когда у вас есть цифры игрока рядом с вашими, типичные картины читаются так:

Что вы видитеВероятный смысл
Ping игрока высокий, стабильный, без потерьРасстояние или длинный маршрут
Ping скачет на десятки мсДжиттер: wifi или загруженная линия
Потери доходят до последнего хопаРеальная неисправность сети на пути
Потери только на одном среднем хопеМаршрутизатор игнорирует пробы, безвредно
Лагают все сразу, CPU на лимитеСервер, а не сеть
Хопов у игрока намного больше, чем у соседейЕго провайдер гонит маршрут в обход

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

Джиттер и потери ощущаются намного хуже, чем подсказывают их средние значения, потому что игре приходится ждать пропавших обновлений или догадываться о них. Наша статья про задержку, джиттер и потерю пакетов разбирает, что каждое из этого делает с игрой и как отличить их друг от друга за минуту работы ping. Короткая версия для игрока: подключите кабель, остановите закачку на той же линии и протестируйте снова. Удивительно большая доля жалоб "сервер лагает" на этом заканчивается.

Случай длинного маршрута - тот, где число хопов оправдывает своё место. Если два игрока в одном городе у разных провайдеров видят 15 и 28 хопов и разницу в 40 мс в ping, проблема в маршрутизации второго провайдера. Игрок может сообщить о ней, приложив свою трассировку; провайдеры иногда меняют маршрут, когда клиент показывает им объезд. Некоторые игроки пробуют VPN, чтобы заставить трафик идти другим путём. Иногда это помогает, чаще добавляет расстояние; наша статья о том, снижает ли VPN ping в играх, объясняет, как это проверить, а не гадать.

Пример на практике#

Допустим, группа из восьми человек играет на сервере почти каждый вечер. Шестеро в одной стране, двое в соседней. Один из этих двоих каждый вечер около 21:00 начинает жаловаться на откаты позиции.

Вы открываете панель. График CPU показывает, что сервер спокойно ниже лимита, пока приходят жалобы, а остальные семеро не жалуются, так что дело не в сервере. Ваш Ping на дашборде на обычном значении. Вы нажимаете "Test now": страна, ближайшая к страдающему игроку, показывает нормальное двузначное значение без потерь пакетов.

Значит, канал ноды в эту часть мира в порядке, и ваш собственный путь в порядке. Подозрение падает на путь самого игрока. Вы просите его запустить mtr -rwc 100 (или pathping в Windows) в 21:00. В его отчёте чистые значения на первых восьми хопах, а начиная с девятого задержка растёт на 60 мс и появляются потери 4%, которые тянутся до последней строки. Девятый хоп - это точка, где его провайдер передаёт трафик другой сети.

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

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

Чего показатели панели не скажут#

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

  • Ни один из них не равен ping в игре. Игры измеряют ping по-своему, часто добавляя к сетевому пути тик-другой обработки. Игра, показывающая 60 мс там, где ping показывает 45 мс, - это нормально.
  • Ни один из них не измеряет пути ваших игроков. Мировой тест использует одну пробу на страну, у провайдера этой пробы. Ваши игроки пользуются другими.
  • Мировой тест - это момент. Три пакета на пробу, взятые тогда, когда вы нажали кнопку. Он не ловит проблему, которая то появляется, то исчезает.
  • Число хопов описывает путь от нашей стороны к вам. Трассировка идёт от нас к адресу, с которого вы заходите, и это полезный индикатор расстояния и прямоты маршрута, но это ваш путь, а не путь игрока.
  • Потери в мировой сетке - намёк, а не приговор. Проба, потерявшая один пакет из трёх, может страдать от собственной линии. Потери, которые появляются сразу из нескольких стран, стоит рассмотреть внимательнее; потери в одной ячейке стоит перепроверить вторым тестом.

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

FAQ#

Почему мой Average Ping выше 100 мс, когда сервер кажется быстрым?

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

Что значит "≥" перед числом хопов?

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

Можно ли запускать мировой тест ping автоматически каждый час?

Нет. Он запускается только по нажатию кнопки, потому что каждый тест отправляет адрес ноды стороннему сервису проб. Между тестами есть короткая пауза, а у бесплатной сети - лимит запросов, так что частое тестирование не для этого. Для отслеживания динамики запускайте mtr по расписанию с машины, которую вы контролируете.

Всегда ли меньшее число хопов означает меньший ping?

Нет. Расстояние важнее числа маршрутизаторов. Маршрут из 18 хопов внутри одного региона может быть быстрее маршрута из 10 хопов через целый континент. Хопы полезнее всего для того, чтобы заметить объезд или смену маршрута, а не для предсказания миллисекунд.

Мой Ping на дашборде выше, чем показывает команда ping. Какой из них верный?

Оба, они измеряют немного разное. Дашборд замеряет небольшой веб-запрос из браузера, у которого есть несколько миллисекунд накладных расходов, которых нет у ICMP ping. Используйте его для сравнения с самим собой во времени; для абсолютного значения используйте ping.

Сохраняется ли мой IP-адрес, когда панель считает хопы?

Нет. Результат кэшируется на десять минут под хэшем адреса, и хранится только число. Мировой тест ping отправляет адрес ноды в Globalping, который видит ваш адрес так же, как любой сайт, к которому вы обращаетесь.

Это было полезно?