メイン Routing Protocols Implementation & Model Development OLSRのHELLOパケット | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
KIN | 投稿日時: 2012/10/9 14:14 |
新米 登録日: 2012/6/25 居住地: 投稿: 17 |
OLSRのHELLOパケット いつもお世話になっています。
私はOLSRのHELLOパケットに情報を追加して、 その追加する情報によってどれだけ通信料が増加し、 経路表を作成するのに時間がかかるかを調べたいと考えています。 具体的には、センサネットワークを想定していて、 HELLOパケットに追加する情報は、 16bitの情報を40個程度、80Byteほどの情報を追加したい と考えています。 また、通信量の増加を調べる方法として、 http://simweb.kke.co.jp/qualnet/forum/modules/newbb/viewtopic.php?topic_id=755&forum=27 に質問させていたただいたのですが、 TCPコネクションが張られて、通信が開始されるまでにかかる時間で 情報を追加する前と追加後の時間を比較したいと考えています。 そこで、routing_olsr-inria.hの791行目の部分と 900行目の部分に、 UInt16 keyID[40]; を追加して、HELLOパケットに情報を追加しました。 その状態で、シナリオを実行すると、routing_olsr-inria.cppの7393行目の 部分でエラーが出てしまいます。 詳しく見ていったところ、routing_olsr-inria.cppの7381行目のところ なのですが、 outputsize = (Int32)(((char *)ipv4_addr - (char *)msg) + sizeof(NodeAddress)); と記述されていますが、情報を追加したことによってmsgの値が大きくなっていると考えたのですが、outputsizeの値も大きくなっています。 この理由がわかりません。 |
utsubo | 投稿日時: 2012/10/9 19:24 |
新米 登録日: 2010/11/9 居住地: 投稿: 13 |
Re: OLSRのHELLOパケット こんばんは。
outputsizeの値はmsgのサイズから計算しているので、大きくなるのが自然だと思いますが・・・ 900行目の情報の追加はどのように行いましたか? hellomsg構造体の最後のhell_info[1]は構造体のサイズを可変長にするためのものなので、必ず構造体定義の一番最後で宣言する必要があります。 |
KIN | 投稿日時: 2012/10/10 16:44 |
新米 登録日: 2012/6/25 居住地: 投稿: 17 |
Re: OLSRのHELLOパケット 返信ありがとうございます。
式を見ると、msgの値を引き算しているので、msgの値を大きくしたらoutputsizeの大きさは小さくなるのではないかと考えたのですが、違うのでしょうか? 情報の追加は、hell_info[1]の前の行に追加を行いました。 |
utsubo | 投稿日時: 2012/10/10 19:46 |
新米 登録日: 2010/11/9 居住地: 投稿: 13 |
Re: OLSRのHELLOパケット ごめんなさい、間違えました。
よく見たらサイズではなく、ポインタで計算していましたね。 msgはHELLOメッセージの先頭アドレス、 ipv4_addrはHELLOメッセージの隣接ノードのIPアドレスの(メモリ上の)アドレスでした。 つまり、 ((char *)ipv4_addr - (char *)msg) でHELLOメッセージの先頭から隣接ノードのIPアドレス情報までのサイズを計算しているようです。 KINさんが情報を追加した場所は上記のサイズを計算している範囲に含まれるため、outputsizeは改造前よりも大きくなるわけです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |