- PVSM.RU - https://www.pvsm.ru -
Привет!
Поговорим о том, что реально влияет на скорость передачи данных в современных беспроводных сетях, развенчаем пару мифов и ответим, пора ли поменять свой старенький роутер на сверкающего рогатого пришельца с MU-MIMO на борту.
Для разминки — небольшая задачка. Представьте себе беспроводную сеть Wi-Fi, состоящую из точки доступа (AP) и двух одинаковых клиентских устройств (STA1 и STA2).
Читаем надписи на коробках:
AP: 1733,3 Мб/c
STA1, STA2: 866,7 Мб/c
Внимание, вопрос. Оба клиента одновременно начинают загружать с сервера большой файл. На какую пропускную способность может рассчитывать каждое из устройств?
Сразу оговоримся — для простоты и наглядности мы будем называть пропускную способность (канальную скорость) просто скоростью. Да, скорость работы протоколов транспортного уровня может оказаться в два раза ниже, чем наша скорость, но вы и так всё это знаете. Сейчас о другом.
Наша задачка призвана напомнить о главном ограничении беспроводных сетей.
Общая среда передачи (shared medium) подразумевает, что в единицу времени вещать должно только одно устройство.
Это обстоятельство приводит нас к контринтуитивному ответу: несмотря на то, что точка доступа способна поддерживать 1733,3 Мб/c, каждое из устройств будет работать, в среднем, на скорости 433,3 Мб/c.
Куда делись оставшиеся 866,7 Мб/c? Давайте разбираться.
Для описания принципов работы беспроводных сетей удобно использовать метрику Airtime Utilization. Она показывает, какую часть времени эфир занят передачей данных.
Теперь — внимание! Для того, чтобы развить заявленные 1733,3 Мб/c, устройство должно единолично занимать эфир все 100% времени. При этом второе устройство (принимающее) должно также поддерживать данную скорость.
Ещё раз подчеркнём — связь между устройствами, поддерживающими разные скорости, осуществляется на скорости наименее быстрого из пары.
Всё становится грустнее, если максимум устройства, например, 72,2 Мб/c. Занять придётся те же самые 100% эфира, но результат уже совсем не впечатляющий.
К слову, 72,2 Мб/c — скорость не случайная. Большинство современных смартфонов на большее могут не рассчитывать, но об этом позже.
Теперь вернёмся к STA1 и STA2. По условиям они начали загружать файл на сервер одновременно. Мы помним, что в единицу времени вещать может только одно устройство.
Координирует передачу в сети Wi-Fi механизм CSMA/CA — Carrier Sense Multiple Access with Collision Avoidance. Если вкратце, его задача — последовательно дать право голоса всем устройствам, при этом, по возможности, не допустив одновременной передачи от двух и более устройств (коллизии).
Можете почитать википедию [1], если хотите подробностей.
А лучше — это. [2] Или — вот [3], если настроены совсем серьёзно.
Причём тут Airtime Utilization? А при том, что в итоге работы CSMA/CA для данного случая каждое из двух готовых к передаче клиентских устройств получит под свои нужды примерно половину эфирного времени — или 50% Airtime.
100% Airtime — 866,7 Мб/c;
50% Airtime — 433,3 Мб/c на каждое из устройств.
Эта картина не поменяется, даже если точка доступа будет поддерживать все 6933,3 Мб/c. Связь между AP и STA всегда ограничена скоростью наименее быстрого из устройств.
Можете из любопытства слегка поиграться с условиями задачи:
Изменим скорость для STA2 — 72,2 Мб/c;
Добавим STA3, скорость — 72,2 Мб/c.
Что осталось от заявленных 1733,3 Мб/c?
Справедливости ради добавим, что данные расчёты верны при включении на БС функционала Airtime Fairness [4], без него всё было бы гораздо хуже — медленные клиентские устройства привели бы к максимально неэффективному распределению Airtime. Хорошо, что технологию внедрили практически все уважающие себя вендоры.
Но и тут есть нюанс: Airtime Fairness работает только в Downlink (от AP к STA). В Uplink по-прежнему царит анархия.
В реальной сети из-за загруженности эфира, коллизий и особенностей работы протокола максимально достижимый уровень Airtime Utilization находится в пределах от 70% до 80%.
Соответствующим образом поменяется и рассчитанная нами скорость.
К чему столь долгая прелюдия? Знайте, какие клиентские устройства используются на вашей сети. Их влияние на производительность в условиях общей среды передачи данных критически недооценено. Далее будем разбираться — насколько.
Или клиентские устройства, если угодно. Чем же они провинились и что, собственно, отличает их от точек доступа?
Всё просто. Чаще всего клиенты — компактные, автономные и мобильные. Из этого вытекают все проблемы.
Стильный металлический корпус толщиной 7 мм? Для размещения 4-х радиотрактов MIMO лучше не придумаешь.
Многопоточная передача данных и широкие каналы слишком энергозатратны? Ничего, пусть заряжают устройства несколько раз в день.
Клиенты постоянно перемещаются? Ерунда — выкрутим мощность на точках на максимум.
В подобных условиях разработчики вынуждены идти на компромиссы.
Помните могучую точку доступа (1733 Мб/c) из вступления к статье? Давайте пойдём ещё дальше. Стандарт 802.11ac позволяет нам разогнаться до внушительных 6933 Мб/c.
Условия для этого следующие:
Соответствующие требованиям точки доступа на рынке представлены даже в потребительском сегменте. Что с клиентами?
Для наглядности проведём мысленный эксперимент: подключим к нашей абстрактной точке вполне конкретный смартфон — iPhone 8. Посмотрим, на что он способен.
Многолетние наблюдения подтверждают — устройств, работающих в «пятёрке», всё больше. И это прекрасно.
Единственное достоинство 2,4 ГГц — меньшее затухание — на сегодняшний день превратилось едва ли не в недостаток.
При проектировании плотных сетей одна из задач — борьба с интерференцией. Боремся, в том числе, за счёт изоляции зон покрытия AP друг от друга. В ход идут стены, занижается мощность на передатчике, и «дальнобойность» двойки здесь явно лишняя.
Так или иначе — будущее Wi-Fi за «пятёркой», если не рассматривать уж совсем узкие кейсы.
Статистика, тем не менее, не даёт однозначно достоверных данных по распределению устройств — слишком много переменных (страна, регион, локация, мероприятие и другие).
Пожалуй, на сегодняшний день можно осторожно говорить, что в России мы достигли соотношения 50/50 по поддержке в клиентских устройствах диапазона 5 ГГц.
Как будет в вашей сети — другой вопрос.
Наш воображаемый iPhone 8, кстати, «пятёрку» поддерживает, ну и хорошо.
Возможность одновременно передавать несколько потоков данных в едином частотном канале появилась ещё в 802.11n. Однако, воз и ныне там:
А всё потому, что технология MIMO очень требовательна:
MIMO (Multiple Input Multiple Output) — соответственно, множественные входные и выходные каскады. Благодаря MIMO, появилась возможность передавать в одном частотном канале несколько полезных сигналов.
MIMO 4x4:4 значит [4 передающих тракта]x[4 приёмных тракта]:[4 пространственных потока].
MIMO 4x4:3 — бывает.
MIMO 3x3:4 — не бывает.
Точка доступа с MIMO 4x4:4 позволяет, по сути, увеличить скорость передачи данных в 4 раза. Разумеется, если оба устройства (ТД и клиент) обладают равными способностями.
Клиентские устройства с MIMO 4x4:4 начали появляться на рынке совсем недавно. В основном это выделенные адаптеры Wi-Fi, но недавно нас ошарашил Samsung, заявив в описании к своему новому Galaxy Note 9 — MIMO 4x4. Очень некстати, ведь мы хотели написать, что мобильных устройств с подобными характеристиками на рынке пока нет.
В связи с этим — конкурс.
Важное условие — снять трафик нужно самостоятельно. Можем попросить фото устройства :)
Как говорят — исключения подтверждают правило.
Устройств с MIMO 4x4:4 — практически нет. MIMO 3x3:3 — удел редких Macbook Pro. MIMO 2x2:2 — в топовых смартфонах и планшетах. Статистическое большинство — устройства, не поддерживающие MIMO.
Мы не будем как большинство. Наш iPhone 8 — топовый смартфон, поддерживающий передачу аж двух пространственных потоков.
Откуда мы это узнали — важный вопрос. Расскажем в последней части статьи.
Как мы помним, связь между устройствами, поддерживающими разные скорости, осуществляется на скорости наименее быстрого из пары.
Вжух — и осталось 1733,3 Мб/c. Грустно. Но весело — это ведь почти два гигабита!
Если лень считать — просто воспользуйтесь таблицей. [5]
802.11ac позволяет нам использовать каналы шириной в 160 МГц.
Пожалуйста, не делайте этого.
Более того, каналы в 80 МГц также категорически не рекомендованы к использованию.
Всё дело в том, что, расширяя полосу, мы, по сути, распахиваем ворота для интерференции всех мастей — портим эфир и себе, и соседям.
Мы не будем подробно разбирать, почему так происходит — это тянет на отдельную статью, однако можете самостоятельно ознакомиться с рекомендациями и Best practice guides ведущих вендоров — только 20 МГц, за редкими исключениями.
40 МГц допускается только в “пятёрке”, в случае, если плотность клиентов и обстановка в эфире позволяет.
Но мы ведь оптимисты — будем считать, что наша сеть именно такая.
Итак, от 1733,3 Мб/c остаётся 400 Мб/c — для канал шириной 40 МГц.
За базовую скорость можете взять 96,3 Мб/c (20 МГц, 1SS, Short Guard interval, 5/6 coding rate).
1733.3 ~ 96.3×9×2 (40 МГц, 2SS)
400 ~ 96.3×2.1×2 (40 МГц, 2SS)
Нелинейные коэффициенты — потому что при объединение каналов удаётся задействовать служебные пограничные OFDM-поднесущие.
Жаль, что в реальной сети вреда от широких каналов больше чем пользы.
Не забываем про удобную таблицу. [5]
Ок, уже не так впечатляет, но всё равно неплохо, да?
P.S.: Если вы живёте в лесу и очень хорошо понимаете, что делаете — хорошо, включите 160 МГц. Не факт, что будет толк. Например, пресловутый iPhone 8 такую ширину канала не поддерживает, хотя выпущен всего год назад.
Читайте до конца, чтобы узнать, на что способно ваше устройство.
Любопытный факт: клиентские устройства — основные источники интерференции в сети.
К чему это? А к тому, что даже идеально спланированная и настроенная сеть не гарантирует работу на максимальных модуляциях, ведь 256QAM предъявляет очень высокие требования к качеству сигнала — RSSI и SNR.
Про RSSI мы ещё поговорим, а SNR напрямую страдает от клиентов со всенаправленными антеннами — таких мобильных и непредсказуемых. Ну, и не только от них, разумеется.
Как результат — рассчитывайте, что большую часть времени клиенты будут использовать менее требовательную модуляцию. Например, 64QAM.
В нашем эксперименте это безжалостно снижает скорость до 300 Мб/c.
Что касается RSSI — то это наш любимый параметр. В стандарте 802.11 никаких описаний и требований к нему нет, поэтому каждый вендор видит данную метрику по-своему. Соответственно, разные клиентские устройства будут показывать разный RSSI в одном и том же месте.
Вы, кстати, по какому уровню планируете? -67 дБм? А для какого устройства?
Для тех, кто готов во всём идти до конца — пугающий подкаст. [6]
А вот сайт [7], где можно полюбоваться на собранные по теме данные.
Даже при весьма оптимистическом сценарии клиент получит всего 300 Мб/c пропускной способности — вместо 6933 Мб/c. И это в случае, если клиент всего один! Много таких сетей знаете?
Вспоминаем задачки. Чем больше клиентов — тем хуже. Не хотели расстраивать раньше времени, но зависимость нелинейная. С ростом числа устройств в сети увеличивается процент оверхеда.
Статья [8] очень хорошая. Обязательно прочитайте.
Итог: производительность сильно зависит от подключенных клиентов. Скорее всего, их способности будут весьма ограниченными.
Оптимистичный сценарий —300 Мб/c (5 ГГц, 40 МГц, 2SS, 64QAM).
Реалистичный сценарий — 72 Мб/c (2,4 или 5 ГГц, 20 МГц, 1SS, 64QAM).
Да, всё только начинается.
Можно выделить три крупных проблемы:
Давайте разберём их подробнее.
Помните наш iPhone 8? Хороший телефон, кстати. А знаете, что Apple перестала получать сертификацию Wi-Fi Alliance начиная с iPhone 6?
Можете проверить сами — информация открытая. [9]. Заодно напишите в комментариях о других удивительных открытиях.
Что, собственно, за организация — Wi-Fi Alliance?
Ребята пытаются следить за порядком в зоопарке. Значок Wi-Fi Certified означает, что устройство было проверено на соответствие основным пунктам стандарта 802.11. Проверка ведётся в аккредитованных лабораториях, всё более-менее серьёзно.
Почему возникла подобная необходимость?
Для того, чтобы обеспечить совместимость миллионам разнообразных устройств, работающим на разных чипсетах и разработанных людьми, отличающимися разной степенью квалификации и моральными ориентирами.
Помогло?
Не очень. Как показывает практика, каждый вендор имеет своё уникальное видение и позволяет себе отступать от стандарта (из лучших побуждений, разумеется).
Один из забавных примеров — прошлогодний KRACK. Не все устройства были подвержены уязвимости, так как многие производители по-своему интерпретировали процедуру обмена ключами. В частности — как вести себя в случае отсутствия ответа на третье сообщение последовательности 4-Way Handshake. Почитайте подробнее [10], если интересно.
Что в итоге?
Зоопарк.
Проще всего, по понятным причинам, с Apple. Хотя они и не сертифицируют свои новинки, парк устройств всё-таки ограничен. Поэтому можно протестировать поведение в тех или иных сценариях.
Дальше идёт Android. Тут многое зависит от производителя, но в целом — ещё больше неизвестных. Добавьте сюда китайцев.
На этом идеи по классификации заканчиваются. Операционные системы, драйвера, legacy-устройства, мультиварки, дверные замки, камеры видеонаблюдения — BYOD и IoT во всей красе.
Проблема усугубляется тем, что многие критические решения клиентские устройства принимают самостоятельно, напрямую повлиять на них нельзя.
Подключиться к «пятёрке» или к «двойке»?
Произвести роуминг или остаться на старой AP?
На какой модуляции работать?
Об этом подробнее в следующей главе.
Wi-Fi устроен так, что клиентские устройства стараются самостоятельно справиться с возникающими трудностями. Не всегда эти решения оптимальны.
Если устройству кажется, что лучше сидеть на шестом канале с уровнем -85 дБм, чем переподключиться к соседней точке с уровнем -50 дБм, работающей в свободной «пятёрке» — значит, так оно и будет.
Эффективных механизмов, позволяющих прямо управлять поведением клиентских устройств, нет. В этом отличие, например, от сотовой связи.
Вы возразите — а как же 802.11k (Radio resource measurement enchancements) и 802.11v (Wireless network management), принятые в 2008 и 2011 году соответственно?
Данные стандарты теоретически направлены на решение проблемы. Практически — ничего не работает.
Да, точка может отправить Load Balancing Request — вежливо попросить клиента произвести роуминг. Удовлетворять данную просьбу никто не обязан. Более того, клиентов, поддерживающих 802.11k и v, до сих пор мало.
Основное применение описанных выше стандартов — помощь в быстром роуминге.
В рамках механизма 802.11r (Fast BSS transition) клиент получает список ближайших AP, на которые ему стоило бы переподключиться — и уже дальше сумасбродное устройство решает, что для него лучше.
О роуминг сломано немало копий, хорошие статьи можно найти здесь, на Хабре.
Раз. [11] Два. [12]
Есть ещё монументальное (но незавершённое) исследование прекрасного Andrew von Nagy —
три. [13]
Повторяться не будем, просто ещё раз подчеркнём: переключение между AP — на совести клиента. От этого и большинство проблем.
Вендоры пытаются бороться с самостоятельностью клиентов. Стандартные средства не помогают, поэтому в ход идут ухищрения. Это прямо как в книжках по бизнесу: не пытайся переубедить — сделай так, чтобы клиент сам пришёл к нужному выбору.
Так, например, работает Band Steering (механизм перевода клиентов из «двойки» в более свободную «пятёрку»):
К сожалению, некоторые устройства очень упорны. Убеждение не действует, и они продолжают цепляться к выбранному диапазону, пока точка не сдастся и не подтвердит подключение.
Сдаться придётся, ведь иначе можно нарваться на неожиданный эффект — отвергнутый и раздосадованный клиент просто помечает данный SSID как ненадёжный и перестаёт автоматически подключаться к сети (раньше за подобным поведением были замечены устройства Apple, к примеру).
Список можно продолжать бесконечно:
Зафиксируем: напрямую управлять решениями драйверов клиентских устройств невозможно. Существующие механизмы позволяют лишь косвенно мотивировать клиентов к совершению нужного выбора. Клиент прав не всегда, но его это не волнует.
Как известно, безопасность системы в целом находится на уровне самого слабого из её элементов. В правильно настроенной беспроводной сети таким элементом неизбежно становится клиентское устройство. В чём проблема?
Ниже примеры решений, применяющихся в корпоративных сетях:
Обычные пользователи проблемами безопасности зачастую пренебрегают вовсе.
Тема безопасности беспроводных сетей обширна. В данной статье мы ограничимся тем, что основной вектор атаки киберпреступников — так называемый low hanging fruit. Чаще всего таким фруктом становится клиентское устройство.
Зачем пытаться напрямую влезть в защищённую сеть, если достаточно получить доступ к смартфону сотрудника, который из гордости не устанавливает обновления на свою ОС?
Перечисленные проблемы (многообразие, непредсказуемость и уязвимость клиентских устройств) бросают проектировщикам и администраторам беспроводных сетей серьёзный вызов.
Идеальное планирование, полноценное радиообследование и качественный монтаж не гарантируют стабильную работу сети.
Знать, какими устройствами пользуются абоненты, действительно, важно. Остаётся понять, какими характеристиками обладает то или иное устройство.
Неожиданно — это не самая простая задача.
Казалось бы, что может быть проще — заходим на сайт производителя и смотрим на детальные спецификации устройств.
Попробуем на примере привычного iPhone 8:
На сайте Apple. [14]
802.11ac Wi-Fi with MIMO… Не очень-то информативно. Сколько пространственных потоков? Какая максимальная ширина канала? Есть ли поддержка 802.11r, k, v? MU-MIMO?
Samsung делится информацией о своём Galaxy S9 несколько охотнее:
На сайте Samsung. [15]
Даже если отбросить загадочную модуляцию 1024QAM (официально она появится только в 802.11ax), мы по-прежнему знаем об устройстве слишком мало.
Степень открытости производителей варьируется в широких пределах — есть и приятные исключения. В основном же во внутреннюю кухню никого не пускают (снова ради нашей пользы, разумеется), ведь многие знания — многие печали.
С этим согласны не все.
Недовольные пользователи уже давно ведут собственные базы, куда заносят добытые характеристики устройств.
Яркий пример — сайт уважаемого Mike Albano. [16]
Здесь можно найти следующую информацию:
Доверять или нет данной информации — дело каждого.
Любой неравнодушный может внести свою лепту, поделившись с общественностью результатами своих изысканий. Инструкция — в разделе How To Contribute [17]. Из данной инструкции можно узнать, что вся интересующая нас информация содержится во фрейме Association Request, отправляемом клиентским устройством при подключении к AP.
Всё, что нужно — это перехватить обмен сообщениями между абонентом и AP, сопутствующий первоначальному установлению соединения. Данный трафик не шифруется, однако сложности возникнуть могут — не все Wi-Fi адаптеры позволяют «сниффать» 802.11-фреймы. Операционные системы также могут в разной степени облегчить, либо усложнить задачу.
Тема великолепно гуглится, поэтому ссылок давать не будем.
Счастливчики смогут наблюдать следующую картину:
Тут есть всё, друзья.
Из любопытного — тот самый, уже надоевший, iPhone 8 не поддерживает MU-MIMO. Но не будем портить вам удовольствие.
Кстати, готовые PCAP-файлы, полученные пользователями, можно скачать на том же самом clients.mikealbano.com [16]
Есть ещё один замечательный способ узнать всю подноготную устройства. Что примечательно — без регистрации и SMS.
Все продаваемые на территории США устройства обязаны получить сертификацию от FCC — Federal Communications Commission (Федеральная Комиссия по Связи). В результате устройству присваивается FCC ID — уникальный номер, через который можно получить огромный объём информации прямо на сайте FCC [18].
Сам код (FCC ID) часто можно найти на устройстве, либо на коробке от него. В крайнем случае, поможет интернет.
Код состоит из двух частей: Grantee Code и Product Code. Вводите, как на картинке:
Мы получаем доступ к обширному архиву документов с данными, использованными во время сертификации. Доступны даже внутренние фотографии устройства — в некоторых случаях можно даже разглядеть модели чипов.
Обратите особое внимание на файл SAR Report — на основании данного отчёта можно не только определиться с толщиной шапочки из фольги, но и получить подробную информацию о характеристиках устройства. Бинго!
Производители не спешат раскрывать полную информацию о характеристиках клиентских устройств. Тем не менее, благодаря активности сообщества, открытым источникам и собственной настойчивости, можно получить все необходимые данные.
Зачем же знать, каким телефоном пользуется сотрудник? И пора ли менять свой старенький роутер?
Разумеется, всё зависит от задач. Если вы хотите строить надёжные и предсказуемые сети — отмахнуться от клиентского оборудования не получится. Учитывайте его особенности при планировании и обслуживании — будете вознаграждены снижением расходов и ростом удовлетворённости пользователей.
Всё сказанное не отменяет необходимости в использовании качественных точек доступа: многие наработки ведущих вендоров действительно эффективны — читайте наш блог, чтобы быть в курсе.
И ещё раз — учитывайте характеристики клиентов, чтобы тратить деньги на работающие решения.
Надеемся, что эта статья вам поможет.
Удачи!
Автор: Леонид Теканов, инженер беспроводного отдела CompTek.
Презентация по мотивам статьи прошла 25.10.2018 на нашей ежегодной конференции «БЕСЕДА» [19]. Не пропустите следующую.
CWNP [20] — если хочется не только хорошо разбираться в беспроводных сетях, но и получить официальное признание в виде сертификата;
Revolution Wi-Fi [21] — сайт Andrew von Nagy — авторитетного товарища, подарившего миру удобнейший Revolution Capacity Planner;
Divergent Dynamics [22] — сайт уважаемого Devin Akin, бескомпромиссного эксперта и автора множества ценных статей;
WLAN Professionals [23] — детище Keith Parsons — настоящего ветерана Wi-Fi. Множество полезных материалов и целая ежегодная конференция для тех, кто настроен серьёзно;
badfi.com [24] — хороший сайт про плохой Wi-Fi.
Автор: WirelessMAN
Источник [25]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/besprovodny-e-seti/296996
Ссылки в тексте:
[1] википедию: https://en.wikipedia.org/wiki/Carrier-sense_multiple_access_with_collision_avoidance
[2] это.: http://www.revolutionwifi.net/revolutionwifi/2011/03/understanding-wi-fi-carrier-sense.html
[3] вот: https://www.amazon.com/Certified-Wireless-Network-Administrator-Study/dp/1119425786/ref=sr_1_1?s=books&ie=UTF8&qid=1540311381&sr=1-1&keywords=cwna
[4] Airtime Fairness: https://www.youtube.com/watch?v=Qb1_3KLIvhg
[5] таблицей.: http://mcsindex.com/
[6] пугающий подкаст.: https://www.youtube.com/watch?v=zAXKG0dvI5o
[7] сайт: https://rssicompared.com/home
[8] Статья: http://divdyn.com/wi-fi-throughput/
[9] открытая.: https://www.wi-fi.org/product-finder
[10] подробнее: https://www.krackattacks.com/
[11] Раз.: https://habr.com/post/340140/
[12] Два.: https://habr.com/post/185138/
[13] три.: http://www.revolutionwifi.net/revolutionwifi/2013/01/wi-fi-roaming-analysis-with-wireshark.html
[14] На сайте Apple.: https://www.apple.com/iphone-8/specs/
[15] На сайте Samsung.: https://www.samsung.com/ru/smartphones/galaxy-s9/spec/
[16] сайт уважаемого Mike Albano.: https://clients.mikealbano.com/
[17] How To Contribute: https://clients.mikealbano.com/contribute
[18] сайте FCC: https://www.fcc.gov/oet/ea/fccid
[19] «БЕСЕДА»: http://www.beseda.ru/21/
[20] CWNP: https://www.cwnp.com/
[21] Revolution Wi-Fi: http://www.revolutionwifi.net/
[22] Divergent Dynamics: http://divdyn.com/blog/
[23] WLAN Professionals: https://www.wlanpros.com/resource/?wpv-category=blog
[24] badfi.com: https://badfi.com/
[25] Источник: https://habr.com/post/427575/?utm_campaign=427575
Нажмите здесь для печати.