1. 序章

Go-Back-NおよびSelectiveRepeatプロトコルは、コンピューターネットワークのトランスポート層での信頼性の高いデータ転送の背後にある重要なアイデアをよりよく理解するのに役立つ基本的なスライディングウィンドウプロトコルです。

このチュートリアルでは、Go-Back-Nプロトコルがどのように機能するかを説明します。さらに、ウィンドウサイズとシーケンス番号スペースサイズの関係、および選択がどのように影響するかについても説明します。アルゴリズムのパフォーマンス。

2. Go-Back-N

スライディングウィンドウ(パイプライン)プロトコルは、送信者が別のフレームを送信する前に確認応答を待つ必要がないため、ネットワーク帯域幅の利用を実現します。

Go-Back-Nでは、送信者がパケットのフローを制御します。 は、 シンプルでダミーの受信者がいることを意味します。したがって、開始しますサーバーが最初にデータパケットを処理する方法について説明します。

2.1. 送り主

送信者には、送信する一連のフレームがあります。 ウィンドウサイズを。と仮定します。 さらに、送信ベース()と送信する次のパケット()を追跡するための2つのポインタがあります。

まず、送信者は最初のフレームを送信することから始めます。 最初は、そして。 送信するパケットが多く、は;よりも小さいですが。 送信者は、ポインタが指すパケットを送信してから、をインクリメントします。

一方、は、受信者から確認応答パケットを受信した後にインクリメントされます。 重複したACKメッセージを受信しても、メカニズムはトリガーされません。

送信ウィンドウ全体に単一のタイマーがあり、でパケットのタイムアウトを測定します。 したがって、タイムアウトが発生した場合、送信者はタイマーを再起動し、から始まる送信ウィンドウですべてのパケットを再送信します。

要約すると、送信者のアルゴリズムを次の擬似コードで表すことができます。

2.2. 受信機

Go-Back-Nのレシーバーの実装は、可能な限り単純です。

受信者は、次に受信する予定のシーケンス番号のみを追跡します。

レシーバーバッファはありません。 故障したパケットは単に破棄されます。 同様に、破損したパケットもサイレントに破棄されます。

新しいパケットの受信時に(成功または失敗して)受信された最後の順序どおりのパケットの確認応答を常に送信します。 その結果、問題が発生した場合に重複した確認メッセージが生成されます。

要約すると、受信者のアルゴリズムの擬似コードは次のとおりです。

全体として、これでACKベースのNAKフリーのGo-Back-Nプロトコルの説明は終わりです。これは、シーケンス番号、累積確認応答、チェックサム、およびタイムアウト/再送信を使用した信頼性の高いデータ転送に関連する問題をカバーしています。

3. 累積的な謝辞とシーケンス番号

Go-Back-Nプロトコルは、累積確認応答の使用を採用しています。 つまり、フレームの確認応答を受信するということは、フレーム、、なども確認応答されることを意味します。 このような確認応答をACKと表記します。

フレームをマークするために使用する可能な最大シーケンス番号を示しましょう。 ここでも、ウィンドウサイズが。であると仮定します。

ここで、簡単なシナリオを想像してみましょう。

  1. 送信者はウィンドウ内のフレームを送信し、0から
  2. 応答として、ACK、マーキングフレーム、などを受信します。
  3. 次に、送信者は2番目のフレームのセットを送信し、0から
  4. その後、送信者は別のACKを受け取ります

送信者の観点では、最後のステップでの確認は何を表していますか? 2番目のバッチのすべてのパケットが失われたか、正常に送信されましたか? の場合、送信者が実際の結果を知る方法はありません。 だから私たちは厳格な不平等を持たなければなりません <

4. 使用率とウィンドウサイズ

前に述べたように、パイプラインプロトコルはストップアンドウェイトプロトコルよりも改善されています。 より良いネットワーク使用率を達成するために、特定の時間に送信者と受信者の間に複数のフレームが「飛行中」にあります。

Go-Back-Nのウィンドウサイズを示します。これは、送信者が確認応答を受信する前に送信できるウィンドウサイズです。 基本的に、の場合、ストップアンドウェイトの実装があります。

オーバーヘッドを無視した、可能な最大のリンク使用率の式は次のとおりです。

   

式では、は帯域幅遅延積であり、特定の時間にリンクを介して伝送できるデータの量を表します。 これは、データリンクの容量にラウンドトリップ遅延時間を掛けたものとして計算されます。

理論的には、上記の方程式を解くことにより、可能な最大値を見つけます。 ただし、実際には、さらに小さい値を使用する必要があります。

これには2つの主な理由があります。

まず、受信者が到着したパケットを処理できる速度と、ネットワーク使用率が高いことを考慮する必要があります

受信者がパケットの処理に対応できない場合、パケットをドロップします。 この場合、送信者は同じパケットを何度も再送信し、正常に送信されたパッケージレートは不十分に低くなります。 したがって、高い使用率を達成することは無意味です。

高速の送信者が低速の受信者をデータに溺れさせないようにするという概念は、フロー制御と呼ばれます。 フロー制御は、レシーバーの処理速度に関して、より小さなウィンドウサイズを強制します。

次に、ウィンドウサイズを制限することも同様に重要ですが、輻輳制御です。ネットワーク(の一部)に存在するパケットが多すぎると、パケット遅延とパケット損失が発生し、パフォーマンスが低下します。 実際、送信者は、ネットワーク全体のパフォーマンスが利用されるように、ネットワーク内の各要素を尊重する必要があります。

5. 結論

要約すると、Go-Back-Nプロトコルは送信側と受信側の両方で機能し、信頼性の高いデータ転送を保証します。

また、累積確認応答がどのようにより大きい値を使用するように強制しているか、およびより良い使用率を達成するために適切なウィンドウサイズを選択する方法についても説明しました。