blog

一つのシミュレーターは、PDFで読むことができる。

DTNは、高遅延、低伝送レート、断続的な接続性、ノードの頻繁な移動、遅延耐性、エラー耐性、限られたストレージ、過酷な通信環境などの特徴があります。従来のTCP/IPプロトコルは、このようなネットワーク...

Mar 25, 2020 · 6 min. read
Share this

DTN

DTNは、高遅延、低伝送レート、断続的な接続性、ノードの頻繁な移動、遅延耐性、エラー耐性、限られたストレージ、および過酷な通信環境によって特徴付けられます。OneシミュレータはDTNネットワークのルーティングを評価するために設計されたシミュレータで、さまざまな合成運動モデルや実世界の軌跡に基づいてシナリオを作成することができます。

The One Simulator

シミュレータの機能

  • シミュレーション問題は、モビリティとイベントの生成、メッセージ交換、DTNルーティング・プロトコルとアプリケーション・プロトコル、エネルギー消費の基本概念、可視化と分析、モビリティ・トレース、イベント、メッセージ全体のインポートとエクスポートのためのインターフェイスをサポートする拡張可能なシミュレーション・フレームワークを提供します。
  • このフレームワークを使用して、広範で使用可能なモジュールセットが実装されました:

シミュレータの結果は、シミュレーション実行中にReportsモジュールによって生成されるレポートを通じて収集されます。レポートモジュールはシミュレーションエンジンからイベントを受け取り、それに基づいて結果を生成します。生成された結果はイベントログとなり、外部の処理ツールでさらに処理されます。

ノード

シミュレータの基本的なエージェントはノードと呼ばれます。ノードは、ストアフォワードルータとして動作するモバイルエンドポイントをシミュレートします。シミュレーションシナリオは、シミュレーションワールド内のノードグループから構成され、異なるノードグループは異なる機能に対して設定可能です。異なるモビリティモデルなど、より複雑な機能を実現するには、その機能に特化した動作を実装する特別なモジュールが必要です。

各ノード内のモジュールは、ノードの基本的なシミュレーションパラメータと状態(位置、現在の運動状態、現在の近傍など)にアクセスできます。モジュールは、モジュール間通信バスを介して、同じノードの他のモジュールからパラメータを利用することができます。

シミュレータの焦点は、ストア・アンド・フォワード・ネットワークです。無線リンクは通信範囲とビットレートとして抽象化されます。通信範囲とビットレートは、環境、ピア間の距離、近くのノードの数に合わせることができます。

ノードのエネルギー消費モデルは、各ノードがエネルギー予算

モビリティ・モデル

モーション・モデリングには3つのタイプがあります:

  • ランダムな動き
  • マップ制約付き確率運動
  • 人間の行動に基づくキャンペーン

シミュレータには、運動モデルの作成と外部データの読み込みのためのインターフェースフレームワークが含まれています。ランダムウォークとランダムパスポイントが含まれています。実世界の移動をよりよくシミュレートするために、実際の地図に基づいて事前定義され、よりよい実装のために、勤務日の移動モデルが利用されています。

地図ベースの移動モデリング

地図ベースのモビリティモデルは、ノードの移動を地図データで定義されたパスに制限するもので、3つのモデルがあります:

  • マップベースのランダム移動
  • 最短経路マップに基づく移動
  • 地図ベースのルーティング移動

この時点での移動モデルは、既知のテキストで定義された任意の地図データと理解することができ、そのようなデータは通常、現実の地図データから変換されるか、OpenJUMPのようなGISプログラムを使用して手動で作成されます。

MBM

ノードはランダムに移動しますが、常にデータで定義された経路をたどります。その結果、地図データによって定義されたネットワークはランダムにさまよい、実際の人間の動きをあまり正確に再現できません。

SPMBM

ノードは地図上のランダムな点を選び、現在地からその点までの最短経路をたどります。これらの点は、完全にランダムに選択することも、関心のある点のリストから選択することもできます。

Workday 移動モデル

ノードの数が非常に少ない場合,ノードの動きのリアリズムを向上させるために,このように作業日モデルが作成されます.作業日モデルのノードは以下の3つのアクティビティを持っています:

  • 自宅での睡眠
  • オフィスでの作業
  • 友人との夜

これらの3つのモデルは対応するサブモデルに分割され、シミュレートされたノードは時間帯に応じてサブモデルを切り替えます。活動そのものに加え、3つの異なる伝達モデルがあり、個々またはグループで徒歩、車、バスで移動することができます。

