Новые сетевые API в SDK Steamworks версии 1.44

Новые сетевые API в SDK Steamworks версии 1.44

Последние несколько лет мы работали над улучшением качества многопользовательской игры в Dota 2 и CS:GO при помощи ретрансляции трафика и его переноса на свою сетевую магистраль. Это защищает наши игровые серверы от DoS-атак и даёт игрокам по всему миру низкую задержку и высокое качество соединения.

Сегодня мы выпускаем несколько API, которые предоставляют доступ к этой службе всем партнёрам Steam. Она включает:

  • Доступ к нашей сети, который даёт вашим игрокам защиту от атак, надёжное стопроцентное прохождение NAT и улучшенное соединение.
  • Инструменты для мгновенной оценки пинга между двумя произвольными узлами без отправки пакетов.
  • Высококачественное соединение по надёжному UDP-протоколу со сквозным шифрованием.

Обновление вышло в рамках уже доступного выпуска SDK Steamworks версии 1.44.

Доступ к сети Valve

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

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

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

Наконец, с помощью программной ретрансляции трафика мы зачастую можем уменьшить время пинга! 
Как ретранслируемый маршрут может быть быстрее прямого маршрута? Интернет — это сеть с коммутацией пакетов, поэтому прямых маршрутов не существует. Если пакет «напрямую» отправляется на IP-адрес удалённого хоста, он идёт по маршруту, определяемому стандартными протоколами IP-маршрутизации. Этот маршрут зачастую не оптимален! Наш протокол даёт клиенту возможность выбрать маршрут. Клиент учитывает каждую точку подключения ретрансляции, определяет сквозную задержку на маршруте и затем выбирает маршрут с наименьшей задержкой.

Если разрешить клиентам выбирать маршрут, их соединение будет лучше на удивление часто. Проанализировав 16 млн. подключений уникальных клиентских IP-адресов к выделенным серверам в наших центрах обработки данных, мы получили следующие результаты:

  • Время пинга уменьшилось у 43% игроков.
  • У 25% игроков время пинга уменьшилось на 10 и более мс.
  • У 10% игроков время пинга уменьшилось на 40 и более мс.

Объём улучшений по регионам различается. Вот разбивка по регионам.

Инструменты оценки пинга

Функции интерфейса ISteamNetworkingUtils включают инструменты для оценки пинга, основанные на сети ретрансляции. Измеряя время пинга до разных узлов ретрансляции, мы генерируем координаты, описывающие расположение хоста в интернете. С помощью двух таких наборов координат мы можем весьма точно оценить время пинга между двумя произвольными узлами без отправки пакетов. Эта функция чрезвычайно полезна при подборе игр и выборе узла одноранговой сети.

Сквозной протокол с открытым исходным кодом

SteamNetworkingSockets не только предоставляет доступ к функциям на основе сети ретрансляции Valve и к сетевой магистрали для партнёров Steam, но и является универсальной транспортной библиотекой для игр, предлагая следующие возможности:

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

Шифрование и аутентификация. Безопасность — это не второстепенная задача для современной сетевой игры: уязвимость может испортить впечатление от игры. Надлежащее шифрование — действительно сложная задача. Мы руководствовались современными стандартами для надёжных трансляций и применили их к ненадёжным сообщениям, используемым играми. Встроенное шифрование по умолчанию защищает данные от перехвата. Защита от атак с перехватом требует, чтобы доступ к сертификату или общему секрету выдавал доверенный сторонний участник. Steam является таковым для своих игр: чтобы злоумышленник мог перехватывать или видоизменять пакеты, он должен находиться внутри игрового процесса, где его обнаружит система VAC.

Базовые функции этого API также доступны в версии с открытым исходным кодом. Мы хотим, чтобы разработчики в полной мере пользовались преимуществами нашего API, и это было бы невозможно без уверенности в том, что доступ к исходному коду бесплатен.

Это ещё не всё

Это первое из серии обновлений, направленных на улучшение работы игр по сети для партнёров Steam. Пока что мы только улучшили работу одноранговых сетей, но помимо этого мы планируем дать партнёрам доступ к наработкам, использующимся для наших выделенных серверов. Сообщите нам, если у вас возникли вопросы, и ознакомьтесь с нашими планами о будущем проекта с открытым кодом на GitHub.

Нравится6
Комментарии (3)
Зачем им твои удобства Габен, теперь только чемоданы с зеленью все решают. эпик геи задали новый тренд.
Где там убийца стима Epig Gays Store, который даже файлы раздает на скорости диалапа что 500МБ качаешь как будто 50ГБ? Этим гениям P2P даже организовать мозгов не хватило, как это сделали Майкрософт.
надёжное стопроцентное прохождение NAT

Чё терь на модемах норм можно играть ?
B
i
u
Спойлер