Ещё одной из важнейших особенностей Bluetooth является автоматическое подключение Bluetooth устройств к службам, предоставляемым другими Bluetooth устройствами. Поэтому, после того как имеется список имён и адресов, выполняется service discovery, поиск доступных услуг, предоставляемых доступными устройствами. Получение или предоставление, каких либо услуг - это то, ради чего всё собственно и затевалось, поэтому для поиска возможных услуг используется специальный протокол, называемый, как несложно догадаться, Service Discovery Protocol (SDP), более подробно он будет описан ниже.
Естественно, Bluetooth не могла обойтись без такой важной вещи, как технология защиты передаваемых данных, встроенной в сам протокол. В зависимости от выполняемых задач, предусмотрено три режима защиты в которых может находится устройство.
- (non secure), устройство не может самостоятельно инициировать защитные процедуры. Security mode 2 (service level enforced security), устройство не инициирует защитные процедуры пока не установлено и не настроено соединение. После того как соединение установлено, процедуры защиты обязательны, и определяются типом и требованиями используемых служб. Security mode 3 (link level enforced security), защитные процедуры инициируются в процессе установления и настройки соединения. Если удалённое устройство не может пройти требований защиты, то соединение не устанавливается.
Естественно, что Security mode 3 и 2 могут использоваться вместе, то есть сначала устанавливается защищённое соединение, а потом оно ещё защищается в соответствии с требованиями и возможностями конкретной службы.
Основой системы безопасности Bluetooth, используемой в Security mode 3, является понятие сеансового ключа, или Bond. Сеансовый ключ генерится в процессе соединения двух устройств, и используется для идентификации и шифрования передаваемых данных. Для генерации ключа могут использоваться самые различные составляющие, от заранее известных обоим устройствам значений, до физических адресов устройств. Комбинируя защиту на уровне соединения с защитой на уровне приложений (где может использоваться абсолютно любая из существующая на сегодня систем защиты данных) можно создавать достаточно надёжно защищённые соединения. Но всё равно, очевидной слабостью Bluetooth соединений с точки зрения построения защищённых соединений остаётся возможность перехвата трафика, причём для этого даже не придётся использовать, какое либо специфическое оборудование. Впрочем, эта проблема не нова, и в настоящее время часто приходится использовать открытые сети, вроде Интернет, где возможен перехват трафика, для передачи закрытых данных. Противодействие "брони и снаряда" продолжается.
Модуляция
Для эффективной передачи сигнала (цифрового, аналогового) посредством радио необходимо пройти процедуру модуляции. Позволим себе опустить тонкости различных процессов модуляции сигналов и сконцентрируемся на фактах, которые помогут представить картину спектра в среднестатистическом доме юзера наших дней.
Стандарт 802.11n (а я верю, что у 90% пользователей дома развернут именно он, хотя все нижеизложенное справедливо и для 11g) предусматривает использование OFDM модуляции сигнала с организацией 13 каналов шириной 20 МГц.

При этом стандартом 802.11b/g/n предусмотрено использование одного канала на протяжении всего времени работы, если его состояние считается удовлетворительным (читай “нет чередования каналов”).
Bluetooth же использует иной подход: в спектре ISM организуется 79 каналов шириной в 1 МГц, а затем по технологии расширения спектра Frequency-hopping Spread Spectrum (FHSS) радиоприемник и радиопередатчик синхронно меняют частоту несущей по определенному шаблону с частотой 1600 раз в секунду. Сделано это как раз для уменьшения вероятности наложения сигналов в крохотном ISM диапазоне.

Если бы у вас дома был спектральный анализатор, то процесс смены несущей по всему 2.4ГГц диапазону выглядел бы следующим образом:

Случайным образом разбросанные красные точки — это и есть сигнал Bluetooth, постоянно меняющий частоту. Зеленые области — это три активных канала Wi-Fi.
Борьба с интерференцией
Однако техника скоростной смены несущей не избавляет от интерференции, а всего лишь снижает вероятность ее возникновения. Шансы у Bluetooth-сигнала попасть в 20 МГц диапазон канала Wi-Fi по-прежнему ненулевые:

Поэтому в арсенале стека Bluetooth есть технология адаптивной смены частоты — Adaptive Frequency Hopping (AFH). Принцип работы AFH состоит в следующем: из 79 доступных 1 МГц каналов исключаются каналы, попадающие в занятый Wi-Fi сигналом диапазон:

На рисунке выше видно, как алгоритм AFH скорректировал карту доступных для “перескакивания” каналов, исключив те, что попали в уже занятый вайфаем 6-й канал.
Архитектура Bluetooth
Раз проблема была не в интерференции с Wi-Fi, то потребовалось более глубокое погружение в матчасть. Напомню, что интересным с точки зрения анализа был тот факт, что в одинаковых условиях две Bluetooth аудиосистемы (Klipsch KMC 3 и Edifier Spinnaker) вели себя по-разному. Klipsch захлебывался раньше, и для достижения эффекта нужно было просто заслонить телом прямой путь к колонке на расстоянии нескольких метров. Edifier же мог хрюкнуть пару раз, но после продолжал уверенно воспроизводить звук, изредка прерываясь.
Симптомы косвенно намекали на автоподстройку неких параметров со стороны Эдифаеров и отсутствие оной у Клипша при деградации качества радиосигнала. Чтобы проверить эту теорию, было решено снять дамп соединения двух устройств с целью поиска источника проблем.
Для чистоты эксперимента я выключил модуль Bluetooth, удалил из списка сопряженных устройств Klipsch, включил “синий зуб”, и, нажав кнопку записи дампа, прошел процедуру от поиска устройства и соединения с ним до передачи аудио.
Инициализация устройства
После активации Bluetooth-модуля, дамп наполняется записями сообщений HCI, которые в большинстве своем дают модулю понять, как его зовут, какой у него MAC адрес, к какому классу устройств он относится и включает непосредственно радио модуль.
Происходит это в форме диалога HCI Command -> HCI Event.

Стек блютуса лишь косвенно напоминает привычный TCP/IP, поэтому лицезрение дампа без предварительного прочтения спецификации не увенчалось успехом.
К чести группы Bluetooth SIG отмечу, что документация на корневую спецификацию и всевозможные профили находится в свободном доступе на портале для разработчиков, при этом написана простым и понятным языком.
Архитектура Bluetooth
Так моей настольной книгой на энное количество времени сталаBluetooth Core Specification. 13 мегабайтная пдф-ка о шести томах только сперва кажется необъятной, но для понимания базовых операций и принципов взаимодействия подсистем достаточно будет и нескольких глав.
Core System
В процессе поиска источника проблем я шел сверху вниз: встречая в дампе высокоуровневые протоколы, пытался понять логику их работы и назначение передаваемых параметров.
Безусловно, православный путь — снизу вверх: от азов установления физических и логических управляющих каналов Bluetooth к базирующимся на их основе высокоуровневым протоколам. Этим путем я вас и попробую провести.
Ядро блютуса — Bluetooth Core System Specification — описывает четыре базовых нижних уровня архитектуры и соответствующие протоколы, причем три нижних уровня, как правило, выделяют в отдельную подсистему — Bluetooth Controller, а все, что находится выше — относится к Bluetooth Host.
Структурная схема архитектуры Bluetooth Core System показывает расположение основных блоков архитектуры на уровнях модели, обозначает user-plane и control-plane трафик между блоками и, самое главное, дает представление об иерархичности стека.

На схеме не сделан акцент на очень важной части архитектуры — Host to Controller интерфейсе (HCI), обеспечивающем взаимодействие софтовой подсистемы Host с железной подсистемой Controller. Всё взаимодействие верхних уровней Bluetooth системы с ее аппаратной частью происходит через HCI-команды, инициируемые драйвером. Эти команды в дампе будут нам встречаться постоянно.
Пройдемся по основным блокам архитектуры, чтобы понять их основное назначение:
RF
Блок Radio (он же PHY), как и подобает резиденту физического уровня, занимается преобразованием битовой последовательности в радио сигналы. Вопросы модуляции, спектральных характеристик и физики процессов обеспечения битовой скорости — все это решается на нижнем уровне модели.
Baseband Layer = Link Controller + Baseband Manager + Device Manager
Уровень Baseband представлен в виде трех блоков, совместная задача которых состоит в управлении физическими каналами (Phy channels), поверх которых устанавливаются физические соединения (Phy links). Bluetooth-адресация, синхронизации генераторов устройств, управление кодами доступа к физическим каналам, поиск устройств и установление физического канала между ними — все это задачи Baseband-уровня.
Link Manager
После того, как два нижних уровня обеспечили нас физическим соединением между master-slave устройствами, дело становится за организацией логических каналов, которые впоследствии и станут базой для передачи трафика приложений. Link Manager в ответе за установление, изменение и освобождение логических соединений между устройствами, а так же за обновление параметров физических соединений. Для этих целей Link Manager использует Link Management протокол (LMP).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 |


