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

パスワード:


パスワード紛失

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

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

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

日曜日からの合計
メイン
   Routing Protocols Implementation & Model Development
     定期的に隣接ノード情報を取得し、テーブルとして保持するには??
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nanashi
投稿日時: 2006/1/10 0:52
新米
登録日: 2006/1/8
居住地:
投稿: 16
定期的に隣接ノード情報を取得し、テーブルとして保持するには??
アドホックネットワーク(ルーティングプロトコルはAODV)において、

1. ビーコン or Helloメッセージのようなものを定期的に発信する
ことで自身のノードの隣接ノード情報(ノードのIPアドレスや
ノードID等)を取得。

2. 取得した情報は隣接ノードテーブルといった形でノードが保持。
隣接ノードテーブルは定期的なビーコンetcによって更新される。

3. 送信元ノードは特定のイベントをきっかけとして
隣接ノードテーブルにあるノードに対してデータを送信する。

といったことようなことを実現したいと考えています。

そこで質問させていただきたいのですが、

1.ビーコンやHelloメッセージのようなものを定期的に発信することで
隣接ノードの情報(アドレスetc)を取得する機能(関数)はデフォルトで
実装されているのでしょうか??
ないとしたらどのあたりを参考にして追加すればよいのでしょうか?

2.また、取得する機能があるとしてそれを保持するテーブル
(ここでいうところの隣接ノードテーブル)のようなものは
既存なのでしょうか??
ないとしたらどのあたりを参考にして追加すればよいのでしょうか?

3.送信元ノードがデータを送信するための関数としては
aodv.cpp内のAodvTransmitDataが該当し、
ここでの引数として宛先アドレスを与えると思うのですが、
ここで、隣接ノードテーブルから宛先アドレスを参照し、
そのアドレスに対してデータ送信といった形をとることで
3番については実現可能でしょうか??

以上お手数ですが、アドバイスいただけたらと思います。
よろしくお願いします。


forum_support
投稿日時: 2006/1/10 14:04
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: 定期的に隣接ノード情報を取得し、テーブルとして保持するには??
引用:

nanashiさんは書きました:
1.ビーコンやHelloメッセージのようなものを定期的に発信することで
隣接ノードの情報(アドレスetc)を取得する機能(関数)はデフォルトで
実装されているのでしょうか??
ないとしたらどのあたりを参考にして追加すればよいのでしょうか?


ビーコンは 802.11 の MACモデルで実装しています。
AODV の Hello message も実装されています。これは
aodv.cpp において

06477 //--------------------------------------------------------------------
06478 // FUNCTION: AodvHandleProtocolEvent
06479 // PURPOSE: Handles all the protocol events
06480 // ARGUMENTS: node, the node received the event
06481 //            msg,  msg containing the event type
06482 //--------------------------------------------------------------------
06483 
06484 void
06485 AodvHandleProtocolEvent(
06486     Node* node,
06487     Message* msg)
06488 {

06737         case MSG_NETWORK_SendHello:
06738         {
06739             clocktype delay = (clocktype) (pc_erand(node->seed) *
06740                 AODV_BROADCAST_JITTER);
06741 
06742             if (aodv->lastBroadcastSent < (getSimTime(node) -
06743                 AODV_HELLO_INTERVAL))
06744             {
06745                 AodvBroadcastHelloMessage(node, aodv);
06746                 aodv->lastBroadcastSent = getSimTime(node);
06747             }
06748 
06749             MESSAGE_Send(node, msg, (clocktype) AODV_HELLO_INTERVAL + delay);
06750             break;
06751         }

のようにして送信イベントが定義されています。Hello message を
スケジュールしている箇所は イベント種別MSG_NETWORK_SendHello
を用いてスケジュールしている箇所を探せば見つかります。


引用:

nanashiさんは書きました:
2.また、取得する機能があるとしてそれを保持するテーブル
(ここでいうところの隣接ノードテーブル)のようなものは
既存なのでしょうか??
ないとしたらどのあたりを参考にして追加すればよいのでしょうか?

ルーティングテーブルのことですか?
struct AodvRoutingTable;
struct AodvRouteEntry;
を参考にしてください。

引用:

3.送信元ノードがデータを送信するための関数としては
aodv.cpp内のAodvTransmitDataが該当し、
ここでの引数として宛先アドレスを与えると思うのですが、
ここで、隣接ノードテーブルから宛先アドレスを参照し、
そのアドレスに対してデータ送信といった形をとることで
3番については実現可能でしょうか??


AodvTransmitData は送信パケットの宛先アドレスにマッチする
ルーティングテーブルレコードを引数としています。
ルーティングテーブルを参照してマッチしたということですから、
この時点で、ルートは確立していますので、そのアドレスに
対してデータ送信が行えます。 AodvTransmitData はデータを
送信後、マッチしたレコードに対するパラメータをやlifetime を
更新します。
nanashi
投稿日時: 2006/1/10 22:40
新米
登録日: 2006/1/8
居住地:
投稿: 16
Re: 定期的に隣接ノード情報を取得し、テーブルとして保持するには??
詳しい回答ありがとうございます!
とても参考になりました

>ルーティングテーブルのことですか?
ルーティングテーブルは宛先への経路を確立するために用いるテーブルで
あると考えられますが、今回はそうではなく、

"各ノードが自身の隣接ノードの情報を保持しておくためのテーブル"を
探しています。

各ノードは(呼が発生するしないに限らず)定期的に
ビーコンなどによって隣接ノードの情報を取得し、
それをテーブルとして保持させておく。

といったようなことをしたいのですが、このような場合は
自分で新たな構造体としてテーブルを定義し、
ビーコンによって情報を取得し、取得した情報をそこに書き込むと
いったコードを追加する必要があるのでしょうか?
forum_support
投稿日時: 2006/1/11 10:32
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: 定期的に隣接ノード情報を取得し、テーブルとして保持するには??
引用:

nanashiさんは書きました:

"各ノードが自身の隣接ノードの情報を保持しておくためのテーブル"を
探しています。

各ノードは(呼が発生するしないに限らず)定期的に
ビーコンなどによって隣接ノードの情報を取得し、
それをテーブルとして保持させておく。

といったようなことをしたいのですが、このような場合は
自分で新たな構造体としてテーブルを定義し、
ビーコンによって情報を取得し、取得した情報をそこに書き込むと
いったコードを追加する必要があるのでしょうか?


そうですね。結論から言えば隣接ノードテーブルのデータ
構造を定義していただくことになります。

AODV では、隣接ノードテーブルを用いなくとも経路確立
が行え必要ないため、仰るような機能は実装されておりません。
※ただ、ルーティングテーブルを改造すれば似たようなことは
※できそうですが

OLSRなどのルーティングモデルでは、MPR集合を使い
ますが、これを管理するテーブルがOLSRモデルでは定義
されています。

このように、基本的に新たな機能を追加する(既存プロトコル
仕様を変更/新規プロトコルの追加)にあたっては、データ構造
はユーザーが決定するしかないと思います。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT