Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ZigBee — один из протоколов, который используют для домашней автоматизации. Его поддержкой наделяют умные лампочки, беспроводные выключатели, датчики движения и прочие устройства, которые повышают комфорт. Но насколько они безопасны? В этой статье я расскажу, как устроен ZigBee, и покажу, при помощи каких устройств и программ перехватывать его сигнал для изучения.
Конечно, этот протокол не нов — стандарт появился еще в 2003 году. Сегодня есть более современные аналоги вроде LoRaWAN и RPMA, но ZigBee продолжает быть популярным. Почему? Взгляни на картинку.
Помимо дальности и скорости здесь учтена стоимость. И сразу видно, что ZigBee отлично сбалансирован и при невысокой цене дает приемлемые дальность действия и скорость передачи данных. Вряд ли тебе понадобится стримить видео в 4K на выключатель, а чтобы что-то сделать издалека, обычно используется подключенный к интернету хаб. Вот и получается, что ZigBee не сильно бьет по карману при создании умного дома и покрывает основные нужды.
К тому же более новые протоколы могут таить неприятные сюрпризы. Например, в разговорах о LoRa я уже несколько раз слышал от интеграторов, что при большом количестве устройств в сети могут начаться чудеса. Говорят, что на опрос сотни девайсов может уйти около часа.
Топология сети может быть одной из следующих:
Координатор (он же FFD) — это самый главный узел. Он создает сеть, выбирает, на каком канале общаться, может выступать как «центр доверия» (trust center). Роутеры — устройства уже чуть попроще. Они служат зачастую ретрансляторами сообщений от конечных устройств. Конечные устройства (end device) — то, что мы объединяем в сеть, то есть выключатели, лампочки, датчики движения и прочие гаджеты.
Вот сводная таблица функциональности каждого из устройств.
Координатор | Роутер | Конечное устройство | |
---|---|---|---|
Создание сети ZigBee | x | ||
Выдача разрешений на присоединение к сети другим устройствам | x | x | |
Назначение 16-разрядного сетевого адреса | x | x | |
Обнаружение и запись путей для эффективной доставки сообщений | x | x | |
Обнаружение и хранение списка соседей, доступных в один хоп | x | x | |
Маршрутизация сетевых пакетов | x | x | x |
Присоединение и выход из сети | x | x | x |
Режим сна | x |
А теперь открываем официальную спецификацию ZigBee. Там нас почти сразу встречает вот такая интересная картинка.
ZigBee Stack Architecture
Но пусть она тебя не пугает, потому что к концу статьи ты поймешь, что в реальности все немного проще! ?
Итак, начнем изучение с PHY, физического уровня, и будем подниматься вверх по слоям.
ZigBee, а точнее, IEEE 802.15.4 может работать в трех частотных диапазонах.
И, как ты можешь заметить, если выбрать для него частоту 2,4 ГГц, то Wi-Fi и ZigBee могут начать мешать друг другу. Для уменьшения перекрестных помех между Wi-Fi и ZigBee лучше выбирать следующие каналы.
Что не может не радовать, в стандарте есть такое понятие, как ED — Energy Detection. Эта фича используется в координаторе умного дома, чтобы он выбирал канал, где меньше всего помех.
Общий вид посылки для PHY имеет следующий вид.
Если у тебя дома завалялся SDR и ты желаешь контролировать каждый-прекаждый битик в модуляции OQPSK, то тебе поможет вот эта схема.
Этот вид модуляции как раз и применяется на частоте 2,4 ГГц. А мы тем временем идем дальше выше по стеку протоколов, и нас ждет уровень MAC.
Общий вид MAC-фреймов представлен ниже.
Как видишь, Frame Control отвечает за тип пакета данных (Beacon, Ack, Cmd, Data), тип адресации, а также наличие шифрования.
Теперь поговорим о каждом фрейме данных чуть подробнее.
Data Frame — один из самых простых фреймов. В нем передаются данные протоколов, которые работают поверх IEEE 802.15.4. Получается, что ты можешь взять за основу IEEE 802.15.4 и разработать протокол для своих нужд.
ACK Frame — фрейм подтверждения. Увы, мы живем в неидеальном мире, где бывает много помех, а при передаче по радиоканалу тем более. Поэтому необходимо подтверждать принятые данные.
Здесь Sequence Number указывает на то, какой фрейм из пришедших ранее мы подтверждаем.
MAC Cmd frame в той или иной степени отвечает за «организацию сети» на уровне 802.15.4.
Ниже представлены команды, которые могут тебе встретиться.
FFD — Full-function Device — это координатор сети, та самая главная «железка», которая организовывает сеть ZigBee.
RFD — Reduced-function Device — не столь важное устройство, как координатор, выполняет функции роутера при пересылке пакетов.
Beacon frame — об этом фрейме стоит поговорить подробнее.
Так как мы передаем данные по радиоканалу и у нас есть несколько устройств, эти устройства должны как-то определять, в какой момент можно передавать данные, а когда занята несущая и стоит подождать. Поэтому в сетях ZigBee/IEEE 802.15.4 есть два способа передачи данных: режимы Beacon и NonBeacon.
Для передачи данных в режиме NonBeacon используется так называемый unslotted CSMA-CA channel access mechanism. По моему опыту, он используется редко.
Наиболее частый случай — использование режима Beacon. В этом случае координатор отправляет так называемые маячки (beacons), на основе которых остальные устройства синхронизируются и передают данные.
Общий вид передачи данных в этом режиме представлен ниже.
Во фрейме Beacon указывается, сколько будет slotted CSMA-CA, будет ли доступ без конкуренции и последует ли Inactive portion — время, когда конечные устройства смогут со спокойной совестью уйти в спячку для продления работы от батарейки.
Источник: xakep.ru