STUN クライアント | UDP 再送信

UDP 上で STUN を実行している場合、STUNメッセージがネットワークによってドロップされる可能性があります。STUNリクエスト/レスポンストランザクションの信頼性は、クライアントアプリケーション自身によるリクエストメッセージの再送信によって実現されます。

 

クライアントは STUN リクエストメッセージを RTO(「再送信タイムアウト」)の間隔で再送信を開始し、再送信ごとに倍増させます。RTO はラウンドトリップ時間の推定値です。

 

デフォルトでは、sgcWebSockets の STUN クライアントは RTO として 500 ms、最大再試行回数として 7 が設定されています。

 

たとえば RTO が 500 ms の場合、リクエストは 0 ms、500 ms、1500 ms、3500 ms、7500 ms、15500 ms、31500 ms の時刻に送信されます。クライアントが 39500 ms 後もレスポンスを受信していない場合、トランザクションはタイムアウトしたと見なされます。

 


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;