С одной стороны, можно написать сюда несколько хитро построенных предложений, чтобы вас заинтересовать: максимум странных словосочетаний, изысканных метафор и подозрительных соседств в одной фразе. С другой стороны, можно поступить куда проще: взять и сказать, о чём этот подкаст, напрямую.
Так вот, вместе с менеджером продукта Wi-Fi
Андреем Парамоновым (с которым кто-то из вас не раз обсуждал блеск и нищету корпоративного Wi-Fi) мы вспоминаем, с чего этот самый Wi-Fi начинался, куда идёт, с какими проблемами сталкивается и как он в первом приближении устроен. Можно не читать курс по беспроводным сетям перед прослушиванием — но лучше, конечно, прочитать, потому что ещё никому в мире не повредил прочитанный курс по беспроводным сетям.
Расшифровка...
На свете осталось мало живых протоколов, которые до сих пор тянут в себе обратную совместимость тридцатилетней — ну, или хотя бы сравнимой — глубины. Естественно, 802.3, он же Ethernet — это первое, что сразу приходит на ум. Потом вспоминается PCI express, кто-то даже упомянет USB. Сегодня мы говорим про ещё один протокол с теми же заслугами — Wi-Fi.
Естественно, с самого начала понятно, что наименование протокола не избежало путаницы. Начался и продолжает развиваться он под позывным 802.11, который ему присвоила знаменитая организация IEEE, под эгидой которой наш герой продолжает расти и крепнуть. Название Wi-Fi же прилетело со стороны отдельной организации, зовущейся Wi-Fi альянс — потому что каждый взрослый человек, читавший «Сказку о тройке» Стругацких, знает: чем больше разных комитетов и заседаний — тем логичнее и правильнее результат их работы. Альянс — место, где за определённый денежный вклад устройства признают совместимыми друг с другом. IEEE — страна чудес, где в стандарт впихнут массу безумных функций, совместимость которых и будет проверяться Альянсом. Хорошо, когда система замкнута, самодостаточна и продуктивна.
Однако именно такой внимательный контроль за совместимостью устройств и привёл к полному и широчайшему распространению протокола во всех видах устройств — ведь это просто-напросто удобно и для разработчика, и для юзера: берёшь устройство со значком вайфай — и точно знаешь, что уж на каком-то уровне, при каких-то настройках и при какой-то фазе Луны вся конструкция худо-бедно заработает и будет передавать данные. Готово, задача выполнена, и случайный роутер с Авито обеспечивает связью и последний айфон, и безродную «умную» лампочку с Алиэкспресса. Не так быстро, как хотелось бы, и не так безопасно, как можно было бы, но как-то — а это уже достаточно серьёзно в наш век безвозвратного устаревания любого решения за полтора года.
Ну, и не стоит забывать про колоссальную, невероятную надёжность протокола, которая одновременно является и его сильной стороной, и Ахиллесовой пятой: в отличие от того же Ethernet, в котором недообжатый контакт в вилке 8P8C приводит к чёткому пониманию, что что-то пошло не так, вайфай прощает почти всё, что можно сделать с ним не так. Какие уж тут лучшие практики планирования: иногда вайфай способен выдержать абсолютные издевательства вроде нескольких направленных антенн, прикрученных к одной точке доступа и светящих в разные стороны — и при этом он всё равно будет как-то пыхтеть, работать и медленно, с трудом, но проталкивать пользовательские данные по волнам многострадального эфира. Это вам не пассивные оптические сети, которые лягут всем кустом от оптического модуля не той системы — протокола надёжнее Wi-Fi, пожалуй, не найти. Каждый слушатель может легко убедиться в этом на практике: достаточно поглядеть на собственный домашний роутер, доставшийся от провайдера и лежащий в зеркальном шкафу-купе на верхней полке.
Надёжность эта была заложена на самом-самом старте протокола и базировалась на двух краеугольных ограничениях радио: во-первых, орут все куда громче, чем могут расслышать (что вроде бы хорошо), во-вторых, на одном и том же канале нельзя никак скрыться от чужих разговоров (поэтому это и называется общей средой). Следствием из первого ограничения становится невозможность одновременно говорить и слушать (да и как иначе, если громкость передачи может быть в МИЛЛИАРД раз больше чувствительности приёмника — если мы попробуем что-то услышать в момент работы нашего передатчика, то больше одной попытки у нас не будет). Следствие второго — невозможность одновременной работы нескольких передатчиков: никто не сможет разобрать несколько сигналов, пришедших на приёмник одновременно. Как в такой ситуации вообще решить, кто когда передаёт, и не заглушить друг друга? Очень просто — на помощь придёт традиционный детский конкурс с стульями (не теми) и музыкой!
Правила помните? У нас есть определённое количество детей, стульев на один меньше, чем число детей, и цикл расстройств и страданий, когда по очереди кому-то не хватает стула, и он выбывает из игры. Для того, чтобы из этой игры получился Wi-Fi, нужно поменять правила совсем чуть-чуть: стул мы оставим один для всех (это как раз и есть право на доступ к эфиру), а детей (клиентов сети) заставим кидать кубик. Для начала кинем кубик с шестнадцатью гранями, и каждый отойдёт от стула на столько шагов, сколько выпало. По хлопкам ведущего (таймер) все начинают делать по одному шагу в сторону стула. Первый, кто дошёл, получает право передавать свои данные, ура! — а все остальные снова бросают кубик (на этот раз число граней удваивается — их становиться тридцать две), и цикл повторяется заново. Если у самого несчастливого из всех число граней на кубике достигнет двух тысяч сорока восьми, и стула он всё равно не достигнет — этот ребёнок получает право заплакать, отказаться от игры и выкинуть данные пользователя в окно.
Как быть в ситуации, когда стула достигли одновременно двое детей? Мы помним, что усадить их на один стул нельзя — поэтому сорян, дети, победила дружба, удваивайте свои кубики и кидайте заново. Это называется коллизия, и весь описанный механизм специально зовётся Collision Avoidance, «избежание коллизий» — мы всеми силами стремимся этой ситуации не допустить — и увеличиваем количество вариантов, разводя детей подальше друг от друга с помощью чистых вероятностей.
И всё! Этого почти достаточно для максимально надёжной передачи данных в условиях общей среды и полной анархии в эфире — поверх этого танца клиентских устройств вокруг одного стула со временем добавились мелочи вроде кадров Ready to send и Clear to send (это чтобы все вокруг услышали, что кто-то займёт стул на определённое время, вне зависимости от того, слышно занявшего эфир всем или нет). Да, устраивать эту карусель перед каждым кадром напрямую бьёт по эффективности — в итоге солидную часть времени в эфире тишина, потому что все считают свои таймеры и шаги, и суммарная пропускная способность всей системы страдает — но нужно помнить, что совместимость и надёжность для вайфая куда важнее, чем максимальная пропускная способность в единицу времени, и задача обеспечить всех надёжностью и хотя бы вероятностью доступа к эфиру решена полностью. Ну, почти. Со звёздочкой.
Если в плане канального уровня вайфай, как УАЗ буханка, получился идеальным сразу и практически не требовал все эти годы сильных модернизаций (во всяком случае, регулярных), то на физическом уровне произошёл такой карнавал и цирк с конями, который внёс абсолютный хаос и привёл к лютейшим проблемам с и без того слабенькой эффективностью передачи данных. Хотите знать, при чём тут пресловутая Хеди Ламарр?
В общем, как и любой другой протокол под ведомством рабочей группы великой и ужасной IEEE, вайфай постепенно обрастал дополнениями и улучшениями. Связаны они были со всяческими новыми фичами, и в процессе разработки к числовому обозначению 802.11 добавлялись всё новые и новые буквы. Часть этих букв была важнее, чем другие, потому что вносили они очень и очень много важного и полезного, аккумулируя мелкие изменения и приводя к составлению новых наборов тестов на совместимость того самого вайфай альянса. Начало этому процессу было положено в 1999 году в виде стандарта 802.11a — следуя сразу за первым, который 802.11 без букв, он тут же заложил основы беспроводных сетей на годы вперёд и был абсолютно удачным для своего времени: тут тебе и канальные скорости от 6 до 54 мегабит в секунду, и свободный диапазон работы 5
Кстати, обратите внимание: именно диапазон с 5 до 6 ГГц исторически был первым, где появился тот вайфай, каким мы знаем его сегодня, и лишь после этого протоколу выделили уже толком никому не нужный диапазон 2,4 ГГц. Причин этому — само собой, масса, но основная состоит в том, что практически во всём мире он был и остаётся свободным от любых государственных ограничений. В этом диапазоне можно вещать что угодно где угодно, передавать всё, что хочется, в том виде, который умещается в выделенные под это 70 МГц эфира — в общем, почти полная вольница и анархия. Возможно, именно это и дало толчок к массовому развитию вайфая как общепринятого протокола ближней беспроводной связи. Можно уверенно сказать, что точно НЕ пошло на пользу вайфаю — это тот самый 802.11b.
Итак, представим ситуацию: мы — действующие члены рабочей группы 802.11b. Мы каждый день сидим и голосуем за правильные формулировки на странице 17 действующего черновика шестой версии нового стандарта, где глагол must должен быть заменён на глагол should — в общем, выполняем по-настоящему серьёзную работу. Наши коллеги в соседней рабочей группе выдали великолепный стандарт, который они сварганили фактически с нуля и в котором применили великолепные решения. Например, используется мультиплексирование с ортогональным частотным разделением каналов для передачи наших данных — исходный канал в 20 МГц разделили на 64 поднесущих, не забыли подумать о том, чтобы соседние каналы не залезали друг на друга, и для передачи данных оставили только 52 из них. Заранее подумали о том, как устройства будут быстро находить друг друга в эфире, и ещё 4 поднесущих заставили быть маяками в нервном и бурном эфире — мы называем их пилотными. Предусмотрели также и адаптацию модуляций и кодирования под постоянно меняющиеся условия эфира — ну, и великолепный надёжный способ доступа к среде продолжает делать сети на нашем стандарте пуленепробиваемыми по сравнению с другими конкурентными технологиями вроде первой версии Bluetooth, появившейся в том же 1999 году. Теперь перед нами стоит простая задача: сделать всё таким же прекрасным, но в другом частотном диапазоне.
В ситуации, когда в кармане есть великолепное решение, и сменилось лишь одно условие задачи — как поступили уважаемые члены организации IEEE?
Вариант первый: взяли всю логику уже имеющегося гениального решения и просто поменяли диапазон;
Вариант второй: решили всё придумать с нуля и по-другому, испортив весь новый диапазон на десятилетия вперёд.
Ваш ответ принят. Теперь правильный ответ.
Само собой, было принято решение сделать всё с нуля, и результат получился таким печальным, что по сей день его стараются не вспоминать, а совместимость с устройствами получившегося стандарта — фактически первое, что отключают при запуске сети. Как же так вышло?
Во-первых, вместо мультиплексирования с ортогональным разделением каналов решили вспомнить про метод прямой последовательности для расширения спектра, он же DSSS. Как вы можете вспомнить из прошлых подкастов, основы модуляций с расширением спектра приписываются голливудской актрисе Хеди Ламарр, только здесь вместо «перепрыгивания» на случайные частоты спектр сигнала расширяется за счёт превращения исходной последовательности битов в псевдослучайную последовательность, которой и модулируется несущая. На бумаге всё было здорово — если превращение произошло при помощи неизвестного кода, то получившийся сигнал почти не отличим от общего шума для других устройств, а низкая плотность мощности позволяет создавать меньше помех остальным в эфире. Но на практике оказалось, что для достижения канальных скоростей, хоть как-то сопоставимых с предыдущим стандартом, приходится занимать не 20 МГц ширины канала, а уже 22 МГц — из-за выбранной последовательности Баркера, тактовой частоты, бла-бла-бла, не особо важно, почему: главное, что каналы в диапазоне 2,4 ГГц нарезаны с шагом 5 МГц, а ширина канала стандарта 802.11b теперь встаёт поперёк этой сетки, и для того, чтобы две соседние точки доступа не мешали друг другу, их нужно ставить не на 1 и 5, а на 1 и шестой каналы.
Но это не самая большая проблема — до сетей высокой плотности далеко, смартфоны ещё не придумали, и трёхканальная схема выглядела не сильно хуже четырёхканальной. Главный подвох прятался в канальных скоростях и совместимости, которая оказалась испорчена, что называется, впрок. Два частотных диапазона, 2,4 и 5 ГГц, оставались с нами в течение следующих двадцати лет, и прогресс за это время не стоял на месте — IEEE успела налепить к числам 802.11 буквы вплоть до ax к моменту появления нового доступного для устройств вайфай диапазона. Для того, чтобы обеспечить взаимную работу в одной сети и новейших, и доисторических устройств, решение было принято поистине простое и изящное: всю служебную информацию, которую должен понимать каждый участник процесса, нужно передавать на самой низкой скорости этого диапазона. Если мы в медленном заголовке скажем, что эфир будет занят в течение определённого времени, то неважно, как быстро и современно мы говорим потом: глуховатый дедушка-адаптер уже сделал вывод, что кто-то занял эфир, и не пытается влезть в дальнейший не понятный ему разговор. Великолепно!
Поскольку в диапазоне 5 ГГц самой медленной канальной скоростью являются 6 Мбит/с прямиком из конца 90х годов, то и вся самая-самая основная служебная информация летит на этой скорости. Уже, конечно, слабовато, но ещё терпимо. А вот 802.11b принёс с собой минимальную скорость передачи в ОДИН мегабит в секунду. Один-единственный. Готово: с этого прекрасного момента даже минимальный объём служебной инфомрации отнимает у любой сети в этом диапазоне в шесть раз больше времени! Ура! Кстати, по умолчанию, без дополнительных ухищрений мультикаст по вайфаю тоже летит на самой низкой скорости из всей истории диапазона. Что скажете насчёт ОДНОГО мегабита в секунду на канальном уровне?
В итоге IEEE поняла, что породила своими руками чудовище, и через несколько лет наконец сделала то, что было логично сделать с самого начала: взяла 802.11a, без изысков перекинула его в другой диапазон и назвала результат 802.11g, но ущерб был уже нанесён — совместимость требует своих жертв, и 11b продолжает угнетать своей кровавой тенью целый частотный диапазон спустя двадцать с лишним лет и несколько миллиардов произведённых устройств. Иногда благие намерения одних открывают ад для всей цивилизации — и, само собой, нельзя назвать что-то по-настоящему дьявольским изобретением, если к этому не приложила руку компания Apple: ноутбуки iBook G3 первыми на рынке массово комплектовались вайфай адаптерами — и, естественно, это был ненавистный 11b, а не достойный 11a.
Ну, а потом, как и любая другая технология, вайфай стал развиваться сразу в куче иногда противоречащих друг другу направлений, отвечая всё новым и новым требованиям и давая пользователям и администраторам сетей всё больше и больше инструментов для стабильной, спокойной и безопасной работы. Постепенно сеть вайфай в стандартном офисе превратилась из диковинки в необходимость, и оказалось, что надо управлять не одной точкой доступа, а сразу несколькими десятками или сотнями их. IEEE решил, что такие мелочи не должны отвлекать членов организации от задумчивого взгляда в туманное будущее протокола, и задача организации такой сети легла на плечи самих производителей — так неписаным стандартом стало наличие в такой сети отдельного узла для управления точками доступа, контроллера беспроводных сетей. Конечно, если сначала сказать всем разрабатывать собственные решения, а потом спохватиться и попытаться загнать обратно в пространство стандартов, то результатом будет просто масса бесполезной работы — так и получилось: попытки IEEE потом быстренько дописать стандарт общения точек между собой успешно провалились, потому что ни один производитель не захотел отказываться от своего гениального проприетарного решения в пользу совместимого со всеми остальными. Так и повелось: даже спустя много лет каждый производитель сам решает задачу управления точками доступа — и мы, WowNet, здесь тоже не исключение. Контроллер сети может быть как виртуальной машиной, так и отдельной железкой, но логика работы его по-прежнему проста: собрать инфу с точек доступа, принять какие-то решения по управлению ими и доставить эти решения до конечных пользователей сети.
Какие решения нужно принимать? Ну, самое главное — это, конечно, разобраться с каналами и мощностями. Уже два диапазона вайфая, 2,4 и 5 ГГц, дают ТРИДЦАТЬ каналов по 20 МГц, каждый из которых может быть занят точкой и принимать и передавать пользовательские данные. Соседним точкам, само собой, хочется разойтись по разным каналам, потому что вокруг каждого стула может проходить своя игра, не мешающая другой группе детей — тем самым суммарная пропускная способность всей сети повышается. Когда в нашей сети одна точка доступа — решение принять легко: послушали эфир перед тем, как начать свою игру, встали на нужный канал — и всё здорово. Но уже с двух точек доступа процесс становится интереснее и интереснее, и к моменту, когда в обычном бизнес-центре в каждой точке пространства слышен десяток соседских точек доступа, не считая полусотни наших в нашей собственной сети, выбор правильного канала для каждой точки превращается в увлекательный аттракцион. Мы уже не можем полагаться просто на измеренный на каждом канале уровень сигнала от других точек — нам нужно использовать другие величины, позволяющие учесть как можно больше неизвестных. Да, и не стоит забывать: точки доступа висят на потолке, где ситуация в эфире слегка отличается от пола, по которому ходят клиенты с зажатыми в потных ладошках смартфонами, и все решения, которые мы примем только на основании параметров физического уровня, измеренных на потолке, обречено не соответствовать реальному положению вещей. Можно пойти на ухищрение и, к примеру, завести пул специальных подконтрольных клиентских устройств, которые называются сенсорами: они будут стоять где-то на столах и собирать информацию, которую контроллер потом как-то учтёт, но это лишние расходы на дополнительные устройства, лишние порты кабельной сети… Мы пошли другим путём: вооружились математикой и статистикой, выбрали несколько целевых величин, которые вся сеть будет стремиться улучшить — и намазали на всё это слой машинного обучения. В итоге сеть оперирует массой собранных параметров, но главной её целью является повышение реальной пропускной способности на реальных клиентах сети в каждый момент времени. С мощностью примерно то же самое: сеть всегда балансирует между состояниями “если крикнем громче, то клиент услышит нас лучше” и “если крикнем громче, то нас услышат возле другого стула на этом же канале, где идёт своя игра”, и правильный алгоритм постоянно подправляет мощность передатчиков всех точек доступа в заданных пределах, чтобы и покрытие было устойчивым, и итоговая пропускная способность всей сети была максимально возможной в сиюминутных условиях. Нетривиально, математично, великолепно!
Отлично, точки доступа приняли информацию, на каком канале каждая из них должна работать, хитрым способом на лету перескочили на эти каналы, утянув за собой клиентов, и теперь там трудятся. Всё прекрасно — до тех пор, пока клиентские устройства стоят возле своих точек доступа и не пытаются никуда переместиться. Тут на сцену выходит великий и ужасный бесшовный роуминг, который в вайфае, как морская свинка, на самом деле не бесшовный и не роуминг, но тем не менее все привыкли его так называть. Нам искренне и от всей души хочется, чтобы клиентское устройство по ходу своего движения оперативно обнаруживало другие точки доступа с той же сетью вайфай и шустренько на них переключалось до возникновения явных проблем и тикетов в поддержке. Только силами самих клиентов сделать такое сложно. Судите сами: каждая точка доступа отправляет в эфир специальные кадры-маяки, которые сообщают о её существовании и возможностях, примерно раз в 100 миллисекунд. Даже в двух диапазонах у нас тридцать возможных каналов, и вместе в худшем варианте это даёт нам полные три секунды поиска всех точек доступа вокруг. Потом нужно выбрать лучшую из тех, кто вещает то же имя сети, и в итоге к моменту, когда клиентское устройство наконец-то приняло решение, мы прошли по коридору пять метров, все TCP-сессии порвались, видеозвонок в смартфоне заквакал и рассыпался, а ситуация в эфире поменялась. Супер! Естественно, есть стандартное решение этой проблемы — стандарт носит кодовое обозначение 802.11k, и при его поддержке точками доступа и клиентами смартфон или ноутбук имеет возможность прямо спросить у сети список ближайших точек доступа и принять решение, куда идти дальше, почти мгновенно — вот, собственно, и вся бесшовность, которая нам доступна. Но как этот список составить?
Стандарт ничего не говорит о правильной методике, поэтому большинство производителей идёт по такому же пути, как и с распределением каналов: точки доступа слушают друг друга и принимают на основании собранной информации какие-то решения. Само собой, минусы у такого пути те же самые: ситуация на потолке в эфире не та же самая, что внизу, смартфон в ладошке, экономящий батарейку, видит всё слегка иначе, и так далее. Мы в компании Wownet и здесь сделали проще, правильнее и логичнее: зачем пытаться понять взаимное расположение точек доступа по каким-то косвенным показателям типа уровня сигнала, если можно просто расставить их на плане помещения? Без плана наши точки доступа поступят так же, как и любые другие, но вот с указанным масштабом и корректной расстановкой в интерфейсе контроллера списки соседств будут правильными, чёткими и логичными. Конечно, это не отменяет корректного планирования беспроводной сети — но такой способ построения соседств приближает правильно спроектированную сеть к оптимальным характеристикам.
Что ж, теперь вы сами можете сделать вывод, почему скорость в эфире делиться между всеми устройствами на одном канале, даже если они относятся к разным сетям (стул-то остался один!), почему в офисе не нужно выбирать каналы шире 20 МГц, хоть они и вроде как быстрее (потому что мы тогда приводим в свою игру больше детей, чем нам хочется), и так далее. Кстати, если заменить стул на какой-то весёлый напиток — то теперь у вас есть отличная игра на ближайшие посиделки в дружеской компании в длинном помещении с массой свободного места!
0 коментариев