18
Hack`n`Tell IoT Стек протоколов для IoT. Применение SNMP в IoT проектах Александр Коваленко [email protected]

Стек протоколов для IoT. Пример использования SNMP

Embed Size (px)

Citation preview

Page 1: Стек протоколов для IoT. Пример использования SNMP

Hack`n`Tell IoTСтек протоколов для IoT.

Применение SNMP в IoT проектах

Александр Коваленко[email protected]

Page 2: Стек протоколов для IoT. Пример использования SNMP

Тезисы

• Открытые стандарты в мире IoT.

• Обзор стеков протоколов для IoT

• (MQTT, CoAP, SNMP).

• Применение SNMP в IoT проектах.

• Описание свойств IoT-устройства на примере термостата

• Демонстрация работы термостата.

Page 3: Стек протоколов для IoT. Пример использования SNMP

Уровневые модели и место IoT протоколов в стеке

Page 4: Стек протоколов для IoT. Пример использования SNMP

Проблема стандартизации. Новый вендор – новый протокол.

Производители IoT решений используют проприетарные протоколы, что приводит к следующим проблемам:• Нет унифицированного стека протоколов• Проблемы безопасности• Нет M2M взаимодействия (machine-to-machine)• Сложность интеграции в единую экосистемуРешение – использование открытых протоколов и стандартизация

Page 5: Стек протоколов для IoT. Пример использования SNMP

Обзор стеков протоколов для IoT

http://embedded-computing.com/articles/internet-things-requirements-protocols/

Page 6: Стек протоколов для IoT. Пример использования SNMP

MQTT (Message Queue Telemetry Transport)Облегченный протокол для М2М взаимодействия по принципу publisher/subscriberДанные передаются по TCP через центральный узел, называемый Broker.Ориентирован на передачу сообщений. Каждое сообщение публикуется на адрес (Topic)Каждый клиент, который подписывается на topic, получает все сообщения, отправленные в этот topic.

Broker

Client B

Client C

subscribe“temperature”

subscribe“temperature”

Client A

Broker

Client B

Client C

“temperature” = “22.5”

Client A

publish“temperature” “22.5” “temperature” = “22.5”

Topic может иметь иерархическую структуру, поддерживает wildcard-маски: kitchen/oven/temperature, kitchen/+/temperaturehttps://eclipse.org/community/eclipse_newsletter/2014/february/article2.php

Page 7: Стек протоколов для IoT. Пример использования SNMP

CoAP (Constrained Application Protocol). Описание

Протокол разрабатывался специально для М2М и IoT приложенийОформлен в виде стандарта RFC 7252 в июне 2014 годаhttps://tools.ietf.org/html/rfc7252

Имплементирует REST модель доступа к ресурсам через URLРаботает поверх UDP (port 5683)Реализованы методы GET, PUT, POST, DELETE

Формат сообщенияCoAP Discovery

Безопасность достигается использованием DTLS (PSK, Raw Public Key, Cert.)Поддерживаются листы доступа ACL для ограничения доступа к определенным ресурсам

Page 8: Стек протоколов для IoT. Пример использования SNMP

CoAP (Constrained Application Protocol) . Реализация

CoAP взят за основу в проекте IoTivity, разрабатываемом Open Interconnect Consortium .23 декабря 2015 года консорциум опубликовал спецификацию OIC v.1.0, описывающую в том числе и унифицированный формат именования ресурсов IoT устройства.http://openinterconnect.org/developer-resources/specs/

Page 9: Стек протоколов для IoT. Пример использования SNMP

CoAP (Constrained Application Protocol) . Реализация

Ресурсы согласно спецификации OIC унифицированы и имеют иерархическую структуру

URI Resource type Interaction/oic/res Default Discovery

/oic/p Platform Discovery

/oic/d Device Discovery

/oic/rts Resource Type Discovery

/oic/ifs Interface Discovery

/oic/con Configuration Device Management

/oic/mon Monitoring Device Management

/oic/mnt Maintenance Device Management

Page 10: Стек протоколов для IoT. Пример использования SNMP

CoAP (Constrained Application Protocol) . Реализация

Пример обмена сообщениями

Page 11: Стек протоколов для IoT. Пример использования SNMP

CoAP (Constrained Application Protocol) . Прототип.Dev. board based on PIC18F67J60http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC18F67J60http://megadevices.com.ua/pic18f67j60-board/

8 bit microcontroller with integrated Ethernet128 kB ROM, использовано 28,5 kB 3,8 kB RAM, использовано 1,2 kB CPU speed – 10,5 MIPS

Реализованы методы Discovery и GETК прототипу был подключен датчик DS18B20, возвращающий температуруДля работы с платой использовался плагин для Firefox – Copper (Cu)https://addons.mozilla.org/ru/firefox/addon/copper-270430/

Page 12: Стек протоколов для IoT. Пример использования SNMP

SNMP (Simple Network Management Protocol) . Описание.

Протокол разрабатывался для контроля и управления сетевыми устройствамиОформлен в виде стандарта RFC 1157 в мае 1990 года, позже дополнялсяhttps://tools.ietf.org/html/rfc1157

На контролируемом устройстве запускается SNMP-AgentРесурсы описываются в иерархическом дереве MIB (Management

Information Base)Работает поверх UDP (port 161, 162)Базовые методы GET, SET, WALK, TRAP

Page 13: Стек протоколов для IoT. Пример использования SNMP

SNMP (Simple Network Management Protocol) . MIB.

Структура MIB (Management Information Base)

http://www.networkmanagementsoftware.com/snmp-tutorial-part-2-rounding-out-the-basics/

Современная структура содержит две ветки объектов:• 1.3.6.1.2 – mgmt – общая для всех SNMP-enabled устройств• 1.3.6.1.4 – private – определяется производителем по выделенному

Private Enterprise Number, PEN для каждого производителя.

Page 14: Стек протоколов для IoT. Пример использования SNMP

SNMP (Simple Network Management Protocol) . MIB.

Базовые свойства ветки mgmt (1.3.6.1.2):OID Name Type/Permission Description

1.3.6.1.2.1.1.1 sysDescr OctetString/rw Описание устройства1.3.6.1.2.1.1.2 sysObjectID OID/ro Идентификатор устройства1.3.6.1.2.1.1.3 sysUpTime TimeTicks/ro Время работы1.3.6.1.2.1.1.4 sysContact OctetString/rw Контакты администратора1.3.6.1.2.1.1.5 sysName OctetString/rw Имя устройства1.3.6.1.2.1.1.6 sysLocation OctetString/rw Расположение

Ветка производителя private (1.3.6.1.4) содержит отдельную ветку с кодом Private Enterprise Number для каждого отдельного производителя:http://www.iana.org/assignments/enterprise-numbers/enterprise-numbers 9 – ciscoSystems (.1.3.6.1.4.1.9) 63 - Apple Computer, Inc. (.1.3.6.1.4.1.63) 171 – D-Link Systems, Inc. (.1.3.6.1.4.1.171) 236 - Samsung Electronics Co., LTD. (.1.3.6.1.4.1.236) 42908 - Megadevices (.1.3.6.1.4.1.42908)

Да, да, зарегистрировать свой Enterprise Number можно совершенно бесплатно через форму http://pen.iana.org/pen/PenApplication.pageПосле непродолжительной переписки с регистратором получим результат.

42908 Megadevices Oleksandr Kovalenko kovalenko.md&gmail.com

Page 15: Стек протоколов для IoT. Пример использования SNMP

SNMP (Simple Network Management Protocol) . Реализация.

После получения PEN-кода, можно описывать структуру объектов своего устройства. Пример для IP Thermostathttp://megadevices.com.ua/ip-thermostat/

OID Name Type/Perm. Description Default Value1.3.6.1.4.1.42908.2.109.1.2 mdMask OctetString/rw Маска сети 255.255.255.01.3.6.1.4.1.42908.2.109.1.3 mdGateway OctetString/rw Адрес шлюза 192.168.1.11.3.6.1.4.1.42908.2.109.1.4 mdHostIP OctetString/rw Адрес станции NMS 192.168.1.11.3.6.1.4.1.42908.2.109.1.5 mdCommunity OctetString/rw Community string megadevices1.3.6.1.4.1.42908.2.109.1.6 mdUseTrap Integer/rw Разрешить отправку SNMP-Trap 0 - нет1.3.6.1.4.1.42908.2.109.1.7 mdUseDHCP Integer/rw ИспользоватьDHCP 1 - да1.3.6.1.4.1.42908.2.109.1.8 mdLeaseStatus Integer/ro Время аренды адреса1.3.6.1.4.1.42908.2.109.1.9 mdUseSecond Integer/rw Разрешить отправку данных 0 - нет1.3.6.1.4.1.42908.2.109.1.10 mdSecondIP OctetString/rw Адрес narodmon.ru 94.19.113.2211.3.6.1.4.1.42908.2.109.1.11 mdSecondInterval Integer/rw Интервал отправки, мин 31.3.6.1.4.1.42908.2.109.1.12 mdSecondPort Gauge/rw Порт narodmon.ru 82831.3.6.1.4.1.42908.2.109.2.1 mdOut1Set Integer/rw Управление/состояние реле 1 (пример)1.3.6.1.4.1.42908.2.109.3.1 mdTempStatus OctetString/rw Значение температуры +27,5 (пример)1.3.6.1.4.1.42908.2.109.3.2 mdTreshold1 OctetString/rw Первый порог температуры 101.3.6.1.4.1.42908.2.109.3.3 mdTreshold2 OctetString/rw Второй порог температуры 301.3.6.1.4.1.42908.2.109.4.1 mdSensorStatus OctetString/rw Состояние входов 1,1,1 (пример)

220 В

Нагрузка

Датчик„сухой

контакт”

LAN

Реле

Питание

Сеть

IP Thermostat

megadevices.com.uaДатчик температуры

Сброс

Page 16: Стек протоколов для IoT. Пример использования SNMP

SNMP (Simple Network Management Protocol) . Стандартизация.

SNMP для IoT - включение в стандарт отдельной ветки для свойств IoT устройств.

Ветка 1.3.6.1.6 для Internet of Things. Позволяющая описывать один и тот же объект в устройствах разных производителей :

1.3.6.1.6.1.xxx.nn.y.z, гдеxxx – superclass: 1 – smarthome, 2 – smartcar, 3 – smartcity etc.nn – class of devices: 1 – lamp, 2 – thermostat, 3 – conditioner etc.y,z – parameters.

Пример: snmp set для ID 1.3.6.1.6.1.1.1.1.0 со значением 60 установит яркость лампы в 60%. Значение 0 выключит лампу.

ID для всех ламп должен быть одинаковым и не зависящим от производителя лампы.

Page 17: Стек протоколов для IoT. Пример использования SNMP

SNMP (Simple Network Management Protocol) . Стандартизация.

Процесс стандартизации может выглядеть так:

1. Идея. IoT RGB лампа2. Проверка ветки IoT (1.3.6.1.6), свойство color отсутствует.

3. Производство лампы, использование приватной ветки 42908-Megadevices

4. Анонс, реклама IoT RGB лампы от Megadevices5. Подача заявки на стандартизацию нового свойства color 6. Фаза поддержки, предоставление MIB для разработчиков приложений7. Получение подтверждения. Новое свойство включено в IoT ветку

8. Обновление прошивки в своих устройствах для нового свойства9. Другие производители используют стандартный идентификатор в своих лампах.

Object ID Name Description1.3.6.1.6.1.1.1.1.0 brightness 0 – off, 100 – max brightness

Object ID Name Description1.3.6.1.4.1.42908.5.3.1 color Define color of light

Object ID Name Description1.3.6.1.6.1.1.1.1.0 brightness 0 – off, 100 – max brightness1.3.6.1.6.1.1.1.2.0 color Define color of light

Page 18: Стек протоколов для IoT. Пример использования SNMP

Полезные ссылкиHack`n`Tellhttp://hack-n-tell.intersog.com/

MQTT Specification v.3.1http://mqtt.org/2010/08/mqtt-v3-1-specification-available

Open Interconnect Consortium Specificationhttp://openinterconnect.org/developer-resources/specs/

Проект IoTivityhttps://www.iotivity.org/

Сайт регистратора IANA (Internet Assigned Numbers Authority)http://www.iana.org

Megadevices. Mega-устройства на micro-контроллерахhttp://megadevices.com.ua/https://www.facebook.com/megadevices/

Народный мониторинг. Сервис для визуализации данных с IoT устройствhttp://narodmon.ru/

Just for fun – IT Museum. Музей ретро компьютеров, гаджетов и игровых приставокhttps://www.instagram.com/itmuseum/https://www.facebook.com/itmuseum/