Как технология USB over IP позволила людям забыть о расстоянии

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

Некоторые технологии являются своеобразными канонами: используются уже не один десяток лет и постоянно совершенствуются. А есть и такие, которые уже либо вымерли, либо же родились, но так и попали в массы ввиду своего несовершенства, низкой релевантности в отношении требований рынка и прочего.

В этой статье речь пойдет о технологии, не относящейся ни к одной, ни к другой группе. Без нее компьютерные сети смогли бы существовать без особых проблем, но при этом она способна значительно упростить работу и снизить затраты на эксплуатацию у крупных предприятий, небольших организаций и даже домашних пользователей.

История появления технологии USB over IP


Сложно сказать когда именно появилась данная технология в том виде, в каком ее используют сейчас. Вероятнее всего с развитием возможностей программных компонентов Linux, ростом потребностей рынка и изобретательности энтузиастов и появилась современная технология проброса USB-девайсов через сеть.

В наши же дни существуют два популярных инструмента для трассировки USB-устройств: usbip и usbip-win. Оба из них нацелены на совместное использование USB устройств через IP-сеть за счет обработки USB I/O сообщений, их инкапсуляции в TCP/IP и последующей передачи передачи между устройствами сети типа «клиент-сервер». В такой схеме устройства подключаются к серверу и на нем же запускается необходимый демон.

На машине клиента, как правило, запускается любое приложение, которое не умеет работать с сетью, зато прекрасно справляется с USB-девайсами. Технология проброса как раз позволяет эмулировать локальное подключение USB-устройств на клиентской машине.

  • usbip был разработан проектом «USB/IP» еще в 2009 девятом году и благодаря успеху был добавлен в сборки Linux-ветки операционных систем и все-еще развивается. Поддержка же Windows клиента была остановлена в 2013 году на выпущенной подписанной двоичной цифровой подписи драйвера.
  • usbip-win же является аналогичным проектом, умеющим работать с Windows 10. Более того, он позволяет поднимать на Windows 10 не только клиентскую, но и серверную часть, а также совместим с Linux-версией.

Кому это интересно и где применяется


Преимущества сетевого проброса USB-устройств:

  • Безопасность. Возможность изолированного размещения USB девайсов от их конечного пользователя, шифрование и контроль доступа к устройствам, защита от человеческого фактора (кражи или утраты устройства).
  • Мониторинг. Использование протокола SMTP и сценариев SNTP для отслеживания состояния устройств.
  • Доступность и мультитенантность. USB устройства доступны для неограниченного числа пользователей (с возможностью создания групповых политик и уровней доступа) без необходимости физического переключения из любой точки мира.
  • Централизованное администрирование. Удобство в управлении каждым USB-устройством, подключенным в концентратор.

Недостатки:

  • Работоспособность полностью зависит от стабильной работы сети.
  • Высокая стоимость аппаратных решений (управляемых USB-хабов с большим количеством портов).
  • Не все USB-устройства могут работать через сеть штатно по причине увеличенного времени отклика.

Используемые технологии и оборудование


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

Подключение локальных и удаленных устройств
Когда приложения отправляют запрос на конечное устройство, USB PDD (USB Personal Device Driver) преобразует запросы ввода-вывода в серию команд понятных для USB, а затем отправляет их через драйвер шины (связующее звено между драйвером устройства и конечным устройством) в виде блоков USB-запросов на конечное устройство.

Способы проброса аппаратных ключей


Персональный драйвер устройства (PDD), как ни странно, отвечает за управление отдельными USB-устройствами. PDD отправляет запросы в виде специальных блоков запросов URB (USB Request Block), которыми он обменивается данными с ядром USB (USB Core) — отдельной подсистемой внутри ОС, выполняющей роль поддержки USB-устройств и контроллеров.

Модель обмена данными между USB устройствами и конечным пользователем
Для реализации проброса протокола USB через IP — сеть была разработана сущность, называемая виртуальным интерфейсом хост-контроллера, он же Virtual Host Controller Interface (VHCI). VHCI относится к виртуальному контроллеру и способен экспортировать виртуальные USB-устройства, не поддерживаемые физическими устройствами. В Linux контроллеры VHCI используются для доступа к USB-устройствам с удаленных машин, подключенных по уже известному нам протоколу USBIP.

VHCI является эквивалентом драйвера хост-контроллера (HCD) и отвечает за обработку URB-запросов. И VHCI, и HCD отвечают за обработку URB-запросов, полученных от ядра и делят их на более простые запросы, именуемые как Transfer Descriptions (дескрипторы передачи TD) для их дальнейшей передачи на хост-контроллер интерфейса, он же USB-контроллер (Host Controller Interface HCI). Данный интерфейс работает на уровне физических регистровых передач и обеспечивает коммуникацию с периферийными устройствами, подключенными к USB.

Теперь о том, как USB попадает в сеть. Блок запросов URB преобразуется в блок запроса USB / IP драйвером VHCI и отправляется на удаленный компьютер. Драйвер заглушки также добавлен как новый тип USB PDD. Драйвер-заглушка отвечает за декодирование входящих USB / IP-пакетов с удаленных машин, извлечение URB и последующую отправку их на локальные USB-устройства.


Модуль ядра vhci-hcd — это только виртуальный хост-контроллер, к которому вы можете подключить виртуальные устройства.

Как это устроено в Selectel



Рассмотрим работу с USB-концентратором на примере устройства DistKontrolUSB-16. Для того, чтобы пробросить USB-устройство с порта концентратора, необходимо:

  1. Создать USB-устройство, указав его Vendor/ProductID (VID/PID) и серийный номер. Именно по нему концентратор будет проводить отбор подключенных устройств:

  2. Указать внешний IP-адрес клиента, который будет подключаться к USB-концентратору и указать разрешенные для подключения порты:

  3. В клиентском приложении найти необходимое устройство и отправить команду на его использование. После этого девайс будет доступен словно физически подключенное устройство.


Заключение


Описанная технология способна обеспечить необходимую масштабируемость и гибкость в современной, постоянно изменяющейся среде. Проброс USB-устройств через сеть также обеспечивает надежность за счет ограничения физического доступа к устройствам.

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

Снижение рисков и затрат на обслуживание, удобство совместного использования ресурсов между рабочими станциями — все это делает технологию usbip конкурентоспособной в отношении безопасной авторизации и передачи данных (с TOTP/HOTP, OCRA) и применимой для решения широкого спектра задач IT.

Источник: https://habr.com/ru/company/selectel/blog/587522/


Интересные статьи

Интересные статьи

В прошлый раз мы рассказывали о сервисах, аккумулирующих видеоролики, которые практически никто не видел. Сегодня продолжим тему и поговорим о ресурсах, где можно найти м...
Представляем исчерпывающую шпаргалку, где мы простыми словами рассказываем, из чего «делают» искусственный интеллект и как это все работает. В чем разница между Artificial Intelligence, Machin...
Всем привет! На днях стали доступны результаты Stackoverflow Dev Survey 2019. В опросе приняли участие 90К разработчиков со всего мира, что делает данные не только интересным чтивом для обсуждени...
Мы публикуем видео с прошедшего мероприятия. Приятного просмотра.
Сегодня мы поговорим о перспективах становления Битрикс-разработчика и об этапах этого пути. Статья не претендует на абсолютную истину, но даёт жизненные ориентиры.