QualNetWikiTop のソース
[ リロード ]
[ ソース ]
[ トップ
| 一覧
| 単語検索
| 最新
| バックアップ
| ヘルプ
]&font(b,200%){目次};
* 本ページの趣旨
本ページは、Qual''''''Netやシミュレータ一般に関する知識をまとめたものです。~
内容については、なるべく正確を期すようにしてはいますが、あくまでご参考までにご覧下さい。~
Qual''''''Netに触れる際、一番初めの手がかりになれば幸いです。
// [Japan Qual''''''Net Community Forum Support]
----
#contents
----
* はじめに
まず始めに、Qual''''''Netで採用されている離散シミュレーションとは何か、また無線通信のシミュレーションとはどんなものか、について概要を説明します。
** 離散シミュレーションとは?
文章で表現すると、以下のようなものです。
+ ある事柄(イベント)がある時間(t0)に発生
+ その結果を受けて、別の事象あるいは同じ事象が、ある時間後(t1=t0+Δt0)に発生
+ 更にその結果を受けて、別の事象あるいは同じ事象がある時間後(t2=t1+Δt1)に発生
+ いろんな事柄、イベントが時間差を持って延々と続く:「因果応報の世界」をコンピータで計算するのがシミュレーション
これを絵で表現すると・・・~
(下のスライドはスライド内をクリックすることで進みます)
#ref(discrete_simlation.swf,w:640,h:512,wrap,center)
//|&attachref(disc_3.png,"t:",40%);|
** 無線通信ネットワークのシミュレーション
無線通信をシミュレートする場合、無線=電波を用いるため、その特性をモデル化する必要が生じます。
無線のシミュレーションでは、電波が届く・届かないという現象が重要となります。~
この「電波が届かない」原因には、主に以下の二つが考えられます。
+ 電波は伝搬距離や遮蔽物によって減衰する → COLOR(red){''伝搬ロス(パスロス、シャドウィング)''}
+ 他の(時には自身の)電波と出会う事で、波形が崩れる or 打ち消される → COLOR(red){''干渉、マルチパスフェージング''}
このような、''物理現象をモデル化する必要性がある''、という点に、有線ネットワークとの決定的な違いがあります。~
電波干渉のような複雑な物理現象を、ある程度簡略化、モデル化してシミュレーションする際のアプローチとして、一般的に、確率・統計モデルを用いる、というものがあります。~
例えば、ビットエラーをBit Error Rate Table(BERテーブル)から確率的に判定する、フェージングによる電力変動を統計的に算出する、などです。
Qual''''''Netでも上記のようなモデル化を行っており、その事によって高速な無線ネットワークシミュレーションを実現している、とも言えます。
* シミュレーションの流れ
Qual''''''Netを利用した、実際のシミュレーションの流れを、パケットの送受信処理に着目して解説します。
** パケットの流れ
// App→Phy→Prop→Phy→Appの流れ
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)|
|Physical Layer|802.11a/b|
|Propagation Layer|default|
なお、プロトコルが異なれば別の関数が使用されます。
|&attachref(packet.png,"t:",60%);|
* アーキテクチャ概要
ここでは、Qual''''''Netのシミュレータとしての構造(アーキテクチャ)に焦点を当てて解説します。
** メッセージ処理:パケットとタイマー
Qual''''''Netではパケットとタイマーをメッセージ(イベント)として同じように管理しております。下記の図はパケットとタイマーをスケジュールしている例です。~
メッセージに関しては[[コチラ>./MessageStructure]]をご覧ください。
#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);|
//* まとめ
* 本ページの趣旨
本ページは、Qual''''''Netやシミュレータ一般に関する知識をまとめたものです。~
内容については、なるべく正確を期すようにしてはいますが、あくまでご参考までにご覧下さい。~
Qual''''''Netに触れる際、一番初めの手がかりになれば幸いです。
// [Japan Qual''''''Net Community Forum Support]
----
#contents
----
* はじめに
まず始めに、Qual''''''Netで採用されている離散シミュレーションとは何か、また無線通信のシミュレーションとはどんなものか、について概要を説明します。
** 離散シミュレーションとは?
文章で表現すると、以下のようなものです。
+ ある事柄(イベント)がある時間(t0)に発生
+ その結果を受けて、別の事象あるいは同じ事象が、ある時間後(t1=t0+Δt0)に発生
+ 更にその結果を受けて、別の事象あるいは同じ事象がある時間後(t2=t1+Δt1)に発生
+ いろんな事柄、イベントが時間差を持って延々と続く:「因果応報の世界」をコンピータで計算するのがシミュレーション
これを絵で表現すると・・・~
(下のスライドはスライド内をクリックすることで進みます)
#ref(discrete_simlation.swf,w:640,h:512,wrap,center)
//|&attachref(disc_3.png,"t:",40%);|
** 無線通信ネットワークのシミュレーション
無線通信をシミュレートする場合、無線=電波を用いるため、その特性をモデル化する必要が生じます。
無線のシミュレーションでは、電波が届く・届かないという現象が重要となります。~
この「電波が届かない」原因には、主に以下の二つが考えられます。
+ 電波は伝搬距離や遮蔽物によって減衰する → COLOR(red){''伝搬ロス(パスロス、シャドウィング)''}
+ 他の(時には自身の)電波と出会う事で、波形が崩れる or 打ち消される → COLOR(red){''干渉、マルチパスフェージング''}
このような、''物理現象をモデル化する必要性がある''、という点に、有線ネットワークとの決定的な違いがあります。~
電波干渉のような複雑な物理現象を、ある程度簡略化、モデル化してシミュレーションする際のアプローチとして、一般的に、確率・統計モデルを用いる、というものがあります。~
例えば、ビットエラーをBit Error Rate Table(BERテーブル)から確率的に判定する、フェージングによる電力変動を統計的に算出する、などです。
Qual''''''Netでも上記のようなモデル化を行っており、その事によって高速な無線ネットワークシミュレーションを実現している、とも言えます。
* シミュレーションの流れ
Qual''''''Netを利用した、実際のシミュレーションの流れを、パケットの送受信処理に着目して解説します。
** パケットの流れ
// App→Phy→Prop→Phy→Appの流れ
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)|
|Physical Layer|802.11a/b|
|Propagation Layer|default|
なお、プロトコルが異なれば別の関数が使用されます。
|&attachref(packet.png,"t:",60%);|
* アーキテクチャ概要
ここでは、Qual''''''Netのシミュレータとしての構造(アーキテクチャ)に焦点を当てて解説します。
** メッセージ処理:パケットとタイマー
Qual''''''Netではパケットとタイマーをメッセージ(イベント)として同じように管理しております。下記の図はパケットとタイマーをスケジュールしている例です。~
メッセージに関しては[[コチラ>./MessageStructure]]をご覧ください。
#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);|
//* まとめ