STUN Client | UDP Retransmissions

Ao executar STUN sobre UDP, é possível que a mensagem STUN seja descartada pela rede. A confiabilidade das transações de requisição/resposta STUN é alcançada através de retransmissões da mensagem de requisição pela própria aplicação cliente.

 

Um cliente deve retransmitir uma mensagem de requisição STUN começando com um intervalo de RTO ("Retransmission TimeOut"), dobrando após cada retransmissão. O RTO é uma estimativa do tempo de ida e volta.

 

Por padrão, o Cliente STUN do sgcWebSockets já vem configurado com um RTO de 500 ms e um valor de Max Retries de 7.

 

Por exemplo, supondo um RTO de 500 ms, as requisições seriam enviadas nos tempos 0 ms, 500 ms, 1500 ms, 3500 ms, 7500 ms, 15500 ms e 31500 ms. Se o cliente não tiver recebido uma resposta após 39500 ms, o cliente considerará que a transação atingiu o tempo limite.

 


oSTUN := TsgcSTUNClient.Create(nil);
oSTUN.Host := 'stun.sgcwebsockets.com';
oSTUN.Port := 3478;
oSTUN.RetransmissionOptions.Enabled := true;
oSTUN.RetransmissionOptions.RTO := 500;
oSTUN.RetransmissionOptions.MaxRetries := 7;
oSTUN.SendRequest;