最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

PHY 層による Go-Back-N ARQ

このモデルは、Go-Back-N 自動再送要求 (ARQ) システムを示しています。この例は、1 つの Simulink モデルを使用して多層開放型システム間相互接続 (OSI) プロトコル スタックをシミュレートします。Communications Toolbox™ は通信リンクの物理層 (PHY) をモデル化するために使用され、SimEvents® は ARQ をモデル化するために使用されます。このモデルを実行するには、SimEvents のライセンスが必要です。

Go-Back-N ARQ

Go-Back-N では、送信機はスライディング ウィンドウで制御される多くのパケットを送信し続けます。送信ウィンドウ サイズは N で、受信ウィンドウ サイズは 1 です。つまり、送信機は肯定応答 (ACK) メッセージを要求する前に、N パケットを受信機に送信できます。

下の Go-Back-N シーケンス図は、1 つの送信機 (Tx) と 1 つの受信機 (Rx) がある基本的な通信ネットワークを示しています。Tx にはサイズ N=3 のウィンドウがあり、Rx は一度に 1 つのパケットを待機するため、Rx のウィンドウ サイズは 1 と言えます。図では、パケットの破損や ACK の破損、不規則なパケットなど、さまざまな状況でスライディング ウィンドウがどのように機能するかを確認することができます。

正しく ACK が返されたパケット

パケットに対して ACK が返されると、ウィンドウの基本インデックスが ACK が返されていない最後のパケットまで増え、より多くのパケットが送信されます。たとえば、シーケンス図では、ACK 3 が確認されると、Packet 2 と 3 に ACK が返され、ウィンドウのベースが Packet 4 に移動します。ウィンドウ サイズは 3 であるため、さらに 2 つのパケット (Packet 5 と 6) が送信されます。

タイムアウトによるパケットの再送信

対応する ACK がタイムアウトで受信されない場合、パケットはすぐに再送信されます。シーケンス図では、Tx が Packet 2 のタイムアウト前に ACK 2 を受信しなかったため、Packet 2 を再送信します。

不規則なため破棄されたパケット

異なるパケットによって引き起こされた異なるエンドツーエンドでの遅延により、パケットが元のシーケンスとは違う順番で受信機に到着する場合があります。受信機は予定されたパケットのみを受け入れ、他のすべてのパケットを破棄します。図では、受信機は Packet 6 を想定していますが、先に Packet 7 が到着しています。そのため、Packet 7 は破棄されます。

破損しているため破棄されたパケット

受信機はパリティ ビットを調べて、受信したパケットが破損しているかどうかを判断します。破損したパケットは、受信機によって破棄されます。シーケンス図では、Packet 2 は送信中に破損しているため、受信機によって破棄されます。

例の構造

このモデルに含まれている送信機は、パケットを作成し、BPSK 変調と BCH (63,51) 符号化を使用して物理リンクを介して送信します。送信された信号が受信側に届く前に、AWGN チャネル内でノイズが生じます。この例では、データ リンク層でのデータ転送単位に 'パケット' という用語を使用します。

受信した各データ パケットに対し、受信機はパリティ チェック ビットを調べて、パケットが破損しているかどうかを確認します。パケットが破損していない場合は、受信機は帰路チャネルを通じて ACK メッセージを送信機に送り返します。パリティ チェック ビットは、BCH コード チェックに基づいています。つまり、BCH コードがすべてのビット誤りを修正できない場合に、パリティ チェック ビットはパケットが破損していることを示します。

送信側が、指定した期間内に ACK メッセージを受信しない (タイムアウト) 場合、まだ ACK で肯定応答が行われていないすべてのパケットを再送信します。このモデルでは、データ パケットの送信とフローをモデル化することで、システムの動作を可視化し、さまざまな SNR 条件と伝播遅延条件の下でその性能を解析できます。

このモデルのパケット送受信サブシステムでは、SimEvents および Communications Toolbox を結合した使用例も示します。

次の図はこのモデルを示します。

データ リンク層の送信機

パケット作成

Entity Generator は、SimEvents のコンポーネントで、一定の間隔でエンティティを生成します。モデルでは、'From Upper Layer' ブロックが Entity Generator です。これは、フレーム間の生成時間が固定またはランダムでペイロードを作成し、そのペイロードをリンク層 'Transmitter' ブロックに渡します。送信機では、シーケンス番号 (SN)、つまりパケットを識別するための一意の番号がヘッダーとしてペイロードに追加されます。

物理層に送信するパケット

パケット全体を生成後、送信機は送信機ブロックの出力ポートを介してそれを 'PHY Link (Data)' ブロックに送信します。

受信

'PHY Link (ACK)' ブロックから ACK を受信すると、送信機は ACK のシーケンス番号とパリティ チェック ビットをチェックします。チェック ビットが正しい場合、送信機は ACK のシーケンス番号より小さいか等しいシーケンス番号をもつすべてのパケットを確認します。それ以外の場合は、送信機は破損した ACK または失われた ACK によって引き起こされたタイムアウトによりパケットを再送信する場合があります。

データ リンク層の受信機

パケットの受信

パケットの受信後、'Receiver' ブロックは受信したパケットが、シーケンス番号 (SN) を調べることで予測したパケットかどうかをチェックします。次に、受信機は受信する予測した正しいパケットに対し、ACK メッセージを送信機に送り返します。それ以外の場合、パケットは破棄されます。受信機がパケットを拒否すると、最初に拒否されたパケットが正常に受信されるまで、後続のパケットを拒否し続けます。

ACK の生成

予想したパケットが正しく受信されると、ACK が生成されます。ACK には対応するシーケンス番号とパリティ チェックが含まれます。

物理層

この例では、物理層を明示的にモデル化し、それをデータ リンク層と結合します。PHY リンク サブシステムでは、BCH 符号化手法、データ リンク用の BCH (63,51)、および ACK リンク用の BCH (4,1) を使用し、BPSK 変調を適用します。このサブシステムでは、指定可能な SNR 値を使用して、AWGN チャネルを介して変調されたシンボルを送信します。AWGN チャネルのもう一方の側で、PHY リンク上の受信機は、BPSK 復調器と BCH 復号化器を適用して、パケットを復元します。

モデルの簡略化

フォワード チャネルとリバース チャネルでは伝送遅延が発生しますが、これは送信遅延よりも長くなることが既定で想定されています。つまり、送信側は、パケットが受信側に届く前にパケット全体の送信を終了します。モデルはパケットがノイズにより破損する可能性がある状況もシミュレートします。エンドツーエンドのネットワークでは、パケットは有効期間 (TTL) の期限を過ぎると、中間ノードによって破棄される場合があります。簡略化のため、このモデルでは、この状況はシミュレートしていません。つまり、パケットは送信中に破棄されません。パケットがノイズにより破損する可能性がある場合でも、送信時に破棄されません。また、パケットと ACK のシーケンス番号 (SN) が破損しないようにすることで、モデルは別の簡略化を実装します。

結果と表示

下のビューアーは、Go-Back-N ARQ のアクティブなプロセスを示しています。ここでは、白いブロックで示されているように、Tx と Rx がそれぞれ 100 パケットのバッファーをもっています。送信中、異なる状態ごとに異なる色のブロックで示されています。ビューアーの右上のセクションには、ウィンドウ サイズ、タイムアウト、SNR、スループットなどの構成とパフォーマンス メトリックが含まれています。ビューアーの右下のセクションでは、色分けされたブロックの意味が説明されています。

構成とパフォーマンス メトリック:

  • Time - 正規化されたシミュレーション時間。

  • Window Size - 送信機のスライディング ウィンドウ サイズ。単位: パケット。

  • Timeout - 正規化されたタイムアウトの期限終了を示す値。

  • SNR - S/N 比 (dB 単位)。

  • Total Sent - 送信機から送信されたパケットの総数 (新しい送信と再送信を含む)。単位: パケット。

  • Discarded - 受信機で破棄されたパケットの総数 (破損したパケットと不規則なパケットを含む)。単位: パケット。

  • Mean Round Trip Time - ラウンド トリップ時間 (RTT) は、パケットが送信されるまでにかかった時間と、そのパケットの ACK の受信にかかる時間を足した長さを示します。平均 RTT は、移動平均アルゴリズムを RTT (EstimatedRTT=0.875*EstimatedRTT + 0.125*SampleRTT) の計算に適用します。

  • Throughput - 送信機から生成された総パケット数に対し、受信機で受信されたパケットの割合。

凡例:

  • Empty buffer - 送信機 (Tx) と受信機 (Rx) はそれぞれ 1 つのレイアウト上に 100 個の空のバッファー ブロックをもっています。

  • Tx buffered packets - Tx はバッファーにパケットを生成します。各パケットが 1 つの黄色のブロックで示されています。

  • Tx packets to resend - タイムアウト後に再送信されるパケットがオレンジのブロックで示されています。

  • Tx packets waiting for an ACK - パケットの送信後、Tx は受信機からの ACK を待機します。青いブロックは ACK を待機中の Tx を示しています。

  • Tx disordered ACKs - 異なる伝播遅延により、正しくない順番で ACK が Tx に到着する場合があります。シアン色のブロックは、不規則な ACK を示しています。Rx は不規則なパケットを許可しませんが、Tx は不規則な ACK を許可します。そのため、中にシアンの四角形が入った緑のブロックは、確認された不規則な ACK を示しています。

  • Tx confirmed ACKs - 破損していない ACK が受信された場合は、Tx で緑のブロックとして確認されます。

  • Rx received packets - 受信したパケットが予測したパケットであり、さらにそれが破損していない場合、Rx で緑のブロックとして示されます。

  • Rx corrupted packets - 受信したパケットが予測したパケットではあるが破損している場合、Rx で赤のパケットとして示されます。再送信後に受信機が最終的に正しいパケットを受信すると、中央に赤い四角形が入った緑のブロックとして示されます。

  • Rx disordered packets - Rx は一度に 1 つのパケットのみを予測します。受信した他のすべてのパケットは、不規則なパケットとして見なされ、ピンクのブロックで示されます。ピンクのブロックは過渡的なものです。Rx は不規則なパケットを受信後すぐに破棄するため、バッファー ブロックは白に戻ります。このモデルでは、2 つの条件が不規則なパケットをもたらす可能性があります。1 つ目は、データ PHY リンクでの異なる伝播遅延により、一部のパケットが後から送信されたにもかかわらず先に到着する場合があります。2 つ目は、予測されたパケットをパリティ チェックに渡すのに失敗した場合、つまり破損した場合に、Rx は破損したパケットを破棄して、最初に拒否されたパケットが正常に受信されるまで、後続のパケットを拒否し続けます。両方の条件のパケットは、不規則なパケットとして見なされます。

例の検証

異なるパラメーター ペアとの比較

異なるパラメーターを適用した後に、スループットを比較できます。たとえば、Entity Generator (commgobacknwithphy/From Upper Layer) でペイロードの生成レートを変更することができます。commgobacknwithphy/PHY Link (Data) と commgobacknwithphy/PHY Link (ACK) で PHY リンクのサブシステムにある Entity Server ブロックでサービス時間を変更して、伝播遅延を変更することもできます。また、スライディング ウィンドウのサイズ、タイムアウト、および初期化ファイルで作成されたその他のパラメーターも変更できます。

モデルには 2 種類のパラメーターが存在します。1 つ目のタイプは、固定パラメーターです。つまりシミュレーション プロセスで変更されないパラメーターです。ほとんどのモデル パラメーターは固定です。2 つ目のタイプは、動的パラメーターです。このパラメーターは実行時にパラメーターの値が変化します。このモデルでは、'From Upper Layer' ブロックのペイロードのインターフレーム生成レートと PHY Link(ACK) ブロックと PHY Link(Data) ブロックの両方の伝播遅延が動的パラメーターです。

固定パラメーター値を変更するには、モデルを読み込んだ後に、MATLAB ベース ワークスペースに存在する paramGobacknwithphy 構造体の値を変更します。たとえば、paramGobacknwithphy.windowSize、paramGobacknwithphy.txTimeout、および paramGobacknwithphy.dataLinkSNR の値を変更して、これらの変更が通信リンクのスループットとラウンド トリップ時間に及ぼす影響を決定することができます。

動的パラメーターの場合は、ペイロードの生成レートを変更します。

  • ステップ 1、[From Upper Layer] ブロックをダブルクリックします。

  • ステップ 2、[Entity generation] タブを選択し、変数 'dt' を [Intergeneration time action] で必要な値に変更します。

伝播遅延では、固定されている場合は、すべてのパケットが同じ遅延をもち、正しい順番で受信機に到着します。実行時の伝播遅延の値がランダムな場合、受信側に到着するパケットが不規則になる (元の順序と異なる) 場合があります。PHY リンクの伝播遅延を変更するには、以下を行います。

  • ステップ 1、[PHY Link] ブロックをクリックし、Ctrl キーを押しながら U キーを押して、サブシステムに入ります。

  • ステップ 2、サーバー ブロック (無限大シンボルが付いた円のアイコン) をダブルクリックします。

  • ステップ 3、[Main] タブを選択し、変数 'dt' を [Service time action] で必要な値に変更します。

PHY リンク ブロックは現在、パケットの伝播遅延として正規分布の乱数を使用しています。ランダムな遅延の平均値は、paramGobacknwithphy.dataLinkMean と paramGobacknwithphy.ACKLinkMean を通じて、データ リンクと ACK リンクそれぞれに構成できます。同様に、ランダムな遅延の標準偏差は、paramGobacknwithphy.dataLinkStd と paramGobacknwithphy.ACKLinkStd を通じて構成できます。これらのパラメーターの値を変更すると、スループットに影響します。たとえば、paramGobacknwithphy.dataLinkStd の値を減らすと、不規則なパケットが減るため、正しく受信されるパケット数とスループットが増えます。

他の ARQ プロトコルとの比較

Go-Back-N ARQ を、Selective-Repeat ARQ などの他のネットワーク プロトコルと比較することもできます。これを行うには、1 より大きいサイズのスライディング ウィンドウを追加して、受信機の commgobacknwithphy/Receiver ブロックを変更します。

付録

この例では以下の System object と関数が使用されています。

参考文献

[1] Andrew Tanenbaum.2002.Computer Networks (4th Edition).Prentice Hall Professional Technical Reference.

[2] James F. Kurose and Keith W. Ross.2012.Computer Networking: A Top-Down Approach (6th Edition).Pearson.