STUN Client | UDP-Neuübertragungen

Wenn STUN über UDP ausgeführt wird, ist es möglich, dass die STUN-Nachricht vom Netzwerk verworfen wird. Die Zuverlässigkeit von STUN-Anfrage-/Antwort-Transaktionen wird durch erneute Übertragungen der Anfragenachricht durch die Client-Anwendung selbst erreicht.

 

Ein Client sollte eine STUN-Request-Nachricht erneut übertragen, beginnend mit einem Intervall von RTO ("Retransmission TimeOut"), das sich nach jeder erneuten Übertragung verdoppelt. Das RTO ist eine Schätzung der Round-Trip-Zeit.

 

Standardmäßig ist der sgcWebSockets-STUN-Client bereits mit einem RTO von 500 ms und einem Max-Retries-Wert von 7 konfiguriert.

 

Angenommen, ein RTO von 500 ms, würden Anfragen zu den Zeitpunkten 0 ms, 500 ms, 1500 ms, 3500 ms, 7500 ms, 15500 ms und 31500 ms gesendet. Wenn der Client nach 39500 ms keine Antwort erhalten hat, betrachtet der Client die Transaktion als abgelaufen.

 


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;