Valve Releases GameNetworkingSockets 1.5.0 Library

Valve has announced the release of the library GameNetworkingSockets 1.5.0 after four years of development. This library implements a message passing system on top of UDP, allowing for high-speed and reliable network data exchange in games. The code is written in C++ and is distributed under the BSD license.

GameNetworkingSockets provides a TCP-like protocol on top of UDP, offering connection establishment and message-oriented communication. Messages can be transmitted in guaranteed delivery mode or using faster, unreliable transmission through established channels. The protocol includes fragmentation processing, packet reassembly, bandwidth prediction and limiting, P2P communication channel creation, address translator bypassing via WebRTC ICE, and encryption using the AES block cipher algorithm.

Digital signatures based on Ed25519 elliptic curves are used for key exchange and certificate verification in the protocol. The methods for key delivery and initialization vector selection are based on QUIC protocol techniques.

Updates in the new version include:

  • Expansion of the ISteamNetworkingSockets::SendMessages API to simplify handling of sending failures and delivery retries.
  • Added settings for ECN, jitter, local IP detection (IPLocalHost), and disabling authentication (AllowWithoutAuth).
  • Introduction of the ISteamNetworkingMessages API option for C language.
  • Implementation of the initial version of the binding for Rust language.
  • Fixes in the P2P mode implementation and automatic correction of packet and message arrival order violations.
  • Improved integration with CMake and vcpkg tools.
  • Enhanced compatibility with new versions of protobuf and abseil libraries.
  • Support for diagnostics via ETW (Event Tracing for Windows).
  • Fixes for vulnerabilities including integer overflow in packet sending functions and opportunities to bypass certificate verification.
/Reports, release notes, official announcements.