Все, кто играют в FIFA, сталкиваются с херовым коннектом, и практически все грешат на сервера, которые физически находятся достаточно далеко от всех стран бывшего СНГ… Это действительно так, но практически ни один фифер не знает — к какому серверу подключается именно его консоль и насколько хреновое (или хорошее) у него соединение. У нескольких фифа-блогеров выходили ролики по этому вопросу, но технических подробностей — никаких. У Yozhik-а был ролик, где упоминалось, что из России все подключаются к немецким серверам где-то во Франкфурте, и были даже пару ip-адресов, через которые можно было тестить качество соединения, и всё… Так ли это? Разберемся, заодно побудем немного хакерами 🙂
Первым делом нужно скачать сетевой снифер под названием Wireshark (https://www.wireshark.org), он доступен под Windows, Linux и MacOS (в первых тестах использовал Debookee, но он доступен только под MacOS, не у всех есть макбуки под рукой). Скачиваете и устанавливаете на свой комп. Для дальнейшей работы необходимо, чтобы комп, где установлен Wireshark и ваша консоль были в одной подсети (или простыми словами подключены к одному роутеру, неважно проводное это подключение или Wi-Fi). Все скриншоты я делал в MacOS, в других ОС интерфейс практически одинаков.
После запуска Wireshark спросит, какой интерфейс ему нужно прослушивать:
Я выбрал Wi-Fi (т.к. ноутбук подключен через Wi-Fi), если вы не знаете — можете выделить и выбрать все. Если у вас комп подключен через Ethernet — выбирайте lan.
Далее Wireshark запустится и начнет прослушивать весь трафик, который проходит через вашу сеть.
Сначала проверим, к каким серверам подключается веб-приложение FIFA20 Companion (оставляем при этом Wireshark работающим).
После этого можно остановить прослушивание пакетов, нажав на кнопку «Stop capturing packets»:
Переходим в Wireshark, жмем в главном меню Edit → Find packet…
Вбиваем ea.com и жмём Find:
Вижу первый (по времени) сетевой пакет 5050, который постучался на гугловский DNS-сервер (в столбце Protocol видно, что это DNS запрос) 8.8.8.8, с запросом — а что за ip-адрес привязан к домену accounts.ea.com?
Жмем Find еще раз, переходим на следующий пакет, содержащий искомое ea.com
Вижу, что DNS-сервер вернул ip, на котором находится сервер авторизации EA — это 159.153.191.240
Чекаем, где он находится физически через https://2ip.ua/ru/services/information-service/site-location. Оказывается, он находится в США, штат Калифорния, в городе Редвуд Сити. Огонь! Едем дальше и по похожей схеме ищем все пакеты, которыми обменивался FIFA Companion через наш интернет…
Подробности опущу, покажу результаты
После авторизации компаньон перенаправляет на gateway.ea.com с ip 159.153.191.238 (судя по всему, это какой-то балансировщик трафика) и дальше идет подключение на utas.mob.v2.fut.ea.com с ip 162.13.20.186 (физически сервер находится в Англии, в пригороде Лондона городе Этон). Не знаю его предназначение, но похоже на то, что сначала идет проверка — мобильный ли это компаньон (т.е. приложение на смартфоне). Почему я так думаю — например при частой покупке игроков иногда временно отключают функцию покупки на десктопной версии компаньона, но в смартфоне покупка продолжает работать и судя по всему это разные сервера.
После проверки на мобильный компаньон (у меня запущен компаньон через десктопный браузер) нас редиректят на utas.external.s2.fut.ea.com с ip 95.138.141.11 (физически сервер находится в Англии, уже в самом Лондоне. А точнее в местном датацентре Rackspace US Inc.). Всё, запросов на другие сервера не было.
Итого, при запуске десктопного компаньона именно у меня подключение идет к серверу utas.external.s2.fut.ea.com с ip-адресом 95.138.141.11
Я постоянно живу в Казахстане, в Алматы, очень любопытно к какому серверу подключается ваш компаньон — доменное имя у всех будет одинаковое (utas.external.s2.fut.ea.com), но вот ip-адрес (и физическое местонахождение) может быть разным у разных пользователей.
Ну что, поехали дальше, к самому интересному — консолям?
У меня PS4, поэтому примеры будут оттуда (для XBOX все полностью аналогично). Нужно повторить все эти процедуры снова — перезапустить Wireshark (чтобы обновить весь список сетевых пакетов), и запустить вашу консоль, а потом FIFA 20.
Чтобы облегчить себе задачу, в Wireshark сделаю фильтр прослушиваемых пакетов — сделаю фильтр по ip-адресу консоли. Таким образом я увижу только те сетевые пакеты, которыми обменивается только консоль. Для этого нужно узнать ip-адрес консоли (проще всего посмотреть в Настройки → Сеть → Узнать состояние соединения). Смотрите ip-адрес соединения, у меня это 192.168.2.11
Итак, консоль запущена, теперь запускаем Wireshark и вбиваем в фильтр пакетов следующую запись
ip.addr == 192.168.2.11
Сам адрес вбивайте тот, который присвоен консоли.
Запускайте FIFA 20 и входите в FUT. Можете что-нибудь поделать внутри — походить по меню, посмотреть свой состав, это просто даст чуть больше информации.
Всё, можно остановить прослушивание трафика, жмем Stop capturing packets… и проверяем, к чему же подключается фифа. Напоминаю — поиск по ea.com
Просто напишу список серверов, куда последовательно подключается FIFA 20 на PS4:
Дальше идут запросы к DDNS-службам, которые сопоставляют доменные имена с динамическими ip-адресами серверов. Нам особо не интересно, поэтому пропущу.
Проверяем дальше (здесь идет подключение к облаку Amazon, где хранятся данные для FIFA):
И тут самое интересное:
— fifa20.service.easports.com (ip-адрес 159.153.20.30). Физическое местонахождение сервера — Голландия, Амстердам и провайдер Electronic Arts Limited
— pas.external.prod.easfc.ea.com (ip-адрес 134.213.201.140). Физическое местонахождение сервера — Англия, Лондон и провайдер Rackspace US Inc.
— utas.external.s2.fut.ea.com (ip-адрес 95.138.141.11). Физическое местонахождение сервера — Англия, Лондон и провайдер Rackspace US Inc.
Готово!
Последний url (utas.external.s2.fut.ea.com) и есть искомый сервер, через который соединяются все игроки FIFA 20 для игры в FUT Champions (к нему же коннектится FIFA 20 Companion)
Если не хотите заморачиваться — можете искать в Wireshark сразу строку utas.external.s2.fut.ea.com и по его ip-адресу проверять физическое местонахождение сервера, к которому соединяется именно ваша консоль. В моем случае это Лондон.
Как еще оценить качество соединения? Можно сделать traceroute до этого ip-адреса:
traceroute to 95.138.141.11 (95.138.141.11), 64 hops max, 52 byte packets
1 192.168.2.1 (192.168.2.1) 8.029 ms 1.655 ms 1.483 ms
2 82.200.242.195 (82.200.242.195) 2.693 ms 9.348 ms 2.580 ms
3 82.200.243.0 (82.200.243.0) 17.861 ms 22.172 ms 19.097 ms
4 95.59.172.9.static.telecom.kz (95.59.172.9) 21.573 ms 24.098 ms 20.279 ms
5 95.59.172.15.static.telecom.kz (95.59.172.15) 23.897 ms 17.661 ms 17.754 ms
6 ae7.rt.int.stv.ru.retn.net (87.245.238.26) 50.815 ms 55.793 ms 50.225 ms
7 ae4-5.rt.tc2.lon.uk.retn.net (87.245.234.114) 108.827 ms 108.837 ms 112.598 ms
8 195.66.224.116 (195.66.224.116) 111.301 ms 115.663 ms 110.371 ms
10 134.213.97.149 (134.213.97.149) 110.454 ms 109.911 ms 109.376 ms
11 corea-core6.lon3.rackspace.net (164.177.137.13) 110.333 ms 112.178 ms
coreb-core6.lon3.rackspace.net (164.177.137.25) 109.203 ms
12 coreb-core6.lon3.rackspace.net (164.177.137.25) 109.677 ms 109.990 ms *
Из трейса видно, что пинг до сервера FUT у меня около 109 мс и наибольшая задержка пакетов происходит от Казахтелекома (провайдер, к которому я подключен, к слову 500Гбит оптика) до магистрального канала RETN (33 мс) и из России до Лондона (62 мс). Печаль…
Самое интересное, я здесь ничего не смогу поделать — эта задержка будет всегда(( Аналогичная проблема возникает у ребят из Сибири (хотя в меньшей степени, чем у меня) и самая большая проблема — у жителей Дальнего востока России (там задержка еще больше).
Единственное, на что я могу повлиять прямо сейчас — найти самый быстрый для моего расположения и провайдера DNS-сервер (как видим из анализа трафика, имеется дофига DNS-запросов, когда консоль просто опрашивает DNS-сервер вашего провайдера — «Эй, чувак, а ну-ка верни мне ip-адрес домена utas.external.s2.fut.ea.com» и только потом идет коннект на нужный сервер… Когда я нашел быстрейший для меня DNS-сервер, улучшил качество соединения в FIFA на 1 палку )
Для поиска лучшего для вас DNS-сервера попробуйте утилиту namebench, инструкцию можете посмотреть на https://www.comss.ru/page.php?id=1691
В любом случае — проверяйте, к какому физическому серверу подключается ваша FIFA, где он расположен и думайте, что можно с этим сделать. Будут вопросы — пишите в личку, постараюсь помочь.
Что можно сделать прям сейчас?
Начнем с того, что как минимум выставить DNS на 1.1.1.1/1.0.0.1. Эти адреса принадлежат компании, которая зарабатывает на том, что предоставляет услугу CDN (то есть помогает расположить ресурсы, к которым идет доступ, максимально близко физически к пользователю). Для нас это означает, что этот Cloudflare будет находиться всегда супер-близко и работать супер-быстро. Нет, конечно, можно продолжать пользоваться DNS-ами провайдера, да вот только мощности у них совершенно другие (в пользу Cloudflare), а раз уж мы боремся за скорость, то давай вбивай их DNS и не спорь.
Зайди в настройки своего роутера и найди там DMZ (или же «демилитаризованная зона»). Туда можно и нужно вписать IP твоего компа/приставки. В этом случае роутер не будет принимать участие в фильтрации твоего траффика ни в одну из сторону (ни наружу, в интернет, ни внутрь, из интернета). Напоминаю: меньше участников в сети = меньше пинг. Кстати, это еще один прикольный способ сменить свой тип NAT на открытый 😉
Что пинговать-то будем? Вообще, с этого стоило бы начинать, конечно, но пофиг. Нам нужен любой сервер из большого дата-центра. У меня есть выделенный сервер в Германии, с которого пинг на любой сервер в Европе около 8-18 мс ))
Шаги, которые должны сделать «прям совсем хорошо», но требуют навыков: запустить свой vpn-сервер и свой dns-сервер в дата-центре в Германии (тот же Digitalocean или Hetzner), подключить роутер впн-ом к этому серверу и настроить использование именно этого днс-а. В итоге консоль будет в 3-10 «прыжках» от серверов, при этом почти все прыжки будут внутри самого магистрального канала (например в Германии), то есть там пинга внутри почти и не будет. Небольшая задержка будет при шифровке-дешифровке трафика — но если все хорошо настроить, то она будет меньше потерь на маршрутизацию.
Дальше нужно экспериментально подобрать размер MTU, чтобы захламлять сеть по максимуму мелкими пакетами, но при этом, чтобы данные не терялись. Тут нужно просто покрутить число и подобрать подходящий для тебя вариант. Размер MTU выставляется в настройках сети.
P.S. На самом деле это не все сервера, к которым коннектится FIFA 20, приведу еще несколько (по ним можно так же анализировать трафик):
— HTTP-запросы: https://eaassets-a.akamaihd.net/ (это CDN Akamai, откуда загружается контент для игры — если, например, не подгружаются динамические изображения игроков, то это виноваты ребята из Akamai. Сервера Akamai находятся практически в каждой стране, чтобы сократить и распределить нагрузку на раздачу «тяжелого» контента конкретным пользователям), https://ru-prof.np.community.playstation.net/
Чуть позже сделаю еще один гайд, как оценить качество соединения с помощью Wireshark (ping и traceroute не дадут полную картину происходящего) и ссылку добавлю сюда же.
P.P.S. Для тех, кто хочет погрузиться в тему коннекта и маршрутизации в реалтайм онлайн-играх очень рекомендую прочитать перевод статьи системного администратора компании Riot Games (они как раз занимаются онлайн-играми) и как они добились уменьшения пинга для игроков в США в три раза — Как Riot Games борется с высоким пингом и сетевыми проблемами и заодно объясняется, почему пользователь может спокойно наслаждаться низким пингом в онлайн-игре, а его друг, живущий в соседнем доме и пользующийся услугами другого провайдера, будет бороться с огромной задержкой…
UPDATE (12/02/2020) — пошли слухи, что EA установили новый сервер в Стокгольме, решил проверить. В общем, сервер действительно новый поставили, только в Финляндии, в Хельсинки.