Po čtyřech letech vývoje společnost Valve vydala GameNetworkingSockets 1.5.0, knihovnu implementující systém zasílání zpráv přes UDP, který lze použít k implementaci vysokorychlostní a spolehlivé síťové výměny dat ve hrách. Kód je napsán v jazyce C++ a licencován pod licencí BSD.
GameNetworkingSockets implementuje protokol založený na připojení podobný TCP přes UDP, ale zaměřuje se na přenos zpráv spíše než na streamování. Zprávy lze přenášet přes zavedený komunikační kanál s použitím buď garantovaného doručení, nebo rychlejšího nespolehlivého přenosu.
Protokol podporuje funkce jako zpracování fragmentace, opětovné sestavování paketů, predikci a omezení šířky pásma, vytváření komunikačních kanálů P2P, obcházení překladače adres (prostřednictvím WebRTC ICE) a šifrování. Data v paketech jsou šifrována pomocí blokového šifrovacího algoritmu AES a pro výměnu klíčů a ověřování certifikátů se používají digitální podpisy založené na eliptických křivkách Ed25519. Mechanismy doručování klíčů a výběr inicializačního vektoru pro každý paket jsou založeny na metodách používaných v protokolu QUIC.
Mezi změny v nové verzi:
- Rozhraní API ISteamNetworkingSockets::SendMessages bylo rozšířeno pro zjednodušení zpracování chyb odesílání a zahájení opakovaných pokusů o doručení.
- Přidána nová nastavení pro ECN, jitter, detekci lokální IP adresy (IPLocalHost) a zakázání ověřování (AllowWithoutAuth).
- Přidána verze rozhraní ISteamNetworkingMessages API v jazyce C.
- Byla implementována počáteční verze vazby pro jazyk Rust.
- Opraveny chyby v implementaci P2P režimu.
- Byla implementována automatická oprava situací souvisejících s porušením pořadí příchodu paketů a zpráv.
- Vylepšená integrace s nástrojovými sadami CMake a vcpkg.
- Byla vylepšena kompatibilita s novými verzemi knihoven protobuf a abseil.
- Přidána podpora pro diagnostiku prostřednictvím ETW (sledování událostí pro Windows).
- Byly opraveny zranitelnosti, jejichž podrobnosti nejsou uvedeny, ale soudě dle seznamu změn se jedná o přetečení celočíselných hodnot ve funkcích pro odesílání paketů a možnost obejití ověřování certifikátů ve funkci CheckCertPOPID.
Zdroj: opennet.ru
