Após quatro anos de desenvolvimento, a Valve lançou a biblioteca GameNetworkingSockets 1.5.0, que implementa um sistema de transmissão de mensagens sobre UDP, utilizado para organizar uma troca de dados em jogos rápida e confiável. O código foi escrito em C++ e é fornecido sob a licença BSD.
O GameNetworkingSockets implementa um protocolo sobre UDP semelhante ao TCP, garantindo a configuração de uma conexão, mas orientada à transmissão de mensagens em vez de fluxos. Através do canal de comunicação estabelecido, as mensagens podem ser transmitidas tanto no modo de entrega garantida quanto usando um modo de transmissão não confiável mais rápido.
O protocolo suporta funcionalidades como tratamento de fragmentação, reorganização de pacotes, previsão e limitação de largura de banda, criação de canais de comunicação P2P, contorno de tradutores de endereços (via WebRTC ICE) e criptografia. Os dados nos pacotes são criptografados utilizando o algoritmo de criptografia simétrica AES, e as assinaturas digitais baseadas em curvas elípticas Ed25519 são usadas para troca de chaves e verificação de certificados. Os mecanismos de entrega de chaves e escolha de vetor de inicialização para cada pacote são baseados em métodos usados no protocolo QUIC.
Entre as mudanças na nova versão:
- A API ISteamNetworkingSockets::SendMessages foi ampliada para facilitar o tratamento de falhas durante o envio e para iniciar tentativas de entrega novamente.
- Novas configurações foram adicionadas para ECN, jitter, definição de IP local (IPLocalHost) e desativação de autenticação (AllowWithoutAuth).
- Uma versão da API ISteamNetworkingMessages foi adicionada para a linguagem C.
- Uma versão inicial do wrapper para a linguagem Rust foi implementada.
- Erros na implementação do modo P2P foram corrigidos.
- Uma correção automática para situações relacionadas à desordem na chegada de pacotes e mensagens foi implementada.
- A integração com as ferramentas CMake e vcpkg foi aprimorada.
- Compatibilidade com novas versões das bibliotecas protobuf e abseil foi estabelecida.
- Suporte a diagnósticos através do ETW (Event Tracing for Windows) foi adicionado.
- Vulnerabilidades foram corrigidas, com informações que não são detalhadas, mas segundo o log de mudanças, dizem respeito a um overflow de inteiro nas funções de envio de pacotes e à possibilidade de contornar a verificação de certificado na função CheckCertPOPID.
Fonte: opennet.ru
