Gamenetworkingsockets

Jul 20, 2023

GameNetworkingSockets is a basic transport layer for games

GameNetworkingSockets is a basic transport layer for games. The features are

  • Connection-oriented API like TCP

  • … but message-oriented like UDP, not stream-oriented.

  • Supports both reliable and unreliable message types

  • Messages can be larger than underlying MTU. The protocol performs fragmentation, reassembly, and retransmission for reliable messages.

  • A reliability layer significantly more sophisticated than a basic TCP-style sliding window. It is based on the “ack vector” model from DCCP RFC 4340, section 11.4 and Google QUIC and discussed in the context of games by Glenn Fiedler. The basic idea is for the receiver to efficiently communicate to the sender the status of every packet number whether or not a packet was received with that number. By remembering which segments were sent in each packet, the sender can deduce which segments need to be retransmitted.

  • Encryption. AES-GCM-256 per packet, Curve25519 for key exchange and cert signatures. The details for shared key derivation and per-packet IV are based on the design used by Google’s QUIC protocol. Tools for simulating packet latency/loss, and detailed stats measurement IPv6 support Peer-to-peer networking



Checkout these related ports:
  • Zyre - Framework for proximity-based peer-to-peer applications
  • Zsync - File transfer program
  • Zmap - Internet scanner
  • Zillion - Distributed computing project
  • Zerotier - Network virtualization everywhere
  • Zebra-server - Z39.50/SR server software
  • Yptransitd - Replacement for nss_ldap
  • Yggdrasil - Experimental end-to-end encrypted self-arranging IPv6 network
  • Yconalyzer - TCP Traffic Analyzer
  • Yazproxy - Powerful general purpose Z39.50/SRW/SRU proxy
  • Yaz - Z39.50/SR client and API library
  • Yaz++ - C++ toolkit for development of Z39.50v3 clients and servers
  • Yate - Yet Another Telephony Engine
  • Yaph - Yet Another Proxy Hunter (proxy scanner)
  • Yami4 - Messaging library for distributed systems