一种面向虚拟机的usb设备重定向方法

文档序号:7992101阅读:958来源:国知局
专利名称:一种面向虚拟机的usb设备重定向方法
技术领域
本发明涉及ー种由模拟器QEMU创建的虚拟机访问本地或远程物理机上的USB设备的方法,尤指ー种通过传输控制协议套接字(TCP Socket)和USB重定向协议将指定物理机上的USB设备重新定向到指定虚拟机的方法。
背景技术
虚拟化(Visualization)技术最早出现在20世纪60年代的IBM大型机系统。随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。然而在虚拟化技术的使用过程中也出现了诸多问题。USB是ー种新型串行接ロ,与传统接ロ相比,USB具有速度快、独立供电、即插即用、成本低等众多特点,有着非常广阔的应用范围。但由于其设备种类定义繁多、通信协议规范复杂,导致USB设备仿真软件设计工作繁琐,开发难度较大。众所周知,打印机,闪存, 移动硬盘、数码相机等USB设备,对用户来说是非常重要的。而在现有的虚拟化技术中利用虚拟机访问本地物理机上的USB设备还存在很多问题,如很多开源的虚拟化技术尚不支持对USB设备的访问,或者仅支持对有限的几种USB设备的访问;而一些商业付费虚拟化软件对USB设备的支持虽然比开源虚拟化软件完善ー些,但仍存在ー些局限性。如当前微软的虚拟服务器(Hyper-V Server)与其自身的虚拟机(Virtual PC),尚不支持USB设备的访问,需要借助第三方付费软件如网络USB (USB Over Network)等,通过网络使用USB设备。 VMWare公司的桌面虚拟机可以通过配置从桌面使用各种USB设备,使用此功能吋,可以从客户菜单中访问大多数本地客户端系统连接的USB设备。但VMWare公司桌面虚拟机的USB 重定向功能存在以下局限
1、从客户菜单中访问USB设备并在桌面中使用该设备吋,将无法在本地计算机上访问该设备(同时只能有1个访问);
2、如果从浏览入口访问桌面,则只能在Windows客户端上使用此功能,并且还需要事先已经在本地Windows系统上安装了带有可选USB重定向的组件;
3、要在桌面中使用USB打印机,用户必须在桌面中安装所需的打印驱动程序。而VMware公司免费的虚拟机现在仍缺乏USB重定向的支持。对于利用虚拟机访问远程物理机上的USB设备,无论是开源的虚拟化软件还是商业付费的虚拟化软件,到目前为止还是ー项空白。要想降低虚拟机的开发难度,减少系统消耗,提高通用性,充分利用现有的驱动程序,使虚拟机能够访问本地或远程物理机上的USB设备,研究通过传输控制协议套接字和 USB重定向协议相结合的方法是最好的方式,同时也具有重要的实践意义。

发明内容
针对开源和商业付费虚拟化软件对访问本地USB设备的局限性,以及还未实现访问远程物理机上的USB设备的问题,本发明提出了一种面向虚拟机的USB设备重定向方法。模拟器QEMU是ー个平台虚拟化解决方案,允许对ー个完整的PC环境进行虚拟化 (包括磁盘、图形适配器和网络设备)。客户操作系统所生成的任何I/O请求都会被中途截获,并重新发送到QEMU进程模拟的用户模式中。本方法就是在模拟器QEMU的基础上加入了 USB设备的重定向功能,并与本地或远程物理机进行通信,从而实现由模拟器QEMU创建的虚拟机对本地或远程物理机上的USB设备的访问。为了实现上述功能,本发明提供的虚拟机USB重定向方法包括以下步骤
1)修改模拟器QEMU,加入USB重定向功能。利用此模拟器QEMU创建QEMU虚拟机,局域网内的任一物理机通过远程桌面协议访问此物理机上的QEMU虚拟机;
2)利用USB设备所在物理机上的USB重定向协议实现USB设备与远端QEMU虚拟机间的通信;
3)远端QEMU虚拟机通过命令行指令将步骤2)中的USB设备重定向到虚拟机中。其中步骤1)包含如下具体步骤
11)定义用于表示ー个需要重定向的USB设备的结构体;
12)实现用以操作该结构的读、写、查询等函数功能;
13)实现与USB设备所在的远程主机进行通信的模块;
14)利用加入USB重定向功能的模拟器QEMU创建虚拟机,并进行远程连接。其中步骤12)的具体过程是先判断数据操作的具体类型,然后根据数据操作类型执行相应的操作函数。其中步骤2)中利用命令行相应指令获得需要进行重定向的USB设备的供应商ID 与产品识别码,并在USB设备所在的物理机上启动ー个USB设备重定向协议的服务器端进程,然后将ー个端ロ号分配给此USB设备的供应商ID与产品识别码,并对这个端ロ进行监听。其中步骤3)中首先获得USB设备的供应商ID与产品识别码及其所在物理机的 IP地址;然后在远端QEMU虚拟机的监视器中通过命令行指令将此USB设备重定向到远端 QEMU虚拟机中。然后利用步骤2)、步骤3)中建立好的传输控制协议套接字进行数据传输。本发明主要包括USB重定向协议和基于模拟器QEMU的USB设备重定向系统两个部分。其中USB重定向协议为物理机上的USB设备分配一个监听端ロ,并开始监听此端ロ ; 同时与远端QEMU虚拟机建立起传输控制协议套接字连接;然后接收远端的QEMU虚拟机对 USB设备的操作类型,根据不同的操作类型在物理机上对USB设备进行相应的操作。而基于模拟器QEMU的USB设备重定向系统将给定IP地址的主机上的USB设备重定向到QEMU虚拟机中,然后接收通过远程桌面对虚拟机中USB设备的操作,并将此操作反馈给USB设备所在的物理机;待USB设备所在物理机对指定操作处理完后将结果传送回虚拟机,虚拟机重新模拟USB设备所在物理机处理后的数据,并在虚拟机中进行重现。本发明的技术效果是,解决了开源和商业付费虚拟化软件对访问本地USB设备的局限性,填补了开源和商业付费虚拟化软件无法访问远程物理机上的USB设备的空白。


图1为USB设备重定向的架构示意图; 图2为USB设备重定向协议的处理流程图。
具体实施例方式为使本发明的特征及优点得到更清楚的了解,以下结合附图,作详细说明如下如图1所示,描述了本发明的架构,通过物理主机A上的远程桌面协议访问物理主机B上的虚拟机,此时物理主机B上的虚拟机需要访问物理主机C上的USB设备(物理主机C上的USB 设备与USB重定向协议也可位于物理主机A上),于本实施例中的具体执行步骤是
1)利用加入USB重定向功能的模拟器QEMU创建虚拟机,物理机A通过远程桌面协议访问物理机B上的虚拟机;
2)利用物理机C上的USB设备重定向协议实现物理机C上的USB设备与物理机B上的虚拟机间的通信;
3)物理机B上的虚拟机通过命令行指令将物理机C上的USB设备重定向到物理机B 上的虚拟机中。4)通过物理机A上的远程桌面操作物理机B上的虚拟机中的USB设备。其中步骤1)在模拟器QEMU中加入了 USB重定向功能,利用一个结构体表示ー个需要重定向的USB设备;利用此QEMU创建的虚拟机,QEMU会确定当前的虚拟机配置状态以及对USB设备不同数据类型如控制流数据、文件流数据、中断流数据等的操作类型,并将这些信息床送给USB设备所在的物理主机C。其中步骤2)在命令行需要利用指令获得需要进行重定向的USB设备的供应商ID 与产品识别码,并在物理机C上启动ー个USB设备重定向协议的服务器端进程,然后将ー个端口号分配给此USB设备的供应商ID与产品识别码,并对这个端ロ进行监听。步骤1)中的模拟器QEMU获得虚拟机对重定向到其中的USB设备所进行的操作信息后,通过USB重定向协议将其发送给物理主机C。物理主机C处理完后将结果反馈给物理主机B上的模拟器 QEMU ;而呈现在虚拟机中的也就是处理后的結果。其中步骤3)首先获得USB设备的供应商ID与产品识别码以及所在物理机的IP 地址;然后在远端虚拟机的监视器中通过命令行指令将本地主机的USB设备重定向到远端虚拟机中。其中步骤4)在本地物理机A上利用远程桌面访问远程物理机B上的虚拟机,并对被重定向到此虚拟机中的物理机C上的USB设计进行读、写、删除等操作,操作类型通过远程桌面协议反馈给物理机B上的虚拟机,物理机B再通过步骤2)中建立起的连接将相应操作发送给USB设备所在的物理机C,物理机C做出相应的处理后将结果发送给物理机B上的虚拟机,通过物理机A上的远程桌面也呈现出了相应的結果。本发明中的USB重定向协议该协议由以下三部分組成
1)USB设备模块usb-device 代表需要重定向的USB设备;
2)USB客户端模块usb-guest 连接usb-device,并对usb-device进行指定操作;
3)USB服务器端模块usb-host 通过网络将usb-device呈献给远程虚拟机,并使 usb-device 对 usb-guest ロ/用。该协议在物理机C上运行ー个服务器端USB重定向usbredirserver进程,并为需要重定向的USB设备分配一个监听端ロ,并开始监听此端ロ ;同时与远端物理机B上的由模拟器QEMU创建的虚拟机建立起传输控制协议套接字连接;然后接收虚拟机传送过来的对 USB设备的各种操作请求,待物理机C对这些请求进行完相应的处理后将结果反馈给远端物理机B上的虚拟机。基于模拟器QEMU的USB设备重定向系统修改模拟器QEMU,加入USB重定向连接 usbredir-tcp模块,负责与USB重定向协议启动的usbredirserver进程进行连接,部分处理从虚拟机或usbredirserver进程获得的信息后,将结果发送给相应的部分。通过获得的 USB设备信息、USB设备所在物理机的IP地址,利用命令行指令将物理机C上的USB设备重新定向到物理机B上的由模拟器QEMU创建的虚拟机中,在物理机A上利用远程桌面访问物理机B上的虚拟机,并对重定向到此虚拟机上的USB设备进行操作;这些操作回传给物理机 B上的虚拟机后,物理机B利用USB设备重定向系统再将其发送给USB设备所在的物理机C 进行相应的处理。本发明的技术效果是,解决了开源和商业付费虚拟化软件对访问本地USB设备的局限性,填补了开源和商业付费虚拟化软件无法访问远程物理机上的USB设备的空白。
权利要求
1.一种面向虚拟机的USB设备重定向方法,其特征在于其包括以下步骤1)本地物理机A通过远程桌面协议访问远端物理机B上由加入了USB设备重定向系统的模拟器创建的虚拟机;2)利用USB设备所在的物理机C上的USB重定向协议实现USB设备与远端物理机B 上的虚拟机间的通信;3)远端物理机B通过模拟器的命令行指令将物理机C上的USB设备重新定向到远端物理机B上的指定虚拟机中;4)本地物理机A通过远程桌面访问远端物理机B上的指定虚拟机,并操作被重新定向到此虚拟机中的物理机C上的USB设备。
2.如权利要求1所述的方法,其特征在于在所述步骤1)中,利用加入了USB设备重定向系统的模拟器QEMU创建虚拟机。
3.如权利要求1所述的方法,其特征在于在所述步骤1)的具体改变是加入了连接 USB设备所在物理机的方法,以及操作USB设备时所涉及的数据类别的判断和处理方法。
4.如权利要求2所述的方法,其特征在于在所述步骤2)中,首先在USB设备所在的物理机C上获得USB设备的供应商ID与产品识别码;然后在物理机 C上利用USB重定向协议为此USB设备分配一个监听端ロ,并运行一个服务器端USB重定向usbredirserver进程开始监听此端ロ ;远端物理机B上的由模拟器QEMU创建的虚拟机与物理机C上的usbredirserver进程建立起传输控制协议套接字连接。
5.如权利要求2所述的方法,其特征在于在所述步骤3)中,首先获得物理机C上的USB设备的供应商ID与产品识别码以及物理机C的IP地址;然后在远端物理机B上由模拟器QEMU创建的虚拟机的监视器中通过命令行指令将物理机C上的USB设备重定向到远端物理机B上的指定虚拟机中。
6.如权利要求2所述的方法,其特征在于在所述步骤4)中,在本地物理机A上利用远程桌面访问远程物理机B上的虚拟机,并对被重定向到此虚拟机中的物理机C上的USB设计进行读、写、删除操作,操作类型通过远程桌面协议反馈给物理机B上的虚拟机,物理机B 再通过步骤2)中建立起的连接将相应操作发送给USB设备所在的物理机C,物理机C做出相应的处理后将结果发送给物理机B上的虚拟机,通过物理机A上的远程桌面也呈现出了相应的結果。
7.权利要求1-6任一项所述面向虚拟机的USB设备重定向方法,其特征在于所述的应用系统包括以下部分USB重定向协议,该协议由以下三部分組成1)USB设备usb-device模块代表需要重定向的USB设备;2)USB客户端usb-guest模块连接usb-device,并对usb-device进行指定操作;3)USB服务器端usb-host模块通过网络将usb-device呈献给远程虚拟机,并使 usb-device 对 usb-guest ロ/用;该协议在物理机C上运行ー个usbredirserver进程,并为需要重定向的USB设备分配一个监听端ロ,并开始监听此端ロ ;同时与远端物理机B上的由模拟器QEMU创建的虚拟机建立起传输控制协议套接字连接;然后接收虚拟机传送过来的对USB设备的各种操作请求,待物理机C对这些请求进行完相应的处理后将结果反馈给远端物理机B上的虚拟机;基于模拟器QEMU的USB设备重定向系统修改模拟器QEMU,加入USB重定向连接 usbredir-tcp模块,负责与USB重定向协议启动的usbredirserver进程进行连接,部分处理从虚拟机或usbredirserver进程获得的信息后,将结果发送给相应的部分;通过获得的 USB设备信息、USB设备所在物理机的IP地址,利用命令行指令将物理机C上的USB设备重新定向到物理机B上的由模拟器QEMU创建的虚拟机中,在物理机A上利用远程桌面访问物理机B上的虚拟机,并对重定向到此虚拟机上的USB设备进行操作;这些操作回传给物理机 B上的虚拟机后,物理机B利用USB设备重定向系统再将其发送给USB设备所在的物理机C 进行相应的处理。
全文摘要
一种面向虚拟机的USB设备重定向方法。包括步骤(1)由远程物理机B上的加入了USB设备重定向系统的模拟器QEMU创建虚拟机,本地物理机A通过远程桌面协议访问此虚拟机;(2)USB设备所在的物理机C利用USB重定向协议实现USB设备与远端物理机B上的虚拟机间的通信;(3)远端物理机B通过模拟器QEMU的命令行指令将物理机C上的USB设备重新定向到远端物理机B上的指定虚拟机中,从而使本地物理机A在远程桌面中可以使用该USB设备。本方法适用于所有利用加入了USB设备重定向系统的模拟器QEMU创建的虚拟机,通过USB重定向协议进行USB设备重定向的需求。
文档编号H04L29/12GK102567074SQ20111038666
公开日2012年7月11日 申请日期2011年11月29日 优先权日2011年11月29日
发明者兰雨晴, 刘铭, 夏颖, 宋潇豫, 张永军 申请人:中标软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1