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

パスワード:


パスワード紛失

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

2024/03/15より389/1397
人気モジュール
No.1: フォーラム 40
No.2: ニュース 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット35
No.2:Unknown OS1

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

日曜日からの合計
メイン
   Scenario Setup & Configuration
     複数チャネルにおける同時通信
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
fo_ru
投稿日時: 2009/7/3 15:56
新米
登録日: 2009/7/2
居住地:
投稿: 13
複数チャネルにおける同時通信
はじめまして、Qualnet初心者のものです。

この度、ノード1からノード2,3,4に3つのリンクを貼り付けて
3つのチャネルを用いてそれぞれ異なるチャネルで
同時に通信を行うというシミュレーションをしたいと思ったのですが、

・3つのリンクそれぞれにWireless Networkリンクを設定
・チャネルを3つ用意し、
 ノード1,2間で用いるListening,Lisitenable channelを100
 ノード1,3間は010
 ノード1,4間は001に設定

という設定をしてもノード1,2間の通信のみが行われ、1,3間及び1.4間の
通信が全く行われませんでした。
ちなみにルーティングはDINAMICとSTATICの両方やりましたが同様の結果でした。
どのようにすればノード1,2とノード1,3とノード1,4間の通信を同時に
行えるのでしょうか?ご教授をお願いいたします。

一応シナリオファイルも添付しておきます。
test.zip
maxam
投稿日時: 2009/7/3 17:04
常連
登録日: 2006/4/11
居住地:
投稿: 58
Re: 複数チャネルにおける同時通信
こんにちは

添付シナリオはstatic-routeの場合のようですが、
少なくとも、static-routeファイルの内容は違うみたいです。

例えばnode3は192.0.1.0のサブネットなので、
割り当てられているアドレスは192.0.0.3ではなくて192.0.1.2です。
(IDEのNodes->host3->Interfaces->interface0で確認可能)
なので、正しくは
test.routes-static
-------------
1 192.0.0.2 192.0.0.2
1 192.0.1.2 192.0.1.2
1 192.0.2.2 192.0.2.2
-------------
(09/07/10 「正しくは」の内容が間違っていたので訂正しました・・)

・・DINAMICの時も駄目だったとのことですが、それはまた別の原因かもしれません。
kshima
投稿日時: 2009/7/3 17:04
半人前
登録日: 2006/10/16
居住地:
投稿: 24
Re: 複数チャネルにおける同時通信
私の環境では,添付のシナリオで,Routing PolicyをDynamicにすれば同時に通信できています.
fo_ru
投稿日時: 2009/7/3 17:23
新米
登録日: 2009/7/2
居住地:
投稿: 13
Re: 複数チャネルにおける同時通信
maxamさん、kshimaさん、ありがとうございました。
ご指摘の通り訂正して無事にシミュレーションすることができました。

初歩的なミスで質問してしまい申し訳ないです。
fo_ru
投稿日時: 2009/7/9 15:02
新米
登録日: 2009/7/2
居住地:
投稿: 13
Re: 複数チャネルにおける同時通信
お世話になります。

また質問させていただきたいのですが、ノード1とノード2を
2つのWireless Networkを用いて2つのチャネルでデータを同時に送受信させたいと思っています。

static routeで
1 192.0.0.2 192.0.0.2
2 192.0.1.1 192.0.1.1
のように記述するとノード1→ノード2の通信しか行われずにシミュレーションが終了してしまいます。
使用するインタフェースやIPアドレスは間違っていないと思うのですが、
どのようにすればよろしいのでしょうか?どなたかご教授お願いいたします。


test1.zip
children
投稿日時: 2009/7/9 15:17
新米
登録日: 2006/9/26
居住地:
投稿: 18
Re: 複数チャネルにおける同時通信
test1.appをみると
CBR 1 2 0 1000 0.01S 1S 0S PRECEDENCE 0
CBR 2 1 0 1000 0.01S 1S 0S PRECEDENCE 0
となっています。
2行目は単にノードIDを指定した通信
CBR 2 1 ...
なので、各ノードのデフォルトアドレス(Interface0)を利用した通信
CBR 192.0.0.2 192.0.0.1 ....
として動いているのではないでしょうか?
GUI上であれば、CBRの送信元アドレス・送信先アドレスをクリックして
明示的に192.0.1.2, 192.0.1.1に設定できるとおもいますので、それで一度試してみてはいかがでしょうか?

※すみませんが、今、動作する環境をもってないので、試めすことができません。
fo_ru
投稿日時: 2009/7/9 15:25
新米
登録日: 2009/7/2
居住地:
投稿: 13
Re: 複数チャネルにおける同時通信
早速の返信ありがとうございます。
ただいま試しにシミュレーションしてみたところ、正常に動作しました。

まだQualNetの設定方法がよくわからないもので…
childrenさん、ありがとうございました。
fo_ru
投稿日時: 2009/7/17 15:28
新米
登録日: 2009/7/2
居住地:
投稿: 13
Re: 複数チャネルにおける同時通信
こんにちは。

現在、MAC層で動的にチャネル番号を指定してデータ伝送を行うという動作を実装しようと考えています。
そこで、mac_dot11.cpp内で以下のような関数を用いてチャネルを変更しようと思い、
手始めに2つのチャネルを用意し、ACKを送るときにチャネル0を指定してみたのですが、
チャネル0,1の両方が使用されていて思ったとおりに動作しません。

MAC層で指定したチャネルを使わせるにはどのようにすれば良いのでしょうか?
ちなみに、下の関数はMacDot11ProcessFrame関数内のMacDot11StationTransmitAck関数の直前で使用しております。

void MacDot11ChangeToChannel(
Node* node,
MacDataDot11* dot11,
unsigned int channelIndex)
{
unsigned int phyNumber = dot11->myMacData->phyNumber;

/// Check if able to use channel
BOOL phyCanListen =
PHY_CanListenToChannel(
node,
phyNumber,
channelIndex);

if(!phyCanListen){
ERROR_ReportError("MacDot11ManagementChangeToChannel: "
"Channel is invalid.\n");
}

//MacDot11ManagementStopListeningToChannel
BOOL phyIsListening = FALSE;

phyIsListening =
PHY_IsListeningToChannel(
node,
phyNumber,
(short)channelIndex);

if (phyIsListening == TRUE)
{
PHY_StopListeningToChannel(
node,
phyNumber,
(short)channelIndex);
}
//end MacDot11ManagementStopListeningToChannel

//MacDot11ManagementStartListeningToChannel
phyIsListening = TRUE;

phyIsListening =
PHY_IsListeningToChannel(
node,
phyNumber,
(short)channelIndex);

if (phyIsListening == FALSE)
{
PHY_StartListeningToChannel(
node,
phyNumber,
(short)channelIndex);
}
//end MacDot11ManagementStartListeningToChannel

PHY_SetTransmissionChannel(
node,
phyNumber,
channelIndex);
}
hiro
投稿日時: 2009/7/19 18:22
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: 複数チャネルにおける同時通信
えっと、チャネル0の指定は具体的にどこでやってるのでしょうか。
というか、チャネル0とチャネル1の判定は、どのような方法でやってるのですか。

単にphyNumberをそのまま使った判定処理とか、関数呼び出しなので、
チャネル0とチャネル1の使い分けの部分がわかりません。
fo_ru
投稿日時: 2009/7/20 9:56
新米
登録日: 2009/7/2
居住地:
投稿: 13
Re: 複数チャネルにおける同時通信
説明不足で申し訳ありません。

ノード1とノード2にそれぞれ2つのインタフェースを用意して、基本的に
1→2のフローでの通信はチャネル0を、
2→1のフローでの通信はチャネル1を使用しています。
2つのWireless Networkはチャネル1,2ともリスニング可能にしてあります。

ここでmac_dot11.cpp内で、MacDot11ProcessFrame関数内のMacDot11StationTransmitAck関数を
呼び出す直前でMacDot11ChangeToChannel(node,dot11,0);としています。
つまり2つのフローのACKを全てチャネル0で送りたいのですが、statファイルを見る限り
チャネル1でもACKが送信されていてMacDot11ChangeToChannelが機能していないようなのです。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT