Потоки устройств Центра Интернета вещей (предварительная версия)
Потоки устройств Центра Интернета вещей Azure облегчают создание защищенных двусторонних туннелей TCP для различных сценариев взаимодействия между устройством и облаком. Поток устройства проходит через конечную точку потоковой передачи Центра Интернета вещей, которая действует в качестве прокси-сервера между вашим устройством и конечными точками службы. Эта конфигурация (показана на схеме ниже) особенно полезна, когда устройства находятся за сетевым брандмауэром или в частной сети. Таким образом, потоки устройств Центра Интернета вещей позволяют клиентам связываться с устройствами Центра Интернета вещей при использовании брандмауэра без необходимости открывать набор портов сетевого брандмауэра для входящего или исходящего трафика.
При использовании потоков устройств Центра Интернета вещей устройства остаются защищенными и на них всего лишь нужно открыть исходящие подключения TCP к конечной точке потоковой передачи Центра Интернета вещей через порт 443. После установки потоковой передачи приложения на стороне службы и устройства получат программный доступ к объекту клиента WebSocket для обмена необработанными байтами. Гарантии надежности и упорядоченности, предоставляемые этим туннелем, точно такие же, как и у протокола TCP.
Льготы
Потоки устройств Центра Интернета вещей предоставляют следующие преимущества:
Безопасное подключение при использовании брандмауэра. К устройствам Центра Интернета вещей можно получить доступ из конечных точек службы, не открывая порт входящего трафика брандмауэра на периметре устройства или сети (через порт 443 должно осуществляться только исходящее подключение к Центру Интернета вещей).
Проверка подлинности. Как на стороне устройства, так и на стороне службы туннеля требуется проверка подлинности в Центре Интернета вещей с использованием соответствующих учетных данных.
Шифрование. По умолчанию потоки устройств Центра Интернета вещей используют TLS-подключения. Это гарантирует, что трафик всегда шифруется, независимо от того, использует ли приложение шифрование.
Простота подключения. Во многих случаях благодаря потокам устройств устраняется необходимость в сложной установке виртуальных частных сетей для подключения к устройствам Интернета вещей.
Совместимость со стеком TCP/IP. Потоки устройств Центра Интернета вещей вмещают трафик приложения по протоколу TCP/IP. Это означает, что эту функцию может использовать широкий диапазон запатентованных протоколов, а также протоколов, основанных на стандартах.
Простота в использовании при настройке частной сети. Служба может подключиться к устройству по его идентификатору, а не по его IP-адресу. Это полезно в ситуациях, когда устройство находится в частной сети и имеет частный IP-адрес или когда IP-адрес назначается динамически и неизвестен на стороне службы.
Рабочие процессы при использовании потоков устройств
Потоковая передача данных устройства инициируется в том случае, когда служба запрашивает подключение к устройству с указанием его идентификатора. Этот рабочий процесс особенно подходит для модели взаимодействия "клиент — сервер", в том числе с задействованием протоколов SSH и RDP, когда пользователь хочет удаленно подключиться к серверу SSH и RDP, выполняемому на устройстве, с помощью клиентской программы SSH и RDP.
Процесс создания потока устройства включает согласование между устройством, службой, основной конечной точкой и конечной точкой потоковой передачи Центра Интернета вещей. Хотя основная конечная точка Центра Интернета вещей организует создание потока устройства, конечная точка потоковой передачи обрабатывает трафик, который проходит между службой и устройством.
Процесс создания потока устройства
Программное создание потока устройства с помощью пакета SDK состоит из приведенных ниже шагов, которые также показаны на рисунке ниже:
Приложение устройства заранее регистрирует обратный вызов, чтобы получить уведомление при инициации подключения нового потока к устройству. Этот шаг обычно происходит, когда устройство загружается и подключается к Центру Интернета вещей.
Программа на стороне службы инициирует подключение потока устройства, когда это необходимо, предоставляя идентификатор устройства (не IP-адрес).
Центр Интернета вещей уведомляет программу на стороне устройства, вызывая обратный вызов, зарегистрированный на шаге 1. Устройство может принять или отклонить запрос на инициацию потоковой передачи. Эта логика может отличаться в зависимости от конкретного сценария приложения. Если устройство отклоняет этот запрос потоковой передачи, Центр Интернета вещей уведомляет службу. В противном случае выполняются следующие действия.
Устройство создает защищенное исходящее подключение TCP к конечной точке потоковой передачи через порт 443 и преобразует его в подключение WebSocket. URL-адрес конечной точки потоковой передачи, а также учетные данные, используемые для аутентификации, предоставляются устройству с помощью Центра Интернета вещей как часть запроса, отправленного на шаге 3.
Служба уведомляется о результатах принятия потока устройством и устанавливает собственное подключение клиента 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.
Найдите нужный Центр Интернета вещей на портале Azure. В области слева в разделе Мониторинг выберите Параметры диагностики. Щелкните команду Добавить параметр диагностики.
Укажите имя для параметра диагностики и выберите DeviceStreams в списке журналов. Затем выберите Отправить в Log Analytics. Вам будет предложено создать рабочую область Log Analytics или выбрать имеющуюся.
После создания параметра диагностики для отправки журналов потоков устройств в рабочую область Log Analytics можно получить доступ к журналам, выбрав Журналы в разделе Мониторинг в левой области Центра Интернета вещей на портале Azure. Журналы потоков устройств будут отображаться в таблице
AzureDiagnostics
и иметь значениеCategory=DeviceStreams
. Необходимо учитывать, что после выполнения операции может пройти несколько минут, прежде чем журналы появятся в таблице.Как показано ниже, идентификатор целевого устройства и результат операции также доступны в журналах.
Дополнительные сведения об использовании Azure Monitor с Центром Интернета вещей см. в статье Мониторинг Центра Интернета вещей. Сведения о всех журналах ресурсов, метриках и таблицах, доступных для Центра Интернета вещей, см. в справочнике по мониторингу данных в Центре Интернета вещей Azure.
Доступность по регионам
Во время общедоступной предварительной версии потоки устройств Центр Интернета вещей доступны в регионах Центральной ЧАСТИ США, Восточной части США EUAP, Северной Европе и Юго-Восточной Азии. Убедитесь, что центр создан в одном из этих регионов.
Доступность пакета SDK
Обе стороны каждого потока (на стороне устройства и службы) создают туннель, используя пакет SDK для Центра Интернета вещей. На этапе общедоступной предварительной версии клиенты могут выбрать пакет SDK для следующих языков:
пакеты SDK для C и C# поддерживают потоки устройств на стороне устройства;
пакеты SDK для NodeJS и C## поддерживают потоки устройств на стороне службы.
Следующие шаги
Используйте приведенные ниже ссылки для получения дополнительных сведений о потоках устройства.