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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/04/27:19/21
2024/04/26:21/24

2024/02/27より285/1374
人気モジュール
No.1: フォーラム 101
No.2: QualNet概要 8
No.3: リンク集 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット67
No.2:Windows NT2
No.3:Linux1

No.1:どっかの巡回ロボット61
No.2:Safari3
No.3:Baidu巡回ロボット3

日曜日からの合計
メイン
   Routing Protocols Implementation & Model Development
     CBRを用いたブロードキャスト転送
投稿するにはまず登録を

題名 投稿者 日時
 » CBRを用いたブロードキャスト転送 tak 2008/11/4 17:34
     Re: CBRを用いたブロードキャスト転送 tak 2008/11/5 21:17
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
tak
投稿日時: 2008/11/4 17:34
新米
登録日: 2008/10/30
居住地:
投稿: 2
CBRを用いたブロードキャスト転送
はじめまして。
お世話になります。

現在、CBRを変更し、
ネットワーク全体にブロードキャストを行うプロトコルを作成中です。

大まかな仕様としては、
・CBR Clientが255.255.255.255でパケットを送信。
・CBR Serverは受信したパケット中のヘッダ情報を参照し、転送するかどうかを判断。
・転送を行う場合はブロードキャストで転送。
とするつもりです。

現状としては
app_cbr.cpp内のAppLayerCbrServer()に/*--relay data--*/以下を追加しました。

AppLayerCbrServer(Node *node, Message *msg)
980 #ifdef ADDON_BOEINGFCS
981            if ((serverPtr->useSeqNoCheck && data.seqNo >= serverPtr->seqNo) ||
982                 (serverPtr->useSeqNoCheck == FALSE))
983 #else
984             if (data.seqNo >= serverPtr->seqNo)
985 #endif
986             {


/*-----------relay data-------------*/
            char addrRly[MAX_STRING_LENGTH];
            Address relayadd;
            NodeAddress relayid;

            sprintf(addrRly,"%ld",node->nodeId); //自身のIDをaddrRlyに格納

            IO_AppParseDestString( //Address型に変換
                  node,
                  (char *)"CBR 1 255.255.255.255 100 512 1S 1S 25S PRECEDENCE 0",
                  addrRly,
                  &relayid,
                  &relayadd);

            //ヘッダ情報をコピー、送信元を自身、宛先はコピー(255.255.255.255)してUDPへ
            APP_UdpSendNewHeaderVirtualDataWithPriority(
                  node,
                  APP_CBR_SERVER,
                  relayadd,  //info->sourceAddr,
                  (short) data.sourcePort,
                  info->destAddr,
                  (char *) &data,
                  sizeof(data),
                  data.itemSize - sizeof(data),
                  data.tos,
                  0,
                  TRACE_CBR);

このプログラムを実行した場合、
それらしく動いてくれてはいるのですが、データを受け取ってくれない端末が存在します。
例えば
直線上に4台の端末(1,2,3,4)を設置し(隣り合う端末だけが直接通信できる)、端末1が送信を行った場合、
最初のパケット(seqNo.0)は端末3は送信を行わず、端末4まで届きません。
それ以後のパケット(seqNo.1〜)は全端末へ届くのですが、端末3の送信を端末2が受信しません。

Qualnet.traceファイルで確認するとCBR→UDP→IPv4とデータは渡され、
ENQUEUEとDEQUEUEまで実行されています。

データを受け取らない端末が存在する原因として考えられることは何でしょうか?
ルーティングプロトコルとしてBellman Fordが動いているのですが、
それを完全に無視してパケット転送を行おうとしていることが問題なのでしょうか?
そもそも、ブロードキャストパケットを利用し、アプリケーション層でルーティングの制御を行おうとしてるのが問題なのでしょうか?

どんな些細なことでもいいのでアドバイスもらえれば助かります。
よろしくお願いします。
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT