Апрельские забавы или тестируем Wi-Fi 6 a.k.a. 802.11ax

Предисловие

Это краткий рассказ о том, как группа молодых инженеров решила взять несколько Wi-Fi 6 точек и протестировать, насколько маркетинговые цифры отличаются от реальных.

Огромное спасибо хочется сказать Андрею Парамонову (@boolochka) за то что предоставил помещение и ресурсы в CompTek, а так же Борису Лыточкину (@lytboris) за то что сделал то же самое в Яндексе. А так же Максиму Гетману (@get_max) за предоставленное оборудование компании MIST.

Ну и всем кто пришел помочь, поучаствовать.
@Beseitiger
@DmitryBairoff
@ColonelWhite
@htechno
@nimbo78
@z3ru5
Dimitry Zalilov
@skhomm
@ttl256


Для тех, кто не хочет читать и хочет сразу выводы:
Хотя бы один легаси клиент (Wi-Fi 5 a.k.a.802.11ac теперь легаси, да) может и с вероятностью почти 99% обязательно перетянет одеяло на себя. Все будут работать в легаси режиме, разве что QAM1024 у тех, кто умеет в Wi-Fi 6, подсластит горечь утрат (но это не точно).

Клиенты могут быть настолько разными, что кто-то один займет половину эфирного времени. И никто с этим ничего поделать не сможет.

Супер-пупер алгоритмы управления трафиком могут помочь, а могут и навредить — да так, что работать сеть будет хуже, чем старый добрый Wi-Fi 4 в режиме Greenfield. Но при правильном тюнинге получается даже некоторая справедливость (fairness) между клиентами и потоками.

Вы будете работать с черным ящиком в виде точки доступа, за которым нужно перепроверять каждый пакет, и можно только догадываться о том, как там внутри всё устроено, так что не забывайте, пожалуйста, страдать.


Основная часть

Долго ли сказка сказывается, да не быстро отчеты пишутся. Впрочем, всех устраивало изначально отсутствие четких дедлайнов. Да и потом, лето же. Кто-то уехал на Кипр отдыхать, кто-то в Сочи, а сидеть и колупать скрипты, отлавливать ошибки в bash
(set -xe наше всё!) — дело неблагодарное.
Началось всё, как обычно, с идеи протестировать то, что предлагают нам вендоры. Сразу возник вопрос — чем тестировать? Сошлись на том, что тесты должны быть повторяемыми, и ничего более распространенного в народе, чем Iperf3, пока не придумали. Хотя были отдельные упоротые личности вроде меня, кто хотел использовать flent с возможностью автоматического построения красивых графиков. Спойлер — ничего хорошего из этого не вышло.

Для начала нужно было подготовить сервер со всем необходимым инструментарием. До дня X оставалось ровно два дня. Нужно было что-то делать. Андрей Boolocka любезно предоставил виртуалку с Ubuntu 20.04 на которой я раскатал всё необходимое, эдакий джентльменский набор из iperf3 + iperf + flent/netperf. Потом, немного подумав, решили что может пойти не так вообще всё, и нужен какой-то способ а-ля Speedtest через браузер. Сперва выбор пал на поделие которое даже не хочется называть. И уже в первом приближении это оказалось хоть и опенсорсной, но обфусцированной горсткой фекалий, отправляющей статистику куда-то налево. После чего раскатали OpenSpeedtest и он показал себя просто великолепно. Всё понятно, можно менять количество потоков, задержки, интервалы измерений. Красота!
Параллельно с этим был подготовлен LIVE ISO образ ubuntu с аналогичным джентльменским набором для загрузки на ноутах. Идея была в том чтобы все использовали одни и те же драйверы, одни и те же прошивки и ПО было максимально одинаковым. Образ загрузился, я даже погонял какие-то тесты дома в контролируемой среде, моя совесть была чиста. После обретения некоторой щепотки уверенности я пошел спать и нужно было только дождаться вечера завтрашнего дня.

В час X мы пересекли порог учебного центра Комптек. не все, конечно, основной состав подтянулся в аккурат перед подачей пиццы. Совпадение? Не думаю. Пицца не успела остыть и была успешно, но безвозвратно протестирована.
В нашем арсенале числилось несколько сытых инженеров, X айфонов, Y ноутов с модулем Intel ax200/201, Huawei P50, несколько Samsung Galaxy разных мастей, беспроводные точки доступа 1, 2, 3 и . А так же Eltex (модель), я знал что рано или поздно мы перейдем к тестированию и этой точки.


