メイン Routing Protocols Implementation & Model Development DSRにおいてパケットを中継するノードの持つ情報をパケットに追加する方法について | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
you | 投稿日時: 2008/7/10 13:53 |
新米 登録日: 2007/12/25 居住地: 投稿: 11 |
DSRにおいてパケットを中継するノードの持つ情報をパケットに追加する方法について いつもフォーラムのお世話になっております。
タイトルにあるようにDSRにおいて パケットを中継するノードの持つ情報を パケットに追加する方法について質問があります。 DSRは元々、経路探索時において、 受信したRoute Requestパケットに 自身のアドレスを経路情報として追加して、 再度Route Requestパケットを送信するという動作を行っているため、 DsrInitiateRREQ、DsrRelayRREQ、DsrHandleRequest等を参考にして、 データパケット送信時において、 パケットを中継するノードの持つ情報を パケットに追加しようと試みており、 DsrTransmitDataWithSrcRoute、 DsrHandleProtocolPacketWithIPHeader、 DsrHandlePacketWithSrcRoute等を見ています。 しかし、Route Requestの際、 どの部分で自身のアドレスをパケットに追加しているのか 正確に理解できておらず、参照する部分の確定に戸惑っています。 どなたかもしよろしければ、 DSRに限らずパケットにおける情報のやり取りについて 解説、アドバイスしていただけないでしょうか? よろしくお願い致します。 |
mast | 投稿日時: 2008/7/10 14:39 |
一人前 登録日: 2005/4/7 居住地: 投稿: 93 |
Re: DSRにおいてパケットを中継するノードの持つ情報をパケットに追加する方法について 引用:
どなたかもしよろしければ、 パケットにおける情報のやり取りというのが何を意味しているのかわかりませんが、、、 引用: 経路探索時において、 というのは、DsrRelayRREQ()関数がまんまその動作を表しているようにみえます。 で、DsrRelayRREQ()のコメント行だけを抜き出すと以下のようになっています。
で、問題の「自身のアドレスをパケットに追加している」箇所は、以下のコメントが書かれているところじゃないかと思うのですが、どうでしょうか?
|
you | 投稿日時: 2008/7/14 17:30 |
新米 登録日: 2007/12/25 居住地: 投稿: 11 |
Re: DSRにおいてパケットを中継するノードの持つ情報をパケットに追加する方法について mastさん
ご回答ありがとうございます。 パケットにおける情報のやり取りという表現が非常に曖昧だったため、 訂正致します。 〜mastさんから頂いたご指摘に対するコメント〜 mastさんにご指摘頂いたようにDsrRelayRREQ()のコメントを見る限り、 「自身のアドレスをパケットに追加している」箇所は // Copy the path fieldsの部分であると思われます。 焦ってコメントをしっかり読む事を怠っていました。 ご指摘頂きありがとうございます。 〜パケットにおける情報のやり取りという表現の訂正〜 mastさんのご指摘により、 「自身のアドレスをパケットに追加している」箇所の 見当はつける事ができました。 しかし、お恥ずかしながら、 私のQualNet及びC++に関する知識が不足しており、 Message構造体を含む各種構造体の理解に苦しんでいる状態です。 そのため、DsrRelayRREQ()に限らず、 各関数の冒頭に記述されている一連の動作の流れが いまひとつ理解できておりません。 この部分をパケットにおける情報のやり取りという 曖昧な解釈による曖昧な表現で示してしまいました。 一応、一通り以下のページも目を通し、各APIの理解に努めています。 http://simweb.kke.co.jp/qualnet/forum/modules/pukiwiki/index.php?cmd=read&page=QualNetWikiTop%2FMessageStructure&word=%B9%BD%C2%A4%C2%CE しかし、どうしても一連の動作の流れを掴む事ができていません。 そこで、もしよろしければ、 上記の部分の解説、アドバイスをしていただけないでしょうか? または、ドキュメンテーションでMessage構造体を利用した 一連の動作を解説をしている部分を教えていただけないでしょうか? 以上、よろしくお願い致します。 |
hiro | 投稿日時: 2008/7/14 20:45 |
長老 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: DSRにおいてパケットを中継するノードの持つ情報をパケットに追加する方法について > ドキュメンテーションでMessage構造体を利用した
> 一連の動作を解説をしている部分を教えていただけないでしょうか? 取っ掛かりとしては、QualNet-4.5-ProgrammersGuide.pdf の中の、 3.3.1 Events and Messages あたりでしょうか。 一連の、となると QualNet-4.5-ProgrammersGuide.pdf の、 CHAPTER 1,3,4 が該当すると思います。 |
you | 投稿日時: 2008/7/16 0:56 |
新米 登録日: 2007/12/25 居住地: 投稿: 11 |
Re: DSRにおいてパケットを中継するノードの持つ情報をパケットに追加する方法について hiroさん
ご回答ありがとうございます。 まだドキュメンテーションをしっかり読めておらず恐縮ですが、 追加で気になる事が生じたため、質問させて頂きます。 mastさんのご回答により、 「自身のアドレスをパケットに追加している」箇所の おおよその見当をつける事ができました。 しかし、DsrRelayRREQ()の// Copy the path fieldsにおいて CopyされたnewPktPtrはDsrRelayRREQ()の最下部にある
において利用されていません。
これは上記の一連のプログラムにおいて、 newMsgのパケットへのポインタが返却された事により、 newPktPtrにおいてnewMsgに対するcopy等の操作が可能になり、 最終的にNetworkIpSendRawMessageToMacLayerWithDelay()の newMsgにおいてcopy完了後のものが利用されているという 解釈でよろしいでしょうか? ================================================================= もうひとつ質問があります。 routing_dsr.cppにおいて、 データパケットの受信を確認する箇所として、 DsrRouterFunction()の
以外ないという事でよろしいでしょうか? routing_dsr.cppにおいてデータパケットを受信した際の 受信処理はこの箇所で行うしかないのでしょうか? 長文になってしまい、分かりにくい説明になってしまい 申し訳ありませんが、ぜひ助言をよろしくお願い致します。 |
mast | 投稿日時: 2008/7/16 14:18 |
一人前 登録日: 2005/4/7 居住地: 投稿: 93 |
Re: DSRにおいてパケットを中継するノードの持つ情報をパケットに追加する方法について 引用:
これは上記の一連のプログラムにおいて、 はい。そのとおりです。 引用: routing_dsr.cppにおいて、 はい。こちらもそのとおりです。 |
you | 投稿日時: 2008/7/24 14:41 |
新米 登録日: 2007/12/25 居住地: 投稿: 11 |
Re: DSRにおいてパケットを中継するノードの持つ情報をパケットに追加する方法について mastさん
返信ありがとうございます。 mastさん、hiroさんに頂いたアドバイスの基、 データパケット送信時において、 各ノードの持つ情報をデータパケットに追加するべく、 現在プログラムの記述を行っています。 その後、プログラムの記述を進めていく中で、 新たに生じた問題についてまたここで追加質問させてください。 現在、mastさん、hiroさんに頂いたアドバイスを参考にして、 DsrTransmitDataWithSrcRoute()において、 以下の通りにプログラムの記述を行っています。
ここで、dataLenに (numNodesInSrcRtを模した任意の名称) * sizeof(int)を追加する事で、 payloadLenが変更されているため、 DsrHandleOptions()における以下の2点
この2点において従来代入される値と異なる値が代入されてしまう事で、
上記のoptionSize、optionsの計算にずれが生じてしまい、 最終的に、 ERROR_Assert(!optionSize, "Unknown Dsr packet type\n");において、 エラーではじかれてしてしまい、シミュレーションが実行できません。 無理矢理optionSize、optionsの計算式を変更して、 エラーではじかれないよう設定しても 決して良い結果が得られるとは思えず、悩んでおります。 ノードの持つ情報を追加する箇所に間違いがある気もするのですが、 どうにも自己解決できないため、 長文ながら数少ない私の示した情報から 修正すべき点をご指摘いただけませんでしょうか? 毎回大変分かりづらい説明で恐縮ですがよろしくお願い致します。 [追記] 当初考えていたアプローチと異なるやり方で取り組んでみたところ、 なんとか自己解決する事ができました。 アドバイス頂いたmastさん、hiroさん改めて御礼申し上げます。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |