メイン Routing Protocols Implementation & Model Development データパケットのブロードキャスト | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nagao | 投稿日時: 2006/12/17 20:32 |
半人前 登録日: 2006/10/24 居住地: 投稿: 22 |
データパケットのブロードキャスト 【データパケットのフラッディング】
http://simweb.kke.co.jp/qualnet/forum/modules/newbb/viewtopic.php?topic_id=252&forum=43 にて、データパケットのフラディングの実装方法が紹介されていますが、私はフラッディングではなくデータパケットをローカルブロードキャストし、それを受信したある特定のノード(ルーティングプロトコルにより選ばれたnextHop)のみが再ブロードキャストを行うようにAODVを変更しようと考えています。また、nextHopとして指定されたノード以外のノードがデータパケットを受信した場合は、他の処理を行います。 そこでAODVにおいて、データの送信を扱う関数AodvTransmitData内のNetworkIpSendPacketToMacLayer関数の引数rtEntryToDest->nextHopをANY_DESTに変更してブロードキャスト出来るように変更しました(AodvBroadcastHelloMessage関数を参考)。 このとき、本来データパケットを転送しなければならなかった特定のノード(変更前のrtEntryToDest->nextHop)を受信側が判断できなければならないので、メッセージパケットにその情報を保持できるように拡張しました。 次にデータパケット受信時の処理を行うAodvHandleData関数において、受信したノードが先ほど保持したnextHopと一致した場合は、AodvTransmitDataを呼び出し(通常のAodvHandleDataの処理)、そうでない場合は別の処理を行うということで変更を行いました。 このような変更を行い実際にシミュレーションを行うと、目的通りに動いているように思うのですが、このような変更を行って問題ないでしょうか。 意図が十分伝わる文章となっていないかもしれませんが、ご意見を伺いたいです。 よろしくお願いします。 |
kabocha | 投稿日時: 2006/12/18 10:00 |
常連 登録日: 2006/9/8 居住地: 投稿: 43 |
Re: データパケットのブロードキャスト ブロードキャストパケットの受信処理がうまくいっているのであれば
特に問題を感じません。 あえて言うなら、 引用:
新たに追加した、rtEntryToDest->nextHop をメッセージに持たせるということはカンニング用のデータをくっつけたということになり、パケットサイズに反映されていないということになることぐらいかなと思いました。 nextHop のサイズ分本来ならパケットのデータにくっつけてやり、パケットサイズがその分大きくなると思いますが、そこまで厳密にする必要がないのであれば、問題ないと思います。 逆に、厳密に行いたいのであれば、新たにサブヘッダのようなものを作成して、これをパケットにくっつけてあげる必要があると思いました。 |
nagao | 投稿日時: 2006/12/18 20:15 |
半人前 登録日: 2006/10/24 居住地: 投稿: 22 |
Re: データパケットのブロードキャスト 早速のお返事ありがとうございます。
ご指摘していただいた点についてですが、厳密に行いたいので、パケットのデータにくっつけるように変更しようと思います。 その方法についてなのですが、今の状態ですとメッセージの構造を定義しているmessage.hファイル内のmessage_strの定義部分の最後に、rtEntryToDest->nextHopを加えているフィールドを用意して、そのフィールドに保存しています。 これではパケットサイズが大きくなるような設定にはなりませんか? kabochaさんが行っている、パケットのデータにくっつけるというのは、メッセージのペイロード部に保存されているデータにくっつけるという意味でしょうか? 検討外れのことを言っていたら申し訳ございませんが、よろしくお願いします。 |
kabocha | 投稿日時: 2006/12/18 22:10 |
常連 登録日: 2006/9/8 居住地: 投稿: 43 |
Re: データパケットのブロードキャスト メッセージ構造体に追加しただけではパケットサイズは変わりません。
メッセージ構造体 == Packet では無いからです。 MESSAGE_ReturnPacketSize(msg)(msg->packetSize + msg->virtualPayLoadSize) というマクロが、メッセージ構造体からパケットサイズを返す のに使われています。 msg->packetSize,virtualPayLoadSize がどのように更新されるかを、 例えばアプリケーションでパケットを作る部分や UDPのヘッダを作っ ている部分で見てみるとよいと思います。 Message 構造体に直接データを持たせてしまいたいのなら、持たせ た分のサイズ(Ipv4の1アドレス分なら 32bit=4byte) を virtual Payloadに加算するだけでも良いと思います。受信したときに、この 分減算して上位層に渡すことを気をつけなければいけませんが。 |
nagao | 投稿日時: 2006/12/19 3:48 |
半人前 登録日: 2006/10/24 居住地: 投稿: 22 |
Re: データパケットのブロードキャスト 詳しい説明ありがとうございます。
よく理解できました。 ご指摘のようにパケットを作成する部分を見て理解したいと思います ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |