- нажмите Ctrl + Enter
- оставьте комментарий
Здравствуйте, мои дорогие любители MMORPG в целом и The Elder Scrolls Online в частности.
Многие из нас, если не все, знакомы с такими вещами, как внезапные пролаги при хорошем пинге, скачки пинга до 999+ на ровном месте, странные вылеты, а также необъяснимые просадки пинга в данжах и триалах. Особенно это актуально сейчас, когда многие из вас учатся и работают в удаленном режиме — и большую часть своего времени посвящают, конечно, игре. И поскольку дополнение «Маркарт» изрядно добавило проблем (а грядущий в скором времени патч нового дополнения еще неизвестно, сколько может принести новых) актуальность содержащейся здесь информации только повысилась.
И сегодня я расскажу вам, как можно избавиться от самых раздражающих проблем, немного поработав руками, ну и заодно проведу некоторый ликбез. Конечно, я не претендую на то, что гайд поможет всем без исключения (ребятам с Дальнего Востока будет сложно добиться пинга ниже 200 по объективным причинам). Информация, приведенная ниже, не является какими-то сакральными знаниями, ниспосланными Тоддом Говардом с небес, но представляет из себя удобную компиляцию из всего, что я нашел в интернете, протестировал и применил у себя.
И вместо эпиграфа: слезайте с Wi-Fi и протяните от роутера к вашему компьютеру нормальную витую пару. Проще говоря, провод RJ-45. Уже готовый и обжатый стоит копейки, порядка 100 ₽ за 10 м, продается в любом компьютерном магазине.
Если переход на провод или лайфхаки с каналами и частотами не помогают, читаем дальше.
Как мы знаем, данные от нашего компьютера идут до сервера игры через некоторое количество узлов. В моем случае их бывает 11-13, начиная от домашнего роутера. Сбоить может любой из этих узлов, или даже несколько сразу. И для начала мы проведем тест с простой командой pathping.
Запускаем командную строку от имени администратора.
Самый простой способ сделать это в Windows 10 — набрать cmd в поиске на панели задач. Про другие варианты операционных систем сами погуглите, пожалуйста.
Для начала мы очистим кэш DNS, для чего прописываем команду ipconfig /flushdns и видим следующее:
Некоторые говорят, что одно это уже может помочь, но практика показывает, что помогает редко, поэтому устраиваемся поудобнее и продолжаем работу с командной строкой.
Прописываем команду: pathping -n 195.122.154.1
Здесь 195.122.154.1 — iP-адрес нашего любимого EU-сервера.
Для Америки (NA) IP-адрес будет выглядеть так: 198.20.198.110
Прописали, нажали Enter и ушли делать себе чай с печеньками, потому что процесс займет какое-то время, обычно порядка 5-6 минут.
По окончании процедуры мы увидим, что в страшной черной консоли нам показали какие-то непонятные цифры и буквы:
Давайте посмотрим на них повнимательней.
Сначала мы видим обычную трассировку, которая просто показывает нам узлы (точнее, их IP-адреса), участвующие в путешествии пакетов к нашему серверу. Неинтересно. Смотрим ниже. И тут у нас:
Прыжок — просто номер хоста, где 0 — наш собственный домашний комп;
Исходный узел, в котором фактически показаны результаты команды ping. RTT — это round-trip time, время передачи сигнала между точками, а утерянное/отправленное — соотношение утерянных/отправленных пакетов для исходного узла;
Маршрутный узел — то, что нас интересует больше всего. Эти цифры показывают, где именно и в каком размере наши пакеты могут т.н. «дропаться», то есть теряться;
Причин потери пакетов великое множество, начиная от обычной загруженности узла или канала между узлами и заканчивая физическими помехами рядом с узлом. Тут есть целая наука, но мы не будем забивать этим голову и идем дальше.
На 11-м пункте скриншота мы видим 100% дропа пакетов и кто-то может спросить: «А вот там у тебя все потерялось, это значит, что все плохо?». Нет.
Это просто сброс пакетов маршрутизатором. Посмотрев внимательней, мы увидим отсутствие потерь для пакетов, посылаемых следующим за ним маршрутизаторам, конкретно — на 12-м узле, то есть это проявление потерь на 11-м узле не является признаком какой-либо неполадки, а указывает лишь на блокировку эхо-запросов брандмауэром, что нередко делается по соображениям безопасности. Дело в том, что часто маршрутизатор на узле нужен для того, чтобы просто переслать пакеты дальше по адресу, и поэтому он не тратит свои ресурсы на обработку пакетов, предназначенных лично ему. Бояться этого не надо, то, что идет от нас к конечному серверу, он исправно перешлет. Ну, почти всегда. А вот если идут дропы 10-30-50% — то это почти наверняка проблемная точка. Опять же, почти.
Но не все так просто и радужно.
Дело в том, что команды traceroute и pathping показывают только те узлы, по которым пакет прошел вперед. Однако интернет и вообще принцип передачи данных устроены так, что обратно пакет может возвращаться совершенно другим путем. И если сбоит обходной узел на обратном маршруте, то мы этого не узнаем, и будем думать, что на самом деле наши пакеты были «съедены» где-то в тех узлах, которые нам показала консоль. А они вполне могут быть и не при делах.
Сложно?
Ну, это все равно, что вы решили сбегать в магазин без маски и на обратном пути решили сделать крюк через дворы, чтобы не дай бог на стражей порядка не нарваться, а там-то они вас встретили и штраф выписали.
Это явление называется асимметрией маршрутов, если кому интересно.
Так как же узнать правду?
Поможет команда ping -r , но в случае, когда узлов больше 9, она бесполезна. Поэтому для общего развития стоит знать, что многие дата-центры предоставляют услугу Looking Glass, когда вы можете сделать трассировку в обратную сторону от дата-центра до своего дома и сравнить результаты туда с результатами оттуда. Однако мне не удалось найти этой функции у дата-центра, где стоят наши сервера, а писать запрос на почту их местного немецкого саппорта я посчитал излишним.
Итак, мы обнаружили потери пакетов, что делать?
1. Узлы 0 и 1 — ваши. Разбирайтесь сами, инструкции есть в статье;
2. Узлы 2-4, как правило, различная маршрутизация провайдера, пинайте его, если вам не лень. Может быть и 2-6, по-разному. Например, я живу в глуши и у меня узлов провайдера непростительно много;
3. Последние три узла — датацентр и непосредственно наш сервер. Если проблема там, то ее, скорее всего, уже решают или решили, пока вы допивали чай;
4. Все, что между — черная дыра бескрайнего интернета.
Если вы наблюдаете проблему у провайдера и очень хотите с ним поругаться, ну или просто пообщаться в переписке, то можно использовать программу WinMTR. Фактически, это тот же pathping, но без консоли.
Софт мы скачиваем отсюда, далее действуем по инструкции, которую можно найти по следующей ссылке.
После того, как закончили, сохраняете результат в файл и отправляете его провайдеру.
ВАЖНО: многие провайдеры могут предоставить вам услугу изменения маршрутизации до конкретного IP в обход проблемных узлов, за небольшую плату или даже бесплатно. Главное — вежливо с ними поговорить, в идеале предоставить результаты из WinMTR и все может стать хорошо.
Если же вы хотите быть уверенными, что проблема не в вас, то надо еще немного поработать руками (или клешнями, мало ли как там дела обстоят).
И тут мы переходим к следующему пункту.
Часть проблем может отсеяться уже на этом пункте.
Нам нужно открыть для игры порты в наших брандмауэре и в роутере.
Сначала — брандмауэр.
Открываем Панель управления (для простоты используем тот же поиск в панели задач).
Итого: Пуск — Панель управления — Система и безопасность — Брандмауэр Windows. Нажимаем «Дополнительные параметры», и у нас открывается монитор брандмауэра. В нем мы можем задать правила для входящих и исходящих подключений.
Список портов, которые нужно открыть, находится здесь.
По ссылке все понятно написано.
Теперь смотрим, как нам сделать это в брандмауэре.
1. Исходящие подключения.
2. Создать правило.
Жмем на «Создать правило».
Тут у нас несколько шагов.
1. Тип правила. Можно создать правило для программы или для порта.
Проще всего создать правило для программы и открыть ей все порты. Выбираем тип правила «Настраиваемые».
2. Программа. Указываем путь к исполняемому файлу, его мы берем из «входящих» правил, обычно TESO при установке автоматически создает правила на вход.
У меня игра установлена через Steam и путь выглядит как C:\Program Files (x86)\Steam\steamapps\common\Zenimax Online\zosSteamStarter.exe
3. Протокол и порты. Тип протокола — TCP, локальные и удаленные порты открываем все.
4. Область. Любые айпи-адреса
5. Действие. Разрешить подключение
6. Профиль. Я оставляю все галочки, вы — как хотите.
7. Имя. Назовите это правило так, как вам удобно.
А потом делаем все это еще раз, но указываем тип протокола UDP.
ЕСЛИ ВДРУГ игра при установке не создала автоматически правила для входящих подключений, не ленитесь, создайте. Примерные пути расположения исполняемых файлов можете посмотреть выше и найти у себя.
Также для очистки совести аналогичные правила на вход и на выход можно создать для самого исполняемого файла игры (это же TESO, никогда не знаешь, что ей мешает нормально работать, кроме самих разработчиков). Исполняемый файл игры у стимовских версий находится в C:\Program Files (x86)\Steam\steamapps\common\Zenimax Online\The Elder Scrolls Online\game\client\eso64.exe
А у нон-стим сами найдете в папке с игрой.
Теперь нам надо открыть порты в роутере.
Здесь все индивидуально, потому что железки у всех разные, но общие шаги все же есть.
Для начала заходим в интерфейс роутера: в адресной строке браузера вбиваем 192.168.1.1 (если у вас не какой-то другой, например, 0.1, как у меня), на экране ввода логина набираем стандартные: логин admin пароль admin. Если вы умный и у вас они другие — вы молодец, возьмите с полки пирожок. Если вы их не меняли, а они не подходят, то пинайте брата/маму/мастера/кота, который решил, что ваш «трехсотый» d-link стоит того, чтобы использовать его в качестве лотка — в общем, того, кто вам ставил и настраивал роутер.
И о чудо! Мы внутри!
И вот тут начинается разница роутеров и их интерфейсов. Расскажу на примере своего Keenetic DSL.
1. Сначала смотрим список подключенных к роутеру устройств. Если ваш десктоп находится в списке незарегистрированных, регистрируем его (как правило, там есть кнопка). Это позволяет нашему роутеру понять, что вот эта конкретная машина тут полностью своя и ей можно все. Затем открываем параметры зарегистрированного устройства и ставим галочку «постоянный IP», таким образом внутри домашней сети вашему девайсу присваивается собственный IP-адрес.
2. Идем куда-нибудь типа «Безопасность» и находим «Переадресацию» или что-то похожее. Вот здесь нам нужно будет создать правила, аналогичные тем, которые мы делали в брандмауэре. У меня это выглядит так:
Здесь вход — эти ваш интернет, а выход — ваш домашний пк, с которым мы незадолго до этого роутер и познакомили.
3. Создаем правила для всех портов.
4.???
5. PROFIT!
Идем в TESO и смотрим, что да как.
Возможно, станет лучше. Но даже если соединению полегчает, то я все равно рекомендую провести манипуляции из последующих пунктов.
Что такое MTU? В компьютерных сетях термин maximum transmission unit (MTU, англ. максимальная единица передачи) означает максимальный размер полезного блока данных одного пакета (англ. payload), который может быть передан протоколом без фрагментации. (с) Ваша Вики.
Стандартный размер MTU, который по умолчанию указан в подавляющем большинстве ОС и роутеров — 1500 байт, из которых 28 байт — это заголовок. Запомните.
И сначала мы проверим, проходят ли блоки такого размера до нашего EU-сервера.
1. Открываем командную строку с правами администратора, если вы ее уже закрыли.
2. Прописываем команду ping -f -l 1472 195.122.154.1
Здесь l — это маленькая английская L.
Почему 1472, а не 1500? Потому что заголовок в 28 байт не учитывается. 1500-28=1472.
Если наш MTU великоват и не пролезает (т.н. «зажат»), то мы увидим сообщение «требуется фрагментация пакета, но установлен запрещающий флаг».
И теперь нам нужно определить, какой размер MTU является оптимальным для нашего сервера.
Руками это долго, сложно и не нужно, поэтому мы используем утилиту mtupath, которую скачаем отсюда.
Потом забираем эту утилиту из папки загрузки и в неизменном виде кладем в C:\Windows\System32.
В командной строке, запущенной от имени администратора (важно!) пишем следующую команду: mtupath 195.122.154.1
Эта утилита автоматически тестирует сервер блоками MTU различного размера и выбирает оптимальный.
В итоге получаем что-то типа вот этого:
Что это означает?
У меня наилучшим вариантом утилита считает MSS=1452, что соответствует MTU=1480.
Он, как видите, несколько меньше, чем тот, который установлен по умолчанию у нас в системе и в роутере.
Поэтому, что логично, нам нужно его изменить.
Если вы вошли в азарт и вам очень нравится работать в консоли — простите, но я вас разочарую, мы сделаем все быстрее.
Качаем еще одну небольшую программку, которая называется SG TCP Optimizer.
Запускаем ее, нажимаем ОК, если вылезет предупреждение и немного ждем.
Когда программа запустится, мы увидим окно.
Ползунок Connection Speed можем передвинуть согласно скорости вашего интернета.
Больше ничего трогать, нажимать и двигать не надо.
После этого нажимаем Apply changes, немного ждем и перезагружаем ПК.
Затем мы снова запускаем командную строку и проверяем, проходит ли MTU после изменения командой ping -f -l 1452 195.122.154.1
Как вы можете заметить, я уже изменил размер MSS в команде согласно имеющемуся теперь у меня (MSS=MTU-28, напомню).
И мы видим, что теперь наши пакеты вполне себе проходят до сервера.
Но для очистки совести мы произведем смену MTU в том числе и в нашем роутере.
В целом, можно и рекомендуется сделать только это, потому что если произвести описанные выше операции с интернет-адаптером вашего ПК, то в теории может появиться небольшой лаг при загрузке интернет-страниц, так как вашей сетевой карте придется дополнительно брать на себя функцию по пересборке пакетов, а роутеру это сделать проще простого.
Если после изменения MTU вы наблюдаете какие-то проблемы с загрузкой страниц или работой сайтов — просто верните обратно 1500, и все.
И вот на этом мы удовлетворенно выдохнем, почувствуем гордость за себя и прокачку своего соединения и пойдем за новой чашкой чая.
Но если вы думаете, что на этом все — то ничего подобного!
Расскажу подробнее.
DNS расшифровывается как система доменных имён, грубо говоря, это система для преобразования доменного имени в IP-адрес. Все сервисы обладают своим уникальным IP-адресом и портом, и в случае задержки распознавания нужного IP-адреса происходят лаги. На практике это значит появление некоторого количества проблем как с обычным серфингом по сайтам, так и с играми.
Обычно при настройке интернета DNS вам прописывает провайдер, чаще всего — прописывает свой собственный. Это не всегда плохо и иногда может быть даже лучше, чем какие-то общепринятые альтернативы, но ключевое здесь — «не всегда».
На практике подбор подходящего для вас DNS-сервера может иметь большое количество плюсов:
Ну и много чего еще, но это нам неинтересно. А интересно нам, как установить на наш компьютер оптимальный DNS-сервер, если сервер провайдера нам почему-то не нравится.
Для начала мы качаем вот тут маленькую программку DNS Bencmark, которая обладает большой базой открытых для использования DNS-серверов.
Заходите на страницу, кликаете на картинку, скачивается маленькая утилита весом всего 150 килобайт, запускаете ее.
Пользоваться программой очень просто:
1. Сначала идете на вкладку Nameservers и ждете, пока они загрузятся.
2. Нажимаем Run Benchmark и идем читать гайды Варлава, какое-то время этот тест у нас займет.
3. Когда тест закончился, закрываем появившееся окно, идем на вкладку Conclusions, немного скроллим вниз и видим, что нам рекомендуют.
После этого нам нужно изменить DNS-сервер для нашего ПК и, в идеале, в роутере.
Как это сделать?
В моем случае это DNS-сервер от Cloudflare, который оказался быстрее и предоставленного провайдером, и альтернативного от Google, который зачем-то постоянно рекомендуют игрокам.
Жмем «Ок», выходим.
Далее аналогичную операцию нам нужно провести в своем роутере. Как зайти в роутер, я писал выше. В моем Keenetic это находится во вкладке «Сетевые правила» — «Интернет-фильтр». Предустановленные в роутере DNS я просто выключил.
Ну и, собственно, прописываем то, что вам рекомендовалось. Перезагружаемся.
Все, теперь вы точно молодец.
Отдельно замечу, что DNS — это такая вещь, которую необходимо некоторое время протестировать, поэтому я рекомендую в течение ближайшего дня-двух понаблюдать за соединением и пингом, и оценить их стабильность относительно того, что было. Если субъективно при серфинге в интернете и в играх вам больше нравится DNS вашего провайдера — на здоровье, используйте его.
В совокупности вышеперечисленные методы исправили у меня вообще все: вылетов нет, любые скачки пинга полностью пропали, практически исчезли немотивированные лаги и подвисания. Пинг в мире от 90 до 110, в триалах от 90 до 140. Конечно, от вылетов из-за перегрузки локации/подземелья во время какого-нибудь ивента (или потому что ZOS все починили во время техработ) все это вас не спасет, но большинство повседневных проблем может решить.
Для информации: у меня ростелекомовский VDSL-интернет с реальной скоростью соединения 36/18 Мбит/сек. А уж на приличной оптике все должно быть еще лучше.
И да, лучше перезагружать роутер после того, как провайдер проводит у себя какие-то работы.
Однако, дамы и господа, мы живем в тяжелые времена, в которые с интернетом творится много чего неприятного, поэтому еще немного текста.
Да, разнообразные сервисы, улучшающие трассировку до сервера, вполне можно использовать, их множество. Иногда они тоже могут помочь во время особенно больших нагрузок на сервер, типа ивентов. Но, как я уже писал, об улучшении трассировки в обход перегруженных узлов можно договориться с провайдером. Если же не получается договориться или вы боитесь разговаривать с незнакомыми людьми по телефону, то вам сюда.
Ну а на этом у меня все. Качайтесь, фармите, стройте домики, торгуйте, разрывайте в триалах и нагибайте в пвп с удовольствием и без лагов. Всем добра.