Поделиться через


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

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

Схема, показывающая обзор потоков устройств Центра устройств Интернета вещей.

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

Льготы

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

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

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

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

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

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

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

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

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

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

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

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

Схема, демонстрирующая шаги процесса рукопожатия для потока устройств центра IoT.

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

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

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

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

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

В ранее описанном процессе рукопожатия:

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

  • После завершения ранее описанного процесса создания потока, конечная точка потоковой передачи выступает в качестве прокси-сервера и передает трафик между службой и устройством через соответствующие WebSockets.

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

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

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

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

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

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

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

Снимок экрана: рабочая область для центра Интернета вещей на портале Azure, в котором выделено имя узла для конечных точек потоковой передачи устройств.

Кроме того, информацию о конечных точках, в частности ключи 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.73.0 или более поздней. Последнюю версию можно скачать на странице для установки Azure CLI.

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

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

Имя узла, связанное с конечной точкой потоковой передачи, можно найти на панели обзора центра Интернета вещей на портале Azure, как показано на следующем снимке экрана.

Снимок экрана: рабочая область для центра Интернета вещей на портале Azure, в котором выделено имя узла для конечных точек потоковой передачи устройств.

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

az iot hub devicestream show --name <YourIoTHubName>

Примечание.

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

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

Вы можете настроить Azure Monitor для сбора журналов ресурсов, связанных с потоками данных, поступающими от вашего IoT хаба. Этот подход может быть полезным в сценариях устранения неполадок.

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

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

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

    Снимок экрана: панель параметров диагностики на портале Azure, в котором выделены параметры журналов ресурсов Device Streams.

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

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

    Снимок экрана, показывающий журналы AzureDiagnostic для концентратора Интернета вещей, с акцентом на идентификацию, операции и результаты записи журнала ресурса Device Streams.

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

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

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

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

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

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

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

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