メイン Routing Protocols Implementation & Model Development 特定ノードにおけるパケット破棄 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
the_thirdman | 投稿日時: 2006/1/6 22:38 |
新米 登録日: 2005/9/21 居住地: 投稿: 10 |
特定ノードにおけるパケット破棄 あけましておめでとうございます。
昨年は親切な対応ありがとうございました。 本年もいろいろとお世話になることと思いますがどうぞ よろしくお願いいたします。 現在、以下のような状況を実現しようとaodv.cppのソースを いじっています。 (目標) あるノードID(例えばID1からID10)をもつノードをグループA 他のノードID(例えばID11からID20)をもつノードをグループBとし、 グループBのノードはグループAのノードからのパケットを受信しない。 このような目標を実現するべく、現在 (ネットワーク設定) ノードID1、2、3を横一列に配置。 ノード1からのRREQがノード3に直接届くことはない。 ノード1からノード3にCBR送信。 といった設定において、 ノードID1からのRREQパケットを受け取ったノードId2のノードは そのRREQパケットを破棄する。 といったことをまず実現しようとしています。 本フォーラムの"特定ノードのソース改良"やマニュアルを参考にし、 aodv.cpp 3635行目の関数 AodvHandleRequestの内部を改造すれば よいのではないかと考えました。 そこで、関数AodvHandleRequest内に NodeAddress nodeId = node->nodeId; というコードを追加し、ノードIDを確保。 あとはこのnodeIdを用いて、 if(nodeId == 2){ RREQパケット破棄 } といったことをしようと考えたのですが、どうにもうまく動作 しません。 RREQパケットの破棄というのはソースのどの部分(あるいは関数)で 処理されているでしょうか?? また、あるノードIDからのパケットを別のノードIDのノードは破棄(無視) するという動作を行なわせるには具体的にどのようなことをすれば 実現できるのでしょうか?? 御手数ですが、回答のほうよろしくお願いします。 |
forum_support | 投稿日時: 2006/1/7 11:57 |
モデレータ 登録日: 2005/5/17 居住地: 東京都中野区中央4-5-3 ?構造計画研究所 投稿: 322 |
Re: 特定ノードにおけるパケット破棄 引用:
RREQの破棄は AodvHandleRequest をコールした後で行われています。
AodvHandleRequest 内で Message を消さずに、特定ノードIDでは AodvHandleRequest 自体を呼ばないようにしたらよいのではないで しょうか? 引用:
QUALNET_HOME/main/message.cpp の
がパケットを作成する際のAPIですが、この中で、
という様に作成ノードのノードIDを記録しています。 これを受信ノードで参照すれば可能だと思います。 |
the_thirdman | 投稿日時: 2006/1/7 20:12 |
新米 登録日: 2005/9/21 居住地: 投稿: 10 |
Re: 特定ノードにおけるパケット破棄 迅速な対応ありがとうございます。
非常に助かりました。 教えていただいたとおり、 case AODV_RREQ: 06384 { 06400 if(nodeId!=2){ 06401 AodvHandleRequest( 06402 node, 06403 msg, 06404 srcAddr, 06405 ttl, 06406 interfaceIndex); 06407 } 06408 MESSAGE_Free(node, msg); 06409 break; 06410 } } のようにしたところ、nodeId2のノードのみがRREQを破棄すると いった状況を実現することができました。 また、あるノードIDからのパケットを別のノードIDのノードは破棄(無視) するという動作につきましても msg->originatingNodeId を参照する ことで実現することができました。 いつも丁寧な対応をしていただきとても感謝しています。 また、たびたび質問することと思いますが どうぞよろしくお願いいたします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |