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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/04/20:2/2
2024/04/19:16/23

2024/02/20より293/1356
人気モジュール
No.1: フォーラム 103
No.2: QualNet概要 4
No.3: ニュース 4
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット65
No.2:Linux3
No.3:Unknown OS2

No.1:どっかの巡回ロボット58
No.2:Google巡回ロボット5
No.3:Safari3

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

Counter: 4506, today: 1, yesterday: 2

QualNetWikiTop
目次

node構造体について

QualNetの基本設計については(ProgrammersGuide - Simulator Basics)を参照してください。 Simulator Basicsにあるように、QualNetでは、各ノードがそれぞれ保持しているプロトコルスタックを実行することで処理が進んでいきます。そこで(プログラム的に)重要になってくるのが、ノード単位の情報であるノード構造体です。

概要

node構造体は、QualNetのソースコードのあらゆる主な関数の引数になっている重要な構造体です。その名の通り、各ノード(端末やサーバ)につきひとつずつ用意されるnode情報構造体で、ノード名(host1など)、ノードID、そのノードのNIC情報、各レイヤのプロトコル情報、ルーティング情報などが保持されています。ただし、レイヤ単位の情報は、各レイヤ用の構造体にまとめられており、それをnode構造体が保持する形式になっています。

node構造体はリスト構造になっているので、あるノードの処理を行う関数中で、シナリオ上の他のノード情報を取得することも可能です。ただし、実世界を考えると分かるように、基本的にノードは自分の情報のみ参照可能で、他のノードの情報を知りたい場合はデータ通信(Message)のやりとりを介して通知するのが現実に即した動作です。シミュレーションを単純化するためにメッセージのやりとりを行わずに、ノード構造体を辿って他のノード情報を参照することに問題はありませんが、飽くまでシミュレーションであるから出来ることである、ということを意識しておく必要があります。

最初にPARTITION_InitializeNodes()で各初期化を行うことになります。この時点でシミュレーション時刻は0秒です。対応する終了処理はPARTITION_Finalize()です。

主なメンバ変数

変数名 説明
Node* prevNodeData ノードリストで、ひとつ前のノードへのポインタ、なければNULL
Node* nextNodeData ノードリストで、ひとつ後のノードへのポインタ、なければNULL
clocktype* currentTime 現在シミュレーション時刻へのポインタ
...
PropChannel* propChannel チャネル情報 他のレイヤメンバ変数と違い、ノード単位の情報ではないので注意が必要。
NetworkData networkData IPレイヤ情報。内部でNIC単位の配列を持ち、IPアドレスやIPバッファ、ルーティングテーブルなどの情報を保持する
MacData** macData MACレイヤ情報。NIC単位のMAC配列であり、MACプロトコル情報やプロトコル依存の構造体へのポインタ等を保持する
PhyData** phyData PHYレイヤ情報。一つのノードに複数のインターフェースが存在する場合は、phyIndexにより区別される。
...

メンバ変数の追加

例えば新規レイヤを作成したい場合や、全ノードに持たせたい追加設定値等がある場合は、ノード構造体に新規にメンバを追加してください。ただし、追記場所には注意が必要です。
//Users should not modify anything above this line.
のラインより下に追加してください。また、新規に既存のレイヤのプロトコルを追加したい場合は、 node構造体ではなく、各レイヤ構造体を編集することになります。(ProgrammersGuide - Writing Protocols in QualNet参照)


ページコメント

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