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

パスワード:


パスワード紛失

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

2024/03/10より368/1383
人気モジュール
No.1: フォーラム 85
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)
[ リロード ]   [ ソース ]  [ トップ | 一覧 | 単語検索 | 最新 | バックアップ | ヘルプ ]


  • 追加された行はこの色です。
  • 削除された行はこの色です。

  #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でも上記のようなモデル化を行っており、その事によって高速な無線ネットワークシミュレーションを実現している、とも言えます。
  
  |&attachref(#31/packet.png,"t:",60%);|
  * シミュレーションの流れ
  Qual''''''Netを利用した、実際のシミュレーションの流れを、パケットの送受信処理に着目して解説します。
  ここでは、QualNetのシミュレータとしての構造(アーキテクチャ)に焦点を当てて解説します。
  
  ** メッセージとタイマ
  // MESSAGE_Sendなど
  // 江森さんが書きかけていた図
  ** パケットの流れ
  //メッセージ構造体の詳細については、- [[こちら>MessageStructure]]を参照してください。
  // App→Phy→Prop→Phy→Appの流れ
  ■コメント:例のパケット&タイマ処理シーケンス図を載せては?
  
  SourceノードのApplication層で作成されてからDestinationノードのApplication層で受け取るまでの、パケットの基本的な流れは、以下の図のようになっています。
  
  |TLEFT|c
  |Application Layer|CBR(Constant Bit Rate Application)|
  - [[Node構造体について>node_str]]
  - [[Message構造体について>MessageStructure]]
  |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のシミュレータとしての構造(アーキテクチャ)に焦点を当てて解説します。
  
  さらに必要であれば、instanceId(protocolTypeだけではどのオブジェクトのイベントか判断出来ない場合)による分岐も起こります。~->
  なお、PHY_Process''''''Event()の場合はプロトコルによる分岐はなく、直接3の分岐が起こります。->
  ** メッセージ処理:パケットとタイマー
  Qual''''''Netではパケットとタイマーをメッセージ(イベント)として同じように管理しております。下記の図はパケットとタイマーをスケジュールしている例です。~
  メッセージに関しては[[コチラ>./MessageStructure]]をご覧ください。
  
  #ref(packet_and_timer.png,w:640,h:512,wrap,center)
  &attachref(#31/EventDispatch.png);|
  
  ** データ構造
  // ノード構造体、メッセージ構造体
  ここでは、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