ここには6つのルーティング・プロトコルがあります:

  • 直接配信
  • 最初の接触
  • スプレー待機:n-コピー・プロトコル、通常モードではノードはコンタクトにコピーを渡し、バイナリ・モードではコピーの半分を転送し、コピーが1つしか残らない場合は最終受信者にのみ転送。
  • PRoPHET: ノードの遭遇履歴に基づいて、ノードが最終目的地にメッセージを届ける「可能性」を推定しようとします。
  • MAX-Prop:メッセージを充填しますが、宛先へのレプリカの配送は、メッセージのホップカウントと以前の遭遇に基づくメッセージ配送の確率を考慮に入れた特定の順序で、それらをクリアし、他のホストにメッセージを送信することを示します。
  • エピデミック:遭遇したすべてのノードにメッセージを複製

DTNルーティングプロトコルの最も重要なカテゴリ:シングルコピープロトコル、n-コピープロトコル、無制限コピープロトコル、推定ベースプロトコル

ルーティングプロトコルの追加

新しいルーティング・プロトコルをシミュレータで評価するには、それぞれのプロトコル用に新しいルーティング・モジュールを作成する必要があります。すべてのルーティング・モジュールは、単純なバッファ管理や様々なメッセージ関連イベントのコールバックなど、基本的な機能をMessageRouterモジュールから継承しています。各時間ステップで実行されるアクションと、新しいノードがそのノードの無線範囲に入ったり出たりしたときの動作を定義する必要があります。

イベントの基本機能は汎用的であり、ActiveRouterモジュールを拡張することで新しいルーティングプロトコルに再利用することができます。このモジュールは、現在キャッシュされているメッセージが隣接ノードにヒットするかどうかのチェック、隣接ノードへのメッセージの提供、送信成功の処理、メッセージ送信の中止の機能を提供します。FIFOとランダム・ソート・バッファ管理が実装されています。

より高度なルーティングモジュールはノードのコンタクトを追跡する必要があり、PRoPHETやMaxPropは過去の遭遇の記録を作成します。Spray-and-Waitルータは各メッセージにレプリカカウントを含めるためにこのメカニズムを使用します。新しいルーティングモジュールでシミュレーションを実行する場合、レポーティングモジュールは既存のモジュールと同じルーティングプロセスのパフォーマンスデータを収集します。

アプリケーションのサポート

シミュレータはアプリケーション・メッセージの生成をシミュレートする2つの方法を提供します:

  • メッセージジェネレータ
  • 外部イベントファイル

組み込みのメッセージ・ジェネレータは、ランダムまたは固定のソース、ターゲット、サイズ、間隔でメッセージを作成し、メッセージ・イベント・テキストを生成する別のツールも備えています。メッセージ・イベント・テキストを生成する別個のツールはシミュレータで制御でき、このようなメッセージ・イベント・ソースはいくつでも使用できます。

アプリケーション固有のヘッダは、メッセージのヘッダと内容を調べる方法として、追加のメッセー ジにロードすることができます。

インターフェース

シミュレータがインタラクションのためのインターフェイスを提供することで、他のプログラムやデータソースとインタラクションする機能。

ノードの移動、接続、メッセージルーティングのトレースは、TRANSIMSや実世界からのGPSトレースを利用することができますが、外部のモバイルモジュールに適した形式に変換する必要があります。配布パッケージには、TRANSIMS出力をこのフォーマットに変換する簡単なスクリプトが含まれています。

他のプログラムの出力を読むことに加えて、dtnsimとdtnsim2の接続トレース入力と互換性のある出力であるreportモジュールを使用して、トレースを入力することも可能です。

報告モジュールは、他のモジュールとリアルタイムで通信できます。

視覚化インターフェース

ノードの位置、現在の経路、ノード間の接続、ノードが伝送したメッセージ数などがメインウィンドウに表示されます。連絡先やメッセージ転送など、フィルタリングされたシミュレーションイベントログを生成できます。フィルターは、さらなるフィルターチェックに使用されます。

シミュレータには、全体的な性能に関する統計を収集するためのメッセージ統計レポート・モジュールが含まれています。 図中のp,w,tは、異なる機能を持つノードを意味します。

シミュレーションシナリオの定義

シミュレーションシナリオは、シミュレーションノードとその機能を定義することによって定義され、動作の詳細設定は、新しいコードまたはフックを使用して変更可能なサブシステムを使用して調整されます。ルーティングモジュール、移動モデル、イベントジェネレータ、レポートモジュールは、シミュレータの起動時に動的にロードされます。

Read next

Vueのソースコードを読む

ランタイムコンパイラ

Mar 25, 2020 · 3 min read