Nakon četiri godine razvoja, Valve je izdao GameNetworkingSockets 1.5.0, biblioteku koja implementira sustav razmjene poruka putem UDP-a koji se može koristiti za implementaciju brze i pouzdane razmjene mrežnih podataka u igrama. Kod je napisan u C++ i licenciran pod BSD licencom.
GameNetworkingSockets implementira protokol zasnovan na konekciji sličan TCP-u preko UDP-a, ali se fokusira na prijenos poruka, a ne na strujanje. Poruke se mogu prenositi putem uspostavljenog komunikacijskog kanala koristeći ili zajamčenu dostavu ili brži nepouzdani prijenos.
Protokol podržava značajke kao što su rukovanje fragmentacijom, ponovno sastavljanje paketa, predviđanje i ograničavanje propusnosti, stvaranje P2P komunikacijskog kanala, zaobilaženje prevoditelja adresa (putem WebRTC ICE-a) i šifriranje. Podaci u paketima šifriraju se pomoću AES algoritma blokovne šifre, a digitalni potpisi temeljeni na eliptičnim krivuljama Ed25519 koriste se za razmjenu ključeva i provjeru certifikata. Mehanizmi isporuke ključeva i odabir vektora inicijalizacije za svaki paket temelje se na metodama korištenim u QUIC protokolu.
Među promjenama u novoj verziji:
- API ISteamNetworkingSockets::SendMessages proširen je kako bi se pojednostavilo rukovanje neuspjelim slanjem i ponovnim pokušajima isporuke.
- Dodane su nove postavke za ECN, jitter, detekciju lokalne IP adrese (IPLocalHost) i onemogućavanje autentifikacije (AllowWithoutAuth).
- Dodana je C-jezična verzija ISteamNetworkingMessages API-ja.
- Implementirana je početna verzija povezivanja za Rust jezik.
- Ispravljene greške u implementaciji P2P načina rada.
- Implementirano je automatsko ispravljanje situacija povezanih s kršenjem redoslijeda dolaska paketa i poruka.
- Poboljšana integracija s CMake i vcpkg alatima.
- Poboljšana je kompatibilnost s novim verzijama biblioteka protobuf i abseil.
- Dodana je podrška za dijagnostiku putem ETW-a (praćenje događaja za Windows).
- Ispravljene su ranjivosti, čiji detalji nisu navedeni, ali sudeći prema popisu promjena, radi se o prekoračenju cijelog broja u funkcijama slanja paketa i mogućnosti zaobilaženja provjere certifikata u funkciji CheckCertPOPID.
Izvor: opennet.ru
