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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/14:16/17
2024/05/13:21/24

2024/03/15より392/1397
人気モジュール
No.1: フォーラム 49
No.2: ニュース 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット42
No.2:Unknown OS1

No.1:どっかの巡回ロボット37
No.2:Google巡回ロボット3
No.3:Majestic-12巡回ロボット2

日曜日からの合計
メイン
   Routing Protocols Implementation & Model Development
     Unknown Dsr packet typeのエラーについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
shiba
投稿日時: 2011/11/14 20:12
半人前
登録日: 2010/11/4
居住地:
投稿: 23
Unknown Dsr packet typeのエラーについて
こんにちは
いつもお世話になっています

現在送信先のノードから送られたパケットをほぼ無条件(ttl、ループバックなどを除く)で再送信してこれを繰り返し力技的に1つの宛先への到達を目指すfloodingプロトコルをコーディングしています

floodingの動きがDSRやAODVのRREQにそっくりなため私はDSRを元にしてソースを書き換えています

通常RREQはCBRなどのアプリケーションから送信要求が発生した時に送信されるので、ここを強制的に送信するようにソースを改変しました

具体的にはtxtファイルなどでappファイルのような形式のもの作り、それをinitで読み込んで構造体に格納します。
DsrSetTimerイベントで1秒ごとにその構造体をチェックし、自分が送信ノードでsimtimeが送信時間と同一ならmessageをallocしてそれをDsrRouterFunctionに送り、強制的にRREQを送信します。

こうしたところ、発生させるRREQが1個のときは問題が無いのですが、12個目あたりからUnknown Dsr packet typeのエラーが発生します。
何度か試したところmessage.cppの方でメモリが足りないようなエラーが発生していたので、おそらく1度にmessageをallocしすぎてメモリ不足担っていると思うですが、これを回避するために何か方法はあるでしょうか?

ino
投稿日時: 2011/11/21 10:18
新米
登録日: 2011/1/24
居住地:
投稿: 16
Re: Unknown Dsr packet typeのエラーについて
検討されているプロトコルについて、ちょっと理解しきれなかったのですが
QualNetのプログラミング/デバッギングの観点から3点ほど。

単純な話なのですが、allocしたmessageを解放しているでしょうか?
Message構造体の基本的な流れは
MESSAGE_Allocで生成→MESSAGE_Sendで配送→受け取り側でMESSAGE_Freeで(1度だけ)解放
という感じですが、これは正しく行われているでしょうか?

また、"Unknown Dsr packet type"は
関数DsrHandleOptions内の*optionsによる分岐で
当該タイプが見つからない、かつoptionSizeが0の時に出ますね。
これら、optionsもしくはoptionSizeの値がどのようになるべきか
(そもそも間違った値をセットしていたなどということはないか)
確認してみてはいかがでしょうか?

ちょっと無理矢理なアプローチですが
Message絡みで"12"というマジックナンバというとmessage.hで
#define MAX_INFO_FIELDS 12
というのが見つかりました。もしMessageのInfo領域を使用した
プログラミングをしている場合、このあたりを疑ってもいいかもしれません。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT