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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/02:15/18
2024/05/01:21/26

2024/03/03より303/1375
人気モジュール
No.1: フォーラム 80
No.2: ニュース 2
No.3: QualNet概要 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット69
No.2:Windows NT1

No.1:どっかの巡回ロボット67
No.2:Safari1
No.3:Majestic-12巡回ロボット1

日曜日からの合計
メイン
   Application Layer Protocol Implementation & Model Development
     アプリ層からの制御パケットについて
投稿するにはまず登録を

題名 投稿者 日時
 » アプリ層からの制御パケットについて qulneko 2006/12/19 19:10
     Re: アプリ層からの制御パケットについて ipoten 2006/12/19 19:32
       Re: アプリ層からの制御パケットについて qulneko 2006/12/20 21:10
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
qulneko
投稿日時: 2006/12/19 19:10
新米
登録日: 2006/10/13
居住地:
投稿: 8
アプリ層からの制御パケットについて
いつもお世話になっております。
今現在、「アプリケーション層」から制御パケットをANY_DESTでfloodingする動作を実装しようと考えています。
制御パケット内にflagを立てそのパケットを受け取ったノードはそのflagを見て条件が合えばリプライを返し、そのリプライを受け取った送信ノードはリプライを返したノードにユニキャストでデータを送信し、そのデータを受けたノードは再度ユニキャストでデータを送信ノードに返すというものです。

そこでこの動作を実装するにあたりlookupアプリケーションが利用できると考えたので
?application.hにAppTypeとして「APP_FLOOD_CLIENT」と「APP_FLOOD_SERVER」を追加
?application.cppのAPP_ProcessEventのcaseに上記のプロトコルを追加
#case(…){AppLayerFloodClient(Node *node,Message *msg){…
#case(…){AppLayerFloodServer(Node *node,Message *msg){…
このプロトコルをlookupアプリケーションの中で使用(上記の関数は共にAppLayerLookupClient(),AppLayerLookupServer(),を真似ています)
そして、
AppLookupClientInit(……)のtimerMsgの所で
timerMsg = MESSAGE_Alloc(node,APP_LAYER,APP_FLOOD_CLIENT,MSG_APP_FLOODTimerExpired)

MSG_APP_FLOODTimerExpiredの(timer->type)APP_TIMER_SEND_PKTで
制御パケットをflooding(制御パケットをfloodingする関数にAPP_UdpSendNewHeaderData()を使用し宛先をANY_DESTに指定),その後、隣接ノードは制御パケットを受け取り「AppLayerFloodServer()」内のcase MSG_APP_FromTransport内で条件が合えば、APP_UdpSendNewHeaderData()で宛先をソースアドレスにしユニキャストする、までを実装しています。

今後はユニキャストしてきたノードのIPアドレスを最初にlookupで繋いだデスティネーションノードと入れ替えて、リプライをしてきたノードに向かってlookupの操作を行い今回実行したい動作を行おうと考えていますがここでお伺いしたことがあります。

?セッション一つでこの動作を行った場合、ソースノードは制御パケットをfloodingし、条件にあったノードはユニキャストでソースノードにリプライを返す。という処理はできたのですが、セッションを2個以上にすると(例、全10node,1->4,2->5)ソースノードのfloodingは行われるのですが、なぜか隣接ノードが制御パケットを受信しない事態が発生してしまいます。ANY_DESTで送っているのですが…原因がわかりません。
しかし、start timeを(例)の場合ソース1,2でずらして(1:1s,2:2s)シミュレーションをすると、ちゃんとfloodingし隣接ノードも受信、条件ノードがリプライという動作を行ってくれます。
なぜこのようなことが起こるのでしょうか?

?そもそも、既存アプリケーションの中に新たなプロトコル(今回でいうAPP_FLOOD_CLIENT、APP_FLOOD_SERVER)を加えて動作させてもいいのでしょうか?

長々書いてしまいましたが、こうではないか?とお答えいただける方がおられましたらコメントいただけたら幸いです。よろしくお願いします。
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT