Применение прокси-сервера для уменьшения пинга
1.Суть проблемы
Как известно онлайн игры в Интернете реализуются по клиент-серверной технологии. На серверах находятся игровые миры и движки шутеров. Фактически это просто цифровая информация в базах данных о координатах, здоровье, опыте, действиях и т.д всех игроков. У каждого игрока на домашнем компьютере находится клиент игры, который в реальном времени получает данные об игровом мире с сервера в цифровом виде и отрисовывает мир у вас на экране в красивом графическом виде, а так же получает от вас команды управления персонажем и передает на сервер игры. Сервер игры в реальном времени обменивается данными со всеми игроками и рождается игровой процесс.
Цифровые данные между клиентом и сервером передаются пакетами. Например вы делаете шаг вправо, формируется пакет с вашими новыми координатами и отправляется на сервер. Сервер вносит ваши новые координаты в БД, которые затем получают все игроки игрового мира. По Вам стреляют в ответ вормируется пакет и отправляется с сервера вам на клиет и отрисовывается стрельба на экране.
Теперь становится очевидным - необходимо чтобы пакеты между сервером и клиентом отправлялись достаточно быстро, чтобы Ваш клиент успевал за игровым процессом на сервере. Обыно мерилом выступает пинг до сервера
2.Что такое пинг и как его измерить?
В состав каждой операционной системы входит одноименная диагностическая сетевая утилита ping. Принцип ее работы заключается в следующем - утилита ping посылает на сервер сетевой пакет, а сервер обязан выслать ответный пакет. При этом ping засекает сколько времени потребовалось пакету дойти до сервера и обратно. Это время и называется - пинг. Утилита ping позволит Вам оценить, достаточно ли быстро ходят пакеты между сервером Вашей игры и клиентом у Вас на компьютере.
Для проверки пинга до сервера в Windows кликните "Пуск" (сноска 1), наберите cmd и нажмите Enter (сноска 2). Появится командная консоль Windows. Наберите в ней команду ping, затем пробел, имя сервера до которого проверяете пинг и кликните Enter (сноска 3). Утилита пошлет серверу 4 пакета, примет от сервера 4 пакета и выведет максимальное, минимальное и среднее время отправки-приема 4х пакетов (сноска 4). На рисунке видно, что пинг до яндекса составил 12 мсек (миллисекунд).
3.От чего зависит время отклика?
Время отклика зависит от следующих факторов:
1.Скорость соединения
Очевидно, что чем выше скорость соединения, тем меньше времни требуется на передачу пакетов межу сервером и клиентом.
2.Загруженность канала
Любой, сколь угодно быстрый канал имеет ограниченную пропускную способность. В Интернете каждый канал всегда используется несколькими пользователями. Суммарная загруженность канала складывается из трафика всех пользователей. Бывают ситуации, когда несколько пользователей превышают пропускную способность канала и у остальных пользователей начинаются тормоза. Даже на одном компьютере можно смоделировать такую ситуацию. Включите на закачку несколько торрентов и по мере приближения скорости закачки к максимальной скорости Вашего канала проверяйте пинг.
3.Качество работы линий связи и оборудования в узлах маршрута
В Интернете существуют различные типы линий связи и оборудования и для каждого типа характерны свои условия нестабильной работы:
WIFI,3G,GPRS - качество работы зависит от загруженности эфира и погодных условий.
Витая пара - длина кабеля. При большой длине кабеля могут возникать потери сигнала, что вызывает потери и повторные передачи пакетов.
Для оптики - перегрев SFP-модулей в коммутаторах, так же вызывающий потери пакетов.
Сетевое оборудование провайдеров и операторов связи - коммутаторы и маршрутизаторы. Так же могут давать потери и задержки. В коммутаторах например основные проблемы - это превышение пропускной способности коммутационных матриц, переполнение ARP-таблиц и глюки на портах. С маршрутизаторами как правило редко бывают проблемы. Но иногда бывают разрывы и перестройка маршрутов. У кажого алгоритма динамической маршрутизации есть время сходимости - максимальное время на перестройку всех маршрутов. Если у провайдера нестабильные каналы и периодичские перестройки маршрутов то все это вызывает задержки сети.
4.Сетевой маршрут
Мы подошли к сути всей статьи - это маршруты в сети Интернет. Смена маршрута позволяет решить все перечисленные выше проблемы и обойти проблемные линии связи и узлы. В сети Интернет между сервером и клиентом существует множество маршрутов и на каждом из них стоят линии связи и оборудование определенного качества. Наша задача сводится к выбору самого оптимального маршрута. Проблема в том, что конечный пользователь не может выбрать маршрут без применения прокси-сервера и прихоится довольствоваться лишь тем маршрутом, что предоставляет провайдер.
4.Методика уменьшения пинга в играх при помощи прокси-сервера
На картинке ниже, приводятся 4 вероятных маршрута между Вами и сервером Вашей игры:
Маршрут с большим числом промежуточных операторов связи (сноска 5). Иногда число промежуточных узлов достигает 10ти и выше. На всем протяжении маршрута повышается вероятность сбойных узлов или медленных линий связи (сноска 6)
Маршрут через нестабильно работающий радиолинк (сноска 7). Иногда у провайдеров и операторов связи нет технической возможности проложить или арендовать кабельное соединение между узлами своих сетей. В этом случае на крыши домов ставят направленные антены и создают радиолинк. Как правило радиооборудование стоит очень дорого и такие линки выдают не больше 1Gbit/сек. Антены узконаправленные и должны быть очень точно смотреть друг на друга (съюстированы) на больших расстояниях. Малейший перекос (ветер, или плохое крепление) вызывает падение скорости и потери. Плюс такие линки теряют скорость в пасмурную погоду
Маршрут через загруженный канал (сноска 8). Загруженность канала может возникать при большом количестве одновременно работающих клиентов (пиковые нагрузки).
Методика уменьшения пинга, как Вы наверное уже догадались, как раз и заключается в том, что бы направить трафи по маршруту, исключающему все выше перечисленные проблемы. Суть в том, что направляя трафик на прокси-сервер уже Вы, а не провайдер можете задавать маршрут до сервера игры. Как правило мы предлагаем несколько прокси-серверов для теста бесплатно, Вы тестируете маршрут и пинг через каждый из них и потом приобретаете лучший. В идеале самым лучшим будет маршрут через пиринговую сеть (сноска 10). Это скоростные сети, которые провайдеры по договоренности организуют для скоростного обмена трафиком своих клиентов. Если между оператором 9 и датацентром сервера игры есть пиринговая сеть и Вы подключитесь к ней используя прокси-сервер, Вы получите минимальный пинг из всех возможных вариантов.
5.Уменьшение пинга браузерных игр
Для уменьшения пинга браузерной игры Вым нужно перейти в раздел настройка браузеров для работы через прокси-сервер и настроить Ваш браузер по соответствующей статье
6.Уменьшение пинга игр, не поддерживающих работу через прокси-сервер
Если Ваша сетевая игра не поддерживает работу через прокси-сервер, то Вам нужно использовать проксификатор. С принципом работы проксификатора вы можете ознакомиться в статье принцип работы проксификатора. Мы рекомендуем Вам использовать проксификатор Proxyfier. Установить и настроить его Вы можете по статье установка, настройка и использование проксификатора Proxyfier