Понизить пинг в онлайн-играх

Автор: | 09.12.2017



Как понизить пинг в онлайн-играх

Отступлюсь от объяснения кому и зачем это надо, ибо тот, кто решил прочитать эту статью и так знает ответ на этот важный для геймеров (и не только) вопрос. Америку я здесь открывать не собирался, а просто собрал более или менее известные способы понижения пинга в одном месте, как всегда, для себя и для других. Объяснять, как пользоваться реестром и прочим, я тут не буду — гугл в помощь =)
Прежде, чем начать, оговорюсь, что чудес не бывает, и если у вас совсем уж ужасный провайдер — вам эти способы всё равно вряд ли особо помогут. Равно как, улучшая одно, мы можем сделать хуже что-то другое. Делая всё, чтобы понизить пинг в наших любимых онлайн игрушках, мы снижаем и максимальную скорость передачи данных и надежность. Если это вас не волнует, а пинг для вас — всё, тогда продолжим :))

Установка драйвера сетевой карты

Начнем с банальной, но часто забываемой вещи. Убедитесь, что установлена последняя версия драйвера для вашей сетевой карты. Скачать же драйвер можно, как всегда, на сайте производителя мат. платы или сетевого контроллера. Узнать о них подробнее можно из какой-нибудь программы для диагностики компьютера, например, AIDA64.

После того как нашли -> скачали -> установили драйвер последней версии, можно приступать к настройке всего и вся.




Для какого-нибудь usb-модема от билайна драйвер, само собой, искать не нужно =)

Оптимизация параметров сети в реестре Windows

Оговорюсь сразу, что для Windows 7 необходимо установить Сервер очереди сообщений прежде, чем приступать к дальнейшим твикам. Сделать это можно так: открываем Пуск-> Панель управления -> Программы и Компоненты->Включение или отключение компонентов Windows. Там находим пункт — Сервер очереди сообщений Майкрософт (MSMQ), и ставим галочку напротив него. Перегружаемся.

Ниже перечислю разделы и параметры реестра, изменение которых позволит уменьшить пинг. Все они имеют тип DWORD, и, если они отсутствуют, то их нужно создать. После всех изменений необходимо перезагрузить компьютер.
Основные параметры (самые главные):
Раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
В этом разделе ищете ваш сетевой интерфейс (если не знаете какой — можете сделать следующее во всех интерфейсах) и меняете параметр:
  • TcpAckFrequency
    Заставляет отправлять подтверждающее сообщение TCP/IP после каждого полученного сегмента и не ждать следующего.
    Рекомендуемое значение: 1 (единица).
    Недостаток: Скорость закачки всяких торрентов/файлов из сети будет несколько меньше.
Раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters
  • TCPNoDelay
    Снижает задержку за счет отключения одного из внутренних алгоритмов Windows (Nagle algorithm).
    Рекомендуемое значение: 1 (единица).
Раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile
  • NetworkThrottlingIndex
    Убирает ограничения для не мультимедийного трафика.
    Рекомендуемое значение: ffffffff (шестнадцатеричное значение).
Дополнительные параметры:
Эти параметры так же способны оптимизировать сетевой обмен для нашего случая. При выборе их значений я руководствовался личным опытом, а не просто верил на слово различным советам. Я временно сижу на 3G интернете, где пинг сам по себе не очень, особенно в вечернее время, имне ниже перечисленные настройки помогли. Однако, есть риск, что какой-нибудь параметр из них может и ухудшить ситуацию с пингом (хоть и не на много), поэтом я назвал их дополнительными и необязательными к выставлению.
Раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  • SackOpts
    Выборочная передача поврежденных данных. Отлично помогает в борьбе с лагами, если клиент не кривой. В качестве возможных проблем приведу пример. В Diablo 3 сильно залагал, пробежал половину подземелья, лаг прошел, однако в результате клиент «заглючило» персонаж исчез, кнопки скилов не работают и единственный выход — перезайти в игру. Либо клиент не справился с такой задачей, либо сервер подумал что я читер и специально это устроил =) Если не бегать на большие расстояния во время долгих лагов, то всё будет ок.
    Рекомендуемое значение: 1 (единица).
    Чтобы отключить: 0
  • EnablePMTUDiscovery
    Автоматически определять максимальный размер передаваемого блока данных.
    Рекомендуемое значение: 1 (единица).
    Чтобы отключить: 0
  • EnablePMTUBHDetect
    Включает алгоритм обнаружения маршрутизаторов типа «черная дыра». Видел советы по выставлению этого параметра в 0, однако, для себя я не заметил влияние этого параметра на пинг, а надежная связь нужна всем =)
    Рекомендуемое значение: 1 (единица).
    Чтобы отключить: 0
  • DisableTaskOffload
    Позволяет разгрузить центральный процессор, освободив его от вычислений контрольных сумм для протокола TCP, переложив эту задачу на сетевой адаптер.
    Рекомендуемое значение: 0 (нуль).
    Чтобы отключить: 1
    Недостаток: Если возникли сбои в соединениях — отключите параметр.
  • DefaultTTL
    Определяет максимальное время нахождения пакета IP в сети, если он не может попасть на узел назначения. Это позволяет значительно ограничить количество маршрутизаторов, через которые может пройти пакет IP, прежде чем будет отброшен (вдруг пакет заблудился, зачем мы будем его ждать?).
    Рекомендуемое десятичное значение: 64
    Чтобы отключить: удалить параметр
Раздел HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Psched
  • NonBestEffortLimit
    Отключает резервирование пропускной способности канала для QoS.
    Рекомендуемое значение: 0 (нуль).
