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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/04/28:3/3
2024/04/27:21/24

2024/02/28より284/1375
人気モジュール
No.1: フォーラム 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット3

No.1:どっかの巡回ロボット3

日曜日からの合計
メイン
   Routing Settings
     AODVの経路表について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yosio
投稿日時: 2011/12/3 10:38
常連
登録日: 2011/11/24
居住地:
投稿: 41
AODVの経路表について
お世話になります。

初歩的な質問で申し訳ありません。
経路表に新たに項目を追加して、その項目に数値を中継端末から受け取りたいのですが、routing_AODVの.cppと.hのソースコードどの部分を変更していけばいいのか、教えてもらえませんか?

後、HELLOメッセージに情報を付加させたいのですがそれは可能なのですか?

.hでの構造体を.cppで呼び出して、処理しているのはわかるのですが、実際の追加と変更点がわかりません。

あと、参考になる資料があればお願いします。

初めてのトピですので、失礼な質問の仕方をしていたら申し訳ありません。よろしくお願いします。
ino
投稿日時: 2011/12/8 14:11
新米
登録日: 2011/1/24
居住地:
投稿: 16
Re: AODVの経路表について
どうも。
ちょっと亀レスになってしまいましたが参考になれば幸いです。

> 経路表に新たに項目を追加
.hで"table"で検索すると
構造体でAodvRoutingTableが見つかり、これっぽいですね。
この中身のAodvRouteEntry* routeHashTable[AODV_ROUTE_HASH_TABLE_SIZE];
が本体っぽく、AodvRouteEntryが結局AODVで扱う経路表の1行に相当するようです。
ですのでこの構造体に所望のメンバを追加すればよさそうです。

> 後、HELLOメッセージに情報を付加させたい
情報を付加するには
1. 実際に送るパケットの構造を拡張して付加情報を格納する
2. MessageのInfoフィールドを使う(実際のパケットとは別にこっそり付加情報を仕込んでおくような機能)
の2通りがあるかと思います。
関数AodvBroadcastHelloMessageを例にすると、
1.をするには、MESSAGE_PacketAllocでAllocした領域にAodvRrepPacketの構造で
書き込んでいますが、このAllocで付加情報分余計に領域を確保し、所望の構造で書きこむよう修正
2.をするには、MESSAGE_AppendInfoなどを使用してパケットとは別に領域を確保し
そこに付加情報を格納するような修正となります。

Infoに関してはProgrammersGuideに記載がありますが、
QualNetのソースで使用されている箇所を適当に探して読んだほうが
参考になるかもしれません。

yosio
投稿日時: 2011/12/9 13:26
常連
登録日: 2011/11/24
居住地:
投稿: 41
Re: AODVの経路表について
返信ありがとうございます。

とても参考になるお答えありがとうございます。
私C++言語が苦手で書き方等でもご指摘を頂けたらと思っています。
ご教示の方お願いします。

> 経路表に新たに項目を追加の件

.hの中身を確認しました。
Uint32で
>525//リンクは、リンク障害が発生した場合に、ローカルで修復可能で>526ある場合。
>527 BOOL locallyRepairable;
下の場所に追加してやってみます。

実際にその後の出力はOutputWindowsに出力されるのですか?



> 後、HELLOメッセージに情報を付加させたい
情報を付加するには
1. 実際に送るパケットの構造を拡張して付加情報を格納する
の前者の方法で考えています。

>1.をするには、MESSAGE_PacketAllocでAllocした領域に
>AodvRrepPacketの構造で
>書き込んでいますが、このAllocで付加情報分余計に領域を確保し、所>望の構造で書きこむよう修正

パケットの最後に付け足したいと考えているのですがその場合ですと、どこに追加したらよろしいですか?

一応、Infoのソースの検索とProgrammersGuideを翻訳して見てみます。


ino
投稿日時: 2011/12/9 14:09
新米
登録日: 2011/1/24
居住地:
投稿: 16
Re: AODVの経路表について
yosioさん

1.
> 実際にその後の出力はOutputWindowsに出力されるのですか?
1.1「OutputWindows」とはGUI下部のOutput Windowのことでしょうか?
ここにはqualnet.exeから標準出力へ吐き出されているものが表示されます
(間違ってたらどなたかご指摘お願いします。)。
1.2「その後の出力」とはどういうことを想定されていますか?
あるタイミングで、付加した情報を表示したいというのであれば
適当な箇所にprintfなどを追加していただければここに出力されます。
何かしらの統計情報を保持しており、シミュレーション最後にそれを出力したい
ということであれば、IO_PritStatを使用すれば.statファイルへの出力が行われ
グラフで確認することができます。AodvFinalizeなどを参考にしてみてください。

