メイン 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) に設定されない。★
【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 |
フラット表示 | 前のトピック | 次のトピック |