![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
shiba | 投稿日時: 2010/12/6 15:21 |
半人前 ![]() ![]() 登録日: 2010/11/4 居住地: 投稿: 23 |
パケットの統計結果について AODVにおいて、ノードに残っている電力に応じてパケットを破棄させようと考えています。
routing_aodv.cpp内のAodvSendPacketでbattery_model.cpp内のBatteryGetRemainを使い、これが200mA.h以上ならマック層へメッセージを送り、それ以下ならMESSAGE_Freeを使ってパケットを破棄させました。 これをコンパイルし、GUI上で実行しました。 アニメーションではちゃんとノードの電力が200mA.hになったところでパケットのやりとりをしなくなるのを確認できました。 visualstudioでデバッグを行い、BatteryGetRemainの値が全部200mA.hくらい残っているのも確認しました。 しかし、AnalyzerのResidual battery capacityが以前と同じ値で出力されただけでなく、MESSAGE_Freeで破棄したパケットの方もNetworklayerのTotal Hop Counts for all routesを見たところ変化が見られません。 それどころかすべての統計結果が以前と変わらないまま出力されてしまいました。 変更箇所を統計結果に反映させるにはどうすればよいのでしょうか? 宜しくお願い致します。 |
hed | 投稿日時: 2010/12/6 19:21 |
一人前 ![]() ![]() 登録日: 2006/7/3 居住地: 京都 投稿: 81 |
Re: パケットの統計結果について shibaさん、こんにちは
私は統計値の更新等を行う場合は以下のような手順で調査を行います。 1) 統計結果を出力している関数(概ね、なんたらFinalize)を探す。 (*.statの文字列もこのFinalize関数内で出力しているので、その文字列で検索するとよいです) 2) *.statに出力している変数を特定し、statの文字列がどの変数に対応しているかを調べます。 3) その変数を更新している場所を探す。 そして、改造を行う場合は、以下も必要かと思います。 4) 変数が改造によりどのような影響を受けるのか調べる。 ためしに文字列で検索してみたところ、 "Total Hop Counts for all routes" は NetworkIpGetRoutingProtocol で取得するAodvDataの配下にあるAodvStats::numHopsの値を出力しているようです。MESSAGE_Freeした場合もその変数をインクリメントしているのではないでしょうか? 詳細は実際に試した方がいいと思うので、試してみて下さい。 御参考になれば幸いです。 |
shiba | 投稿日時: 2010/12/7 1:15 |
半人前 ![]() ![]() 登録日: 2010/11/4 居住地: 投稿: 23 |
Re: パケットの統計結果について hedさん、回答ありがとうございます。
hedさんの意見を参考にしたところ電力に関しても*.statに出力しているところを見つけることができたました。 やはりMESSAGE_Freeしても変数をインクリメントしてしまうんですね・・・ インクリメントしないための対応策も練っていきたいと思います。 どうもありがとうございました |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |