0

我正在使用 INET 并想模拟由三个接入点 (AP) 和一个移动节点 (MN) 组成的场景,可能每个 AP 在其范围内都有其他关联的 MN,我想要的是:而 MN(在我的场景)四处走动并从 AP 获取信标,在与 AP 关联之前,我可以获得与每个 AP 关联的其他 MN 的数量吗?我探索了许多源代码,并在 ieee80211MgmtAP 中找到了 MACaddressTable 和类似 stalist 的东西,它们对我有用吗?并将它们用作关联 MN 的总数,那么我该如何评估 stalist 的长度?或MAC地址表?

否则我必须在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.cc之后else 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.ccdeserialize反序列化后case 0x80: //ST_BEACON,例如:
    unsigned int numSta = b.readByte();

请注意,添加新文件的位置(第二个项目符号)必须与阅读它的位置(第三个项目符号)完全匹配。

于 2015-08-31T07:42:23.047 回答