QualNetWikiTop のバックアップの現在との差分(No.2)
[ リロード ]
[ ソース ]
[ トップ
| 一覧
| 単語検索
| 最新
| バックアップ
| ヘルプ
]- 全ページのバックアップ一覧
- QualNetWikiTop のバックアップ一覧
- 差分 を表示
- ソース を表示
- バックアップ を表示
- QualNetWikiTop へ行く。
- 1 (2007-03-22 (木) 16:19:25)
- 2 (2007-03-23 (金) 13:47:21)
- 3 (2007-03-26 (月) 09:57:20)
- 追加された行はこの色です。
- 削除された行はこの色です。
#unvisible uid:1 aid:0 gid:0 #unvisible uid:1 aid:all gid:3 // author:1 // author_ucd:d1QP85vU/HLI forum_admin &font(b,200%){目次}; * 本ページの趣旨 本ページは、Qual''''''Netやシミュレータ一般に関する知識をまとめたものです。~ 内容については、なるべく正確を期すようにしてはいますが、あくまでご参考までにご覧下さい。~ // すみません、packet.PNGが消せません。どうしたら良いでしょう。 // →新規ページにしてみました。 Qual''''''Netに触れる際、一番初めの手がかりになれば幸いです。 まず始めに、QualNetで採用されている離散シミュレーションとは何か、また無線通信のシミュレーションとはどんなものか、について概要を説明します。 // [Japan Qual''''''Net Community Forum Support] ---- #contents ---- * はじめに まず始めに、Qual''''''Netで採用されている離散シミュレーションとは何か、また無線通信のシミュレーションとはどんなものか、について概要を説明します。 ** 離散シミュレーションとは? 文章で表現すると、以下のようなものです。 + ある事柄(イベント)がある時間(t0)に発生 + その結果を受けて、別の事象あるいは同じ事象が、ある時間後(t1=t0+Δt0)に発生 + 更にその結果を受けて、別の事象あるいは同じ事象がある時間後(t2=t1+Δt1)に発生 + いろんな事柄、イベントが時間差を持って延々と続く:「因果応報の世界」をコンピータで計算するのがシミュレーション - 無線のシミュレーションは''電波が届く or 届かない''事が重要になってくる - 「電波が届かない」原因は何か? -- 電波は伝搬距離や遮蔽物によって減衰する → COLOR(red){''伝搬ロス(パスロス、シャドウィング)''} -- 他の(時には自身の)電波と出会う事で、波形が崩れる or 打ち消される → COLOR(red){''干渉、マルチパスフェージング''} これを絵で表現すると・・・~ - SIZE(15){物理現象をモデル化する必要性}:有線ネットワークとの決定的な違い (下のスライドはスライド内をクリックすることで進みます) 複雑な物理現象を、ある程度簡略化、モデル化してシミュレーションする際のアプローチとして、確率・統計モデルを用いる、というものがあります。 具体例:ビットエラーをBit Error Rate Table(BERテーブル)から確率的に判定する、フェージングによる電力変動を統計的に算出する、など #ref(discrete_simlation.swf,w:640,h:512,wrap,center) QualNetでは、上記のようなモデル化を行う事で、高速な無線ネットワークシミュレーションを実現している、とも言えます。 //|&attachref(disc_3.png,"t:",40%);| QualNetを利用した、実際のシミュレーションの流れを、パケットの送受信処理に着目して解説します。 ** 無線通信ネットワークのシミュレーション 無線通信をシミュレートする場合、無線=電波を用いるため、その特性をモデル化する必要が生じます。 無線のシミュレーションでは、電波が届く・届かないという現象が重要となります。~ この「電波が届かない」原因には、主に以下の二つが考えられます。 + 電波は伝搬距離や遮蔽物によって減衰する → COLOR(red){''伝搬ロス(パスロス、シャドウィング)''} + 他の(時には自身の)電波と出会う事で、波形が崩れる or 打ち消される → COLOR(red){''干渉、マルチパスフェージング''} このような、''物理現象をモデル化する必要性がある''、という点に、有線ネットワークとの決定的な違いがあります。~ 電波干渉のような複雑な物理現象を、ある程度簡略化、モデル化してシミュレーションする際のアプローチとして、一般的に、確率・統計モデルを用いる、というものがあります。~ 例えば、ビットエラーをBit Error Rate Table(BERテーブル)から確率的に判定する、フェージングによる電力変動を統計的に算出する、などです。 Qual''''''Netでも上記のようなモデル化を行っており、その事によって高速な無線ネットワークシミュレーションを実現している、とも言えます。 * シミュレーションの流れ Qual''''''Netを利用した、実際のシミュレーションの流れを、パケットの送受信処理に着目して解説します。 ここでは、QualNetのシミュレータとしての構造(アーキテクチャ)に焦点を当てて解説します。 ** パケットの流れ ** メッセージとタイマ // MESSAGE_Sendなど // 江森さんが書きかけていた図 // App→Phy→Prop→Phy→Appの流れ //メッセージ構造体の詳細については、- [[こちら>MessageStructure]]を参照してください。 ■コメント:例のパケット&タイマ処理シーケンス図を載せては? SourceノードのApplication層で作成されてからDestinationノードのApplication層で受け取るまでの、パケットの基本的な流れは、以下の図のようになっています。 |TLEFT|c |Application Layer|CBR(Constant Bit Rate Application)| |Transport Layer|UDP| |IP Layer|IPv4| |Mac Layer|802.11(MAC_DOT11)| - [[Node構造体について>node_str]] - [[Message構造体について>MessageStructure]] |Physical Layer|802.11a/b| |Propagation Layer|default| なお、プロトコルが異なれば別の関数が使用されます。 |&attachref(packet.png,"t:",60%);| その後、メッセージ構造体内の複数のメンバ変数に設定された内容を参照しながら、以下の順で分岐、処理を進めます。-> * アーキテクチャ概要 ここでは、Qual''''''Netのシミュレータとしての構造(アーキテクチャ)に焦点を当てて解説します。 ** メッセージ処理:パケットとタイマー Qual''''''Netではパケットとタイマーをメッセージ(イベント)として同じように管理しております。下記の図はパケットとタイマーをスケジュールしている例です。~ メッセージに関しては[[コチラ>./MessageStructure]]をご覧ください。 さらに必要であれば、instanceId(protocolTypeだけではどのオブジェクトのイベントか判断出来ない場合)による分岐も起こります。~-> なお、PHY_Process''''''Event()の場合はプロトコルによる分岐はなく、直接3の分岐が起こります。-> #ref(packet_and_timer.png,w:640,h:512,wrap,center) ** データ構造 // ノード構造体、メッセージ構造体 ここでは、Qual''''''Netで重要な構造体であるノード構造体とメッセージ構造体について説明します。 - [[Node構造体について>./NodeStructure]] - [[Message構造体について>./MessageStructure]] ** イベントディスパッチ処理 // ProcessEventからの一連の流れ(どのNode、レイヤ、プロトコル、で分岐・割り当て)の説明 |各イベント(イベントメッセージ)は、設定されたタイマー時刻になると、そのイベントの起こるノードの関数NODE_Process''''''Event()関数で呼ばれ、~-> その後、メッセージ構造体内の複数のメンバ変数に設定された内容を参照しながら、原則として以下の順で分岐、処理を進めます。-> -> 1.レイヤによる分岐 ( msg->layerType )~-> ex.)node.cpp : NODE_Process''''''Event~-> PHY_LAYERのイベントであればPHY_Process''''''Event()、NETWORK_LAYERのイベントであればNETWORK_Process''''''Event()が、それぞれ呼ばれます。-> -> 2.プロトコルによる分岐( msg->protocolType)~-> ex.)network.cpp : NETWORK_Process''''''Event()~-> さらに必要であれば、instanceId(protocolTypeだけではどのオブジェクトのイベントか判断出来ない場合)による分岐も起こります。-> -> -> 3.イベント種別による分岐( msg->eventType)~-> ex.)aodv.cpp : Aodv''''''Handle''''''Protocol''''''Event()~-> ex.)phy.cpp : MSG_PHY_Transmission''''''End-> -> &attachref(EventDispatch.png);| //* まとめ