Есть ли способ получить связанные MN к точке доступа?

Я использую INET и хочу смоделировать сценарий, который состоит из трех точек доступа (AP) и одного мобильного узла (MN), пусть каждая AP имеет другие связанные MN в своем диапазоне, что я хочу: пока MN (в моем сценарий) передвигаться и получать маяки от точек доступа, прежде чем связываться с точками доступа, могу ли я узнать количество других MN, связанных с каждой точкой доступа? Я исследовал много исходных кодов и нашел MACaddressTable и что-то вроде этого stalist в ieee80211MgmtAP, они полезны для меня? и использовать их в качестве общего числа связанных MN,
Тогда как я могу оценить длину сталиста? или MACaddressTable?

иначе я должен поставить счетчик, чтобы считать это на стороне AP и излучать его через кадр маяка? если да, пожалуйста, дайте мне несколько руководств или ярлыков
С уважением ….

0

Решение

  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;) в классе Ieee80211BeaconFrameBody в файле Ieee80211MgmtFrames.msg и правильная длина в Ieee80211BeaconFrame определение
  • в 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.cc в deserialize добавить десериализацию нового поля после case 0x80: //ST_BEACON например:
    unsigned int numSta = b.readByte();

Обратите внимание, что место добавления нового поля (второй маркер) должно точно соответствовать месту его чтения (третий маркер).

1

Другие решения


По вопросам рекламы [email protected]