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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2025/04/24:16/22
2025/04/23:21/24

2025/03/07より250/1159
人気モジュール
No.1: フォーラム 54
No.2: QualNet概要 2
No.3: ニュース 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット53
No.2:Linux5
No.3:Windows NT1

No.1:どっかの巡回ロボット50
No.2:Safari7
No.3:Google巡回ロボット3

日曜日からの合計
メイン
   Physical Layer Settings
     CSMA/CAを拡張してバックオフ時間を変える方法について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Laura
投稿日時: 2012/10/8 7:16
新米
登録日: 2012/6/20
居住地:
投稿: 5
CSMA/CAを拡張してバックオフ時間を変える方法について
CSMA/CAを拡張したくてやりたいことが、

同一のバックオフ時間を取得させて、各端末の送信タイミングを同期させたいのですがまず、

・バックオフインデックス値を初期化
・乱数の初期化
・初期化した乱数をもとにバックオフ時間を取得

という流れで拡張したいのですが、具体的にどこをどういじればよいかヒントだけでも教えていただけたらと思います。
おねがいしまず。
hina
投稿日時: 2012/10/9 17:25
新米
登録日: 2012/9/26
居住地:
投稿: 13
Re: CSMA/CAを拡張してバックオフ時間を変える方法について
はじめまして。
CSMA/CS関連のスレッドがつい先日立っていました。ご参考まで。
http://simweb.kke.co.jp/qualnet/forum/modules/newbb/viewtopic.php?topic_id=765&forum=30&viewmode=flat

その際ちょっと読んでみたのですが、私が使っているQualNet5.2では、
QUALNET_HOME\libraries\wireless\src\mac_csma.cpp
にて、MacCsmaBackoff()がrandTimeという乱数を生成して、MacCsmaSetTimer()を呼び出しているようです。

関数名からして、このあたりが取っ掛かりになるのかな、と思います。
Laura
投稿日時: 2012/11/29 10:14
新米
登録日: 2012/6/20
居住地:
投稿: 5
Re: CSMA/CAを拡張してバックオフ時間を変える方法について
こんにちは再び質問をさせてください。

私は今、mac protocolでmacdot11を選択しています。

macdot11を選択した場合、macdot11.cpp内のSetcurretmessageという関数内でバックオフ時間を取得していると思っています。(違うかもしれませんが)

現在シミュレーションではNode1〜Node10までを考えており、
node1(送信端末)がnode2〜9にパケットをブロードキャストして、Node1からパケットを受け取ったNode2〜9がNode10(目的端末)に一斉にパケットを転送するというのを考えています。

ここで私はnode2〜9の端末が同時刻にNode10に一斉送信するようにしたいのですが、(キャリアセンスした後にすべてのノードが同一のバックオフ時間を取得する)なかなか難しくてわかりません。

どなたか少しでもわかる方がいれば教えていただけるとありがたいです。
hina
投稿日時: 2012/12/3 14:06
新米
登録日: 2012/9/26
居住地:
投稿: 13
Re: CSMA/CAを拡張してバックオフ時間を変える方法について
こんにちは。お久しぶりです。

CSMA/CAは、乱数によってバックオフ時間をずらすことでパケットの衝突を避けるというものだと理解しているのですが、それをあえて固定にしてしまいたいということでしょうか。
QualNet5.2ですと、QUALNET_HOME\libraries\wireless\src\mac_csma.cppにおけるMacCsmaBackoff()の

randTime = (RANDOM_nrand(csma->seed) % csma->BOmin) + 1

がその乱数を計算しているように読めるので、とりあえずはこのrandTimeに固定の数値を代入するように改造してしまえば、バックオフ時間は端末によらず同じものになるのではないかな、と推察します。

ただバックオフ時間が同じでも、キャリアセンス時刻が異なるとパケット送信時刻も異なってしまうと思うので、そのあたりにも工夫が必要かもしれませんね。
Laura
投稿日時: 2012/12/10 13:09
新米
登録日: 2012/6/20
居住地:
投稿: 5
Re: CSMA/CAを拡張してバックオフ時間を変える方法について
ありがとうございます。

しかし、MAC PROTOCOLをmacdot11にした場合は、mac_csma.cppではなくmacdot11.cppやmacdot11-sta.cppなどを修正しなくてはいけないと思ってしまったのですが、このような選択をした場合もmac_csma.cppを拡張すべきなんでしょうか?

変な質問ですみません。
hina
投稿日時: 2012/12/11 14:27
新米
登録日: 2012/9/26
居住地:
投稿: 13
Re: CSMA/CAを拡張してバックオフ時間を変える方法について
あ、Lauraさんの仰る通りですね。私が勘違いをしていました。
QualNet5.2にて、QUALNET_HOME\main\mac.cppを見ると
mac_csma.cppの関数は、node->macData[interfaceIndex]->macProtocol == MAC_PROTOCOL_CSMA、つまりMAC Protocolの指定がCSMAのときに呼ばれるもののようです。

Lauraさんがバックオフ時間を変えたいのは、MAC Protocolの指定がMACDOT11の時ということでしたね。
QualNet5.2にて、QUALNET_HOME\libraries\wireless\src\mac_dot11-sta.hを見ると
MacDot11StationSetBackoffIfZero()にて、以下のような計算を行っている箇所が幾つかあります。

dot11->BO = (RANDOM_nrand(dot11->seed) % (dot11->CW + 1)) * dot11->slotTime;

ここから察するに、dot11->BOつまりMacDataDot11構造体のBOというメンバが、MACDOT11のバックオフ時間を保持する変数なのではないかなと推察します。
Backoffで検索してみると、他にも関係ありそうな関数がいくつか見つかりますね。
このあたりが取っ掛かりになるのではないかなと改めて思うのですが、どうでしょうか……。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT