メイン Application Layer Protocol Implementation & Model Development ring serach、floodingの方法について | 投稿するにはまず登録を |
題名 | 投稿者 | 日時 |
---|---|---|
ring serach、floodingの方法について | qulneko | 2006/11/12 15:22 |
Re: ring serach、floodingの方法について | riri | 2006/11/13 10:20 |
Re: ring serach、floodingの方法について | pyonta | 2006/11/13 20:37 |
Re: ring serach、floodingの方法について | qulneko | 2006/11/15 1:30 |
Re: ring serach、floodingの方法について | qulneko | 2006/11/22 20:22 |
» Re: ring serach、floodingの方法について | masa | 2006/11/24 1:06 |
Re: ring serach、floodingの方法について | qulneko | 2006/11/25 17:40 |
Re: ring serach、floodingの方法について | adoc | 2006/12/5 0:48 |
Re: ring serach、floodingの方法について | ipoten | 2006/12/5 11:09 |
Re: ring serach、floodingの方法について | adoc | 2006/12/6 21:49 |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
masa | 投稿日時: 2006/11/24 1:06 |
新米 登録日: 2006/8/12 居住地: 投稿: 14 |
Re: ring serach、floodingの方法について 自分も初心者なので恐縮なのですが、同じようなことを行おうとしているようなので投稿させていただきます。
フラッディング操作をアプリケーション層で実装するということであれば、私はMCBRを利用することで体裁を整える事ができました。 qulneko さんはフラッディング、そしてその後のユニキャスト、またスケジューリングの利用ということを行おうとしているようですが、一気に全部やろうとすると結構きついと思います。(qulneko さんのプログラミングスキルにもよるでしょうが ^^; ) ということで、フラッディングに関するあらましをこちらに載せます。また、どのレイヤーで実装するかは好みによるのかもしれませんが、私はアプリケーション層(MCBR)とネットワーク層(ip.cpp のNetworkIpReceivePacketFromMacLayer 部分)の、両方での実装が一番簡単そうだと踏み、そこで実装しました。 ちなみにMCBRを利用すれば、クライアントノードから1ホップのノードに対してはメッセージの送信をしてくれます。しかし、2ホップノード以降についてはサーバが別のノードに対してさらにホップさせる機能を追加してあげなければなりません・・・。 MCBRを利用する場合、 ・Floodingアドレスの定義 (ip.h) → #define IP_FLOOD_ADDRESS 0xC00000FF // 192.0.0.255 ・ノードがFloodingアドレス宛のパケットを受け取るようIsMyPacketとNetworkIpIsMulticastAddressを改良 → else if( destAddress == IP_FLOOD_ADDRESS) ・・・ 確か此処までやると、MCBRを受け取ったサーバはメッセージを更にフォワードさせてくれます。ただ、これだけだとTTL(=64)が切れるまでメッセージが永遠とネットワークを回り続けます。そこで、Flooding メッセージに別途 TTL の設定をしてあげます。 ・FloodingパケットのヘッダーにつけるTTLの大きさの定義(ip.h) ・パケットにヘッダーをつける関数(AddIpHeader)の改良 とりあえず此処までやると、一定時間でFloodingメッセージは止まります。ただ、この状態だと、TTLが切れるまで各ノードは同じメッセージを何度も繰り返しフォワード(重複送信)しています。これを問題とするかどうかはqulneko さん次第なのですが、私としては許容できなかったのでキューを利用することで解決しました。ただし、この方法が良いのかどうかは分かりません。常識的に見てノードに結構負荷がかかりそうなので、、、 私のアドバイスが qulneko さんのお役に立つかどうかは分かりませんが、Flooding の実装がんばってください! もし他の方法で実装されたのであれば、参考までにどうやったのか教えていただけると私もうれしいです ^^ でわ! |
フラット表示 | 前のトピック | 次のトピック |