![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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で検索してみると、他にも関係ありそうな関数がいくつか見つかりますね。 このあたりが取っ掛かりになるのではないかなと改めて思うのですが、どうでしょうか……。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |