8e1e5df81a
GameNetworkingSockets is Valve's semi-recently open-sourced networking library. It supports a number of very useful features, including: - Reliable & unreliable messages over UDP. - Robust message fragmentation & reassembly. - P2P networking / NAT traversal. Encryption. PR: 256295 Reported by: Karsten Pedersen <kpedersen at disroot.org>
27 lines
1.3 KiB
Text
27 lines
1.3 KiB
Text
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:
|
|
|
|
WWW: https://github.com/ValveSoftware/GameNetworkingSockets
|