Компания Valve открыла реализацию системы TCP-подобных коммуникаций поверх UDP

Материал из Викиновостей, свободного источника новостей

31 марта 2018 года

Компания Valve перевела в разряд свободного ПО библиотеку GameNetworkingSockets с реализацией системы передачи сообщений поверх UDP, которая может применяться для организации высокоскоростного и надёжного сетевого обмена данными в играх. Код написан на языке С++ и поставляется под лицензией BSD.

GameNetworkingSockets реализует поверх UDP похожий на TCP протокол, обеспечивающий установку соединения, но ориентированный на передачу сообщений вместо потоков. При этом через установленный канал связи сообщения могут передаваться как в режиме гарантированной доставки, так и с использованием более быстрого режима ненадёжной передачи. Протокол поддерживает такие возможности как обработка фрагментации, пересборка пакетов, прогнозирование и ограничение пропускной способности.

Имеется встроенная поддержка шифрования канала связи. Данные в пакетах шифруются с использованием алгоритма блочного шифрования AES, а для обмена ключами и проверки сертификатов применяются цифровые подписи на базе эллиптических кривых Ed25519. Механизмы доставки ключей и выбора вектора инициализации для каждого пакета основаны на методах, применяемых в протоколе QUIC.

Разработчикам предложена библиотека c реализацией C++ класса SteamNetworkingSockets, а также инструментарий для симуляции потери пакетов и получения детальной статистики. Среди необходимых для сборки зависимостей: OpenSSL, Google protobuf, ed25519-donna, curve25519-donna и ujson (компактный парсер JSON, который уже включен в состав GameNetworkingSockets.

Из планов на будущее называется переработка кода "SNP", который отвечает за инкапсуляцию API-сообщений в UDP-пакеты и выполнение таких операций как фрагментация и пересборка слишком больших пакетов, cлияние мелких сообщений и переотправка потерянных фрагментов. В новой реализации появится более продвинутая реализация скользящего окна и полноценная возможность упорядочивания пакетов (сейчас пакет пришедший не по порядку просто отбрасывается). Также планируется уйти от применения специфичных для Steam идентификаторов CSteamID в пользу более универсальной структуры идентификации и избавиться от зависимости от OpenSSL, в котором используется только реализация AES.

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Компания Valve открыла реализацию системы TCP-подобных коммуникаций поверх UDP», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.