Сетевой уровень (Network Layer — NWK) стека протокола ZigBee/ZigBee PRO использует функции подуровня управления доступом к среде (Media Access Layer — MAC) и обеспечивает интерфейс для вышестоящего уровня приложения (Application Layer — APL). На этом уровне реализована поддержка разных сетевых топологий: звездная топология (Star Network), дерево кластеров (Cluster Tree Network) и ячеистая топология (Mesh Network). И именно на сетевом уровне происходит первоначальное создание сети, включение в нее новых устройств, их исключение и сетевой поиск.
Взаимодействие с уровнем приложения осуществляется посредством сервиса передачи данных (NWK Layer Data Entity — NLDE) и сервиса управления (NWK Layer Management Entity — NLME). Доступ к этим сервисам с уровня приложения идет через соответствующие программные интерфейсы или, как их называют разработчики протокола, — точки доступа (Service Access Points — SAPs). Сервис управления (NLME) сам тоже обращается к сервису передачи данных (NLDE) при выполнении определенных задач управления и, кроме того, одна из его важнейших функций — ведение базы данных управляемых объектов (Network Information Base — NIB). Посредством сервисов NLDE и NLME обеспечивается передача команд и данных приложений к подуровню управления доступом к среде (MAC), который для этого предоставляет собственные интерфейсы MCPS-SAP (MAC Layer data entity SAP — MLDE-SAP) и MLME-SAP (MAC Layer Management Entity SAP — MLME-SAP).
Основное функциональное назначение сервиса передачи данных (NLDE) можно описать так: этот сервис обеспечивает передачу пакетов данных уровня приложения (Application Protocol Data Units — APDUs) между взаимодействующими в сети экземплярами приложений.
Одна из важнейших функций, которая выполняется на сетевом уровне протокола ZigBee и делает его тем, что он есть — функция управления маршрутизацией (Routing Management). То есть именно здесь реализуется алгоритм, который определяет путь следования пакетов данных от отправителя к получателю через цепочку связанных узлов. Этот алгоритм опирается на специальные метрики, отражающие сложность различных путей пересылки данных. Сами метрики вычисляются и обновляются в процедурах поиска и оценки доступных маршрутов. Любой координатор или маршрутизатор в сети ZigBee может поддерживать собственную таблицу маршрутов, котороая строится с учетом описанных метрик.
Чтобы осуществлять поиск маршрутов и их оценку в сетях ZigBee используется несколько модифицированный алгоритм AODV (Ad hoc On Demand Distance Vector). Протокол подразумевает реактивную реакцию на поступающие запросы. То есть сеть остается «спящей» до момента поступления конкретного запроса на передачу данных. Когда одному из узлов требуется установить связь с другим удаленным узлом в неизвестном местоположении, он генерирует специальный широковещательный запрос RREQ (Route Request), который получают все узлы, находящиеся с отправителем в непосредственной взаимосвязи (как это установлено топологией сети при ее создании). Они ретранслируют данный запрос далее всем своим соседям и дополняют свои таблицы маршрутизации обратным маршрутом к узлу-отправителю. Когда запрос RREQ доходит до получателя, он отправляет ответный пакет данных RREP (Route Reply), который следует назад единственным оптимальным маршрутом с учетом того, что все узлы на пути следования уже внесли его в свои таблицы маршрутизации. После получения ответного пакета узел-отправитель тоже вносит соответствующую запись в свою таблицу маршрутизации и начинает передачу данных по установленному маршруту. Если какой-то узел в цепочке передачи данных «выпадает» из сети, то соответствующие ему записи удаляются из таблиц маршрутизации, и процедура рассылки широковещательных запросов повторяется заново.
Сетевой координатор (ZigBee Coordinator) выступая инициатором создания сети и управляя процессом включения в нее новых устройств является и главным держателем таблицы маршрутизации, то есть знает оптимальный маршрут к любому из устройств в сети. Координатору всегда присвается нулевой адрес в адресном пространстве сети. Маршрутизаторы (ZigBee Routers) выполняют ретрансляцию пакетов с данными по оптимальному маршруту. Важнейшее следствие из этого — ни координатор, ни маршрутизаторы не могут выключаться для экономии энергии, но должны работать непрерывно, чтобы устройства, инициирующие передачу данных, могли в любой момент воспользоваться действующим маршрутом.
Алгоритм AODV, используемый в сетях ZigBee для поиска маршрутов, не лишен недостатков. В частности, в сетях с большим количеством конечных устройств (например, сети датчиков), которые обслуживаются единственным сетевым концентратором по схеме «звезда», аккумулирующим всю информацию с этих устройств, классические широковещательные запросы могут порождать большой ответный трафик — ведь все устройства в сети будут одновременно пытаться выстроить маршрут и посылать собственные широковещательные запросы и ответы на них. Такие запросы, поступающие в большом количестве, снижают пропускную способность сети и отнимают ресурсы на их обработку. Чтобы решить проблему, в спецификации ZigBee PRO, вышедшей в 2007 году, был добавлен специальный механизм маршрутизации «многие-к-одному» (many-to-one routing). Это альтернативная схема поиска маршрутов, которая работает в дополнение к схеме AODV, как она была реализована в спецификациях ZigBee 2006 и ZigBee 2007. В новой альтернативной схеме не требуется генерировать множество широковещательных запросов к каждому узлу — достаточно одной посылки, по которой сразу же и строятся маршруты ко всем узлам сети.
В спецификации ZigBee PRO механизм широковещательных запросов был доработан не только для поддержки маршрутизации «многие-к-одному» — появилась возможность групповой рассылки таких запросов не сразу всем устройстам в сети, а только для определенной группы устройств. На уровне ZDO (Zigbee Device Object) и в библиотеке ZCL (Zigbee Cluster Library) появились и специальные групповые функции, которые используют такие широковещательные запросы в своей работе.
Сравнение функциональных возможностей различных устройств сети ZigBee на сетевом уровне протокола |
|||
Функция | Координатор (ZC) | Маршрутизатор (ZR) | Конечное устройство (ZED) |
Создание ZigBee сети | x | ||
Разрешение включения и исключения различных устройств в/из сети | x | x | |
Присвоение 16-битных сетевых адресов | x | x | |
Поиск и хранение оптимальных маршрутов доставки сетевых сообщений | x | x | |
Поиск и ведение списка ближайших узлов-соседей | x | x | |
Маршрутизация сетевых пакетов | x | x | |
Отправка и получение сетевых пакетов | x | x | x |
Подключение или отключение от сети | x | x | x |
Пребывание в режиме сна (пассивный режим) | x |
Если конкретное устройство поддерживает обратную совместимость со старыми версиями протокола ZigBee, то оно может включаться в сети ZigBee, которые работают на старом протоколе. При этом в рамках каждой сети может использоваться только одна версия протокола и она задается сетевым координатором при создании сети.
Архитектура безопасности ZigBee основана на специальных механизмах шифрования, работающих на двух уровнях стека протокола — сетевом (NWK) и уровне приложения (APL). В зависимости от выполняемой функции зашифрован может быть как пакет данных сетевого уровня (NSDU), так и пакет уровня приложения (ASDU). Для шифрования используется алгоритм AES-128, а также модифицированный алгоритм CCM (называется CCM*) для управления ключами и блоками.