選択的繰り返し ARQまたは選択的拒否 ARQ は、信頼性の高い通信でシーケンス番号と再送信を管理するために使用される自動繰り返し要求(ARQ) プロトコルの特定のインスタンスです。
まとめ
選択的繰り返しは、自動繰り返し要求 (ARQ) の一部です。選択的繰り返しでは、送信者は、Go-Back-N ARQのように受信側からの個別の ACK を待つ必要がなく、ウィンドウ サイズで指定された数のフレームを送信します。受信側は、1 つのフレームを選択的に拒否し、そのフレームだけを再送信することができます。これは、その時点からすべてのフレームを再送信する必要がある他の形式の ARQ とは対照的です。受信側は、順序が乱れたフレームを受け入れてバッファリングします。送信側は、タイムアウトしたフレームを個別に再送信します。
コンセプト
これは、メッセージ ユニットの配信および確認のためのプロトコルとして使用することも、細分化されたメッセージ サブユニットの配信のためのプロトコルとして使用することもできます。
メッセージ配信プロトコルとして使用する場合、送信プロセスは、フレーム損失後もウィンドウ サイズで指定された数のフレームを送信し続けます。Go-Back-N ARQ とは異なり、受信プロセスは、最初のエラー後も送信されたフレームを受け入れて確認応答し続けます。これは、送信ウィンドウ サイズと受信ウィンドウ サイズの両方が1より大きいスライディングウィンドウ プロトコルの一般的なケースです。
受信側プロセスは、受信していない最初のフレームのシーケンス番号を記録し、送信するすべての確認応答(ACK) でその番号を送信します。送信側からのフレームが受信側に届かない場合は、送信側はウィンドウが空になるまで後続のフレームを送信し続けます。受信側は、受信ウィンドウを後続のフレームで埋め続け、そのたびに、最も古い欠落フレームのシーケンス番号を含む ACK で応答します。送信側は、ウィンドウ内のすべてのフレームを送信すると、ACK で指定されたフレーム番号を再送信し、中断したところから処理を続行します。
送信ウィンドウと受信ウィンドウのサイズは等しく、最大シーケンス番号の半分(シーケンス番号は 0 からn -1 まで番号付けされていると仮定)でなければ、パケットがドロップされるすべてのケースで誤通信が発生してしまいます。これを理解するために、すべての ACK が破棄された場合を考えてみましょう。受信ウィンドウが最大シーケンス番号の半分より大きい場合、タイムアウト後に存在するパケットの一部(場合によってはすべて)は、重複していると認識されません。送信者は、確認応答されたパケットごとにウィンドウを移動します。[1]
細分化されたメッセージの配信プロトコルとして使用される場合、動作は多少異なります。メッセージの長さが可変である可能性がある非連続チャネルでは、標準 ARQ またはハイブリッド ARQ プロトコルはメッセージを 1 つのユニットとして扱うことができます。または、選択的再送信を基本的な ARQ メカニズムと組み合わせて使用すると、パケット セグメンテーションと呼ばれるプロセスで、メッセージが最初にサブブロック (通常は固定長) に分割されます。したがって、元の可変長メッセージは、可変数のサブブロックの連結として表されます。標準 ARQ では、メッセージ全体が確認応答 (ACK) されるか、否定応答 (NAK) されますが、選択的送信の ARQ では、ACK 応答に、正常に受信された各サブブロックの ID を示すビット フラグが追加で含まれます。細分化されたメッセージの選択的再送信の ARQ では、各再送信の長さが短縮され、リンクされたサブブロックのみを含める必要があります。
可変長メッセージを使用するほとんどのチャネル モデルでは、エラーのない受信の確率はメッセージ長の増加に反比例して減少します。つまり、長いメッセージよりも短いメッセージの方が受信しやすいということです。したがって、可変長メッセージを使用する標準の ARQ 技術では、各繰り返しがフル レングスになるため、長いメッセージの配信が難しくなります。可変長メッセージに選択的再送信を適用すると、長いメッセージの配信の難しさは完全に解消されます。これは、正常に配信されたサブブロックが各送信後に保持され、後続の送信で未処理のサブブロックの数が減少するためです。選択的繰り返しは、UDP 送信に実装されています。
擬似コード
これらの例では、シーケンス番号とリクエスト番号が無限にあることを前提としています。[2]
N := ウィンドウサイズ
Rn := リクエスト番号
Sn := シーケンス番号
Sb := シーケンスベース
Sm := シーケンス最大値
buffer[] := 順序が乱れたパケットを格納するバッファ
関数の受信側はRn := 0
バッファ := 空です
次のことを永久に実行します。
受信したパケットにエラーがなく、Sn = Rnの 場合、
パケットを受け入れ、上位層に送信する
Rn := Rn + 1
バッファ[Rn]が存在する間は
バッファからパケットを受け取り、上位層に送信する
バッファからパケットRnを削除する
Rn := Rn + 1
そうでない場合、受信したパケットにエラーがなく、Sn > Rn の場合、
パケットを位置Snにバッファリングします
。
パケットを無視Rn
のリクエストを送信
関数の送信元は
Sb := 0
Sm := N + 1
バッファ := 空
次の手順を永久に繰り返します。
Rn > Sb となるリクエスト番号を受け取った場合は、
Sm := ( Sm − Sb ) + Rn
Sb := Rn
Sn < Rn
のパケットをバッファから削除する
送信中のパケットがない場合、Sb ≤ Sn < Sm
となるパケットを送信する。
送信したパケットをバッファに保存する
バッファ内の各パケットSnに対して、
パケットSnのタイムアウトが発生した場合は
パケットSnを再送信する
ウィンドウサイズの選択(いいえ)
選択的繰り返し ARQ で Nの値を選択する際には、いくつか留意すべき点があります。
- 送信者は、受信側が処理できる速度よりも速く送信してはなりません。Nは、受信側が順序どおりでないパケットを処理してバッファリングする能力によって制限される必要があります。
- 重複パケットや確認応答の欠落を検出する際の曖昧さを回避するために、 Nはシーケンス番号の総数の半分未満でなければなりません(シーケンス番号が0からシーケンス番号空間の最大値まで番号付けされている場合)。[1]
- (1)と(2)の制約を考慮して、スループットを最大化するためにNを可能な限り大きく選択する。[3] [検証失敗]
例
伝送制御プロトコルは、パケットの配信が保証されないインターネット プロトコル上でのデータの信頼性の高い伝送を保証するために、 Go-Back-N ARQのバリアントを使用します。選択的確認応答 (SACK) 拡張機能を使用すると、選択的繰り返し ARQ も使用できます。
ITU -T G.hn標準は、既存の家庭配線 (電力線、電話線、同軸ケーブル) を使用して高速 (最大 1 ギガビット/秒) のローカル エリア ネットワークを作成する方法を提供し、選択的繰り返し ARQ を使用して、ノイズの多いメディア上で信頼性の高い伝送を保証します。G.hnはパケット分割を使用してメッセージをより小さな単位に分割し、各メッセージが正しく受信される可能性を高めます。
高周波 (HF) 無線データ通信用の STANAG 5066 プロファイルでは、最大ウィンドウ サイズが 128 プロトコル データ ユニット (PDU) の選択的繰り返し ARQ を使用し ます。
参照
参考文献
さらに読む
- Lockitt, JA; Gatfield, AG; Dobyns, TR (1975)。選択的再送ARQシステム。第3回国際デジタル衛星通信会議。第3回国際デジタル衛星通信会議。pp. 189– 195。Bibcode : 1975dsc..conf..189L。
- Weldon , E. (1982 年 3月)。「改良された選択的繰り返し ARQ 戦略」。IEEE Transactions on Communications。30 ( 3): 480– 486。Bibcode :1982ITCom..30..480W。doi : 10.1109 /TCOM.1982.1095497。ISSN 0090-6778 。
- Comroe, R .; D. Costello (1984 年 7 月)。「移動無線システムにおけるデータ伝送のための ARQ 方式」。IEEE Journal on Selected Areas in Communications。2 ( 4): 472– 481。Bibcode : 1984IJSAC ...2..472C。doi :10.1109/JSAC.1984.1146084。S2CID 22759443 。
