Négy év fejlesztés után a Valve kiadta a GameNetworkingSockets 1.5.0 könyvtárat, amely az UDP feletti üzenetküldési rendszert valósít meg, és amely gyors és megbízható adatcserét tesz lehetővé játékokban. A kód C++ nyelven íródott, és BSD licenc alatt érhető el.
A GameNetworkingSockets az UDP felett TCP-szerű protokollt valósít meg, amely kapcsolatépítést biztosít, de az üzenetek átvitelére fókuszál a folyamok helyett. Az alapjául szolgáló csatornán az üzenetek garantált vagy egy gyorsabb megbízhatatlan módon küldhetők.
A protokoll támogatja a fragmentálás kezelését, csomagok újraépítését, sávszélesség-előrejelzést és -korlátozást, P2P kommunikációs csatornák létrehozását, címfordítókkal való megkerülést (WebRTC ICE-n keresztül) és titkosítást. Az adatok a csomagokban AES blokk titkosítással kerülnek titkosításra, míg a kulcscserére és tanúsítványok ellenőrzésére az Ed25519 elliptikus görbék alapú digitális aláírások alkalmazásával kerül sor. A kulcsok átvitelének és az init vektorok választásának mechanizmusai a QUIC protokoll módszerein alapulnak.
Az új verzióban található változások:
- Az ISteamNetworkingSockets::SendMessages API kibővült, hogy megkönnyítse a küldési hibák kezelését és a újraküldések kezdeményezését.
- Új beállítások kerültek hozzáadásra az ECN, jitter, helyi IP (IPLocalHost) meghatározására és az autentikáció kikapcsolására (AllowWithoutAuth).
- Hozzáadták a ISteamNetworkingMessages API C nyelvhez készült változatát.
- Megvalósult a Rust nyelvhez készült csomag kezdeti verziója.
- Javították a P2P üzemmódban előforduló hibákat.
- Automatikus korrekciós mechanizmusokat valósítottak meg a csomagok és üzenetek érkezési sorrendjének megsértésével kapcsolatos helyzeteknél.
- Javították az integrációt a CMake és vcpkg eszközkészletekkel.
- Kompatibilitást biztosítottak az újabb protobuf és abseil könyvtárverziókkal.
- Hozzáadták a diagnosztikai támogatást ETW (Event Tracing for Windows) segítségével.
- Javították a sebezhetőségeket, amelyekről nem részleteztek információkat, de a változási napló alapján a csomagok küldési funkcióiban lévő egész szám túlcsordulásáról és a CheckCertPOPID funkcióban a tanúsítványellenőrzés megkerüléséről van szó.
Forrás: opennet.ru
