logo

Go Back N - スライディング ウィンドウ プロトコル

Go-Back-N (GBN) は、送信側が個別の確認応答を待たずに複数のフレーム (定義されたウィンドウ サイズまで) を送信できるようにするスライディング ウィンドウ ARQ プロトコルです。

郵便屋さん
  • パケットが失われたり破損した場合、送信者はそのパケットとそれ以降のすべてのパケットをウィンドウ内で再送信します。
  • 例: パケット 1 ~ 5 が送信され、パケット 3 が失われた場合、パケット 3、4、および 5 が再送信されます。

このメカニズムにより信頼性は確保されますが、エラーが頻繁に発生すると帯域幅が無駄になる可能性があります。

GBN の主な特徴は次の 3 つです。



1. 送信ウィンドウサイズ (W s )

それはNそのものです。プロトコルが GB10 である場合、Ws = 10 になります。パイプラインを実装するには、N は常に 1 より大きい必要があります。 N = 1 の場合、次のようになります。 停止して待機するプロトコル

GBN の効率 = N/(1+2a)

どこ

a = Tp/Tt
Tp= 伝播遅延
Tt= 送信者の送信遅延

処理遅延キューイング遅延と確認応答の送信遅延がゼロではない場合、効率はどのくらいになるでしょうか?

効率 = N * (有効時間) / (合計時間)

ここで、有効時間=Tt

合計時間 = Tt+ 2 * Tp+Pr+Pq+Tt(ああ)

どこ

  • T t =送信側の伝送遅延
  • T p = 伝播遅延
  • PR= 処理遅延
  • Pq = キューイング遅延
  • T t (ああ) = 確認応答の送信遅延

B がチャネルの帯域幅である場合、

実効帯域幅またはスループット
= 効率 * 帯域幅
= (N/(1+2a)) * B

2. 受信機ウィンドウサイズ (W R

  • GBN では常に 1。
  • 受信側は次に期待されるパケットのみを受け入れます。
  • 順序が乱れたパケットは破棄されます。

3. 謝辞

確認応答 (ACK) は、データ パケットの正常な受信を確認するために受信者によって送信される信号です。これらにより、送信者と受信者間の信頼性の高い通信が保証されます。設定された時間内に ACK が受信されない場合、送信者はパケットが失われたとみなして再送信します。

ACKの種類

累積ACK

  • 単一の確認応答により、ある時点までのすべてのパケットの受信が確認されます。
  • アドバンテージ: トラフィックが少なくなります (ACK が少なくなります)。
  • 短所: 1 つの ACK が失われると、複数のパケットが未確認のように見えるため、信頼性が低くなります。

独立したACK

  • 各パケットは個別に確認応答されます。
  • アドバンテージ: 高い信頼性。
  • 短所: ACK が増えるため、トラフィックが増加します。

GB-Nプロトコルの仕組み

送信ページ

  • サイズ N のウィンドウを維持します (例: GB4 ウィンドウ サイズ = 4)。
  • 最大 N 個の未確認パケットを送信できます。
  • 送信される各パケットにはタイマーがあります。
  • ACK を受信すると、ウィンドウが前方にスライドします。
  • (パケットの欠落により) タイムアウトが発生した場合、送信者はそのパケットとその後のすべてのパケットをウィンドウ内で再送信します。

受信機側

  • ウィンドウ サイズ 1 (WR = 1) を維持します。
  • 期待されるパケットのみを順番に受け入れます。
  • 正しいパケットが到着した場合: ACK を送信し、次の予期されるシーケンス番号に移動します。
  • 順序が正しくないパケットが到着した場合: それを破棄し、最後に正しく受信されたパケットに対する ACK を再送信します。
スライディング_SET_2-1' title=

ウィンドウサイズとシーケンス番号の関係

ウィンドウサイズ そして シーケンス番号 Go-Back-N や SelectiveRepeat などのスライディング ウィンドウ プロトコルでは、密接に関連しています。

  • ウィンドウサイズ 送信者が確認応答を必要とせずに送信できるパケット数を決定します。これは、送信者が停止して確認を待たなければならない前に送信できるデータ量の制限のようなものです。
  • シーケンス番号 パケットにラベルを付けるために使用されるため、受信側はパケットの順序を認識し、欠落しているパケットを検出できます。

ウィンドウサイズ 利用可能な範囲以下である必要があります シーケンス番号 。ウィンドウ サイズがシーケンス番号の範囲に比べて大きすぎる場合、最初のシーケンス番号が確認される前に同じシーケンス番号が再利用される可能性があるため、受信側は混乱する可能性があります。これにより、パケットが新しいのか重複しているのかを知ることが難しくなります。

ウィンドウ サイズとシーケンス番号の関係は次の式で求められます。

s+WR<= ASN

ここでWs送信側ウィンドウ サイズと WRは受信ウィンドウ サイズ、ASN は利用可能なシーケンス番号です。

s+1<= ASN because WRGB-N プロトコルでは = 1

コアJava面接の質問

したがって、GBN = N + 1 で必要な最小シーケンス番号

GBN で必要なビット = ⌈ log2(N + 1)⌉

パケットの重複の問題を避けるために、追加の 1 が必要です。

の例 GB-Nプロトコル

GB4 の例を考えてみましょう。

  • 送信側ウィンドウ サイズは 4 なので、ウィンドウ内の各パケットにラベルを付けるには少なくとも 4 つのシーケンス番号が必要です。
  • ここで、受信者がすべてのパケット (送信者によって送信された 0、1、2、および 3) を受信したため、再びパケット番号 0 を待っているとします (N = 4 であるため、使用可能なシーケンス番号が 4 つしかないため、ここでは 4 は使用できません)。
  • ここで、上記の 4 つのパケットに対する累積 ACK がネットワーク内で失われたと仮定します。
  • 送信側ではパケット 0 がタイムアウトになるため、4 つのパケットすべてが再度送信されます。
  • 現在の問題は、受信機が 0 から始まるはずの新しいパケットのセットを待っているのに、以前に受け入れられたパケットの重複コピーを受信することになります。
  • これを回避するには、追加のシーケンス番号が 1 つ必要です。
  • これで、受信側はパケット番号 4 を待機することになるため、0 から始まるすべての重複パケットを簡単に拒否できます (追加のシーケンス番号を追加しました)。

これについては、以下の図を使用して説明します。シーケンス番号 4 で試してみます。

スライディング_SET_2-3' loading='lazy' title=

次に、追加のシーケンス番号を 1 つ使用して試してみます。

スライディング_SET_2-4' loading='lazy' title=

GBN プロトコルに追加の 1 ビットが必要な理由は明らかです。

GBNプロトコルの利点

  • 実装が簡単で、信頼性の高い通信に効果的です。
  • エラーのないネットワークまたはエラーの少ないネットワークでは、ストップ アンド ウェイト プロトコルよりも優れたパフォーマンスが得られます。

GBNプロトコルの欠点

  • エラーが頻繁に発生する場合、複数のフレームを不必要に再送信する必要がある可能性があるため、非効率的です。
  • 冗長な再送信により帯域幅が無駄になる可能性があります。
クイズの作成