Первый фейл случился с ISO образом. На некоторых ноутах он просто был бесполезен, так как iwlwifi из состава дистрибутива отказывался видеть некоторые ревизии ax201 (сюрпрайз, мазафака). А установить netperf/netserver на винду - это отдельный квест. Так что, всё пошло по изначальному плану с iperf3. На смартфонах все установили кто что мог. Aruba Utilities заработал на большинстве android смартфонов и я склоняюсь к тому что это самое нормальное приложение для тестов на сегодняшний день. На ноутах раскатали Iperf3(3.7). Серверная часть состояла из скрипта, запускающего Iperf3 в режиме сервера на двадцати разных портах. Каждому устройству был назначен свой порт, а результаты замеров бережно складывались в директории по номеру порта. Дальше дело оставалось за малым - распарсить, перевести в какой-то более-менее читаемый формат и понять что же там в эфире происходило на самом деле.

Первым решили тестировать Ruckus.
Замеры показали несколько с(т)ранные результаты. А потом Boolochka обнаружил что регион выставлен как US (упс). Замена на RU не дала абсолютно ничего. Всё так же.
Пропускную способность выедает Huawei P50. При этом, характер трафика рваный. Почти у всех клиентов пропускная способность падает в 0 и потом восстанавливается. Это похоже на перекидывания горячего пирожка. То есть, это не похоже на алгоритм, разделяющий общий бюджет примерно равномерно на всех. Это больше похоже на некоторый нерасторопный шейпер, у которого клиент быстро выедает полосу, затем клиента бьют по рукам, но через некоторое время он с новыми силами возвращается за своей порцией трафика. И так по кругу до бесконечности. Хотя, чего рассказывать, смотрите сами.






Ruckus R750


Все разом скачивают (Тест 1):



Все разом скачивают (Тест 2):





Все разом скачивают (Тест 3)



Все разом скачивают (Тест 4)





Все разом скачивают (Тест 5)




Вывод:


Это похоже на шейпер, умеющий одновременно следить только за определенным количеством клиентов. Видна четкая “полка” выше которой клиентам сложно пробиться. Но она справедлива не для всех. То есть, случайным образом незначительная часть клиентов выедают всё что можно, подавляя остальных.
Это моя гипотеза, но похоже что обработка происходит с некоторым квантованием по времени. И небольшая часть клиентов как-бы проскакивают на второй круг. Это приводит к тому что они потребляют в два раза больше трафика чем им выделил шейпер. Но, как я описал выше, существует вероятность того что кто-то совсем выбьется и съест всю полосу. Короче, создается стойкое ощущение, будто хотели как лучше, а получилось как всегда.

Отдельно отмечу, что Huawei P40 всегда показывал кратно большие результаты по сравнению со средним по больнице. Мне удалось поговорить с анонимом, имевшим отношение к проектированию трактов и всяческого RF в этой славной компании.
Отзывы были по большей части положительные и похоже что там инженерам ставятся задачи “выжимаем всё что можно” и люди реально бьются за дополнительные децибелы. Возможно, на графике мы видим следствие подобного отношения к разработке продуктов. Ни в коем случае не реклама, просто сопоставляю факты и свою субъективную картину мира.


Еще у нас появилась гипотеза, заключающаяся в том что Linux машины мешают. Ну, как это обычно бывает, во всём виноват Linux. Прямо не отходя от кассы проверили эту гипотезу.


Все разом скачивают, но без Linux (Тест 1)



Все разом скачивают, но без Linux (Тест 2)




Вывод:

Чуда не произошло. Без Linux машин или с таковыми, разницы нет. Хотя бы сказал что даже хуже стало, но это не точно. Надо более детально проанализировать. CSV файлы есть, будет неплохо если что-то подключится, нарисует более красивые графики, посчитает среднюю пропускную способность, отклонение от медианных значений, итп. Но это я отклонился. Короче, пытливый ум инженеров захотел проверить еще одну гипотезу и подключить 802.11ac-only клиента.

Все разом скачивают, 1 legacy ac-only клиент (Тест 1)



Все разом скачивают, 1 legacy ac-only клиент (Тест 2)





Все разом скачивают, 1 legacy ac-only клиент (Тест 3)




Вывод:


Вот это уже ярко выраженные "полочки", как будто по лазерному уровню прибивали.
Опять наш гипотетический квант, двойной квант, и беспредельщики.
Ну и бросается в глаза что общая средняя пропускная способность выше.
То есть, как будто годами вендор точил катану и всё адаптировал под 802.11ac, но тут пришел OFDMA, ресурсные юниты, а механизмы управления очередями пришлось спешно переделывать. Переделали как смогли.
Возможно, мы увидим как с обновлениями ПО картина станет меняться. Всё же, работы ещё много. Беспроводные точки доступа делать - это вам не полочки прибивать.


Но вдруг из зала кто-то замечает, что у него обновляется винда, так как нашла доступ в интернет и подумала что сейчас самое время. Ну да, ну да...
Ничего не остается как отрубить доступ в интернет и повторить тест.




Все разом скачивают, отключили доступ в интернет для надежности (Тест 1)




Все разом скачивают, отключили доступ в интернет для надежности (Тест 1)




Вывод:

Да всё то же самое. Ради лулзов решаем протестировать еще и UDP.



Все разом скачивают, но по UDP(Тест 1)




Вывод:


Плохо, очень плохо. Я думал будет лучше, но очень плохо.
Надо переходить к тестам Upload.



Все разом отгружают (Тест 1)



Все разом отгружают (Тест 2)





Все разом отгружают (Тест 3)



Все разом отгружают (Тест 4)





Все разом отгружают (Тест 5)




Выводы:


Вот тут уже никаких "полочек". Абсолютная рванина и анархия. Бывает, подуспокаивается на уровне средних значений, но лишь иногда и ненадолго.
Ну и сразу видно нашего главного беспредельщика.
Никаких сюрпризов, это Huawei P40. Почему? Потому. Спросите у Huawei.




Хитрые рукусовские алгоритмы управления трафиком не спасают. По крайней мере, сейчас.


Средняя пропускная способность точно не превысит 200 Mbps.


Пропускная способность может скакать от 50 до 250 Mbps


Одно можно сказать точно - для сетей с шириной канала 20 MHz порты 2.5GB явно избыточны.


Выводы как будто писал Капитан Очевидность, но когда ты видишь это на графиках, оно как-то ещё больше очевидно становится.

Снимаем Ruckus со стойки, одеваем Ruijie.

Ruijie RG-AP840

Все разом скачивают (Тест 1)



Все разом скачивают (Тест 2)




Все разом скачивают (Тест 3)



Все разом скачивают (Тест 4)





Все разом скачивают (Тест 5)





Выводы:

Никаких ярко выраженных полок. Ну, то есть, какие-то уровни прослеживаются, но явно не так как у Ruckus. И, что самое интересное, более стабильная общая пропускная способность. Да и клиенты по сравнению с Ruckus как-то эффективнее используют эфир. Да, это не "полочка", это пила с очень мелким зубом. Постоянно у кого-то будет нулевая пропускная способность, но событие происходит чаще и доставляет меньше боли.
А вот средняя пропускная способность, как будто, ниже. Но это еще предстоит обработать, посчитав точнее.

Приступаем к тестам Upload.



Все разом отгружают (Тест 1)



Все разом отгружают (Тест 2)




Все разом отгружают (Тест 3)




Все разом отгружают (Тест 4)



Все разом отгружают (Тест 5)




Выводы:


Это какое-то чудо чудное и диво дивное. Huawei опять в стане беспредельщиков. и уделывает всех. Возможно, за счет него Ruijie и обогнал Ruckus по итоговой средней пропускной способности. Китайцы явно о чем-то там договорились и нам не сказали. Давайте отключим читера и повторим тест.



Все разом отгружают, но без Huawei


Все разом отгружают, но без Huawei и поменялись местами в комнате (тест 1)




Все разом отгружают, но без Huawei и поменялись местами в комнате (тест 2)



Все разом отгружают, перезагрузили точку




Выводы:

Анархия во всей красе как она есть. Кто успел - тот и съел. Часть клиентов успевают занять полосу и не пускают остальных.
Субъективно, опять же, но как будто Ruijie не заморачивались особенно сильно и не старались внедрить хитрые алгоритмы управления трафиком. В итоге оно как-то работает и в некоторых сценариях даже превосходит других вендоров.
Но сегодняшние клиенты пока слишком глупы чтобы договориться, поделить и сделать хорошо всем.

