Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/03/29:11/18
2024/03/28:20/24

2024/01/29より296/1301
人気モジュール
No.1: フォーラム 78
No.2: QualNet概要 5
No.3: ニュース 3
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット61
No.2:Linux6
No.3:Windows NT2

No.1:どっかの巡回ロボット56
No.2:Safari7
No.3:Google巡回ロボット2

日曜日からの合計
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);|

//* まとめ

Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT