Valve опубликовала сетевую библиотеку GameNetworkingSockets 1.5.0

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

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

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

Среди изменений в новой версии:

  • API ISteamNetworkingSockets::SendMessages расширен для упрощения обработки сбоев при отправке и инициирования повторных попыток доставки.
  • Добавлены новые настройки для ECN, jitter-а, определения локального IP (IPLocalHost) и отключения аутентификации (AllowWithoutAuth).
  • Добавлен вариант API ISteamNetworkingMessages для языка Си.
  • Реализована начальная версия обвязки для языка Rust.
  • Исправлены ошибки в реализации режима P2P.
  • Реализована автоматическая корректировка ситуаций, связанных с нарушением порядка прихода пакетов и сообщений.
  • Улучшена интеграция с инструментариями CMake и vcpkg.
  • Налажена совместимость с новыми версиями библиотек protobuf и abseil.
  • Добавлена поддержка диагностики через ETW (Event Tracing for Windows).
  • Устранены уязвимости, информация о которым не детализируется, но судя по логу изменений речь о целочисленном переполнении в функциях отправки пакетов и возможности обхода проверки сертификата в функции CheckCertPOPID.

Источник: http://www.opennet.ru/opennews/art.shtml?num=65318