也谈USB重定向的方式
在桌面虚拟化的项目中,常常会遇到用户提出的各自外设需求,这时产品对外设的兼容性就成为了项目成败的拦路虎
本文试图用通俗易懂的语言讲讲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重定向的方式相关推荐
- usb禁止重定向_谈USB重定向的方式
在桌面虚拟化的项目中,常常会遇到用户提出的各自外设需求,这时产品对外设的兼容性就成为了项目成败的拦路虎 本文试图用通俗易懂的语言讲讲USB外设重定向的工作流程,先看看普通PC上USB设备的工作流程 u ...
- usb禁止重定向_远程桌面中的USB重定向技术解析(功能篇)
在运行远程和虚拟桌面的数据中心内,网络管理员可以对计算环境的各个方面进行控制.只有一点除外,就是本地外围设备. 本地外围设备包括所有连接到终端上的设备,例如USB驱动器.鼠标或打印机.它们逐渐成为终端 ...
- usb禁止重定向_一种USB重定向处理方法和系统与流程
本发明涉及桌面虚拟化的USB重定向处理技术领域,具体而言,涉及一种USB重定向处理方法和系统. 背景技术: 随着科学技术的不断进步,网络技术日益发达,虚拟化的应用逐渐普及.桌面虚拟化是指在数据中心的服 ...
- USB虚拟化和虚拟桌面USB重定向
USB:通用串行总线,是一种外部总线的标准,用于规范主机与外设之间的连接与通讯,其数据传输速度快,支持热插拔,并具有兼容性和透明性,已成为当今个人电脑和大量智能设 备必配的接口.随着虚拟化技术的盛行和 ...
- RemoteFX 中的USB重定向功能
RemoteFX 中的USB重定向功能 在上一篇文章中谈到Windows Server 2008 R2 SP1中的RemoteFX功能带来的丰富图形体验后,这篇文章中来谈一下RemoteFX 中的US ...
- RDP协议之USB重定向虚拟通道
在RDP远程桌面协议中,USB设备虚拟通道扩展协议用于将USB数据包从终端服务器传输到终端客户端.终端客户端将USB数据包转发到物理USB设备.然后客户端在物理设备重新组装数据包后返回结果. 一般来说 ...
- 浅谈尾递归的优化方式
在上文<尾递归与Continuation>里,我们谈到了尾递归的概念和示例,不过有些朋友对于尾递归的功效依然有所怀疑.因此现在,我再简单讲解一下尾递归的优化原理,希望能给大家以一定理性认识 ...
- VDI序曲十四 使用 RemoteFX 安装和配置 USB 重定向
RemoteFX 重定向USB功能介绍: 用户应该能够使用任何工作中的设备. RDP的有许多高级别的重定向,允许特定类型的设备用于远程会话,如: 1.轻松打印,允许用户在远程会话中打印到本地打印机 2 ...
- springboot实现条形码_Springboot转发重定向实现方式解析
1.转发 方式一:使用 "forword" 关键字(不是指java关键字),注意:类的注解不能使用@RestController 要用@Controller @RequestMap ...
- 【Android取证篇】Android设备USB调试打开方式(开发者模式)
[Android取证篇]Android设备USB调试打开方式(开发者模式) Android各个版本系统手机开启"USB调试"的入口不全相同,仅供参考-[蘇小沐] 1.[Androi ...
最新文章
- 地球自转减速影响世界时 格林尼治时间或成历史
- aix cpu java_AIX cpu理解
- 坐拥双妹、佰草集,上海家化是怎样将一只脚留在高端护肤品门外的?
- 二进制python_利用Python对二进制数据进行按位处理
- 如何使用Hibernate将PostgreSQL枚举映射到JPA实体属性
- ECCV 2020 论文大盘点-遥感与航空影像处理识别篇
- matlab 调整灰度,matlab灰度图像调整及imadjust函数的用法详解
- 读TXT文件带BOM问题
- Android--获取安装的程序信息
- android 布局颜色设置颜色设置,怎么在Android中利用view设置布局颜色
- window mysql 同步复制_Window环境下配置MySQL 5.6的主从复制、备份恢复
- c语言静态数组是什么意思,C语言静态数组实现栈操作
- MS OFFICE在LINUX上的视觉效果跟WINDOWS相差太大
- 端口号从8080变成8081,cmd关闭8080端口
- 空降了位前阿里的领导,三个月后我被离职了!
- C++的protected
- linux系统电视盒子到底是什么
- 虚拟示波器软件 JSCOPE -- 使用 jlink 仿真器来查看变量
- Android 2018优秀开源框架整理收藏
- Leetcode 606: 根据二叉树建立字符串