- 全ページのバックアップ一覧
- QualNetWikiTop のバックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- QualNetWikiTop へ行く。
- 1 (2007-03-22 (木) 16:19:25)
- 2 (2007-03-23 (金) 13:47:21)
- 3 (2007-03-26 (月) 09:57:20)
目次
はじめに ↑
まず始めに、QualNetで採用されている離散シミュレーションとは何か、また無線通信のシミュレーションとはどんなものか、について概要を説明します。
離散シミュレーションとは? ↑
文章で表現すると、以下のようなものです。
- ある事柄(イベント)がある時間(t0)に発生
- その結果を受けて、別の事象あるいは同じ事象が、ある時間後(t1=t0+Δt0)に発生
- 更にその結果を受けて、別の事象あるいは同じ事象がある時間後(t2=t1+Δt1)に発生
- いろんな事柄、イベントが時間差を持って延々と続く:「因果応報の世界」をコンピータで計算するのがシミュレーション
これを絵で表現すると・・・
(下のスライドはスライド内をクリックすることで進みます)
無線通信ネットワークのシミュレーション ↑
無線通信をシミュレートする場合、無線=電波を用いるため、その特性をモデル化する必要が生じます。
- 無線のシミュレーションは電波が届く or 届かない事が重要になってくる
- 「電波が届かない」原因は何か?
- 電波は伝搬距離や遮蔽物によって減衰する → 伝搬ロス(パスロス、シャドウィング)
- 他の(時には自身の)電波と出会う事で、波形が崩れる or 打ち消される → 干渉、マルチパスフェージング
- 物理現象をモデル化する必要性:有線ネットワークとの決定的な違い
複雑な物理現象を、ある程度簡略化、モデル化してシミュレーションする際のアプローチとして、確率・統計モデルを用いる、というものがあります。
具体例:ビットエラーをBit Error Rate Table(BERテーブル)から確率的に判定する、フェージングによる電力変動を統計的に算出する、など
QualNetでは、上記のようなモデル化を行う事で、高速な無線ネットワークシミュレーションを実現している、とも言えます。
シミュレーションの流れ ↑
QualNetを利用した、実際のシミュレーションの流れを、パケットの送受信処理に着目して解説します。
パケットの流れ ↑
SourceノードのApplication層で作成されてからDestinationノードのApplication層で受け取るまでの、パケットの基本的な流れは、以下の図のようになっています。
Application Layer | CBR(Constant Bit Rate Application) |
Transport Layer | UDP |
IP Layer | IPv4 |
Mac Layer | 802.11(MAC_DOT11) |
Physical Layer | 802.11a/b |
Propagation Layer | default |
なお、プロトコルが異なれば別の関数が使用されます。
アーキテクチャ概要 ↑
ここでは、QualNetのシミュレータとしての構造(アーキテクチャ)に焦点を当てて解説します。
メッセージとタイマ ↑
■コメント:例のパケット&タイマ処理シーケンス図を載せては?
データ構造 ↑
ここでは、QualNetで重要な構造体であるノード構造体とメッセージ構造体について説明します。
- Node構造体について
- Message構造体について
イベントディスパッチ処理 ↑
各イベント(イベントメッセージ)は、設定されたタイマー時刻になると、そのイベントの起こるノードの関数NODE_ProcessEvent()関数で呼ばれ、 その後、メッセージ構造体内の複数のメンバ変数に設定された内容を参照しながら、以下の順で分岐、処理を進めます。
1.レイヤによる分岐 ( msg->layerType ) ex.)network.cpp : NETWORK_ProcessEvent() さらに必要であれば、instanceId(protocolTypeだけではどのオブジェクトのイベントか判断出来ない場合)による分岐も起こります。 なお、PHY_ProcessEvent()の場合はプロトコルによる分岐はなく、直接3の分岐が起こります。
3.イベント種別による分岐( msg->eventType) |