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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/09:4/4
2024/05/08:22/25

2024/03/10より368/1382
人気モジュール
No.1: フォーラム 84
No.2: QualNet概要 6
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット75
No.2:Linux3
No.3:Unknown OS1

No.1:どっかの巡回ロボット71
No.2:Safari3
No.3:Baidu巡回ロボット3

日曜日からの合計
QualNetWikiTop のバックアップ(No.1)
[ リロード ]   [ ソース ]  [ トップ | 一覧 | 単語検索 | 最新 | バックアップ | ヘルプ ]


目次


はじめに

まず始めに、QualNetで採用されている離散シミュレーションとは何か、また無線通信のシミュレーションとはどんなものか、について概要を説明します。

離散シミュレーションとは?

文章で表現すると、以下のようなものです。

  1. ある事柄(イベント)がある時間(t0)に発生
  2. その結果を受けて、別の事象あるいは同じ事象が、ある時間後(t1=t0+Δt0)に発生
  3. 更にその結果を受けて、別の事象あるいは同じ事象がある時間後(t2=t1+Δt1)に発生
  4. いろんな事柄、イベントが時間差を持って延々と続く:「因果応報の世界」をコンピータで計算するのがシミュレーション

これを絵で表現すると・・・
(下のスライドはスライド内をクリックすることで進みます)

無線通信ネットワークのシミュレーション

無線通信をシミュレートする場合、無線=電波を用いるため、その特性をモデル化する必要が生じます。

  • 無線のシミュレーションは電波が届く 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

なお、プロトコルが異なれば別の関数が使用されます。

page not found.[添付]

アーキテクチャ概要

ここでは、QualNetのシミュレータとしての構造(アーキテクチャ)に焦点を当てて解説します。

メッセージとタイマ

■コメント:例のパケット&タイマ処理シーケンス図を載せては?

データ構造

ここでは、QualNetで重要な構造体であるノード構造体とメッセージ構造体について説明します。

  • Node構造体について
  • Message構造体について

イベントディスパッチ処理

各イベント(イベントメッセージ)は、設定されたタイマー時刻になると、そのイベントの起こるノードの関数NODE_ProcessEvent()関数で呼ばれ、
その後、メッセージ構造体内の複数のメンバ変数に設定された内容を参照しながら、以下の順で分岐、処理を進めます。

1.レイヤによる分岐 ( msg->layerType )
ex.)node.cpp : NODE_ProcessEvent
PHY_LAYERのイベントであればPHY_ProcessEvent()、NETWORK_LAYERのイベントであればNETWORK_ProcessEvent()が、それぞれ呼ばれます。

2.プロトコルによる分岐( msg->protocolType)
ex.)network.cpp : NETWORK_ProcessEvent()
さらに必要であれば、instanceId(protocolTypeだけではどのオブジェクトのイベントか判断出来ない場合)による分岐も起こります。
なお、PHY_ProcessEvent()の場合はプロトコルによる分岐はなく、直接3の分岐が起こります。

3.イベント種別による分岐( msg->eventType)
ex.)aodv.cpp : AodvHandleProtocolEvent()
ex.)phy.cpp : MSG_PHY_TransmissionEnd

page not found.[添付]


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