In transforming a local desktop into a remote one, one of the most delicate configurations concerns the use of peripherals by the user, who often needs to use various types. The connection standard used between these and the system is the USB (Universal Serial Bus) standard.
The USB standard has spread rapidly because it allows to easily connect different types of peripherals. The development of the protocol has also brought the speed of the connection to increase progressively (from the initial 1.5 MB/s to the current 10GB/s).
In the virtual environment, one of the possibilities that the user has to use his USB peripherals is to use the “USB redirection” technology. To explain simply how this technology works it’s important to first understand how USB devices work in a standard system.
Each device declares itself to the system as belonging to a specific class of devices. The software layer that deals with the specific connection of the device to the operating system is called a driver. Depending on the class, the driver will implement the necessary functionalities required by the system. So the system, to perform an operation on a peripheral, will invoke a method defined in the USB protocol and implemented in the specific driver of the same.
Let’s bring this situation into the remote desktop environment: the client installed on the machine where the peripheral is physically connected takes care of encapsulating the USB protocol within network protocols and transferring it directly to the virtual machine. The agent installed in the virtual machine will have to carry out the opposite operation, so it will be in charge of extracting the USB packets from the network packets used in the transport protocol and sending them to the operating system. The virtual machine’s operating system will therefore believe that it has physically connected the USB device.
The operation of specifying which devices to export through this technology is often an operation to configure with particular policies or settings and requires a study part to understand, in addition to the necessary server-side policies, also the identifiers (vendor ID, product ID, class) of the various peripherals. This operation is made very simple in ThinOX, the Praim operating system, and in the new version 2.6.3 of Agile, which allow, after connecting a USB peripheral to the system, to easily choose whether to export the peripheral via this technology.
This technology, which seems to be the total solution to all the peripheral desktop issues, suffers from some limitations. In particular, the latency created by the network infrastructure often makes this technology hardly usable for multimedia or security areas. Over the years the various technology vendors that allow the remote control of the desktop have gone on to develop dedicated channels for the communication of the various types of peripherals, so as to optimize the flow and guarantee greater compatibility with the area of use. This different mode of use radically changes the role of the peripheral driver and would require a bigger analysis, for now I will only list which types of peripherals have a dedicated virtual channel: USB disks, audio/video, scanners, printers, smart cards, tablets.