16. Setting Ta and RTO (Ta と RTO の設定)
ICE の収集フェーズ中(セクション 4.1.1)、および ICE が接続性チェックを実行している間(セクション 7)、エージェントは STUN および TURN トランザクションを送信します。これらのトランザクションは、Ta ミリ秒ごとに 1 回のレートでペース調整され、特定の RTO を利用します。このセクションでは、Ta と RTO の値の計算方法について説明します。この計算は、ICE がリアルタイムメディアストリーム(RTP など)で使用されているか、それ以外の何かで使用されているかによって異なります。ICE が既知の最大帯域幅を持つストリームに使用される場合、セクション 16.1 の計算に従って ICE 交換をレート制御してもかまいません (MAY)。他のすべてのストリームについては、セクション 16.2 の計算に従わなければなりません (MUST)。
16.1. RTP Media Streams (RTP メディアストリーム)
RTO と Ta の値は、ICE 処理の存続期間中に変化します。一方の値セットは収集フェーズ中に適用され、もう一方は接続性チェックに適用されます。
Ta の値は構成可能であるべきであり (SHOULD)、デフォルトは次のようになるべきです (SHOULD)。
各メディアストリーム i について:
Ta_i = (stun_packet_size / rtp_packet_size) * rtp_ptime
1
Ta = MAX (20ms, ------------------- )
k
----
\ 1
> ------
/ Ta_i
----
i=1
ここで、k はメディアストリームの数です。収集フェーズ中、Ta はエージェントがオファーまたはアンサーで示したメディアストリームの数に基づいて計算され、RTP パケットサイズと RTP ptime は各メディアストリームで最も優先されるコーデックのものです。オファーとアンサーが交換されると、エージェントは Ta を再計算して接続性チェックのペースを調整します。その場合、Ta の値はセッションで実際に使用されるメディアストリームの数に基づいており、RTP パケットサイズと RTP ptime はエージェントが送信する最も優先されるコーデックのものです。
さらに、[RFC5389] で定義されている STUN トランザクションの再送タイマー RTO は構成可能であるべきであり (SHOULD)、収集フェーズ中はデフォルトが次のようになるべきです (SHOULD)。
RTO = MAX (100ms, Ta * (number of pairs))
ここで、number of pairs は、STUN または TURN サーバーを持つ候補のペアの数を指します。
接続性チェックの場合、RTO は構成可能であるべきであり (SHOULD)、デフォルトは次のようになるべきです (SHOULD)。
RTO = MAX (100ms, Ta*N * (Num-Waiting + Num-In-Progress))
ここで、Num-Waiting は Waiting 状態のチェックリスト内のチェック数であり、Num-In-Progress は In-Progress 状態のチェック数です。Waiting 状態と In-Progress 状態のチェック数が変化すると、RTO はトランザクションごとに異なることに注意してください。
これらの式は、STUN トランザクションがメディアと同じレートでペース調整されるようにすることを目的としています。これにより、メディアのサポートに必要な同じネットワーク条件下で ICE が適切に機能することが保証されます。追加の議論と動機については、付録 B.1 を参照してください。このペーシングのため、すべての server reflexive および relayed 候補を取得するには一定の時間がかかります。実装はこれを行うために必要な時間を認識し、アプリケーションが時間予算を必要とする場合は、収集される候補の数を制限する必要があります。
これらの式は、エージェントが再送を実行する前に、すべての単一の接続性チェックに対して最初のパケットを送信するという動作をもたらします。これは、RTO(再送間隔を表す)の式で見ることができます。これらの式は、実行されるチェックの数 N でスケーリングされます。この結果、ICE は適切に一定のレートを維持しますが、パケット損失に対してより敏感になります。接続性チェックの最初の単一パケットが失われると、そのペアが検証されるまでに長い時間がかかる可能性が高くなり、代わりに、優先順位の低いチェック(ただしパケット損失がなかったチェック)が先に完了する可能性がはるかに高くなります。これにより、ICE のパフォーマンスが最適ではなくなり、優先順位の高いペアよりも優先順位の低いペアが選択されます。実装者はこの結果を認識する必要がありますが、それでもここで説明されているタイマー値を利用すべきです。
16.2. Non-RTP Sessions (非 RTP セッション)
ICE がリアルタイムではなく、ICE が展開されているネットワークで機能することがわかっている固定レートが関連付けられていない種類のセッションを確立するために使用される場合、Ta と RTO はより保守的な値に戻ります。Ta は構成可能であるべきであり (SHOULD)、デフォルトは 500 ミリ秒であるべきであり (SHOULD)、500 ミリ秒未満になるように構成してはなりません (MUST NOT)。
さらに、STUN トランザクションの再送タイマー RTO は構成可能であるべきであり (SHOULD)、収集フェーズ中はデフォルトが次のようになるべきです (SHOULD)。
RTO = MAX (500ms, Ta * (number of pairs))
ここで、number of pairs は、STUN または TURN サーバーを持つ候補のペアの数を指します。
接続性チェックの場合、RTO は構成可能であるべきであり (SHOULD)、デフォルトは次のようになるべきです (SHOULD)。
RTO = MAX (500ms, Ta*N * (Num-Waiting + Num-In-Progress))