Стандарт Lightweight M2M

Введение в LwM2M

Стандарт Lightweight M2M (LwM2M) разработан стандартизирующей организацией OMA SpecWorks на базе стандартов 3GPP. В последнее время стандарт широко применяется в среде разработки компонентов интернета вещей (англ. Internet of Things (IoT)). Образованная в 2018 году организация OMA SpecWorks объединила в себе Open Mobile Alliance (OMA) и Альянс IPSO.
На текущий момент более 25 компаний внедрили протокол LwM2M, разработанный на базе стандарта LwM2M, включая ARM mbed IoT Device Platform, AT&T IoT solutions, AVSystem’s Coiote Platform, Ericsson’s Dynamic Digital Interaction (DDI), Gemalto modules, Huawei’s OceanConnect IoT Platform, Microsoft’s Azure и др.
Протокол LwM2M, реализованный на базе стандарта является протоколом уровня приложений, построенный на эффективной модели данных и разработанный для управления и предоставления сервисов устройствами интернета вещей. 
Традиционное управление устройствами интернета вещей, используемое операторами и производителями оборудования, базируется на внутренних, собственных решениях, что накладывает существенные ограничения для развертывания систем на рынке интернета вещей. 
LwM2M предлагает стандартное решение, подходящее для всего рынка интернета вещей, которое применимо как в мобильных и WiFi сетях, где необходимо назначать IP адрес устройству, так и в сетях не требующих IP (англ. Non-IP Data Delivery (NIDD)), в том числе NIDD через NB-IoT в стандартах 4G LTE и 5G.
На рисунке 1 показана область применения стандарта Lightweight M2M.
Область применения Lightweight M2M

Рисунок 1. Область применения Lightweight M2M

С точки зрения управления устройством (англ. Device Management) стандарт реализует следующий функционал:
- управление начальной загрузкой устройства (англ. Bootstraping)
- управление конфигурацией устройства (англ. Device Configuration)
- управление обновлениями программного обеспечения (англ. Firmware Update)
- управление отказами (англ. Fault Management)

С точки зрения приложения (англ. Application) стандарт реализует следующий функционал:
- контроль и управление конфигурацией (англ. Configuration & Control)
- отчеты (англ. Reporting)
 

Архитектура LwM2M

Сетевая архитектура, используемая протоколом LwM2M работает по принципу клиент-сервер и включает в себя три элемента сервер LwM2M (англ. LwM2M Server), сервер начальной загрузки (англ. LwM2M Bootstrap-Server) и клиент LwM2M (англ. LwM2M Client) как показано на рисунке 2.

Область применения Lightweight M2M

Рисунок 2. Архитектура системы LwM2M

Клиент LwM2M – располагается на конечных устройствах, которые взаимодействуют с Сервером LwM2M, позволяя последнему управлять ресурсами клиента. Клиент LwM2M имеет уникальный идентификатор – имя конечного устройства (англ. Endpoint Client Name), рекомендованные форматы, которого перечислены ниже:
• urn:uuid:########-####-####-############ (UUID = Universally Unique Identifier)
• urn:dev:ops:{OUI}-{ProductClass}-{SerialNumber} (OUI = Organizationally Unique Identifier - MAC адрес)
• urn:dev:os:{OUI}-{Серийный Номер}
• urn:imei:############### (IMEI = International Mobile Equipment Identity)
• urn:esn:######## (ESN = Electronic Serial Number)
• urn:meid:############## (MEID = Mobile Equipment Identifier)
• urn:imei-msisdn:###############-############### (MSISDN = Mobile Station International Subscriber Directory Number, т.е. номер телефона)

Сервер начальной загрузки – специальный сервер, который может связываться с клиентом при первоначальной или при каждой загрузке. Основное назначение сервера загрузки - передать клиенту модель данных, включая данные, необходимые для начала взаимодействия с Серверов LwM2M. Сервер начальной загрузки взаимодействует с клиентом, используя различный набор команд, и его нельзя считать просто Сервером LwM2M.

Сервер LwM2M – осуществляет взаимодействие с клиентом и имеет возможность считывать и записывать в модель данных, предоставляемых клиентом. Каждый клиент может подключаться к нескольким серверам, и каждый из серверов может иметь доступ только к определенным данным модели данных клиента.

На рисунке 3 представлен стек протокола LwM2M. В этой модели протокол LwM2M, основанный на протоколе CoAP (Constrained Application Protocol), благодаря встроенному управлению перегрузками, блочной передаче фрагментов данных, эффективному кодированию заголовков и полезной нагрузки, а также независимый от транспорта (IP, Non-IP) может использоваться для всех видов развертывания интернета вещей.

Область применения Lightweight M2M

Рисунок 3. Стек протоколов LwM2M

Модель данных

В стандарте LwM2M определена простая трехуровневая древовидная модель данных как показано на рисунке 4. 

Область применения Lightweight M2M

Рисунок 4. Модель данных LwM2M

Каждый из трех уровней имеет числовой идентификатор. Трехуровневая модель состоит из следующих элементов:

Объект – представляет собой набор данных, доступных в LwM2M клиенте. Например, в клиенте определены объекты, отвечающие за соединение с сервером, объекты поддерживающие сетевое соединение, объекты для доступа к данным различных датчиков и т.д. Каждому объекту присваивается уникальный идентификатор от 0 до 65535. Управление реестром объектов осуществляется OMA SpecWorks. Каждому объекту соответствует набор ресурсов, назначение которых общее для определенного экземпляра объекта.

Экземпляр объекта – отдельный набор данных из ряда подобных. Некоторые объекты имеют только один экземпляр с идентификатором 0, например, описание самого устройства или объект отвечающий за обновление ПО. Другие объекты могут иметь несколько экземпляров, или даже количество экземпляров может быть переменным, и экземпляры могут создаваться средствами протокола LwM2M. Пример такого экземпляра – объект, который управляет соединением с LwM2M сервером, когда клиент подключается к нескольким серверам одновременно, или объекты представляющие различные датчики (в случае с датчиками дополнительные экземпляры создать нельзя). Каждому экземпляру объекта также присваивается идентификатор от 0 до 65535.

Ресурс – каждый экземпляр объекта какого-либо объекта содержит набор ресурсов, определенного для самого объекта. Каждый ресурс имеет определенное назначение и идентифицируется так же, как и экземпляр объекта (0 до 65535). По режимам работы каждый ресурс подразделяется на: 

R (read only) – ресурс только для чтения, 
W (write only) – ресурс только для записи,
RW (read write) – ресурс для чтения и записи,
E (executable) – исполняемый ресурс.

Цифровое представление на каждом из этих трех уровней (объект, экземпляр объекта, ресурс) формируют путь, например, /1/2/3 ссылается на Ресурс=3, Экземпляр объекта=2, Объект=1. Также возможно ссылаться как на Экземпляр объекта /1/2 так и на сам объект /1.

Интерфейсы

На текущий момент LwM2M включает в себя четыре интерфейса, как показано на рисунке 5:
• Интерфейс начальной загрузки (англ. Bootstrap Interface)
• Интерфейс регистрации (англ. Registration Interface)
• Интерфейс управления и предоставления сервисов (англ. Device Management and Service Enablement Interface)
• Интерфейс информационной отчетности (англ. Information Reporting Interface)

Область применения Lightweight M2M

Рисунок 5. Интерфейсы LwM2M

Интерфейс начальной загрузки (англ. Bootstrap Interface)

Интерфейс начальной загрузки определяет набор команд, которые может использовать сервер начальной загрузки, чтобы обеспечить начальную конфигурацию клиента. В данном случае и LwM2M клиент и LwM2M сервер начальной нагрузки оба выступают и как CoAP клиент и как CoAP сервер. Клиент и сервер начальной нагрузки обмениваются следующими сообщениями:

Bootstrap Request POST /bs?ep={Endpoint Client Name} – запрос отправляется от клиента к серверу начальной загрузки, означающий команду на начальную загрузку. Это означает, что клиент появился в сети и ему необходима информация, каким образом осуществлять начальную загрузку. Однако, протокол также позволяет серверу начальной загрузки инициировать команду на начальную загрузку по собственной инициативе, т.е. без запроса от клиента.

Bootstrap Write PUT – запрос отправляется сервером начальной нагрузки на клиент, означающий команду на запись начальных данных. При этом создаются и заполняются определенные экземпляры объектов и ресурсы с целью инициализации модели данных для организации последующего взаимодействия с обычным LwM2M сервером.

Bootstrap Delete DELETE – запрос представляет команду от сервера на удаление экземпляров объектов, созданных для целей начальной загрузки.

Bootstrap Discover GET – запрос, интерпретируется как Bootstrap Discover, который может отправлять сервер начальной загрузки с целью определения, какая модель данных поддерживается клиентом. В данном случае сервер начальной загрузки получает доступ только к списку объектов и определенным мета данным. Доступ к значениям ресурсов запрещен.

При завершении процедуры сервер начальной загрузки отправляет команду Bootstrap Finish, представленную в виде запроса POST /bs. В случае получения данного запроса клиент проверяет корректность полученной модели данных и в случае успешной проверки подключается к обычному LwM2M серверу.

Как видно, интерфейс начальной загрузки необходим в основном только для записи данных в клиент. Сервер начальной нагрузки не может управлять или следить за работой клиента. Он только готовит его для работы с обычным сервером LwM2M. Также сервер начальной загрузки и обычный сервер LwM2M могут располагаться на одном физическом сервере.

Совсем не обязательно, чтобы информация о начальной загрузке была предоставлена сервером начальной загрузки. Данная информация также может быть прогружена при производстве клиента или загружена с карты памяти.

Интерфейс регистрации (англ. Registration Interface)

Интерфейс регистрации определяет протокол, который использует клиент для того, чтобы проинформировать LwM2M сервер о его присутствии и доступности. В данном случае LwM2M сервер работает как CoAP сервер, а LwM2M клиент как CoAP клиент. Запрос, который отправляется от клиента к серверу может содержать следующие сообщения:

Register – запрос, представленный в виде POST /rd?… отправляется клиентом когда он становиться доступным в сети. Тем самым информируя сервер, что клиент доступен для приема команд по интерфейсу управления устройством и предоставления сервисов и интерфейсу информационной отчетности. 

Update – представляет из себя CoAP POST запрос на URL, полученный в ответ на Register. Update отправляется в следующих ситуациях:
- периодически – для того, чтобы информировать сервер, что клиент доступен,
- всякий раз, когда какая-либо информация, ранее отправленная в сообщении Регистрации, изменилась, чтобы сервер всегда обладал актуальной информацией о состоянии клиента.

De-register (CoAP DELETE) – отправляется клиентов в случае инициирования процедуры выключения. В данном случае связь между клиентом и серверов разрывается. Также связь между клиентом и сервером может разорваться в случае отсутствия сообщений от клиента за определенный, сконфигурированный период времени.

Интерфейс управления и предоставления сервисов (англ. Device Management and Service Enablement Interface)

Интерфейс управления и предоставления сервисов является основным для управления клиентами. В данном случае LwM2M сервер выступает в роли CoAP клиента, отправляя запросы LwM2M клиенту, который в свою очередь работает как сервер на уровне CoAP. Однако необходимо учитывать, что взаимодействие клиент/сервер уровня CoAP обратимо в любой момент. 
Интерфейс включает следующие команды:

Discover (CoAP GET Accept: application/link-format) – позволяет LwM2M серверу получить список всех поддерживаемых объектов, экземпляров объектов и ресурсов. 

Read (CoAP GET отличный от указанного выше) – читает данные из единичного ресурса, экземпляра объекта или объекта целиком.

Write – позволяет LwM2M серверу модифицировать модель данных.
 • PUT /{Object ID}/{Instance ID}[/{Resource ID}] – запрос на замену данных. Замена может быть выполнена для отдельного ресурса или экземпляра объекта целиком, когда старые данные полностью стираются и заменяются новыми. PUT запрос в котором отсутствует опция Content-Format интерпретируется как запись атрибута, который меняет поведение объекта с точки зрения предоставления отчетности.
 • POST /{Object ID}/{Instance ID} – запрос на частичную замену. Может быть применен только к экземпляру объекта и заменяет только определенные ресурсы, сохраняя другие данные без изменения. POST запрос применимый к корневому объекту представляет собой операцию создания экземпляра объекта

Execute (POST /{Object ID}/{Instance ID}/{Resource ID}) – запрос на исполнение. Применим, например, тогда когда необходимо сделать обновление прошивки или перезагрузку.

Delete (CoAP DELETE) – запрос на удаление экземпляра объекта, созданного ранее.

Интерфейс информационной отчетности (англ. Information Reporting Interface)

Интерфейс информационной отчетности предназначен для того, чтобы LwM2M сервер автоматически принимал периодические обновления каких-либо значений модели данных. Следующие команды применимы для интерфейса отчетности:

Read (CoAP GET) – после добавления опции Observe option = 0 означает установку наблюдения. После приема такого запроса LwM2M клиент отправляет текущее значение и начинает отправлять сообщения Notify, когда это необходимо. Периодичность отправки контролируется атрибутами. При установке опции Observe option = 1 наблюдение снимается.
LwM2M клиент может отправлять сообщения как требующие так и не требующие подтверждения.  

Использование очередей и триггеры

Режим работы при использовании очередей, это особый режим работы при котором клиенту LwM2M не требуется постоянно находится в активном состоянии (слушать) для приема пакетов. Клиенту необходимо переходить в активное состояние только на короткое время, например, после отправки некого сообщения на LwM2M сервер. 
Режим очередей может использоваться независимо от используемого транспорта (IP, Non-IP). При регистрации LwM2M клиента, он сообщает поддерживает устройство режим работы с очередями или нет отправкой, используя в параметре Binding Mode значения ‘Q’. Параметр Binding Mode может принимать следующие значения:
U - UDP соединение в стандартном режиме
UQ - UDP соединение с использованием очередей
S - SMS соединение в стандартном режиме
SQ - SMS соединение с использованием очередей
US - оба UDP and SMS соединения активны в стандартном режиме
UQS - оба UDP and SMS соединения активны; UDP с использованием очередей, SMS в стандартном режиме
Также, в случае Non-IP доставки сообщений на стандарт можно ссылаться при использовании альтернативного транспорта, например, такого как LoRa WAN, но с учетом того, что, LoRa WAN не стандартизируется 3GPP и это накладывает определенные ограничения, например, отсутствием сервиса передачи коротких сообщений (SMS) на базе которого реализованы SMS триггеры. 
Для NB-IoT и LTE M применим SMS триггер, это специальная процедура, когда клиент находится в спящем режиме, но доступен по SMS. LwM2M сервер может перевести устройство в активное состояние, отправив команду Update Trigger средствами SMS. Пример процедуры регистрации, побудки клиента в неактивном состоянии и отправка сообщений клиенту, находящихся в очереди показана на рисунке 6.

Область применения Lightweight M2M

Рисунок 6. LwM2M регистрация. SMS триггер

Управление Non-IP устройствами в мобильных 3GPP IoT сетях

Так же, как и c использованием транспорта на базе протокола IP, Non-IP транспорт применим к мобильным технологиям интернета вещей, таким как NB-IoT и LTE M. Необходимо учитывать, что Non-IP при передаче данных через плоскость пользователя (User Plane) используется IP туннель точка-точка, и таким образом Non-IP устройство имеет “IP” адрес, назначенный C-SGN (MME+SGW+PGW). Non-IP доставка данных (NIDD) через SCEF (Service Capability Exposure Function) может включать полезную нагрузку LwM2M/CoAP как показано на рисунке 7.

Область применения Lightweight M2M

Рисунок 7. LwM2M в мобильных сетях IoT

Литература

1. https://www.omaspecworks.org/
2. https://github.com/AVSystem/Anjay
3. https://www.omaspecworks.org/?p=7674&preview=true