Новый беспроводной демон Linux ищет более чистое соединение

В ELCE Марсель Холтманн (Intel Marcel Holtmann) рассказал о том, как новый Internet Wireless Daemon поможет оптимизировать стек связи Linux для IoT.

Если вы когда-либо использовали устройство для разработки встраиваемых Linux-систем с беспроводными сетями, вы, вероятно, извлекли выгоду из работы Марселя Холтмана, сопровождающего демона Bluetooth BlueZ с 2004 года, который выступал на конференции Embedded Linux Conference Europe в октябре.

В 2007 году Холтманн присоединился к Intel Open Source Technology Center (OTC), где создал ConnMan (подключение к Интернету), oFono (сотовая телефония) и PACrunner (обработка прокси).
В течение прошлого года Холтманн и другие разработчики OTC разрабатывали замену для WiFi-демона wpa_supplicant под названием IWD (Internet Wireless Daemon).
В процессе они упростили весь коммуникационный стек Linux.

«Мы решили создать беспроводного демона, который действительно работает на устройствах IoT», - сказал Холтманн в презентации под названием «Новый беспроводной демон для Linux».


Marcell Holtmann в ELCE с диаграммой, показывающей текущий коммуникационный стек Linux (слева) и новый, оптимизированный стек с беспроводным демоном IWD, заменяющим wpa-supplicant (справа)

(щелкните изображение, чтобы увеличить)

IWD в настоящее время в основном завершен, имеет меньшую площадь и более рационализированный рабочий процесс, чем wpa_supplicant, при этом добавляя поддержку новейших беспроводных технологий.
Демон также был разработан с помощью OTC Дени Кензиора, Эндрю Заборовского, Тима Корта, Рахула Рахула и Мата Мартино.

IWD нацелен на решение проблем в wpa_supplicant, включая отсутствие постоянства и ограниченную обратную связь.
«Wpa-соискатель ничего не помнит», - сказал Хольтманн аудитории ELCE в Берлине.
«Для сравнения, как BlueZ, oFono и neard [NFC], IWD имеет состояние, поэтому каждый раз, когда вы ремонтируете устройство, оно запоминает и перезапускает при перезагрузке.
Wpa_supplicant имеет функцию, которая позволяет вам переделывать конфигурационную сеть, но она настолько хакерская и проблематичная, что никто ее не использует.
Каждый хранит эту информацию на более высоком уровне, что усложняет ситуацию и создает дисбаланс ».

Wpa_supplicant может быть слишком всеобъемлющим, но при этом не может раскрыть ключевую информацию.
Демон сложен в использовании, потому что он добавляет поддержку «почти каждой ОС или беспроводного расширения», включая многие вещи, которые никогда не используются, говорит Хольтманн.
«Система абстракции действительно мешает вам».

Несмотря на свою способность «абстрагировать все», wpa_supplicant не предоставляет много информации.
«Вы должны много знать о WiFi и о том, как выполняются такие вещи, как разбор», - сказал Хольтманн.
«Я просто хочу подключиться, а не читать документ на 2000 страниц, чтобы узнать, что мне нужно использовать метод нажатия кнопок, чтобы получить свои учетные данные».

Другие ограничения с wpa-supplicant включают его зависимость от операций блокировки, при которой система должна запрашивать у каждого периферийного устройства подтверждение операций, прежде чем перейти к другим системам.
Это приводит к тому, что «система просто ждет, чтобы что-то произошло», - говорит Хольтманн.

У Wpa-соискателя есть и другие сложности, такие как «подвергание себя пользовательскому пространству как минимум четырьмя различными способами», сказал Хольтманн.
К ним относятся устаревший D-Bus v1 и все еще проблемный D-Bus v2, который «проглатывает состояния», а также интерфейс связующего и CTL, «который отлично подходит для пользователей, но для демона ужасен».

Чтобы восполнить ограничения D-Bus v2, общий беспроводной стек давно породил уровень абстракции над D-Bus и ниже ConnMan, называемый gSupplicant.
Хотя это помогло разгрузить работу от ConnMan, последняя все еще была перегружена.

Уменьшение сложности

С добавлением IWD, Хольтман и его команда полностью удалили GSupplicant.
Он также заменил другие интерфейсы пользовательского пространства одним обновленным уровнем D-Bus.
Кроме того, из нового стека были удалены inoctl и lib Netlink (libnl), которые Хольтманн назвал «блокирующим дизайном, который не может отслеживать изменения семейства». Libnl был заменен на Generic Netlink, которая предлагает обнаружение семейства.

Холтманн также исключил беспроводные расширения (wext), потому что «они сломаны и, надеюсь, когда-нибудь будут удалены из ядра», сказал он.
Новый беспроводной стек сохраняет cfg80211 и nl80211 (Netlink), хотя последний был модернизирован и перенесен в восходящий поток.

Команда OTC разработала новую встраиваемую библиотеку Linux (ELL), которая содержит таблицы, очереди и кольцевые буферы, чтобы уменьшить сложность IWD, в то же время предоставляя базовые строительные блоки для netlink и D-Bus.
«Мы расширили ELL библиотеками криптографической поддержки вместо использования OpenSSL, который огромен и не является простым интерфейсом», - сказал Хольтманн.
«Во многих случаях вам нужен только 10 процентов OpenSSL, поэтому мы пошли другим путем и использовали случайные числа, используя системный вызов getandom (), без проблем со временем загрузки».

Наконец, для шифров и хэшей Хольтман использовал AF_ALG, который он определил как «интерфейс шифрования для симметричных шифров в ядре». С ELL и AF_ALG разработчики могли исключить OpenSSL, а также gnuTLS и InternalTLS.
Команда также добавила поддержку трассировки для nl80211 с помощью инструмента под названием iwmon.

«Теперь мы можем начать сканирование и выбор сетей», - сказал Хольтманн.
«Мы можем выполнять активное и проходящее сканирование и группировку SSDID, а также поддерживать открытые сети. Мы можем подключаться к открытым точкам доступа и защищенным точкам доступа W2 и WPA / RSN.
У нас есть простой роуминг, экспериментальные API-интерфейсы D-Bus, EAPol и ELL-протоколирование для D-Bus и Generic Netlink ».

Далее Хольтманн рассказал о новой поддержке корпоративных WiFi-технологий, таких как сертификаты X.509 и TLS.
В последних ядрах улучшена поддержка X.509, поэтому команда OTC использует цепочки ключей ядра для лучшего управления сертификатами.

Будущие задачи включают доработку корпоративного Wi-Fi и разработку API отладки.
Разработчики также рассматривают возможные интеграции с Passpoint 2.0, P2P, Miracast и Neighborhood Aware Networking (NAN).
Как только IWD будет завершен, Holtmann и OTC рассмотрят 802.15.4, улучшив совместимые с 802.15.4 беспроводные протоколы, такие как ZigBee, 6LowPAN и Thread.

Если вы сможете приехать в Портленд, штат Орегон, 21-23 февраля для конференции по встроенному Linux для Северной Америки, Холтманн пересмотрит свой доклад о беспроводных демонах с обновлениями.
Он также выступит с презентацией по Bluetooth 5, а также расскажет об использовании Zephyr на BBC micro: bit .

Посмотрите полное видео Wireless Daemon ниже:

Презентация Holtmann «Новый беспроводной демон для Linux» на ELCE

Эта статья защищена авторским правом © 2017 Linux.com и была первоначально опубликована здесь .
Он был воспроизведен этим сайтом с разрешения его владельца.
Пожалуйста, посетите Linux.com для получения последних новостей и статей о Linux и open source.