Библиотека сайта rus-linux.net
На горизонте у Linux улучшенный Wi-Fi
Оригинал: "Better Wi-Fi on the Linux Horizon"Автор: Карла Шредер (Carla Schroder)
Дата публикации: 17 / 4 / 2007
Перевод: Н.Ромоданов
Дата перевода: сентябрь 2009 г.
Беспроводные сети под Linux вступают в новую эру - в эру блаженства и простоты. У пользователей и сетевых администраторов будет много времени, чтобы поваляться на природе под теплым солнышком, поскольку их беспроводные системы будут довольно урчать и не будут их беспокоить и выходить из строя.
Да, возможно, еще далеко до подобной утопии, но благодаря огромному объему тяжелой работы, выполненной талантливыми разработчиками положение, определенно, улучшается.
Так в чем же разница? Совершенно новый стек ядра беспроводных сетей (WLAN), который позволит заменить разнородные и плохо сочетаемых друг с другом подходы к настройке WLAN, используемые в настоящее время, на единую унифицированную подсистему, поддерживающую все драйвера беспроводных устройств. Все началось с фирмы Devicescape, реализовавшей в мае 2006 под лицензией GPL свой ранее коммерческий драйвер Advanced Datapath. Драйвер сейчас имеется в ветке ядра, поддерживаемой Андреем Мортоном (ветка mm). Возможно, что очень скоро он может быть вставлен в основное ядро. Devicescape объявила, что эти драйвера являются "первой нативной поддержкой Wi-Fi в ядре Linux ". "Что?" – вскрикните Вы - "Linux всегда имел беспроводную поддержку!". Это - так, но как насчет мешанины противоречащих друг другу и несоответствующих стандартам драйверов и утилит для различных типов беспроводных устройств? До сих пор не было унифицированной подсистемы, согласованной с Wi-Fi.
- 802.11 legacy
- 802.11a
- 802.11b
- 802.11g
- 802.11i
- 802.11n
Их гораздо больше – почти для всех букв алфавита. Так что когда Вы, например, видите 802.11n, то это – спецификация, даже если это выглядит как специальный знак. 802.11x – неофициальное обозначение, означающее "все официальные стандарты 802.11". "А что случится, когда дойдем до конца алфавита?". Уже почти дошли - 802.11x зарезервировано и не будет использоваться с тем, чтобы избежать коллизий со стандартом 802.1x, используемом для управления доступом на уровне портов. Знаю, знаю, не вините меня, я лишь рассказываю то, что знаю.
Для любой спецификации 802.11 имеется ряд беспроводных расширений, выходящих за ее рамки. Наиболее часто встречающиеся – "turbo-boost" (турбо-ускорение) или "speed booster" (ускорение), которые разрекламированы для некоторых беспроводных устройств. Каждый разработчик реализует эти возможности по-своему. Некоторые используют уплотнение канала, некоторые – увеличение числа пакетов или фреймов. Это также вносит беспорядок в стандарт 802.11n, в котором определено понятие MIMO (multiple input, multiple output antennas – многоканальные антенны), что также расхваливается как способ повышения скорости. Большая часть этих возможностей несовместимы друг с другом и вызывают различные проблемы, именно поэтому Вы читаете "покупайте все свое оборудование одного и того же изготовителя". Вот в чем червоточина! По этой причине мы имеем промышленные стандарты.
Хорошая новость в том, что в итоге все лишнее само собой уйдет, поскольку это все, в конце концов, гримасы технологий переднего края.
Тем временем вернемся к сетям WLAN
Джон Линвиль, ас в разработке ядра и любезно ответивший на вопросы, поделился некоторыми интересными сведениями о ясно написанном новом коде, реализующим в Linux беспроводный доступ.
Задача текущего момента – заменить устаревшие (но успешно работавшие в свое время) расширения пакета wireless-tools слоем ieee80211+softmac и, возможно, однажды подсистемой ieee80211. Дж.Линвиль поясняет некоторые изменения, сделанные для поддержки современного беспроводного оборудования:
"Когда самые первые беспроводные сетевые устройства постарались сделать похожими на адаптеры Ethernet, то возникло множество проблем. Обычно для этого использовался контроллер, размещенный на плате и выполнявший встроенную программу, которая принимала от системы фреймы ethernet, затем при передаче преобразовывала их во фреймы беспроводной сети, а при приеме - выполняла обратное преобразование. Эти устройства назывались "full MAC" устройствами, поскольку они сами с помощью своих аппаратных средств реализовывали эту функциональность слоя MAC. Конечно, наличие контроллера и памяти для выполнения встроенной программы увеличивает стоимость устройства. Поэтому в большинстве устройств, выпущенных совсем недавно (особенно в устройствах потребительского класса), количество таких компонентов минимизировано или они совсем исключены. Из-за этого часть работы или вся работа, связанная с беспроводной доступом, перекладывается на процессор системы. Такие устройства называются "half MAC" или "soft MAC", поскольку они для реализации функциональности слоя MAC используют специальные программы".
В настоящее время слой ieee80211+softmac выполняет эту работу для ряда устройств. Заметным исключением являются интерфейсы, базирующиеся на чипсете Atheros, которые поддерживаются драйверами MadWiFi.
По словам Дж.Линвиля: "Некоторые драйвера (в особенности MadWifi и многие драйвера для "других" операционных систем) просто сами реализуют беспроводную обработку, хотя для сетевого стека системы они сами все еще выступают в роли устройств, более или менее похожих на ethernet устройства. Проблема здесь в том, что после этого каждый драйвер сам ответственен за реализацию этой функциональности. Это не только приводит к напрасной трате программистского таланта, но также может быть причиной ошибок из-за неодинакового поведения различных драйверов и несогласованной их поддержки в будущем".
Этим объясняется множество проблем, возникающих при попытке сделать точку доступа на основе Linux. Я использую интерфейсы на основе Atheros, поскольку они предоставляют всю функциональность, которая мне требуется: режим AP (точка доступа), Managed, Ad-Hoc, Monitor (мониторинг), and WDS (Wireless Distribution System – беспроводная распределенная система), которые поддерживаются сетями смешанного типа. Но у Atheros имеется печально известная проблема blob для бинарного ядра. Другие беспроводные интерфейсы просто не делают того, что мне нужно.
Однако есть надежда, что появится выбор: "Один из примеров - это то, что в сегодняшних основных ядрах Linux режим точки доступа AP поддерживается только для очень маленькой горстки оборудования, хотя, если авторы драйверов не хотят делать всю работу самостоятельно, он потенциально должен поддерживаться существенно большим числом устройств. Предоставив компонент mac80211, сообщество Linux, имеющее дело с беспроводной технологией, может предоставить согласованный набор функций для широкого диапазона беспроводных драйверов и минимизировать усилия по созданию и поддержки этих драйверов. Несомненно, это звучит впечатляюще!"
- • mac80211
- Общий базовый драйвер для устройств soft-MAC
- • cfg80211
- API ядра беспроводного интерфейса (API - интерфейс прикладного программирования)
- • nl80211
- API пространства пользователя
Еще какое-то время будет необходима существующая система ieee80211. Она поддерживает старые драйвера ipw2100 и ipw2200 (для интерфейсов Intel Pro), которые являются full-MAC устройствами. Текущие планы – переработать код в ieee80211 и mac80211 и использовать его, чтобы сделать новую правильную библиотеку lib80211. Затем оставшиеся части ieee80211 будут преобразованы в библиотеку, предназначенную специально для поддержки драйверов the ipw2100 и ipw2200, которая будет называться libipw или как-нибудь созвучно.
Поддерживаемые драйвера и устройства
Список устройств Вы найдете по ссылке LinuxWireless.org/en/users. Здесь представлены такие изготовители, как Ralink, Realtek, Atmel, Broadcom, Intel, Texas Instruments и Intersil. Показательно отсутствие Athero из-за того, что нарушены нормативы на blob в двоичном коде и по другим причинам. Но даже здесь, согласно Дж.Линвилю, также есть надежда на решение различных вопросов и внесение в этот список устройств, использующих чипсет Atheros.