STUN Client | Retransmisiones UDP

Al ejecutar STUN sobre UDP, es posible que el mensaje STUN sea descartado por la red. La fiabilidad de las transacciones de solicitud/respuesta STUN se logra mediante retransmisiones del mensaje de solicitud por parte de la propia aplicación cliente.

 

Un cliente debe retransmitir un mensaje de solicitud STUN comenzando con un intervalo de RTO ("Retransmission TimeOut"), duplicándolo tras cada retransmisión. El RTO es una estimación del tiempo de ida y vuelta.

 

Por defecto, el cliente STUN de sgcWebSockets ya está configurado con un RTO de 500 ms y un valor de reintentos máximos de 7.

 

Por ejemplo, con un RTO de 500 ms, las solicitudes se enviarían en los instantes 0 ms, 500 ms, 1500 ms, 3500 ms, 7500 ms, 15500 ms y 31500 ms. Si el cliente no recibe respuesta transcurridos 39500 ms, considerará que la transacción ha expirado.

 


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;