Такая архитектура оказалась очень простой и дешевой в реализации (микросхема Bluetooth стоила менее $5), а именно этого разработчики и добивались. В результате подчиненные узлы получились довольно примитивными — они лишь выполняют то, что им прикажет главный узел. По сути, пикосеть — это централизованная система TDM, в которой главный узел контролирует временные слоты для передачи данных и распределяет их между подчиненными узлами. Обмен происходит только между подчиненным и главным узлами. Прямой связи между подчиненными узлами нет.
Илл. 4.30. Две пикосети могут объединиться в рассеянную сеть
4.5.2. Применение Bluetooth
Большинство сетевых протоколов просто предоставляют каналы для обмена данными между сущностями и оставляют их прикладное использование на усмотрение разработчиков. Например, в стандарте 802.11 не говорится, что пользователи должны использовать свои ноутбуки для чтения электронной почты, работы в интернете и т.п. Bluetooth SIG, напротив, специфицирует отдельные сценарии применения и для каждого из них предоставляет свой набор протоколов. На момент написания данного раздела было 25 таких сценариев, называемых профилями (profiles). К сожалению, это значительно усложняет систему. Мы опустим детали и кратко рассмотрим профили, чтобы понять, чего пыталась достичь с их помощью группа Bluetooth SIG.
Шесть профилей предназначены для различного использования аудио и видео. К примеру, профиль Intercom (ICP) позволяет двум телефонам соединяться друг с другом по принципу рации. Профили Headset (HSP) и Hands-free (HFP) обеспечивают голосовую связь беспроводной гарнитуры с базовой станцией. Это позволяет, например, совершать звонки за рулем автомобиля. Существуют профили для потоковой передачи стереозвука и видео, например, с портативного аудиоплеера на наушники или с цифровой камеры на телевизор.
Профиль HID (human interface device — человеко-машинный интерфейс) предназначен для подключения клавиатуры и мыши к компьютеру. Другие профили позволяют мобильному телефону или другому устройству получать изображение с камеры или отправлять их на принтер. Пожалуй, более интересен профиль, с помощью которого можно использовать мобильный телефон в качестве пульта дистанционного управления для телевизора с поддержкой Bluetooth.
Следующая группа профилей имеет отношение к сетям. Профиль доступа к персональной сети (PAN) позволяет устройствам Bluetooth сформировать произвольную сеть или удаленно подключиться через точку доступа к другой сети, например к 802.11 LAN. Профиль удаленного доступа (dial-up networking, DUN) представляет собой то, ради чего изначально был задуман весь проект: с его помощью ноутбук может установить беспроводное соединение с мобильным телефоном, имеющим встроенный модем.
Также были определены профили для обмена информацией на более высоком уровне. В частности, профиль синхронизации предназначен для загрузки данных в мобильный телефон, когда его владелец выходит из дома, и извлечения их после возвращения.
Мы опустим остальные профили, заметим только, что некоторые из них служат основой для профилей, упомянутых выше. Профиль общего доступа (на котором строятся все остальные) устанавливает и обслуживает защищенные соединения (каналы) между главным и подчиненным узлами. Другие базовые профили задают основы обмена объектами и передачи аудио и видео. Служебные профили широко используются, например, для эмуляции последовательной шины данных, что особенно полезно при работе со многими устаревшими приложениями.
Неужели действительно так необходимо подробно описывать в стандарте все сценарии применения и предоставлять наборы протоколов для каждого из них? Вероятно, нет. Однако было создано множество рабочих групп, которые рассматривали различные стороны стандарта. Каждая группа разработала свой профиль. Считайте это демонстрацией закона Конвея в действии. (В апреле 1968 года в журнале Datamation была опубликована статья Мелвина Конвея (Melvin Conway), в которой утверждалось, что если поручить написание компилятора n программистам, то получится n-проходный компилятор. В более общем виде эта мысль звучит так: структура программного обеспечения отражает структуру группы разработчиков.) Наверное, можно было обойтись двумя наборами протоколов (вместо 25) — один для передачи файлов и один для обмена данными в реальном времени.
4.5.3. Стек протоколов Bluetooth
Стандарт Bluetooth содержит множество протоколов, условно разбитых на уровни, как показано на илл. 4.31. Сразу можно заметить, что структура не соответствует ни OSI, ни TCP/IP, ни 802, ни какой-либо другой известной модели.
Илл. 4.31. Архитектура протоколов Bluetooth
Внизу находится физический уровень радиосвязи (что вполне соответствует моделям OSI и 802), на котором описывается радиопередача и методы модуляции. Многое здесь направлено на то, чтобы удешевить систему, сделав ее доступной для массового покупателя.
Уровень управления каналом связи (немодулированной передачи) чем-то напоминает подуровень MAC, но содержит и некоторые элементы физического уровня. Здесь описывается, как главный узел контролирует временные слоты и как они группируются во фреймы.
Далее следуют два протокола, использующие протокол управления каналом связи. Протокол управления соединениями устанавливает логические каналы между устройствами, контролирует энергопотребление, сопряжение и шифрование, а также QoS. Он находится ниже линии интерфейса хост-контроллера. Этот интерфейс нужен для удобства реализации: как правило, протоколы ниже линии выполняются на чипе Bluetooth, а выше — на устройстве Bluetooth, где чип размещен.
Над линией находится протокол канального уровня — L2CAP (Logical Link Control and Adaptation Protocol — протокол управления логическими связями и сопоставлениями). Он формирует сообщения переменной длины и при необходимости обеспечивает надежность передачи. L2CAP используется множеством протоколов, в том числе и двумя описанными ранее служебными протоколами. Протокол обнаружения служб используется для определения их местонахождения в пределах сети. Протокол RFcomm (Radio Frequency communication — радиочастотная передача) эмулирует работу стандартного последовательного порта ПК, к которому обычно подключаются клавиатура, мышь, модем и другие устройства.
На самом верхнем уровне находятся приложения. Профили представлены вертикальными прямоугольниками, потому что каждый из них определяет часть стека протокола для конкретной цели. Специфические профили, например профили для гарнитур, используют только те протоколы, которые необходимы для их работы. Например, профили могут включать L2CAP, если у них есть пакеты для отправки, но пропустить его, если имеется только постоянный поток звуковых сэмплов.
В следующих разделах мы рассмотрим уровень радиосвязи и различные протоколы канального уровня Bluetooth, поскольку они пусть грубо, но все-таки соответствуют физическому уровню и подуровню MAC в других изученных нами стеках протоколов.
4.5.4. Bluetooth: уровень радиосвязи
Уровень радиосвязи переносит информацию бит за битом от главного узла к подчиненным и обратно. Это маломощная приемопередающая система с радиусом действия порядка 10 м. Она работает в ISM-диапазоне 2,4 ГГц, как и 802.11. Диапазон разделен на 79 каналов по 1 МГц в каждом. Чтобы обеспечить сосуществование с другими сетями в ISM-диапазоне, применяется расширенный спектр со скачкообразной перестройкой частоты. Возможны до 1600 скачков частоты в секунду, то есть минимальный временной слот для передачи равен 625 мкс. Все узлы пикосетей перестраивают частоты одновременно, в соответствии с синхронизацией слотов и псевдослучайной последовательностью скачков, генерируемой главным узлом.
К сожалению, оказалось, что ранние версии Bluetooth и 802.11 интерферируют настолько, что нарушают передачи друг друга. По этой причине некоторые компании полностью отказались от Bluetooth, но в конечном итоге техническое решение было найдено. Оно заключалось в том, чтобы адаптировать последовательность скачков для исключения каналов, на которых есть другие радиосигналы. Этот процесс, названный адаптивной перестройкой рабочей частоты (adaptive frequency hopping), снижает помехи.
Для отправки битов по каналу используются три формы модуляции. В базовой схеме применяется кодирование со сдвигом частоты, чтобы отправлять 1-битный символ каждую микросекунду. Это дает общую скорость передачи данных 1 Мбит/с. Начиная с версии Bluetooth 2.0, скорость увеличилась благодаря кодированию со сдвигом фазы. Общая скорость передачи достигает 2 или 3 Мбит/с за счет отправки 2 или 3 бит за символ. Увеличенная скорость применяется только для фреймов данных.
4.5.5. Bluetooth: канальный уровень
Уровень управления каналом связи (немодулированной передачи) — это наиболее близкий к MAC-подуровню элемент иерархии Bluetooth. Он трансформирует простой поток битов во фреймы и определяет некоторые ключевые форматы. В самом простом варианте главный узел каждой пикосети задает последовательности временных интервалов по 625 мкс, причем передача данных со стороны главного узла начинается в четных слотах, а со стороны подчиненных узлов — в нечетных. Эта схема, по сути, представляет собой традиционный TDM, где главный узел получает одну половину слотов, а подчиненные делят между собой вторую. Фреймы могут быть длиной 1, 3 или 5 слотов. В каждом из них 126 служебных битов отведено на код доступа и заголовок. Время установления сигнала занимает 250–260 мкс на скачок частоты, чтобы позволить дешевым радиоустройствам стабилизироваться. Полезные данные фрейма могут быть зашифрованы в целях конфиденциальности. Ключ шифрования выбирается, когда ведущее устройство соединяется с ведомым. Переключение частоты происходит только между фреймами, но не в момент передачи. В результате передача пятислотового фрейма намного более эффективна, чем однослотового, потому что при тех же затратах отправляется больше данных.