Вот так и закончился первых день. От пиццы не осталось даже запаха, мы порядком проголодались, у всех в голове шелестели свои мысли и догадки о том что делать и кто виноват. Но нас ждал ещё один увлекательный день тестов.


ELTEX WEP-3ax


Все разом скачивают (Тест 1)



Все разом скачивают (Тест 2)




Все разом скачивают (Тест 3)




Все разом скачивают (Тест 4)




Все разом скачивают (Тест 5)




Выводы:
О господи, что это? Знакомые "полочки". Прямо как у Ruckus. И снова попадаются клиенты которым шейпер не указ. Ну, то есть, они явно прорываются сквозь хитрые алгоритмы, занимая кратно больше чем другие.



Все разом отгружают (Тест 1)



Все разом отгружают (Тест 2)




Все разом отгружают (Тест 3)



Все разом отгружают (Тест 4)





Все разом отгружают (Тест 5)





Выводы:


Так и просится пошутить про пики точеные. Ну а характер трафика носит спорадический характер. То есть, никакого управления, кто успел - тот и занял полосу. Сколько занял - столько и занял.



MIST AP43

Все разом скачивают (Тест 1)



Все разом скачивают (Тест 2)





Все разом скачивают (Тест 3)



Все разом скачивают (Тест 4)




Выводы:


Никаких "полочек", но эфирное время более-менее справедливо распределяется на всех. Бывает, что пропускная способность падает до нуля, но тут же восстанавливается. Ещё есть над чем работать, но видно что управление трафиком ведется. И оно не такое топорное как у Ruckus. Более мягкое. Не знаю хорошо это или плохо, но мне нравится. Приступим к тестам Upload.


Все разом отгружают (Тест 1)



Все разом отгружают (Тест 2)





Все разом отгружают (Тест 3)



Все разом отгружают (Тест 4)




Выводы:


По части стабильности общей Upload пропускной способности это пока лучшая точка доступа.
Да и на графиках видно что у нас кому-то отдается больше, кому-то меньше, но всем хватает. Да, не идеально, с пиками, но ситуация явно лучше чем у других. Видимо, что-то происходит под капотом и присутствует интеллектуальное управление, но мягкое. Это позволяет читерам вроде Huawei P40 ненадолго получить преимущество, но лишь ненадолго. Ситуация довольно быстро меняется и приходит в норму.



Общие выводы

Всё зависит от всего.

А если серьезно, то некоторые клиенты демонстрируют особую прыть. Среди таких можно выделить подкатегории:


Явные читеры.
Такие как Huawei P40, например. Эти ребята просто захватывают эфир и выдавливают всех остальных.


Особо ушлые.
Такие как Surface Pro 7. Они не вытесняют остальных из эфира, но если где-то имеется свободное место, то такие клиенты быстрее остальных его занимают и уже не отдают.



Вендоры явно занимаются тюнингом своего стека, но этот тюнинг имеет ограничения.
В случае Ruckus результатом становится относительно справедливое распределение между клиентами и пилообразным трафиком, но “слотов мало и на всех их не хватает”, из-за чего неизбежно кто-то раскачивает лодку и может выедать больше среднестатистического эфирного времени. У меня в голове всё ещё формируется гипотеза про “кванты” времени, косоглазый round-robin планировщик и наличие алгоритмических уязвимостей, позволяющих отожрать всю полосу или её большую часть. НО я пока не готов оформить это в виде чего-то осмысленного.


С другой стороны, есть такие ребята как MIST и у них отсутствует ярко выраженная “полка”. Некоторое мягкое управление трафиком присутствует, но загрузка линка получается ровнее. Ситуация почему-то отдаленно напоминает мне поведение ассемблерных программистов на заре развития языков более высокого уровня. Уж они-то точно знают кучу хаков, помогающих сделать программу быстрее. Да вот беда, системы становились на столько сложными, что отдельно взятые хаки, ускоряющие отдельно взятые сценарии, могли ничего не менять или даже навредить всей системе в других случаях. Видимо, лучшая стратегия помощи - не мешать (но это не точно). Потому что у Ruijie такой подход приводит как раз к ситуации явного неравномерного распределения. Пока клиентов два или три - никто может даже и не заметить. А вот когда их становится двадцать или тридцать на одну точку - анархия перестает работать.

Спасибо что дочитали до конца.
Результаты замеров и скрипты можно взять тут:

https://github.com/klukonin/Wireless_Testing

Комментарии