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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/04:4/4
2024/05/03:22/24

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

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

日曜日からの合計
メイン
   Link (MAC) Layer Settings
     11nのAP間でのスループットについて
投稿するにはまず登録を

題名 投稿者 日時
   11nのAP間でのスループットについて yuki33 2016/12/4 5:10
     Re: 11nのAP間でのスループットについて ipoten 2016/12/5 19:42
       Re: 11nのAP間でのスループットについて yuki33 2016/12/6 18:09
         Re: 11nのAP間でのスループットについて ipoten 2016/12/8 22:47
           Re: 11nのAP間でのスループットについて yuki33 2016/12/11 10:31
           » Re: 11nのAP間でのスループットについて ipoten 2016/12/13 15:15
               Re: 11nのAP間でのスループットについて yuki33 2016/12/29 17:18
                 Re: 11nのAP間でのスループットについて ipoten 2017/1/12 16:45
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
ipoten
投稿日時: 2016/12/13 15:15
一人前
登録日: 2005/7/12
居住地:
投稿: 102
Re: 11nのAP間でのスループットについて
>phy_802.11n.cppのMCS_Paramsというテーブルからデータレートを引っ張ってきている
>ようで,6.5,39,52という値はどれも20MHzのときに参照する値のようなのですが,
>40MHzでも同様の場所を参照してしまっているようです.
>これが40MHzでスループットがでない原因なのではないかと思うのですが,なぜ40MHZで
>20MHzのところを参照してしまうのかについては分かりませんでした.

QualNetの動作や実装を調べてみてわかったことを書いてみます。
(11n のスタンダードの確認はしていません。)

11n で 40MHz 帯域幅で通信を行う条件は、
自端末が 40MHz モードをサポートしている (PHY802.11-40MHz-SUPPORTED YES) ことと、
通信相手の端末が 40MHz モードをサポートしている (PHY802.11-40MHz-SUPPORTED YES) こと
になります。
自分の通信相手が 40MHz をサポートしているかどうかは、MAC のマネージメントフレーム(Beacon, Associate, Probe, ...)に情報を載せてやり取りしているようです。

今回、AP-AP 間で直接通信しているわけですが、このスレッドの冒頭に述べたように、AP-AP 間の直接通信では、Beaconは受信せず、ほかの Association や Probe のやり取りの手順もなしで、直接データを流しているようです。
したがって、AP-AP 間の直接通信では通信相手が 40MHz をサポートしているかどうかを知る手段がなく、デフォルトの 20MHz で通信を行っているというのが、私の得た結論です。

----

上記の私の調査が正しいとして、yuki33 さんのこの後確認手順としては以下のようなものが考えられます。

・上記の内容が、11n のスタンダードや、世の中の一般的な製品実装に沿ったものかを確認する。
・スタンダードの通り、あるいはスタンダードの規定はなく実装依存の仕様である場合、かつAP-AP間の通信で40MHz帯域幅を使うという研究上の明確な意図がある場合は、yuki33 さんの方でQualNetを改造してAP-AP間の40MHz通信ができるようにする必要があります。
・スタンダードと異なる、世の中の一般的な製品実装と異なるということであれば、なぜQualNetがこのような実装になっているのか、あるいはバグの可能性があるのではないかということをサポートに問い合わせることができると思います。

----

以下は、yuki33 さんの MCS_Params の引き方の疑問からソースコードを追った経緯です。

MCS_Params は、phy_802_11n.cpp の頭の方で静的なグローバル変数として設定されていて、
頭のインデックスで 0: 20MHz か 1: 40MHz かを参照するようになっています。

ソースコード内の複数の個所で、この MCS_Params を引く際に、MAC_PHY_TxRxVector::chBwdth - 1 を指定しているので、
この chBwdth がどのように設定されているのかを手繰ってみました。

【パラメータ設定】
mac_dot11_channelmanager.cpp / ChannelController::readCfgParamsFor40MHz()
→パラメータ PHY802.11-40MHz-SUPPORTED の読み込みで、ChannelController::m_chBwdth と Phy802_11Manager::m_ChBwdth を CHBWDTH_40MHZ (2) に設定

【DATAフレーム送信時の帯域幅設定】
mac_dot11.cpp / MacDot11SetChnlBwdthForDataMgmtFrame()
→ブロードキャストでなく、11n で、MacDataDot11::isVHTEnable でかつ DOT11_NeighborHtInfo::isFortyMhzIntolerant でない場合、MAC_PHY_TxRxVector::chBwdth を CHBWDTH_40MHZ (2) に設定
※isVHTEnable は 11acの場合なのでおそらくここは関係ない
→ブロードキャストでなく、11n で、MacDataDot11::isVHTEnable でなく、Phy802_11Manager::m_ChBwdth が CHBWDTH_40MHZ でかつ DOT11_NeighborHtInfo::isFortyMhzIntolerant でない場合、MAC_PHY_TxRxVector::chBwdth を CHBWDTH_40MHZ (2) に設定
※AP-APの通信では、isFortyMhzIntolerant が常に TRUE になっている模様。そのため MAC_PHY_TxRxVector::chBwdth は CHBWDTH_40MHZ (2) に設定されない。★
    case k_Dot11n:
        if (dot11->isVHTEnable)
        { // ここのブロックは 11ac なので関係ない
            if (!destHtInfo->isFortyMhzIntolerant)
            {
                txVector->chBwdth = CHBWDTH_40MHZ;
            }
        }
        else
        {
            if ((ChBandwidth)Phy802_11nGetOperationChBwdth(
                node->phyData[dot11->myMacData->phyNumber])== CHBWDTH_40MHZ
                && !destHtInfo->isFortyMhzIntolerant)
            { // OperationChBwdth は 40MHz 設定されているが、AP-AP通信では isFortyMhzIntolerant が TRUE のためこのブロックに入らない
                txVector->chBwdth = CHBWDTH_40MHZ;
            }
        }


【isFortyMhzIntolerant, fortyMhzIntolerent の設定】
mac_dot11.cpp / MacDot11nUpdNeighborHtInfo()
→DOT11_NeighborHtInfo のコンストラクタで isFortyMhzIntolerant に TRUE が設定されている。
→更新される(MacDot11nUpdNeighborHtInfo()が呼ばれる)のは、以下のマネージメントフレームのやり取りの際なので、AP-AP間の通信では更新されないらしい。★
・MacDot11eManagementBuildAssociateResponseFrame()
・MacDot11eManagementBuildReassociateResponseFrame()
・MacDot11ManagementProcessBeacon()
・MacDot11ManagementProcessProbeResponse()

mac_dot11-ap.cpp / MacDot11AddHTCapability()
→11n の場合、初期設定の Phy802_11Manager::m_ChBwdth が CHBWDTH_20MHZ でない場合に、struct_mac_dot11_HT_CapabilityInfo::fortyMhzIntolerent に FALSE が設定されている。

----

なお、先に添付したシナリオを、AccessPoint ではなく元のアドホックモードで実行すると、40MHz をちゃんと使っているようです。
(phy_802.11n.cpp で getDataRate() の中で参照している、txRxVector.chBwdth をデバッグ出力して確認しました。)
こちらもシナリオを添付してみます。

* ad-hoc_test_2node_woAMxDU :40MHzモードオフ
* ad-hoc_test_2node_woAMxDU_40MHz :40MHzモードオン

ad-hoc_test_2node_woAMxDU_40MHz.zip
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT