メイン 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)を加えて動作させてもいいのでしょうか? 長々書いてしまいましたが、こうではないか?とお答えいただける方がおられましたらコメントいただけたら幸いです。よろしくお願いします。 |
フラット表示 | 前のトピック | 次のトピック |