![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
drafly | 投稿日時: 2016/10/14 20:28 |
新米 ![]() ![]() 登録日: 2016/10/14 居住地: 投稿: 2 |
Broadcast packetを除いたRSSIの出力について はじめまして。
現在デバイスから対象デバイスに通信を行い、対象デバイスが受信した信号のRSSIをファイルに出力させようとしています。 CBRでデバイスを繋ぎ、phy_dot11a.cppのPhy802_11a::signalEnd()にRSSI出力処理を記述し、ファイルへの出力に問題がないことを確認しました。 しかし、出力されたRSSIに通信以外のRSSIが混じっていました。 具体的には、30秒までしか信号を出していないはずなのに、30秒以降もシミュレーションの終わる60秒まで意図しないRSSIが出力され続けました。 GUIのアニメーション画面で見る限りBroadcast packetなのでキャリアセンス時のRSSIを出力していると推定しています。 質問ですが、これがキャリアセンス時のRSSIだとして、これを除いてRSSIを出力する方法はありますでしょうか。 config類、RSSI出力結果のグラフを添付いたします。 QualnNet初心者のため初歩的な質問かもしれませんがよろしくお願い致します。 ![]() |
iposup | 投稿日時: 2016/10/17 20:59 |
新米 ![]() ![]() 登録日: 2016/10/17 居住地: 投稿: 1 |
Re: Broadcast packetを除いたRSSIの出力について drafly さん、こんにちは
一般的に(実世界では)PHYレイヤにおいて Broadcast など上位レイヤの情報を判定することはできません。 が、ここではシミュレーションとして送信元の上位レイヤが付加した情報を取り出す方法について書いてみます。 想定が間違っていたらすみません。 目的によりいくつかの方法が取れると思いますが、いずれも簡単にというわけにはいかず、 ある程度の実装ソースコードの理解と改修が必要です。 ヒントというか材料のようなものを提示するので、これを手掛かりにチャレンジしてみてください。 [MACヘッダの情報を取り出す方法例] ・受信したメッセージがパケットメッセージであれば、 PHYのヘッダを取り外すことにより上位のMACフレームを取り出すことができます。 ・ヘッダを取り外してMACに渡す処理が、ちょうど drafly さんが見られている Phy802_11a::signalEnd() にあると思うので参考にしてください。 ※MESSAGE_RemoveHeader() によるPLCPヘッダの取り外しの部分 ・MACヘッダの見方は、MACのプロトコルが何かに依存しますが、 drafly さんの例だと DOT11 だと思うので、mac_dot11.cpp の MacDot11ReceivePacketFromPhy() あたりを参考にされるとよいと思います。 MACレベルの Broadcast かどうかは、MACヘッダの destAddr から判定できます。 なお、上記の例はあくまでもMACレベルの情報を取り出すケースです。 MAC の Broadcast を単純に排除できたとしても、MACの制御フレームがまだ含まれると思います。 さらに drafly さんが計測したい RSSI が、CBR の終端ノード宛てのデータパケットだけなどの条件にしようとすると、 MAC より上のレイヤの例えばルーティングのパケットや、 IPレベルで自ノード宛てでない転送パケットも排除しなければならず、 単純にPHYで上位レイヤの中身を除き見ることは大変です。 ![]() |
drafly | 投稿日時: 2016/10/18 15:35 |
新米 ![]() ![]() 登録日: 2016/10/14 居住地: 投稿: 2 |
Re: Broadcast packetを除いたRSSIの出力について iposupさん、返信ありがとうございます!
なるほど。PHY層で全部どうにかするのは難しそうですね。 問題が単純でないことが分かっただけでも大きな前進です。 頂いたアドバイスを基に、まずはMACレベルで判別できるBroadcastを除くことを目的としたいと思います。 アドバイスありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |