How USB over IP allowed people to forget about distance

Image source

Today, the rapid growth in the number of devices on the Internet and the Internet of Things is no longer surprising. There are many different protocols and technologies on which the processing and exchange of information between devices and, in fact, the very communication of these devices is based.

Some technologies are original canons: they have been used for more than a dozen years and are constantly being improved. And there are those who have either died out or were born, but they got to the masses because of their imperfection, low relevance in relation to market requirements and other things.

This article will focus on technology that does not belong to either group. Without it, computer networks could exist without any problems, but at the same time it can significantly simplify work and reduce operating costs for large enterprises, small organizations and even home users.

The history of the emergence of USB over IP technology


It is difficult to say when exactly this technology appeared in the form in which it is used now. Most likely, with the development of the capabilities of Linux software components, the growth of market needs and the ingenuity of enthusiasts, a modern technology for forwarding USB devices through the network appeared.

Nowadays, there are two popular tools for tracing USB devices: usbip and usbip-win… Both of them aim to share USB devices over an IP network by processing USB I / O messages, encapsulating them in TCP / IP and then transferring the transfer between devices on a client-server network. In this scheme, the devices are connected to the server and the necessary daemon is launched on it.

On the client’s machine, as a rule, any application is launched that does not know how to work with the network, but does an excellent job with USB devices. The forwarding technology just allows you to emulate the local connection of USB devices on the client machine.

  • usbip was developed by the “USB / IP” project back in the ninth year of 2009 and thanks to the success was added to the builds of Linux-branches of operating systems and is still developing. Support for the Windows client was stopped in 2013 on the released signed binary digital signature of the driver.
  • usbip-win it is a similar project that can work with Windows 10. Moreover, it allows you to lift not only the client, but also the server part on Windows 10, and is also compatible with the Linux version.

Who is interested in it and where it is applied

Benefits of USB network forwarding:

  • Security. Possibility of isolated placement of USB devices from their end user, encryption and control of access to devices, protection from human factors (theft or loss of the device).
  • Monitoring. Using SMTP and SNTP scripts to monitor the status of devices.
  • Availability and multi-tenancy. USB devices are available to an unlimited number of users (with the ability to create group policies and access levels) without the need for physical switching from anywhere in the world.
  • Centralized administration. Convenient management of every USB device plugged into the hub.

Disadvantages:

  • The performance depends entirely on the stable operation of the network.
  • High cost of hardware solutions (managed USB hubs with a large number of ports).
  • Not all USB devices can work properly over the network due to the increased response time.

Technologies and equipment used

The method of information exchange between local and remote devices differs only in that a virtual bus driver will be used for remote devices: a set of instructions and data. converting logical information or data into physical signals.

Connecting local and remote devices

When applications send a request to an end device, the USB PDD (USB Personal Device Driver) translates the I / O requests into a series of commands that are understandable to USB, and then sends them through the bus driver (the link between the device driver and the end device) as USB blocks. requests to the end device.

Methods for forwarding hardware keys


The Personal Device Driver (PDD), oddly enough, is responsible for managing individual USB devices. PDD sends requests as special URB request blocks (USB Request Block) with which it communicates with USB core (USB Core) – a separate subsystem within the OS that acts as support for USB devices and controllers.

Data exchange model between USB devices and the end user

To implement the forwarding of the USB protocol over an IP network, an entity was developed called

virtual interface of the host controller, it is also Virtual Host Controller Interface

(VHCI). VHCI refers to a virtual controller and is capable of exporting virtual USB devices not supported by physical devices. In Linux, VHCI controllers are used to access USB devices from remote machines connected using the USBIP protocol we already know.

VHCI is equivalent host controller drivers (HCD) and is responsible for handling URB requests. Both VHCI and HCD are responsible for processing URB requests received from the kernel and divide them into simpler requests, called Transfer Descriptions (TD transfer descriptors) for their further transfer to the host interface controller, aka USB controller (Host Controller Interface HCI). This interface operates at the level of physical register transfers and provides communication with peripheral devices connected to USB.

Now about how USB gets to the network. The URB request block is converted to a USB / IP request block by the VHCI driver and sent to the remote computer. The dongle driver has also been added as a new type of USB PDD. The dummy driver is responsible for decoding incoming USB / IP packets from remote machines, extracting the URB and then sending them to local USB devices.

Kernel module

vhci-hcd

Is only a virtual host controller that you can connect virtual devices to.

How it works at Selectel

Let’s consider working with a USB hub using the DistKontrolUSB-16 device as an example. In order to forward a USB device from a hub port, you must:

  1. Create a USB device specifying its Vendor / ProductID (VID / PID) and serial number. It is on it that the hub will select the connected devices:
  2. Specify the external IP address of the client that will connect to the USB hub and specify the ports allowed for connection:
  3. Find the required device in the client application and send a command to use it. After that, the device will be available as a physically connected device.

Conclusion

The described technology is capable of providing the necessary scalability and flexibility in today’s constantly changing environment. Passing USB devices over the network also provides reliability by limiting physical access to devices.

There is no need to move equipment, and the security of the network is increased due to the possibility of using encryption algorithms and setting access rights. Scenario planning is available for each individual device.

Reduced risk and maintenance costs, ease of sharing resources between workstations – all this makes usbip technology competitive in terms of secure authorization and data transfer (with TOTP / HOTP, OCRA) and applicable to a wide range of IT tasks.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *