0

私は INET を使用しており、3 つのアクセス ポイント (AP) と 1 つのモバイル ノード (MN) で構成されるシナリオをシミュレートしたいと考えています。シナリオ) 移動して AP からビーコンを取得します。AP と関連付ける前に、各 AP に関連付けられている他の MN の数を取得できますか? 多くのソース コードを調べたところ、MACaddressTable と ieee80211MgmtAP の stalist のようなものが見つかりました。これらは役に立ちますか? それらを関連付けられたMNの総数として使用すると、スタリストの長さをどのように評価できますか? またはMACaddressTable?

それ以外の場合は、AP 側でそれをカウントするカウンターを配置し、ビーコン フレームを介して送信する必要がありますか? もしそうなら、いくつかのガイドまたはショートカットを教えてください....

4

1 に答える 1

1
  1. IEEE 802.11 では、APは関連付けられたステーションの数に関する情報を送信しません。したがって、この情報をブロードキャストするには、ビーコン フレームの新しいフィールドなど、独自の変更/拡張を IEEE 802.11 プロトコルに導入する必要があります。
  2. INET モデルでは、AP は自分のステーションをstaListマップに格納します。関連するステーションの現在の数をローカルで計算するには、次のコードを使用できます。

    STAList::const_iterator it; int assocSta = 0; for (it = staList.begin(); it != staList.end(); ++it) { if (it->second.status == ASSOCIATED) assocSta++; }

標準のビーコン フレームを変更する場合は、まず、ビーコン フレームの新しいフィールドを正確にどこに追加するかを想定する必要があります。それで:

  • ファイルint noOfAssociatedStas;のクラスに新しいフィールド(たとえば)を追加し 、定義の長さを修正しますIeee80211BeaconFrameBodyIeee80211MgmtFrames.msgIeee80211BeaconFrame
  • 新しいフィールドのシリアル化を追加したIeee80211Serializer.ccelse if (dynamic_cast<const Ieee80211BeaconFrame *>(pkt))、たとえば次のようになります。

    unsigned int numSta = Frame->getBody().getNoOfAssociatedStas(); b.writeByte(numSta); // assuming that the new field is 1 byte length

  • たとえば、次のように、新しいフィールドの逆シリアル化を追加しIeee80211Serializer.ccます。deserializecase 0x80: //ST_BEACON
    unsigned int numSta = b.readByte();

新しいフィールドを追加する場所 (2 番目の箇条書き) は、それを読み取る場所 (3 番目の箇条書き) と正確に一致する必要があることに注意してください。

于 2015-08-31T07:42:23.047 に答える