在桌面虚拟化的项目中,常常会遇到用户提出的各自外设需求,这时产品对外设的兼容性就成为了项目成败的拦路虎

本文试图用通俗易懂的语言讲讲USB外设重定向的工作流程,先看看普通PC上USB设备的工作流程

usb硬件只将数据交给usb总线驱动,而应用程序只会把请求提交给本usb设备驱动处理,在usb设备驱动提交usb总线驱动处理

从上图可以看出,能够被虚拟化的只有USB设备驱动和USB总线驱动两个对象

这也是目前业界对USB设备虚拟化的两大主流方式

一.  虚拟USB总线驱动的方案

又叫做USB端口重定向,工作流程如下图

TC上所插USB设备数据通过TC的USB总线提交给虚拟USB驱动,虚拟USB驱动负责在TC总线和USB客户端之间双向传输数据,如实传输USB硬件的一切细节,对虚拟机来说,相当于在虚拟USB总线上插了一个USB硬件,假如在TC上插了一个闪迪的U盘,那在虚拟机看来就是有一个闪迪U盘插上来了,这时候虚拟机的系统会自动打相应的设备驱动

实质上,端口映射只是相当于将PC上USB工作流程里的USB设备驱动到USB总线驱动之间的这段进行了拉长,通过中间加入几个代理,最终还是将TC上USB外设的细节原原本本向虚拟机上的USB应用呈现,只是隐瞒了设备实际上是在远端TC的事实,这样应用根本感知不到和使用本地外设的差异,和运行在PC上是一样的,因此,USB端口重定向具有良好的设备兼容性。

端口重定向也有一定局限性,由于没有经过设备驱动层的压缩和预处理,对于某些扫描仪和摄像头等图像类应用,可能会导致带宽过大,网络时延敏感等问题

二.  虚拟USB设备驱动的方案

又称为USB设备重定向,工作流程如下图

USB设备重定向是在应用层的实现,通过在虚拟机上创建一个虚拟的USB外设驱动(对操作系统来说,一个驱动意味着一个设备),来使应用程序获得数据,对于整个系统来说,虚拟USB外设驱动和TC上的USB设备驱动本质上是两个不同的USB设备,而USB服务端和USB客户端负责维护两个驱动之间的数据通道(类似于在两个U盘之间互相拷贝数据)

显而易见,设备重定向工作流程中的代理环节少了很多,因而数据传输速率更高,延时更低,更适合像USB摄像头等数据流量比较大,同时对延时也比较敏感的外设

事实上,目前主流的远程桌面协议如HDX,Spice等,都为每一类外设提供从客户端到虚拟机的映射,并在应用层提供专门的通道,将不同的流量隔离开来,如摄像头、打印机、扫描类设备、智能卡设备等,甚至针对不同外设应用场景的需求,提供不同的传输Qos

设备重定向的问题主要在TC上的USB设备驱动和外设通道协议的USB客户端之间,如果外设厂家提供的不是遵循外设协议标准的驱动,那么USB客户端可能会不能很好的将其识别到

参考资料

【外设那些事】传统PC与桌面云的区别 and 桌面云外设兼容性     点击打开链接

【外设那些事】USB重定向---再看原理      点击打开链接

也谈USB重定向的方式相关推荐

  1. usb禁止重定向_谈USB重定向的方式

    在桌面虚拟化的项目中,常常会遇到用户提出的各自外设需求,这时产品对外设的兼容性就成为了项目成败的拦路虎 本文试图用通俗易懂的语言讲讲USB外设重定向的工作流程,先看看普通PC上USB设备的工作流程 u ...

  2. usb禁止重定向_远程桌面中的USB重定向技术解析(功能篇)

    在运行远程和虚拟桌面的数据中心内,网络管理员可以对计算环境的各个方面进行控制.只有一点除外,就是本地外围设备. 本地外围设备包括所有连接到终端上的设备,例如USB驱动器.鼠标或打印机.它们逐渐成为终端 ...

  3. usb禁止重定向_一种USB重定向处理方法和系统与流程

    本发明涉及桌面虚拟化的USB重定向处理技术领域,具体而言,涉及一种USB重定向处理方法和系统. 背景技术: 随着科学技术的不断进步,网络技术日益发达,虚拟化的应用逐渐普及.桌面虚拟化是指在数据中心的服 ...

  4. USB虚拟化和虚拟桌面USB重定向

    USB:通用串行总线,是一种外部总线的标准,用于规范主机与外设之间的连接与通讯,其数据传输速度快,支持热插拔,并具有兼容性和透明性,已成为当今个人电脑和大量智能设 备必配的接口.随着虚拟化技术的盛行和 ...

  5. RemoteFX 中的USB重定向功能

    RemoteFX 中的USB重定向功能 在上一篇文章中谈到Windows Server 2008 R2 SP1中的RemoteFX功能带来的丰富图形体验后,这篇文章中来谈一下RemoteFX 中的US ...

  6. RDP协议之USB重定向虚拟通道

    在RDP远程桌面协议中,USB设备虚拟通道扩展协议用于将USB数据包从终端服务器传输到终端客户端.终端客户端将USB数据包转发到物理USB设备.然后客户端在物理设备重新组装数据包后返回结果. 一般来说 ...

  7. 浅谈尾递归的优化方式

    在上文<尾递归与Continuation>里,我们谈到了尾递归的概念和示例,不过有些朋友对于尾递归的功效依然有所怀疑.因此现在,我再简单讲解一下尾递归的优化原理,希望能给大家以一定理性认识 ...

  8. VDI序曲十四 使用 RemoteFX 安装和配置 USB 重定向

    RemoteFX 重定向USB功能介绍: 用户应该能够使用任何工作中的设备. RDP的有许多高级别的重定向,允许特定类型的设备用于远程会话,如: 1.轻松打印,允许用户在远程会话中打印到本地打印机 2 ...

  9. springboot实现条形码_Springboot转发重定向实现方式解析

    1.转发 方式一:使用 "forword" 关键字(不是指java关键字),注意:类的注解不能使用@RestController 要用@Controller @RequestMap ...

  10. 【Android取证篇】Android设备USB调试打开方式(开发者模式)

    [Android取证篇]Android设备USB调试打开方式(开发者模式) Android各个版本系统手机开启"USB调试"的入口不全相同,仅供参考-[蘇小沐] 1.[Androi ...

最新文章

  1. 地球自转减速影响世界时 格林尼治时间或成历史
  2. aix cpu java_AIX cpu理解
  3. 坐拥双妹、佰草集,上海家化是怎样将一只脚留在高端护肤品门外的?
  4. 二进制python_利用Python对二进制数据进行按位处理
  5. 如何使用Hibernate将PostgreSQL枚举映射到JPA实体属性
  6. ECCV 2020 论文大盘点-遥感与航空影像处理识别篇
  7. matlab 调整灰度,matlab灰度图像调整及imadjust函数的用法详解
  8. 读TXT文件带BOM问题
  9. Android--获取安装的程序信息
  10. android 布局颜色设置颜色设置,怎么在Android中利用view设置布局颜色
  11. window mysql 同步复制_Window环境下配置MySQL 5.6的主从复制、备份恢复
  12. c语言静态数组是什么意思,C语言静态数组实现栈操作
  13. MS OFFICE在LINUX上的视觉效果跟WINDOWS相差太大
  14. 端口号从8080变成8081,cmd关闭8080端口
  15. 空降了位前阿里的领导,三个月后我被离职了!
  16. C++的protected
  17. linux系统电视盒子到底是什么
  18. 虚拟示波器软件 JSCOPE -- 使用 jlink 仿真器来查看变量
  19. Android 2018优秀开源框架整理收藏
  20. Leetcode 606: 根据二叉树建立字符串

热门文章

  1. 同态滤波及matlab实现,怎样用MATLAB的图像处理功能进行同态滤波
  2. 计算机网络第七版1-3
  3. .EXE病毒解决(U盘中文件夹不见,显示原文件夹后缀.exe)
  4. 基于链队列的银行叫号系统
  5. html:运用表单表格制作简易个人简历
  6. Arm中国合资公司具体布局浮出水面
  7. markdown使用模板(供自己方便使用)
  8. php键盘输入函数,基础篇php常用输入语句和函数
  9. 阵列信号处理-学习笔记001
  10. Synopsys VCS vY-2006.06