Wireless networks - PAN
Personal Area Network
PAN
Персональная сеть (PAN - Personal Area Network) - это компьютерная сеть, которая используется для передачи данных между устройствами, расположенными на достаточно небольшом расстоянии и зачастую принадлежащими одному пользователю. Также персональные сети могут взаимодействовать с сетями болеее высокого уровня, и в таком случае одно из устройств в сети берёт на себя роль интернет-маршрутизатора. Радиус действия таких сетей составляет от нескольких десятков сантиметров до нескольких метров.
В современном мире большинство персональных сетей являются беспроводными.
WPAN
WPAN (Wireless Personal Area Network) - система беспроводной передачи данных, которая работает в ISM-диапазоне 2.4-2.5 ГГц. Выбор диапазона обусловлен тем, что этот диапазон доступен по всему миру и подходит для низкобюджетных решений. WPAN состоит из нескольких узлов, связанных беспроводным каналом, при этом один из этих узлов берёт на себя роль координатора. Координатор занимается созданием WPAN и контролирует подключение узлов к сети.
WPAN может представлять из себя следующие топологические схемы:
Современные WPAN могут быть реализованы с помощью таких технологий, как:
WLANs vs. WPANs
WPAN определена в контексте личного рабочего пространства(POS - Personal Operating Space), которое обычно распространяется в радиусе до 10 метров и окружает человека или объект, находящийся в покое или в движении. WPAN также подразумевает низкую стоимость и низкое энергопотребление. Узел WPAN имеет небольшие размеры, что позволяет встраивать его в портативные устройства, такие как мобильные телефоны и КПК.
С другой стороны, WLAN представляет из себя систему более широкого радиуса действия и имеет более высокую сложность. WLAN включает в себя центральный узел, называемый точкой доступа(AP - Access Point), который предоставляет доступ к каналу связи некоторому количеству конечных узлов. Типичный узел WLAN представляет из себя карту, устанавливаемую в персональные компьютеры и ноутбуки.
Bluetooth
Bluetooth (от слов англ. blue — синий и tooth — зуб) - стандарт беспроводного соединения вычислительных устройств и устройств связи, который позволяет передавать данные на коротких расстояниях между стационарными и мобильными устройствами, используя короткие сверхвысокочастотные радио-волны в ISM-диапазоне от 2.4 до 2.485 ГГц.
Создание технологии
Идея создания такого стандарта возникла в 1994 году в компании Л.М.Эриксона, а в 1998 году совместно с четырьмя другими компаниями(IBM, Intel, Nokia, Toshiba) была сформирована специальная группа, которая занималась созданием и развитием этого стандарта. Проект был назван в честь великого короля викингов по имени Гаральд Синий Зуб II, который объединил Данию и Норвегию.
Требования к технологии при разработке:
- Безопасность, сравнимая с обычным проводным соединением(поддерживать авторизацию, аутентификацию и шифрование на канальном уровне и уровне приложений).
- Стоимость производства, сопоставимая со стоимостью производства проводного соединения.
- Возможность соединения множества устройств, принадлежащих пользователю(7 одновременных соединений) и скорость передачи данных между ними, соответствующая нуждам пользователя.
- Поддержка типов данных, которые распространены среди мобильных пользователей.
- Низкое энергопотребление и компактность для возможности встраивания в небольшие портативные устройства.
Bluetooth 1.0 появился в июле 1999 года, и со временем этот стандарт обрёл широкую популярность.
Архитектура Bluetooth
Существуют две основных реализации технологии:Bluetooth Basic Rate/Enhanced Data Rate(BR/EDR), которая используется в версиях 2.0/2.1, и Bluetooth with low energy(LE), которая используется в версиях 4.0/4.1/4.2.
В чём разница?
- Bluetooth BR/EDR - устанавливает беспроводное соединение на относительно малых расстояниях, что делает его идеальным, например, для стриминга аудио.
- Bluetooth LE - позволяет устанавливать кратковременное соединение на больших расстояниях, что делает его подходящим для использования, связанного с интернетом вещей(IoT - Internet of things), которое не требует непрерывного соединения, но зависит от продолжительности работы аккумулятора.
- Dual-Mode - двухрежимные чипсеты используются, например, в смартфонах и планшетах, которым необходимо соединение как с BR/EDR-устройствами(например, наушники), так и с LE-устройствами(например, различные маячки и трекеры).
Стек протоколов Bluetooth
Bluetooth Module
Baseband - существует два основным типа соединения, которые могут быть установлены между ведущим и ведомым:
- Synchronous Connection Oriented(SCO) - предоставляет симметричное соединение между ведущим и ведомым для регулярного периодического обмена данными в виде зарезервированных слотов. Подобное соединение предназначено для ограниченных по времени типов данных (например, аудио). Ведущее устройство может поддерживать до трёх SCO-соединений с одним или разными ведомыми устройствами.
- Asynchronous Connection-Less(ACL) - предоставляет соединение один-ко-многим между ведущим устройством и всеми ведомыми устройствами в сети. Может использовать все слоты канала, не занятые SCO-соединениями. Предоставляется соединение с коммутацией пакетов, обмен данными с помощью которого происходит эпизодически. Весь трафик полностью контролируется ведущим устройством.
Каждое Bluetooth-устройство имеет 48-битный IEEE MAC-адрес, который используется для создания кода доступа. Код доступа имеет псевдо-случайные свойства и включает в себя идентификатор ведущего устройства в сети. Все пакеты, передаваемые по каналу, распознаются с помощью этого идентификатора. Это предотвращает возможность попадания пакетов из одной сети в другую. Все пакеты имеют одинаковый формат, начинаются с кода доступа, после него идёт заголовок, а далее - существенные данные.
Код доступа используется, чтобы доставить пакет до определённого устройства, заголовок содержит всю контрольную информацию, связанную с пакетом и соединением. Пакет может быть размером в 1, 3 или 5 слотов.
Link Controller - отвечает за обнаружение устройства, установление соединение и его поддержку. В Bluetooth существуют три элемента для поддержки установления соединения: scan, page и inquiry.
Inquiry - процесс, когда устройства пытается обнаружить все другие устройства с включенным Bluetooth на некоторой площади. Устройство, которое хочет установить соединение, передаёт запрос, который побуждает получателей вернуть их адреса. Устройство, которое получает запрос, возвращает FHS-пакет, который включает, помимо всего, идентификатор этого устройства. Для возвращения FHS-пакетов используется случайный механизм отката для предотвращение коллизий.
Устройство в режиме ожидание должно "спать" большую часть времени для сохранения энергии, но время от времени оно также должно "слушать", не хотят ли другие устройства подключиться (Page scan). Необходим компромисс между энергопотреблением в режиме ожидания и временем отклика. Устройство, которое хочет подключиться, сталкивается с неопределенностью частоты и времени: оно не знает, когда устройство в режиме ожидания "проснётся" и на какой частоте. По этой причине устройство передаёт код доступа неоднократно на разных частотах: каждые 1.25 мс устройство передаёт два кода доступа и дважды "слушает" ответ. Таким образом, за 10 мс передаётся 16 запросов. Если устройство в режиме ожидания "проснулось" на одной из этих 16 частот, оно получит код доступа и начнёт процедуру установления соединения.
Link Manager - Host управляет Bluetooth с помощью команд HCI, и Link Manager существует для трансляции этих команд в операции на Baseband-уровне. Его главные функции - управление сетью(установление и разрывание соединения, смена ролей), конфигурация соединения, безопасность и QoS(Quality of Service)-функции.
Link Manager обменивается информацией со своими "коллегами" на других устройствах, используя Link Manager Protocol(LMP). Каждое LMP-сообщение начинается с флага, который равен 0, если ведущее устройство является инициатором транзакции, и 1 - если ведомое. После флага следуют 7 бит кода операции, а после - параметры сообщения.
LMP также предоставляет механизм для "переговоров" по поводу режимов шифрования и координирования ключей шифрования, которые используют устройства на обоих концах соединения. Кроме этого LMP поддерживает сообщения для конфигурации качества обслуживания соединения. Типы пакетов могут быть автоматически изменены в соответствии с качеством канала, и соответственно скорость передачи данных может возрастать при повышении качества канала.
Bluetooth Host
Logical Link Control and Adaptation Protocol(L2CAP) - забирает данные из более высоких уровней стека и из приложений, и посылает её на более низкие уровни стека. Передаёт пакеты либо в HCI, либо напрямую в Link Manager. Основные функции L2CAP:
- Мультиплексирование протоколов более высокого уровня, что позволяет им разделять одно ACL-соединение.
- Сегментация и повторная сборка пакетов, что позволяет передавать пакеты большего размера, чем поддерживают протоколы более низкого уровня.
- Управление качеством обслуживания для протоколов более высокого уровня.
Все приложения должны использовать L2CAP для передачи данных. Также L2CAP используется более высокими уровнями, такими как RFCOMM и SDP, и таким образом L2CAP - неотъемлемая часть любой Bluetooth-системы.
RFCOMM - простой, надёжный транспортный протокол, который эмулирует соединение pont-to-point по последовательному порту (RS-232). RFCOMM поддерживает два типа устройств:
- С эмуляцией последовательного порта. Такие устройства обычно находятся на концах соединения(например, PC или принтер).
- Промежуточные устройства с физическим последовательным портом. Такие устройства находятся в середине соединения(например, модем).
Может быть установлено до 30 каналов передачи данных, то есть RFCOMM теоретически может поддерживать 30 различных сервисов одновременно. RFCOMM основан на стандарте GSM TS 07.10 - асимметричный протокол, который используется в сотовых телефонах для мультиплексирования нескольких потоков данных в один физический провод.
Service Discovery Protocol(SDP) - предоставляет возможность SDP-клиенту получить доступ к информации об услугах, предоставляемых SDP-сервервами. SDP-сервер - это любое Bluetooth-устройство, которое предоставляет услуги другому Bluetooth-устройству. Информация об услугах хранится в базах данных. Не существует централизованной базы данных, каждый SDP-сервер имеет свою собственную. SDP база данных - набор записей, описывающих услуги, которые устройство может предложить другому устройству, и SDP предоставляет другому устройству "посмотреть" на эти записи. Для простоты поиска услуги упорядочены в иерархическую структуру в виде дерева.
Для просмотра классов услуг или для получения информации об отдельной услуге SDP-клиенты и SDP-серверы обмениваются сообщения, которые содержатся в SDP Protocol Data Units(PDUs). Первый байт в PDU - это ID, идентифицирующий сообщение в PDU. Услуги имеют собственные Universally Unique Identifiers(UUIDs), которые их описывают. Стандартные услуги имеют стандартные UUIDs, но существует также возможность определять свои собственные услуги и, соответственно, присваивать им UUIDs.
Этапы установки SDP-соединения показаны на следующей схеме:
Безопасность
Тот факт, что Bluetooth используется в мобильных устройствах и то, какие данные могут передаваться с помощью этих устройств, делает безопасность чрезвычайно важным фактором.
На канальном уровне технология Bluetooth предоставляет возможности аутентификации, шифрования и управления задействованными ключами.
Аутентификация предполагает, что пользователь предоставляет личный идентификационный номер(PIN - Personal Identification Number), который транслируется в 128-битный Link Key, который, в свою очередь, проходит аутентификацию в одностороннем или двустороннем порядке, а после этого может пройти процедуру шифрования при различной длине ключа(до 128 бит с 8-битным шагом). На канальном уровне доступны несколько схем аутентификации и гибкая схема шифрования, что позволяет различным устройствам "договариваться между собой" о длине ключа. Это важно, если на одно из устройств наложены ограничения по длине ключа. В таком случае другое устройство сможет подстроиться под эти ограничения.
Таким образом, архитектура безопасности Bluetooth зависит от PIN для установления соединения между различными устройствами. Поскольку не практично каждый раз проходить через все стадии безопасного соединения, после первого успешного соединения PIN могут быть сохранены для автоматизации или упрощения последующих соединений.