Как обнаружить разъединение при перезагрузке точки доступа внутри станции в режиме PS

#wifi #low-level #power-saving

#Wi-Fi #низкоуровневый #энергосбережение

Вопрос:

Я пишу драйвер довольно низкого уровня для беспроводной карты, и хотя большая часть спецификации довольно проста, я еще не обдумал ни одного вопроса:

Если моя станция находится в режиме энергосбережения, а ее приемник выключен на длительный период (скажем, на 10 секунд) между кадрами DTIM, а точка доступа тем временем перезагружается, поэтому моя связь потеряна, как я могу это обнаружить?

Я знаю, что наиболее распространенным случаем будет то, что синхронизация будет потеряна настолько основательно, что я пропущу несколько маяков и просто вернусь к поиску точки доступа впоследствии, но если по какой-то счастливой случайности я увижу маяки, есть ли какой-нибудь способ узнать, что это новый «экземпляр» той же точки доступа?

Я могу придумать

  • короткое (er) поле времени — однако я считаю, что точкам доступа разрешено сокращать информацию о времени, если трафик не ожидает
  • временная метка точки доступа неожиданно меняется.
  • поле «количество маяков для следующего DTIM» неожиданно меняется.

Будучи перфекционистом, я хотел бы знать, существует ли полностью надежный способ определить, что точка доступа была перезагружена, а не просто собирать подсказки.

Комментарии:

1. Действительно классная проблема. Я бы поспорил на ферму, что большинство производителей придерживаются вашего «наиболее распространенного случая». Вы, вероятно, не можете сказать, но я бы хотел знать, на кого вы работаете, чтобы я мог покупать ваши продукты! Удачи в получении ответа!

2. Кроме того, я бы не придавал слишком большого значения решению, которое отдает приоритет строгому соблюдению стандарта, или аналогично тому, которое извлекает выгоду из тенденций в том, как производители игнорируют стандарт. Работая в этой области раньше, удивительно, сколько углов производители сокращают, чтобы сэкономить несколько долларов на продукте в термоусадочной упаковке.

Ответ №1:

Я бы посоветовал вам посмотреть на TSF в принятых кадрах маяка, и если он слишком сильно отличается от ожидаемого TSF, вы отправляете фрейм с нулевыми данными в точку доступа. Если точка доступа была перезагружена, она должна ответить фреймом деаутентификации с указанием причины «Фрейм класса 2 получен от неаутентифицированного персонала».

Ответ №2:

У меня нет никаких знаний о беспроводных картах на этом уровне, но я бы выбрал практический маршрут и проанализировал связь с точкой доступа, непосредственно ведущую к отключению, для шаблона, который соответствует типичной последовательности отключения; например, «больше нет трафика, внезапная потеря синхронизации DTIM, а затем объявление точки доступа».

Навскидку: может быть, заглянуть в код обнаружения и анализа точек доступа Kismet, чтобы найти пару идей. Готов поспорить, что кто-то еще сталкивался с этой проблемой раньше.

Приветствия!

Комментарии:

1. Проблема заключается в том, что станция находится в режиме энергосбережения, поэтому она не может видеть шаблон, она просыпается прямо перед кадром DTIM, получает кадр и любой широковещательный трафик и снова переходит в спящий режим. Где-то посередине необходимо решить, по-прежнему ли точка доступа знает о существовании станции, повторно связать, если нет, и в идеале хранить молчание, если это так. Итак, в основном это сводится к «просмотру этого кадра DTIM, я думаю, что потерял свою ассоциацию».

2. Я не думаю, что возможно определить, каким будет будущее, по одному кадру DTIM. Я предполагаю, что вам нужно вести историю из N количества кадров или вести статистику приема этих кадров, чтобы угадать, перезагрузилась ли точка доступа. Цепочка Маркова может быть полезна для статистики здесь.

3. Все, что я получил бы от этого, было бы значением вероятности, хотя на самом деле маловероятно, что точка доступа перезагрузится таким образом, который позволит мне по-прежнему получать маяки. Речь идет об устранении последних сомнений. 🙂