Чтобы вручную не править эти дополнительные параметры в реестре, можно воспользоваться готовыми reg-файлами для включения и отключения этих твиков.

Дополнительные параметры для Windows 7:

Начиная с этой версии ОС появились дополнительные сетевые параметры, которые могут нам пригодится. Данные твики представляют собой команды, в данном случае, сразу содержащие рекомендуемые настройки. Чтобы их применить, нужно запустить командную строку (cmd) от имени администратора. Чтобы посмотреть текущие настройки, можно воспользоваться командой netsh int tcp show global
Итак, команды:
  • netsh int tcp set global rss=enabled
    Использование нескольких процессов для обработки входящего потока, без RSS TCP/IP работает всегда только на одном процессоре даже если ПК многопроцессорный.
    Возможные значения: enable / disable
  • netsh int tcp set global netdma=enable
    Обмен информацией между сетевой платой и памятью ОЗУ без участия CPU (NetDMA).
    Возможные значения: enable / disable
  • netsh int tcp set global dca=enable
    Прямой доступ к кэшу NetDMA 2.0 (Direct Cache Acess).
    Возможные значения: enable / disable
  • netsh interface tcp set heuristics wsh=enable
    Автоматический подбор размера окна TCP (WSH). По идее, сводит на нет настройку следующего параметра, но пусть будет чтобы потом можно было что-то безболезненно включать / отключать, не сильно отступаясь от цели.
    Возможные значения: enable / disable
  • netsh int tcp set global autotuninglevel=highlyrestricted
    Автонастройка размера приемного окна TCP, не сильно отступаясь от значения по умолчанию.
    Возможные значения: disable / higlyrestricted / restricted / normal / experimental
  • netsh int tcp set global timestamps=enable
    Штампы времени при установки с ключами как Auto-Tuning Level оптимальный выбор размера окна приема.
    Возможные значения: enable / disable
  • netsh int tcp set global ecncapability=enable
    ECN — это механизм взаимодействия маршрутизаторов о заторах в сети. Он предназначен для уменьшения ретрансляции пакетов. Это позволяет автоматически снижать скорость передачи данных для предотвращения потерь данных. Описание говорит само за себя, для надежности.
    Возможные значения: enable / disable
  • netsh int tcp set global congestionprovider=none
    CTCP увеличивает темп передачи с одновременным контролем размера окна и пропускной способности (Add-On Congestion Control Provider). Во всех гайдах в интернете, которые мне попадались, советовали установить этот параметр равным ctcp. Однако, на практике, всё оказалось куда более сложнее. В моем случае он вызвал только более продолжительные лаги, несмотря на то, что потери пакетов (и всё в этом роде) он, вроде как, и призван устранять. Поэтому я рекомендую всё же значение none, исходя из опыта. Возможно, в сетях с более надежной связью CTCP и даст профит.
    Возможные значения: none / ctcp / default

Выставление приоритета трафика

Обычно у провайдеров стоят аппаратные шейперы, которые сами управляют передачей пакетов, выставляют приоритет трафика и т.д. Однако, в большинстве случаев, приоритет отправки сетевых пакетов можно выставить и у клиента, при этом, провайдер менять его не будет. Как это поможет нам? Мы просто выставим приоритет в сетевых пакетах нашей игры на высокий, и, по крайней мере с нашего компьютера, их отправка будет идти без задержек.
Для реализации этой идеи есть программа CFosSpeed. Для жителей России она стоит 299 рублей. Есть бесплатный пробный период в 30 дней. О различных её дополнительных возможностях можно прочитать на сайте производителя, а описание настроек для снижения пинга посмотреть здесь.
Из личного опыта, программа работает, снижает пинг. Больше всего я это заметил на ADSL, а вот на мобильном 3G интернете разницу как-то не ощутил (не повезло мб).

Брандмауэр / Фаерволл / Сетевой экран

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

Прошивка роутера

Если доступ в интернет осуществляется посредством роутера, то, возможно, не мешает обновить и его, установив прошивку последней для него версии. Особенно это актуально, если иногда возникают разрывы соединения непонятно из-за чего. В перспективе, это может дать более устойчивую связь, производительность, безопасность и т.п. в зависимости от того, какие баги производитель исправил. Так же не забудьте установить пароль отличный от стандартного! Дабы никто не смог зайти в панель управления вашего роутера из вне и делать всё, что ему заблагорассудится. Если вы понятия не имеете как настраиваются роутеры — смело пропускайте этот пункт (хотя, о пароле всё-таки задумайтесь).
Прошивки для роутеров D-Link и ZyXEL.

Использование VPN-сервера / Прокси

VPN, Виртуальная Частная Сеть — это, по своей сути, логическая сеть, которая создается поверх какой-либо уже существующей другой сети. Если трассировка показала, что на пути до игрового сервера есть сервер, который портит вам игру — vpn отличный способ его обойти стороной. На бесплатные сервисы бесполезно надеяться, низкий пинг вы там не получите, а платные — чем дороже тем лучше. Их много, если зайти в гугл. Характерный представитель RussianProxy, там есть тариф «Онлайн игрок» стоимостью 99 руб/мес. Или WoWPing 98 руб/мес. Там же есть и бесплатный тестовый период (но с ограничением в 30 минут) как раз чтобы попробовать что к чему.

Дополнительные советы

  • Перед игрой закрывайте все приложения, использующие интернет.
  • Ну и, в конце концов, хватит это терпеть! Меняйте провайдера :))

Послесловие

Повторюсь ещё раз, все перечисленные твики я включал / выключал / комбинировал и проверял. На наилучшем варианте в моём случае я и остановился, у вас может быть чуточку иначе.

Дополнительный материал по этой теме