2.
> パケットの最後に付け足したいと考えているのですがその場合ですと、
> どこに追加したらよろしいですか?
AodvBroadcastHelloMessageでは関数MESSAGE_PacketAllocに
pktSizeを与えてそのサイズの領域を確保しています。
これはint pktSize = sizeof(AodvRrepPacket);でAodvRrepPacket構造体の
サイズです。例えばこのAodvRrepPacket構造体自体にメンバを追加すれば
sizeofで追加後のサイズが得られ、領域も余分に確保されることになります。
あとはこの追加したメンバのところに値を格納すればいいわけです。
(つまり以下と同じようなことをする。)
    rrepPkt = (AodvRrepPacket *) pktPtr;
    rrepPkt->typeBitsPrefixSizeHop = typeBitsPrefixSizeHop;
    ・・・
あと、受信側でも取得するための修正が必要です。
ただし、AodvRrepPacket構造体はいろいろな箇所に使われていますので
それらの箇所で影響があるか確認が必要です。べつの構造体として定義する
のも手ですね。
yosio
投稿日時: 2011/12/9 15:31
常連
登録日: 2011/11/24
居住地:
投稿: 41
Re: AODVの経路表について
言葉足らずの質問でお手数おかけします。

>1
その後の出力とは、項目がふえたこと確認したかったので、
printf()を追加して表示させようとしてやっているのですが
追加する場所がわからないので質問してみました。

>1.2「その後の出力」とはどういうことを想定されていますか?
一応、経路が更新されるたびに出力したいと考えています。

>2わかりやすいく詳しい説明ありがとうございます。

お答えしてくれたことを参考にソースプログラムをいじってみます。

又、何かわからないとこありましたら、ご教示をお願いいたします。
yosio
投稿日時: 2011/12/12 13:18
常連
登録日: 2011/11/24
居住地:
投稿: 41
Re: AODVの経路表について
ino>おかげさまでルーティングテーブルに項目を追加できました。
>お世話になりました。

私の見ているとこが間違っていました。ありがとうございました。

申し訳ないですが、もう一つ質問があります。Helloパケットに負荷させる情報のことで、ノードが持っているパケット数を負荷させたいのです。たぶん、バッファ内に入っていると思っているのですが、どこに記載されているのか、どこから数値を取得すればよいのか?を教えてください。

ino
投稿日時: 2011/12/12 14:54
新米
登録日: 2011/1/24
居住地:
投稿: 16
Re: AODVの経路表について
yosioさん、どうもです

QualNetではMacが送るべきパケットがキューにあるかどうか調べる関数が
どのプロトコルでも大体あり、〜HasPacketToSendという名前がついてます。
ここから呼び出し先をたどっていけば、きっとQueueにアクセスしている所が
あって、パケット数とか取得できるに違いない!と期待してソースを追いかけてみます。

dot11ではMacDot11NetworkLayerHasPacketToSendですね。
その中のMacDot11StationMoveAPacketFromTheNetworkLayerToTheLocalBuffer
をたどるとSchedulerクラスのインスタンスがあり、Node構造体からたどって取得できる
ことがわかります。
さらに、このクラスの定義を見るとQueueDataが見つかりました。
publicなメンバ関数にnumberInQueueというのがありこれを使えばよさそう。
引数にpriorityの指定が必要ですが、if_queue.hに
#define ALL_PRIORITIES -1
という定義があります。これを使えば全Queueの合計が返ってくる?
後半は想像ですので、あとは実際に試してみてください。
yosio
投稿日時: 2011/12/12 16:42
常連
登録日: 2011/11/24
居住地:
投稿: 41
Re: AODVの経路表について
速い返信有難うございます。

言われた通りやってみます。

yosio
投稿日時: 2011/12/31 20:59
常連
登録日: 2011/11/24
居住地:
投稿: 41
Re: AODVの経路表について


いつもお世話になっております。

経路表に前ホップ端末のIPアドレスの項目を追加したいのですが、どうしたらよいでしょうか?
前ホップのアドレスが入っているprevHopといろいろな所にあるのですが構造体が苦手でわかりません。

ご教示よろしくお願いいたします。

ino
投稿日時: 2012/1/5 13:51
新米
登録日: 2011/1/24
居住地:
投稿: 16
Re: AODVの経路表について
明けましておめでとうございます。

> 経路表に前ホップ端末のIPアドレスの項目を追加したいのですが、どうしたらよいでしょうか?
経路表の追加箇所は前レスのとおりです。
格納すべき値(元ネタ)をどこから引っ張ってくればよいか?という話題でしょうか?

> 前ホップのアドレスが入っているprevHopといろいろな所にある
「いろいろな所にある」とは具体的にソースのどこでしょうか。
それらのうちどれを使用すべきなのかわからないということでしょうか?
ちょっと疑問点が汲み取り切れませんでした。
(1) 2 3 4 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT