Хабрахабр

Всё, что вы хотели знать о тестировании адаптеров Wi-Fi, но боялись спросить

image

Последние 15 лет из этих 20 мы делаем программы для анализа Wi-Fi-сетей. На днях нашей компании исполняется 20 лет. Будет много картинок (то, что называют «geek porn») и технических подробностей.
Зачем вообще писать специальные драйверы? Часть этой работы – разработка драйверов для Wi-Fi-адаптеров, и в этой статье я расскажу, как команда разработчиков тестирует продукты своего труда, и как процесс тестирования эволюционировал за эти 15 лет вместе с эволюцией стандартов и адаптеров.

Сделать это под Windows можно, только создав набор своих собственных драйверов для определенных чипсетов. Когда вы делаете софт для анализа сетей Wi-Fi (а мы делаем программу для инспектирования и моделирования сетей и анализатор пакетов Wi-Fi), вам нужно каким-то образом получать (читать, захватывать, сниффить, ловить… — всё это синонимы) пакеты Wi-Fi, которыми обмениваются близлежащие точки доступа и клиенты.

С точки зрения обычного пользователя, с ними всё хорошо. Что же не так с обычными стандартными драйверами, которые делает производитель адаптера? А без этого вы не можете создать софт для анализа сетей. Есть только маленькая проблема – вы не можете его использовать для чтения Wi-Fi пакетов в режиме пассивного наблюдателя. Если вам интересно прямо сейчас, то я расскажу кратко в следующем абзаце, а если тема программирования вам не близка, просто пропустите его. Вообще, это большая тема для отдельной статьи (и я ее напишу в этом году).

«Сниффить» пакеты на Windows можно было всегда, и никто не мешает вам запустить Wireshark и видеть пакеты, идущие через ваш беспроводный адаптер, но проблема в том, что вы увидите только свои пакеты и только дата-пакеты. Лет десять назад под Windows появился новый API для пассивного чтения Wi-Fi пакетов, так называемый monitor mode. Новый API был призван решить этот вопрос раз и навсегда. Вся остальная информация (чужие пакеты, пакеты типа Beacon, информация по уровню сигнала в пакете и его дата-рейту, и т.п.) недоступна. Короче говоря, с ним полная катастрофа. Но не решил: его не поддерживает нормально почти ни один чипсет основных вендоров, а сам API устарел еще в момент рождения и не развивается Microsoft. И если вы наткнулись на софт для анализа сетей Wi-Fi под Windows, продавцы которого утверждают, что он поддерживает любые или почти любые адаптеры Wi-Fi и не требует замены драйверов – вам точно впаривают то, что называется по-английски snake oil.

Количество компаний, которые занимаются этим, можно посчитать, используя пальцы одной руки. Писать специальные драйверы для мониторинга Wi-Fi сложно, долго и дорого.

Зачем тестировать связку адаптер-драйвер

В процессе разработки драйвера программист должен убедиться, что драйвер корректно ловит пакеты, переключает частотные каналы и диапазоны, корректно реагирует на hibernate системы, верно подсчитывает уровни сигнала, и делает еще массу вещей, без которых невозможно анализировать Wi-Fi сеть. Драйвер – это программа для взаимодействия с hardware (железом), специфичная для конкретного hardware.

В реальности, есть масса нюансов, о которых мы и расскажем. Казалось бы, это довольно понятная и простая задача: воткнул адаптер в компьютер, а дальше разрабатывай и тестируй свой драйвер, сколько хочешь.

Какой должна быть платформа для тестирования

Чтобы технологично тестировать драйверы, нужен некий test bed, то есть платформа для работы с разнообразным железом, которая должна соответствовать нескольким требованиям:

  • Простое отключение одного и подключение другого адаптера.
  • Возможность подключения к современным компьютерным интерфейсам.
  • Низкие помехи от электронных компонентов.
  • Мобильность. В процессе тестирования нужно иметь возможность перемещать Wi-Fi адаптер, меняя ориентацию его антенн в пространстве и меняя дистанцию до точки доступа (иначе вы не сможете нормально откалибровать уровень сигнала).
  • Возможность подключения нескольких адаптеров одновременно (для USB).

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

Археология и современность

Вспомним былое, местами весьма древнее, и обсудим новое. Теперь пришло время рассказа непосредственно про железо.

2003

Начало нулевых был временем, когда Wi-Fi только-только начинал свой путь. Мы начали заниматься софтом для Wi-Fi в 2003 году (до этого мы делали софт только для проводных сетей). 11, был принят еще в 1997 году. Первый из семьи стандартов, 802. 11b и 802. За ним последовали 802. Большинство ноутбуков продавались без встроенного Wi-Fi, но к ним можно было самостоятельно купить адаптеры: внешние, подключаемые к порту CardBus (PCMCIA) для ноутбуков, либо внутренние стандарта PCI. 11а в 1999, но в массы технология пошла значительно позже. Небольшая часть high-end ноутбуков продавалась и со встроенными адаптерами miniPCI.

11b. Нашим первым шагом была поддержка CardBus-адаптеров 802. реально можно было передавать данные со скоростью не более 1 мегабайта в секунду в идеальных условиях. То были благословенные времена: почти все такие адаптеры были на чипсете Prism компании Intersil, сорс-код драйвера был доступен бесплатно для всех после подписания NDA, а максимальная скорость передачи данных на физическом уровне составляла 11 Mbps, т.е.

Wi-Fi-адаптер CardBus с внешним антеннами

Wi-Fi-адаптер CardBus с внешним антеннами

С платформой для тестирования было тоже всё очень просто и безальтернативно: почти все ноутбуки имели один или два порта CardBus. Надо сказать, что адаптеры неплохо работали, имели хорошую чувствительность, особенно если была возможность подключения внешних антенн.

Старинный ноутбук с портами PCMCIA
Вы еще помните этих мамонтов по 3-4 килограмма?

Все, что нам оставалось – вставить адаптер в такой внешний порт.

Адаптер CardBus и соответствующий слот древней машины
Адаптер CardBus и соответствующий слот древней машины

2007

На рынке появляются 34-миллиметровые ExpressCard-адаптеры Wi-Fi, причем уже 802. На смену далеко не миниатюрным CardBus-адаптерам приходит более изящный стандарт ExpressCard на шине PCI Express. 11a. 11g и 802. Скорости растут, применяются новые схемы модуляции.

Wi-Fi-адаптеры ExpressCard
Wi-Fi-адаптеры ExpressCard

Карты легко менять, ноутбуки мобильны, на рынке нет недостатка в моделях с портами ExpressCard. ExpressCard, как и CardBus, вполне удобен для тестирования.

0, так что внутри десктопов уже часто появляются PCIe-адаптеры с внешними антеннами. Десктопы тоже не стоят на месте, в 2007 принят стандарт PCI Express 2. Их тестировать не так удобно (снять крышку корпуса, заменить PCIe-адаптер, вернуть всё на место).

2010

0. Мы начинаем поддержку Wi-Fi-адаптеров USB 2. Всё, что нужно – порт USB, или несколько портов, если вы используете несколько адаптеров. Это очень удобный форм-фактор как для тестирования, так и для использования конечными пользователями.

11n, основанный на чипсете производства Atheros Communications, тогда еще не поглощённой Qualcomm. На арену выходит легендарный адаптер Proxim ORiNOCO 8494 стандарта 802. У него отличная чувствительность. Этот адаптер использовали все профессиональные программы для Wi-Fi site surveys.

Легендарный USB-адаптер Proxim ORiNOCO 8494
Легендарный USB-адаптер Proxim ORiNOCO 8494

Возможность подключить сразу несколько адаптеров – большой плюс, это ускоряет время сканирования каналов, если речь идет о программах для site survey, и позволяет, например, анализировать поведение клиентов при роуминге, если речь идёт о пакетных анализаторах.

0 500 mA. Тем не менее, не стоит забывать, что типичный USB-адаптер Wi-Fi потребляет от 200 до 300 mA, и если вы используете пассивный USB-хаб, воткнув в него три адаптера, то вы легко можете выйти за предельные для USB 2.

Измеритель PortaPow для определения потребляемого адаптером тока
Измеритель PortaPow для определения потребляемого адаптером тока

0 практически нет, и, помимо вопроса о потребляемом токе, единственное, о чем вам надо позаботиться – это расположение портов на хабе. Радиочастотных помех от хабов USB 2. Порты должны быть расположены так, чтобы в соседние порты можно было вставить адаптеры одновременно (если порты расположены слишком близко, вставить адаптеры просто не получится).

Начали мы с того, что разбирали ноутбуки, чтобы протестировать новый адаптер. Следующей проблемой в 2010 году для нас стало появление адаптеров MiniPCIe, которые пришли на смену MiniPCI в ноутбуках. Замена адаптера в ноутбуке – это небыстрый и нудный процесс, причем можно наткнуться на много подводных камней. Какая это была боль – рассказывать, наверное, не надо. Во-вторых, часть производителей ноутбуков занимается откровенным вредительством, жестко прошивая в BIOS те модели адаптеров, которые ноутбук поддерживает. Во-первых, если в «родном» адаптере ноутбука стоял адаптер с двумя антеннами, а нам хотелось протестировать модель с тремя антеннами, нормального решения не было. В-третьих, вам может просто не повезти, и вы что-нибудь сломаете внутри. И если новый адаптер не попадает в такой white list, то он просто не распознается.

Но решение это не было идеальным: мобильность устройства всё же важна. В какой-то момент нам пришлось использовать десктопы с платой-переходником PCIe <-> MiniPCIe. Идеальное же решение нашлось у тайваньских ребят из фирмы Bplus Technology, которые, среди большого ассортимента очень интересных отладочных решений, предлагали вот такую прекрасную плату:

Плата для тестирования с разъемом MiniPCIe
Плата для тестирования с разъемом MiniPCIe, подключаемая через адаптер ExpressCard

Test bed получился великолепным: адаптеры можно менять в два счета, сохранена мобильность, помех нет, а сама плата стоит совсем недорого. Эта плата стала просто спасением на много лет. Всё что нужно – ноутбук со слотом ExpressCard, но в те годы это не было проблемой.

Плата в подключенном состоянии
Плата в подключенном состоянии, адаптер ExpressCard вставлен в ноутбук

2013

Все ноутбуки поголовно оснащены интегрированными модулями Wi-Fi, и эти модули, на волне всеобщей миниатюризации, начинают выпускаться в новом форм-факторе, M. К 2013 году Wi-Fi полностью завоевал мир. Карты M. 2 (он же NGFF). 2 меньше привычных MiniPCIe и имеют другой разъем.

2"/>
Плата с разъемом MiniPCIe, модуль MiniPCIe, модуль M. <img src="http://orion-int.ru/wp-content/uploads/2018/08/vsyo-chto-vy-xoteli-znat-o-testirovanii-adapterov-wi-fi-no-boyalis-sprosit-9.jpg" alt="Плата с разъемом MiniPCIe, модуль MiniPCIe, модуль M. 2

Они выпускают переходник MiniPCIe <-> M. Очень хочется продолжить использование нашего прекрасного комплекта для тестирования, и Bplus Technologies снова приходит на помощь. 2, и мы легко делаем вот такой толстый бутерброд:

2, Wi-Fi-адаптера M. «Бутерброд» из платы MiniPCIe, переходника MiniPCIe <-> M. 2, Wi-Fi-адаптера M. 2 и подключенные к нему omni-антенны
«Бутерброд» из платы MiniPCIe, переходника MiniPCIe <-> M. 2 и подключенные к нему omni-антенны

Но об этом ниже. Ноутбуков с ExpressCard на рынке уже почти не остается, но у нас есть запас таких старых машин, хотя уже понятно, что скоро придется искать новое решение.

2014

11ac, и в 2014 году на рынке появляется много адаптеров 802. В декабре 2013 года ратифицирован стандарт 802. 0. 11ac, причем уже USB 3. 0? Зачем адаптерам USB 3. 0 уже не хватает. Потому что скорости шины 2. 11n могли обеспечивать максимальную скорость 450 Mbps на физическом уровне, а вот адаптеры 802. Трехпотоковые (3 spatial streams) адаптеры 802. 11ac уже могут давать 867 Mbps (два потока, ширина канала 80 MHz) или 1300 Mbps (три потока, ширина канала 80 MHz) и даже в теории 2340 Mbps (три потока, ширина канала 160 MHz, только таких нет в природе).

0 заключается в том, что устройства USB 3. Единственная проблема с USB 3. В отсутствие хорошего экранирования, этот эффект можно легко наблюдать. 0 (кабели, коннекторы, схемотехника) способны генерировать довольно мощный широкополосный радиочастотный шум, который делает адаптеры гораздо менее чувствительными, поскольку понижается отношение сигнал/шум. На скриншоте показана типичная картина работы нескольких сетей в диапазоне 2. Скриншот, приведенный ниже, сделан с помощью TamoGraph Site Survey и анализатора спектра Wi-Spy. Видно, что порог шума находится примерно на уровне –95 dBm. 4 GHz (амплитуды вверху и так называемый waterfall view внизу).

Помехи от USB-хаба отсутствуют
Помехи от USB-хаба отсутствуют

0. Теперь попробуем приблизить Wi-Spy к хабу или внешнему диску USB 3. Картина радикально меняется:

Мощные помехи от USB-хаба
Мощные помехи от USB-хаба

Если учесть, что минимальное отношение сигнал/шум, при котором Wi-Fi еще как-то может работать, составляет около 4 dB, то при такой картинке адаптер не сможет соединиться с сетью, если сигнал от точки доступа будет ниже -73 dBm. Рядом с хабом наблюдается очень приличный шум, примерно на уровне -77 dBm. Чтобы обойти эту проблему, стоит попробовать разные хабы или использовать дополнительные USB-кабели, удаляющие адаптер от источников RF-шума.

0? Вы спросите, как же при таких помехах живут адаптеры USB 3. Взять, к примеру, адаптеры на чипсете Realtek: когда адаптер не ассоциирован, он работает в режиме USB 2. Они живут очень интересной жизнью. Когда адаптер подключается к сети, то специальный системный сервис Windows переинициализирует устройство, переключая его в режим USB 3. 0, сканируя каналы и находя близлежащие сети. В этом режиме адаптер остается до тех пор, пока он не диссоциируется, после чего он снова возвращается в режим USB 2. 0. Вот такие безумные танцы. 0.

2018

2 назревает кризис. Время идет вперед, и если с тестированием USB-адаптеров никаких новых проблем не появляется (разъемы USB Type-C не в счет, копеечный переходник решает проблему), то в отношении MiniPCIe и M. Во-первых, старые ноутбуки уже не тянут Windows 10. Жить дальше со старой связкой «ноутбук со слотом ExpressCard + плата MiniPCIe с интерфейсом ExpressCard» становится невыносимо. Во-вторых, они могут умереть в любой момент, оставив нас у разбитого корыта, поскольку искать на блошином рынке древние ноутбуки на замену совершенно не хочется.

Мобильное, желательно и под Windows и под macOS, с современным интерфейсом для подключения. Надо найти новое решение. Самое простое – вставить плату-переходник PCIe <-> MiniPCIe в десктоп, но тогда на мобильности надо поставить крест. Естественно, с возможностью Direct Memory Access (DMA). Кроме того, мы вообще сейчас уходим от десктопов в сторону ноутбуков и Intel NUC; десктопы в значительной степени потеряли смысл в последние годы. Таскать на себе десктоп по офису очень полезно для здоровья, но не очень продуктивно.

Конечно же не USB, потому что, увы, нельзя сделать мостик PCIe <-> USB. Итак, что нам остается? Хорошо, направление поиска – некий девайс для подключения адаптера PCIe через Thunderbolt. Тогда Thunderbolt: он есть в новых ноутбуках и NUC’ах, и он должен сделать возможным мостик PCIe <-> Thunderbolt.

Естественно, его разработчикам даже в самых буйных фантазиях не могла прийти в голову мысль, что кто-то захочет вставить в это шасси карту Wi-Fi. Ищем, ищем и находим красавца: Startech Thunderbolt 3 PCIe Expansion Chassis. You can add many types of PCI Express cards, such as a PCIe USB 3. На сайте, собственно, описаны все те фантазии, которые посетили разработчиков: «The Thunderbolt 3 PCIe chassis makes it easy to expand your system with the capabilities you need to work at peak productivity. 0/2. 1/3. Теоретически, Wi-Fi должен взлететь. 0 and USB-C, SSD, network, eSATA, FireWire or video capture cards». Если у компонента есть хоть малейший шанс не заработать по любой причине (драйвер, firmware, микросхемы), то он обязательно не заработает. Практически… ну вы знаете как бывает практически.

Саппорт, объяснимо, был совершенно не готов к вопросу по Wi-Fi. Мы написали в саппорт. Ну что же, попробуем за них мы. Сказали, что пробовали Ethernet-адаптеры, но Wi-Fi – никогда. 2. Посылка приезжает быстро, и нам остается только снять внешний корпус и вставить PCIe-плату с переходником на M.

image
Внутренности Startech TB31PCIEX16

Дальше подключаем к плате антенны (через микроскопические коннекторы, без лупы не справиться), прикручиваем антенны к скобе PCIe-платы, чтобы вывести их наружу, и подключаем весь юнит к питанию и Thunderbolt-порту ноутбука. В переходник надо вставить адаптер Wi-Fi и прикрутить его.

image
Startech TB31PCIEX16 в собранном виде

Не сразу, конечно, такие железяки обычно сразу не сдаются. И оно заработало. Но потом всё пошло как по маслу. Пришлось сначала обновить firmware контроллера Thunderbolt в компьютере.

Будущее

Следующий интерфейс на подходе – M. Мы внимательно следим за развитием индустрии. Следующий Wi-Fi стандарт – 802. 2 CNVio, который используется, к примеру, в самых новых адаптерах Intel 9560. Будем решать проблемы по мере поступления. 11ax.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть