Потоки устройств Центра Интернета вещей (предварительная версия)

Потоки устройств Центра Интернета вещей Azure облегчают создание защищенных двусторонних туннелей TCP для различных сценариев взаимодействия между устройством и облаком. Поток устройства проходит через конечную точку потоковой передачи Центра Интернета вещей, которая действует в качестве прокси-сервера между вашим устройством и конечными точками службы. Эта конфигурация (показана на схеме ниже) особенно полезна, когда устройства находятся за сетевым брандмауэром или в частной сети. Таким образом, потоки устройств Центра Интернета вещей позволяют клиентам связываться с устройствами Центра Интернета вещей при использовании брандмауэра без необходимости открывать набор портов сетевого брандмауэра для входящего или исходящего трафика.

При использовании потоков устройств Центра Интернета вещей устройства остаются защищенными и на них всего лишь нужно открыть исходящие подключения TCP к конечной точке потоковой передачи Центра Интернета вещей через порт 443. После установки потоковой передачи приложения на стороне службы и устройства получат программный доступ к объекту клиента WebSocket для обмена необработанными байтами. Гарантии надежности и упорядоченности, предоставляемые этим туннелем, точно такие же, как и у протокола TCP.

Льготы

Потоки устройств Центра Интернета вещей предоставляют следующие преимущества:

  • Безопасное подключение при использовании брандмауэра. К устройствам Центра Интернета вещей можно получить доступ из конечных точек службы, не открывая порт входящего трафика брандмауэра на периметре устройства или сети (через порт 443 должно осуществляться только исходящее подключение к Центру Интернета вещей).

  • Проверка подлинности. Как на стороне устройства, так и на стороне службы туннеля требуется проверка подлинности в Центре Интернета вещей с использованием соответствующих учетных данных.

  • Шифрование. По умолчанию потоки устройств Центра Интернета вещей используют TLS-подключения. Это гарантирует, что трафик всегда шифруется, независимо от того, использует ли приложение шифрование.

  • Простота подключения. Во многих случаях благодаря потокам устройств устраняется необходимость в сложной установке виртуальных частных сетей для подключения к устройствам Интернета вещей.

  • Совместимость со стеком TCP/IP. Потоки устройств Центра Интернета вещей вмещают трафик приложения по протоколу TCP/IP. Это означает, что эту функцию может использовать широкий диапазон запатентованных протоколов, а также протоколов, основанных на стандартах.

  • Простота в использовании при настройке частной сети. Служба может подключиться к устройству по его идентификатору, а не по его IP-адресу. Это полезно в ситуациях, когда устройство находится в частной сети и имеет частный IP-адрес или когда IP-адрес назначается динамически и неизвестен на стороне службы.

Рабочие процессы при использовании потоков устройств

Потоковая передача данных устройства инициируется в том случае, когда служба запрашивает подключение к устройству с указанием его идентификатора. Этот рабочий процесс особенно подходит для модели взаимодействия "клиент — сервер", в том числе с задействованием протоколов SSH и RDP, когда пользователь хочет удаленно подключиться к серверу SSH и RDP, выполняемому на устройстве, с помощью клиентской программы SSH и RDP.

Процесс создания потока устройства включает согласование между устройством, службой, основной конечной точкой и конечной точкой потоковой передачи Центра Интернета вещей. Хотя основная конечная точка Центра Интернета вещей организует создание потока устройства, конечная точка потоковой передачи обрабатывает трафик, который проходит между службой и устройством.

Процесс создания потока устройства

Программное создание потока устройства с помощью пакета SDK состоит из приведенных ниже шагов, которые также показаны на рисунке ниже:

  1. Приложение устройства заранее регистрирует обратный вызов, чтобы получить уведомление при инициации подключения нового потока к устройству. Этот шаг обычно происходит, когда устройство загружается и подключается к Центру Интернета вещей.

  2. Программа на стороне службы инициирует подключение потока устройства, когда это необходимо, предоставляя идентификатор устройства (не IP-адрес).

  3. Центр Интернета вещей уведомляет программу на стороне устройства, вызывая обратный вызов, зарегистрированный на шаге 1. Устройство может принять или отклонить запрос на инициацию потоковой передачи. Эта логика может отличаться в зависимости от конкретного сценария приложения. Если устройство отклоняет этот запрос потоковой передачи, Центр Интернета вещей уведомляет службу. В противном случае выполняются следующие действия.

  4. Устройство создает защищенное исходящее подключение TCP к конечной точке потоковой передачи через порт 443 и преобразует его в подключение WebSocket. URL-адрес конечной точки потоковой передачи, а также учетные данные, используемые для аутентификации, предоставляются устройству с помощью Центра Интернета вещей как часть запроса, отправленного на шаге 3.

  5. Служба уведомляется о результатах принятия потока устройством и устанавливает собственное подключение клиента WebSocket к конечной точке потоковой передачи. Аналогичным образом она получает URL-адрес конечной точки потоковой передачи и информацию об аутентификации из Центра Интернета вещей.

Во время описанного выше процесса подтверждения:

  • Процесс подтверждения необходимо выполнить в течение 60 секунд (шаг 2–5), в противном случае подтверждение завершится ошибкой из-за истечения времени ожидания, а служба получит соответствующее уведомление.

  • Когда поток будет создан, конечная точка потоковой передачи будет действовать в качестве прокси-сервера и будет передавать трафик между службой и устройством через соответствующие WebSocket-подключения.

  • Устройству, как и службе, требуется исходящее подключение к основной конечной точке Центра Интернета вещей, а также к конечной точке потоковой передачи через порт 443. URL-адреса этих конечных точек доступны на вкладке Обзор на портале Центра Интернета вещей.

  • Гарантии надежности и упорядоченности установленного потока точно такие же, как и предоставляемые TCP.

  • Все подключения к Центру Интернета вещей и конечной точке потоковой передачи используют TLS и шифруются.

Завершение потока

Установленный поток завершается, когда любое из подключений по протоколу TCP к шлюзу отключается (службой или устройством). Это может произойти добровольно, если закрыть подключение WebSocket в программе устройства или службы, или недобровольно в случае истечения времени ожидания или сбоя процесса. После закрытия подключения устройства или службы к конечной точке потоковой передачи другое подключение TCP также будет принудительно разорвано. И служба, и устройство отвечают за повторное создание потока, если это необходимо.

Требования к подключению

Как сторона устройства, так и сторона службы потока устройства должны иметь возможность устанавливать TLS-подключения к Центру Интернета вещей и его конечной точке потоковой передачи. Для этого требуется исходящее подключение к этим конечным точкам через порт 443. Имя узла, связанное с этими конечными точками, можно найти на вкладке Обзор Центра Интернета вещей, как показано на рисунке ниже:

Кроме того, информацию о конечных точках, в частности ключи property.hostname и property.deviceStreams, также можно получить с помощью Azure CLI в разделе свойств центра.

az iot hub devicestream show --name <YourIoTHubName>

Результат представляет собой объект JSON всех конечных точек, к которым службе и устройству центра необходимо подключаться для установки потока устройства.

{
  "streamingEndpoints": [
    "https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
  ]
}

Примечание.

Убедитесь, что вы установили Azure CLI 2.0.57 или новее. Последнюю версию можно скачать на странице для установки Azure CLI.

Разрешение исходящих подключений к конечным точкам потоковой передачи устройства

Как уже упоминалось ранее, устройство создает исходящее подключение к конечной точке потоковой передачи Центра Интернета вещей во время процесса запуска потоков устройств. Ваши брандмауэры устройства или сети должны разрешать исходящие подключения к шлюзу потоковой передачи через порт 443 (обратите внимание, что обмен данными осуществляется через подключение WebSocket, зашифрованное с помощью протокола TLS).

Имя узла конечной точки потоковой передачи устройств можно найти на портале Центр Интернета вещей Azure на вкладке "Обзор".

Кроме того, эти сведения можно найти с помощью Azure CLI:

az iot hub devicestream show --name <YourIoTHubName>

Примечание.

Убедитесь, что вы установили Azure CLI 2.0.57 или новее. Последнюю версию можно скачать на странице для установки Azure CLI.

Устранение неполадок с использованием журналов ресурсов для потоков устройств

Вы можете настроить Azure Monitor, чтобы получить журналы ресурсов для потоков устройств, созданные Центром Интернета вещей. Это может быть очень полезно в сценариях устранения неполадок.

Выполните указанные ниже действия, чтобы создать параметр диагностики для отправки журналов потоков устройств для Центра Интернета вещей в журналы Azure Monitor.

  1. Найдите нужный Центр Интернета вещей на портале Azure. В области слева в разделе Мониторинг выберите Параметры диагностики. Щелкните команду Добавить параметр диагностики.

  2. Укажите имя для параметра диагностики и выберите DeviceStreams в списке журналов. Затем выберите Отправить в Log Analytics. Вам будет предложено создать рабочую область Log Analytics или выбрать имеющуюся.

    Enable device streams logs

  3. После создания параметра диагностики для отправки журналов потоков устройств в рабочую область Log Analytics можно получить доступ к журналам, выбрав Журналы в разделе Мониторинг в левой области Центра Интернета вещей на портале Azure. Журналы потоков устройств будут отображаться в таблице AzureDiagnostics и иметь значение Category=DeviceStreams. Необходимо учитывать, что после выполнения операции может пройти несколько минут, прежде чем журналы появятся в таблице.

    Как показано ниже, идентификатор целевого устройства и результат операции также доступны в журналах.

Дополнительные сведения об использовании Azure Monitor с Центром Интернета вещей см. в статье Мониторинг Центра Интернета вещей. Сведения о всех журналах ресурсов, метриках и таблицах, доступных для Центра Интернета вещей, см. в справочнике по мониторингу данных в Центре Интернета вещей Azure.

Доступность по регионам

Во время общедоступной предварительной версии потоки устройств Центр Интернета вещей доступны в регионах Центральной ЧАСТИ США, Восточной части США EUAP, Северной Европе и Юго-Восточной Азии. Убедитесь, что центр создан в одном из этих регионов.

Доступность пакета SDK

Обе стороны каждого потока (на стороне устройства и службы) создают туннель, используя пакет SDK для Центра Интернета вещей. На этапе общедоступной предварительной версии клиенты могут выбрать пакет SDK для следующих языков:

  • пакеты SDK для C и C# поддерживают потоки устройств на стороне устройства;

  • пакеты SDK для NodeJS и C## поддерживают потоки устройств на стороне службы.

Следующие шаги

Используйте приведенные ниже ссылки для получения дополнительных сведений о потоках устройства.