Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/17:13/16
2024/05/16:22/24

2024/03/18より397/1407
人気モジュール
No.1: フォーラム 99
No.2: QualNet概要 3
No.3: ニュース 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット79
No.2:Unknown OS1
No.3:Windows XP1

No.1:どっかの巡回ロボット70
No.2:Majestic-12巡回ロボット6
No.3:Google巡回ロボット3

日曜日からの合計
メイン
   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 の実装がんばってください!
もし他の方法で実装されたのであれば、参考までにどうやったのか教えていただけると私もうれしいです ^^

でわ!
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT