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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/03:20/21
2024/05/02:19/23

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

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

日曜日からの合計
メイン
   Application Layer Protocol Implementation & Model Development
     アプリケーション層における追加情報付加について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
jun
投稿日時: 2008/12/25 12:24
半人前
登録日: 2008/10/9
居住地:
投稿: 23
アプリケーション層における追加情報付加について
アプリケーション層の送信処理において
自ノードの位置(x,y)と宛先ノードID(指定された)の情報を
API:APP_UdpSendNewDataWithPriorityに付加して送信
し、そのメッセージを受信した際、そのメッセージの中の
位置(x,y)と宛先ノードIDの取得をしたいと思います。

情報を追加するため、messege.hのstruct message_str
の最後にint x;
int y;
int IDを付加しました。
       
送信処理でAPP_UdpSendNewDataWithPriorityの前に
msg->x =node->mobilityData->current->position.common.c1;
msg->y =node->mobilityData->current->position.common.c2;
msg->ID=○←宛先ノードID
を挿入しAPP_UdpSendNewDataWithPriorityでANY_ADDRESS宛に送信します。
この方法で隣接ノードのアプリケーション層には付加された情報は届くのでしょうか?または、付加された情報を取得できるのでしょうか?
matumoto
投稿日時: 2008/12/25 19:23
一人前
登録日: 2008/5/13
居住地:
投稿: 80
Re: アプリケーション層における追加情報付加について
MessageはQualNetの世界でNode内の各レイヤ間の情報のやり取りとか、
タイマ設定などのイベント制御で使うことを主な目的としています。
もちろん、自由なデータをstruct message_strに追加することは可能ですし、
自由に使ってかまいません。

しかし、現実の世の中ではMessageなどは存在しません。

Node間のデータのやり取りをMessageで行うことも可能ですが、
あくまでもQualNetだからできることです。

たとえば、ルーティングプロトコルがNode間でプロトコルデータのやり取りを行う場合、
UDPパケットやTCPパケットのデータ部分(ペイロード部分)にプロトコルの情報を詰め込みます。
アプリケーションにおいても、FTPなどはFTPのプロトコル情報をパケットのデータとして
ノード間でやり取りしています。
それぞれのプロトコルが、それぞれのプロトコル仕様に従った情報をパケットのデータとして
処理しています。

QualNetにおける処理についても同じです。
情報に応じたパケットサイズ(Byte)が物理的に何Bitになるのかを計算しています。
そのBit列を相手に届ける時間はは何秒がかかるのか、
エラーの発生率により実際にそのパケットが確実に届くのか、
などなど。
現実の世の中の処理をできるだけマネします。

パケットデータ(ペイロード部分)を使うことをお勧めします。
children
投稿日時: 2008/12/26 12:07
新米
登録日: 2006/9/26
居住地:
投稿: 18
Re: アプリケーション層における追加情報付加について
message_strへの情報追加はうまくいかない(いかないことがある?)ようです。
フォーラムの「Routing Protocols Implementation & Model Development データ伝送時に追加情報を付加する方法」にて、message_str
へ情報を追加した際の話が載ってますので参照してみてください。

なお、

引用:
送信処理でAPP_UdpSendNewDataWithPriorityの前に
msg->x =node->mobilityData->current->position.common.c1;
msg->y =node->mobilityData->current->position.common.c2;
msg->ID=○←宛先ノードID
を挿入し……
となってますが、、、

APP_UdpSendNewDataWithPriority()はmessage_strを扱わない(引数にとらない)ので、message_strに情報を追加して事前に設定してもAPP_UdpSendNewDataWithPriority()では送信できなのではないでしょうか?

別途、matuさんがコメントされているようにペイロードに入れるならAPP_UdpSendNewDataWithPriority()で問題ないのですが。
jun
投稿日時: 2008/12/26 13:41
半人前
登録日: 2008/10/9
居住地:
投稿: 23
Re: アプリケーション層における追加情報付加について
matuさんchildrenさん 回答ありがとうございます。

info領域に情報追加の方法でも同様なことができそうですね。


ペイロードに入れる場合は、APP_UdpSendNewDataWithPriority()内の
MESSAGE_PacketAlloc(node, msg, payloadSize, traceProtocol);
で、パケット領域を確保(パケット生成)していると思うのですが、
この行の下に、MESSAGE_ReturnPacketを用いて、パケットへのポインタを返却し、その後、自身が入れたい情報を追加するということでしょうか?

children
投稿日時: 2008/12/26 14:52
新米
登録日: 2006/9/26
居住地:
投稿: 18
Re: アプリケーション層における追加情報付加について
引用:
info領域に情報追加の方法でも同様なことができそうですね。

message_strの拡張ではできず(できないかもしれない?ので)、info領域を使わないとできないのではないかと思うのですが.....

ところで、junさんがおこないたいのは、APP_UdpSendNewDataWithPriority()を使って(呼び出して)ノードIDや、位置を送信するのではなく、APP_UdpSendNewDataWithPriority()を改造し、APP_UdpSendNewDataWithPriority()を呼び出してきたアプリケーション(?)が送信するなんらかのデータに、ノードIDや、位置を付加して送信したいのでしょうか?
jun
投稿日時: 2008/12/26 15:56
半人前
登録日: 2008/10/9
居住地:
投稿: 23
Re: アプリケーション層における追加情報付加について
APP_UdpSendNewDataWithPriority()を使って(呼び出して)ノードIDや、位置を送信するのではなく、APP_UdpSendNewDataWithPriority()を改造し、APP_UdpSendNewDataWithPriority()を呼び出してきたアプリケーション(?)が送信するなんらかのデータに、ノードIDや、位置を付加して送信したいのでしょうか?

↑APP_UdpSendNewDataWithPriorityを使ってノードIDや、位置の情報を付加して送信したいです。

ですが、APP_UdpSendNewDataWithPriorityの中でパケットが作らていたので、APP_UdpSendNewDataWithPriority内でペイロード部分に情報を付加しなければならないと思いましたので、結果、改造するということになりますね。

先ほど、参考の投稿を確認しましたが、info領域に情報を載せる方法でしたが、この情報をAPP_UdpSendNewDataWithPriorityで送信する場合は、APP_UdpSendNewDataWithPriority内に例えば

int *pos_x = (int *)MESSAGE_AddInfo(node, msg, sizeof(int), INFO_TYPE_POS_X);
*pos_x = (int) node->mobilityData->current->position.common.c1;
を挿入するのでしょうか?

children
投稿日時: 2008/12/26 17:29
新米
登録日: 2006/9/26
居住地:
投稿: 18
Re: アプリケーション層における追加情報付加について
引用:
この方法で隣接ノードのアプリケーション層には付加された情報は届くのでしょうか?または、付加された情報を取得できるのでしょうか?

と、最初に書かれていたのですが、、、
アプリケーション層には付加した情報を届けなくてよい、ということでしょうか???

アプリケーションが、APP_UdpSendNewDataWithPriority()を呼び出して何かデータを送信するということは、payload, sizeを指定して送信しているので、(基本的には)受信時にも送信時に指定しているpayload, sizeを受け取ります。
すると、APP_UdpSendNewDataWithPriority()の中でmessage_strに付加した情報はアプリケーションには渡らないと思います。

なお、上位アプリケーションへ付加情報を渡せる/渡せないを抜きにして、message_strへinfoとして情報を付加する方法はあっていると思います。
matumoto
投稿日時: 2008/12/26 17:47
一人前
登録日: 2008/5/13
居住地:
投稿: 80
Re: アプリケーション層における追加情報付加について
うーん、APP_UdpSendNewDataWithPriority の改造はやめた方が...
機能とその影響をわかっていて、チャレンジすると言うのであればかまいませんけど。

そもそも、APP_UdpSendNewシリーズには、以下の5個の関数があります。

APP_UdpSendNewData
APP_UdpSendNewDataWithPriority
APP_UdpSendNewHeaderData
APP_UdpSendNewHeaderDataWithPriority
APP_UdpSendNewHeaderVirtualDataWithPriority

これらの5個の関数の機能を理解して使い分けていますか?

APP_UdpSendNewData と APP_UdpSendNewHeaderData の
違いである Header の意味とか、

APP_UdpSendNewData や APP_UdpSendNewHeaderData と
APP_UdpSendNewDataWithPriority や APP_UdpSendNewHeaderDataWithPriority の
違いである WithPriority の意味とか、

APP_UdpSendNewHeaderDataWithPriority と APP_UdpSendNewHeaderVirtualDataWithPriority の
違いである Virtual の意味です。

それ以前に APP_UdpSendNewDataWithPriority の引数には、
payloadとpayloadSizeがちゃんとありますよね。

それから、QualNetのアプリケーションであるCBRは
APP_UdpSendNewHeaderVirtualDataWithPriority を呼び出していますし、
APP_UdpSendNewDataWithPriority を呼び出しているのは、
QualNetアプリケーションのMCBR、ルーティングプロトコルのRIP,OLSR-INRIA,OLSRv2-NIIGATAなどがあります。

それらがどのように使っているか確認してみました?
jun
投稿日時: 2008/12/26 17:57
半人前
登録日: 2008/10/9
居住地:
投稿: 23
Re: アプリケーション層における追加情報付加について
アプリケーション層には付加した情報を届けなくてよい、ということでしょうか???
↑届けなければなりません。

それでは、payloadに追加情報を付加する方法がいいのでしょうか?

具体的にAPP_UdpSendNewDataWithPriority()を用いて、payloadに情報を追加し、受信側でその情報を取得する方法教えていただけないでしょうか?

X座標だけでもいいので。



matumoto
投稿日時: 2008/12/26 18:10
一人前
登録日: 2008/5/13
居住地:
投稿: 80
Re: アプリケーション層における追加情報付加について
> 具体的にAPP_UdpSendNewDataWithPriority()を用いて

QualNet-4.5.1-ProgrammersGuide.pdf には、APP_UdpSendNewDataWithPriorityについて、
ここには書ききれないほど大量の具体的なことがかいてありますよ。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT