专利名称:面向虚拟机的usb设备远程共享方法和系统的制作方法
技术领域:
本发明涉及计算机技术领域,尤其涉及一种面向虚拟机的通用串行总线 (Universal Serial Bus,简称USB)设备远程共享方法和系统。
背景技术:
随着互联网技术与应用的发展,以云计算、虚拟机等为代表的数据中心已经成为未来软件运行和数据管理的执行环境,例如谷歌(Google)公司已经推出了云打印(Cloud !Winter),亚马逊(Amazon)公司已经推出了基于虚拟机的网络用户环境等。
虚拟机(Virtual Machine,简称VM)是一种通过软件模拟的具有完整硬件系统功能的运行在一个完全隔离环境中的完整计算机系统。虚拟机具有很好的隔离性、分区性、封装性、自我管理等特点,可以对网络虚拟化提供很好的支持。
云计算是网格计算、分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡等传统计算机技术和网络技术发展融合的产物。云计算通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的完美系统。云计算具有超大规模、虚拟化、高可靠性、高可扩展性、按需服务等特点,提供了最可靠、最安全的数据存储中心。
在上述以数据中心作为软件运行和数据管理的执行环境中,需要在虚拟机中使用远程用户的USB闪存盘(简称U盘)、USB摄像头、USB打印机、USB密钥等USB终端设备。
目前出现了一些远程共享技术,但都存在不足之处。例如,可以采用视窗电脑操作系统(Windows)进行文件共享,这种共享方式只是在文件系统层次的共享,并不能够实现设备的共享,因此无法共享和控制远程的USB设备。例如,还可以采用虚拟USB技术(USB anyware)实现共享,USB anyware是一个具有以太网接口的USB转以太网的集线器,打破了传统USB协议传输距离只有5米的限制,使得在局域网内的主机都可以访问远程的USB 外围设备,但是每个接入点都需要用户购买一台USB anyware硬件设备,从而USB设备远程共享的灵活性差,并且增加了成本。例如,还可以采用基于远程桌面协议(Remote Desktop Protocol,简称RDP)的USB共享,其实现的功能类似于windows远程桌面的磁盘驱动器映射功能,系统包含一个服务器(Server)和一个工作站(Workstation),工作站安装在实际插有USB设备的主机上,服务器安装在所登录的远程主机上,一旦登陆远程主机,本地USB 设备就会显示出来,采用基于RDP的USB共享,USB设备连接数目受限,且需要远程桌面连接,对于一些不可以登录远程主机的应用无法适用,从而USB设备远程共享的灵活性差,并且安全性较差。
总之,现有的远程共享方法,面向虚拟机的USB设备远程共享的灵活性差。 发明内容
本发明的第一方面是提供一种面向虚拟机的USB设备远程共享方法,用以解决现有技术中的缺陷,提高面向虚拟机的USB设备远程共享的灵活性。
本发明的另一方面是提供一种面向虚拟机的USB设备远程共享系统,用以解决现有技术中的缺陷,提高面向虚拟机的USB设备远程共享的灵活性。
本发明的第一个方面是提供一种面向虚拟机的通用串行总线USB设备远程共享方法,包括
客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一互联网协议IP报文,所述USB设备远程共享请求消息包括允许共享的 USB设备的总线标识ID、厂商ID、设备ID和驱动信息;
所述服务器宿主机的虚拟主机控制器将根集线器端口状态变更为设备插入,在所述服务器宿主机生成虚拟的所述允许远程共享的USB设备;
所述服务器虚拟机通过设备虚拟化机制访问所述虚拟的允许远程共享的USB设备,向所述服务器宿主机的USB设备驱动模块发送USB设备远程访问请求;
所述服务器宿主机的USB设备驱动模块将所述USB设备远程访问请求转化为第一 USB请求块URB并传递到服务器宿主机的虚拟主机控制器;
所述服务器宿主机的虚拟主机控制器将所述第一 URB封装到第二 IP报文中传送给客户端的虚拟USB设备驱动模块;
客户端主机的虚拟USB设备驱动模块根据所述第二 IP报文的内容建立所述第一 URB并传递给客户端的主机控制器;
所述客户端主机的主机控制器驱动传递所述第一 URB描述的数据。
如上所述的方法,其中,所述客户端主机的主机控制器驱动传递所述第一 URB描述的数据之后还包括
所述第一 URB完成后,所述客户端主机的主机控制器以中断方式调用URB完成回调函数;
所述客户端主机的虚拟USB设备驱动模块向所述服务器的宿主机的虚拟主机控制器返回携带USB设备请求完成消息的IP报文;
所述服务器宿主机的虚拟主机控制器向所述服务器宿主机的USB设备驱动模块返回USB设备请求完成消息。
如上所述的方法,其中,所述客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一 IP报文之前还包括
所述允许远程共享的USB设备接入所述客户端主机;
客户端主机的USB设备驱动模块获取USB设备访问请求,将所述USB设备访问请求转化为第二 URB并传送到所述客户端主机的主机控制器;
所述客户端主机的主机控制器驱动传递所述第二 URB描述的数据;
所述第二 URB完成后,所述客户端的主机控制器以中断方式调用URB完成回调函数;
所述客户端主机的USB设备驱动模块返回USB设备访问请求完成消息。
如上所述的方法,其中,所述客户端主机的USB设备驱动模块返回USB设备访问请求完成消息之后,所述客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一 IP报文之前,还包括
客户端主机的设备控制管理器循环查看客户端主机接入的全部USB设备的设备文件;
客户端主机的设备控制管理器获取所述接入的全部USB设备的总线ID、厂商ID、 设备ID和驱动信息;
客户端主机的设备控制管理器在所述接入的全部USB设备中设置所述允许远程共享的USB设备。
如上所述的方法,其中,所述客户端主机的USB设备驱动模块返回USB设备访问请求完成消息之后,所述客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一 IP报文之前,还包括
所述客户端主机的设备控制管理器查询所述服务器宿主机中运行的全部虚拟机的虚拟机标识UUID ;
所述客户端主机的设备控制管理器从所述全部虚拟机的UUID中选择目标虚拟机的 UUID ;
所述USB设备远程共享请求消息中还包括所述目标虚拟机的UUID。
如上所述的方法,其中,所述客户端主机的设备控制管理器在所述接入的全部USB 设备中设置所述允许远程共享的USB设备之后,还包括
所述客户端主机的设备控制管理器将所述允许远程共享的USB设备设置为不允许远程共享的USB设备。
本发明的另一个方面是提供一种面向虚拟机的通用串行总线USB设备远程共享系统,包括客户端主机、服务器宿主机和设置在所述服务器宿主机上的服务器虚拟机;
所述客户端主机包括应用模块、虚拟USB设备驱动模块和主机控制器;
所述服务器宿主机包括应用模块、USB设备驱动模块和虚拟主机控制器;
所述客户端主机的应用模块用于向所述服务器宿主机的应用模块发送携带USB 设备远程共享请求消息的第一互联网协议IP报文,所述USB设备远程共享请求消息包括 允许共享的USB设备的总线标识ID、厂商ID、设备ID和驱动信息;
所述客户端主机的虚拟USB设备驱动模块用于根据第二 IP报文的内容建立第一 URB并传递给客户端的主机控制器;
所述客户端主机的主机控制器用于驱动传递第一 URB描述的数据;
所述服务器宿主机的虚拟主机控制器用于将根集线器端口状态变更为设备插入, 在所述服务器宿主机生成虚拟的所述允许远程共享的USB设备;并且将第一 URB封装到第二 IP报文中传送给所述客户端的虚拟USB设备驱动模块;
所述服务器宿主机的USB设备驱动模块用于将所述USB设备远程访问请求转化为第一 USB请求块URB并传递到服务器宿主机的虚拟主机控制器;
所述服务器虚拟机用于通过设备虚拟化机制访问所述虚拟的允许远程共享的USB 设备,向所述服务器宿主机的USB设备驱动模块发送USB设备远程访问请求。
如上所述的系统,其中,所述客户端主机还包括
设备控制管理器,用于循环查看客户端主机接入的全部USB设备的设备文件,获取所述接入的全部USB设备的总线ID、厂商ID、设备ID和驱动信息,在所述接入的全部USB 设备中设置所述允许远程共享的USB设备。
如上所述的系统,其中,所述客户端主机的设备控制管理器还用于查询所述服务器宿主机中运行的全部虚拟机的虚拟机标识UUID,从所述全部虚拟机的UUID中选择目标虚拟机的UUID ;所述USB设备远程共享请求消息中还包括所述目标虚拟机的UUID。
如上所述的系统,其中,所述客户端主机的设备控制管理器还用于将所述允许远程共享的USB设备设置为不允许远程共享的USB设备。
本发明一个方面的技术效果是服务器与客户端之间采用IP报文通信,客户端向服务器上报允许共享的USB设备的信息,服务器根据该信息在自身建立虚拟的该USB设备, 将对该USB设备的访问操作对应的URB通过IP报文发送到客户端,客户端将该IP报文转换成URB并执行,从而实现服务器远程访问USB设备,且不需要在客户端和服务器的主机中增加新的硬件设备,不限制USB设备的连接数目,提高了面向虚拟机的USB设备远程共享的灵活性。
本发明另一个方面的技术效果是服务器宿主机与客户端主机之间采用IP报文通信,客户端主机向服务器宿主机上报允许共享的USB设备的信息,服务器宿主机根据该信息在自身建立虚拟的该USB设备,将服务器虚拟机对该USB设备的访问操作对应的URB 通过IP报文发送到客户端主机,客户端主机将该IP报文转换成URB并执行,从而实现服务器远程访问USB设备,且不需要在客户端和服务器的主机中增加新的硬件设备,不限制USB 设备的连接数目,提高了面向虚拟机的USB设备远程共享的灵活性。
图1为本发明实施例一的面向虚拟机的USB设备远程共享方法的流程图2为本发明实施例二的面向虚拟机的USB设备远程共享方法的流程图3为本发明实施例三的面向虚拟机的USB设备远程共享系统的结构示意图。
具体实施方式
在本发明的下述实施例中,对面向虚拟机的USB设备远程共享系统中的客户端主机和服务器宿主机的驱动层进行改进。现有的客户端主机以及服务器宿主机,均包括各自的以下模块应用模块、USB设备驱动模块和主机控制器。在本发明的下述各个实施例中, 在应用层,对客户端主机和服务器宿主机的应用模块进行改进;在驱动层,将客户端的现有的USB设备驱动模块改进为虚拟USB设备驱动模块,该虚拟USB设备驱动模块在包含现有的USB设备驱动模块的全部功能的基础上,还具有实现USB设备远程共享的功能,具体详见以下各实施例中的描述;在驱动层,还将服务器的现有的主机控制器改进为虚拟主机控制器,该虚拟主机控制器在包含现有的主机控制器的全部功能的基础上,还具有实现USB设备远程共享的功能,具体详见以下各实施例中的描述。在本发明的各实施例中,将现有的 USB设备驱动模块的全部功能与实现USB设备远程共享的功能集成在虚拟USB设备驱动模块中,在实际应用中,还可以将上述两种功能分别设置,即,客户端主机中保留现有的USB 设备驱动模块,该USB设备驱动模块用于实现客户端主机对于接入该主机自身的USB设备的驱动和访问,并且,在客户端主机中增设一个虚拟USB设备驱动模块,该虚拟USB设备驱动模块用于实现USB设备远程共享的功能。相应地,在本发明的各实施例中,将现有的主机控制器的全部功能与实现USB设备远程共享的功能集成在虚拟主机控制器中,在实际应用中,还可以将上述两种功能分别设置,即,服务器宿主机中保留现有的主机控制器,该主机控制器用于实现服务器宿主机对于接入该主机自身的USB设备的驱动和访问,并且,在服务器宿主机中增设一个虚拟主机控制器,该虚拟主机控制器用于实现USB设备远程共享的功能。
图1为本发明实施例一的面向虚拟机的USB设备远程共享方法的流程图。在本发明实施例一中,以客户端将已经接入客户端主机的USB设备共享给远程的服务器,从而使得服务器可以远程控制该USB设备为例。如图1所示,该方法至少包括以下过程。
步骤101 客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一 IP报文。
在本步骤中,该USB设备远程共享请求消息中包括允许共享的USB设备的总线标识ID、厂商ID、设备ID和驱动信息。
步骤102 服务器宿主机的虚拟主机控制器将根集线器端口状态变更为设备插入。
在本步骤中,服务器宿主机的虚拟主机控制器将根集线器端口状态变更为设备插入,在服务器宿主机生成虚拟的允许远程共享的USB设备。
步骤103 服务器虚拟机通过设备虚拟化机制访问所述虚拟的允许远程共享的 USB设备。
在本步骤中,服务器虚拟机通过设备虚拟化机制访问所述虚拟的允许远程共享的 USB设备,具体地,在此过程中,服务器虚拟机向服务器宿主机的USB设备驱动模块发送USB 设备远程访问请求。
步骤104 服务器宿主机的USB设备驱动模块将USB设备远程访问请求转化为第一 USB请求块(USB Request Block,简称URB)并传递到服务器宿主机的虚拟主机控制器。
步骤105 服务器宿主机的虚拟主机控制器将第一 URB封装到第二 IP报文中传送给客户端的虚拟USB设备驱动模块。
步骤106 客户端主机的虚拟USB设备驱动模块根据第二 IP报文的内容建立第一 URB并传递给客户端的主机控制器。
步骤107 客户端主机的主机控制器驱动传递第一 URB描述的数据。
在本发明实施例一中,服务器与客户端之间采用IP报文通信,客户端向服务器上报允许共享的USB设备的信息,服务器根据该信息在自身建立虚拟的该USB设备,将对该 USB设备的访问操作对应的URB通过IP报文发送到客户端,客户端将该IP报文转换成URB 并执行,从而实现服务器远程访问USB设备。该方法不是简单地对文件进行共享,而是实现了设备层面的共享,并且不需要在客户端和服务器的主机中增加新的硬件设备,USB设备的连接数目也不受限制,因此提高了面向虚拟机的USB设备远程共享的灵活性。
图2为本发明实施例二的面向虚拟机的USB设备远程共享方法的流程图。如图2 所示,该方法包括以下过程。
步骤201 允许远程共享的USB设备接入客户端主机。
在本步骤中,后续过程中允许远程共享的USB设备首先需要接入客户端主机,该接入过程采用的具体方法可以采用现有的任何的USB设备接入主机的方法,在此不再赘述。
步骤202 客户端主机的USB设备驱动模块获取USB设备访问请求,将USB设备访问请求转化为第二 URB并传送到客户端主机的主机控制器。
在USB设备接入客户端主机后,该客户端主机可以访问接入的USB设备,具体包括步骤202至步骤205。具体地,在本步骤中,首先,客户端主机的应用模块向USB设备驱动模块发送USB设备访问请求,然后,USB设备驱动模块将USB设备访问请求转化为第二 URB并传送到客户端主机的主机控制器。
步骤203 客户端主机的主机控制器驱动传递第二 URB描述的数据。
步骤204 第二 URB完成后,客户端的主机控制器以中断方式调用URB完成回调函数。
步骤205 客户端主机的USB设备驱动模块返回USB设备访问请求完成消息。
步骤206 客户端主机的设备控制管理器循环查看客户端主机接入的全部USB设备的设备文件。
步骤207 客户端主机的设备控制管理器获取接入的全部USB设备的总线ID、厂商 ID、设备ID和驱动信息,并且,客户端主机的设备控制管理器在接入的全部USB设备中设置允许远程共享的USB设备。
进一步地,在执行步骤207的同时,或者在执行步骤207之后,还可以执行下述步骤 208。
步骤208 客户端主机的设备控制管理器查询服务器宿主机中运行的全部虚拟机的虚拟机标识(Universally Unique Identif ier,简称UUID),并且,客户端主机的设备控制管理器从全部虚拟机的UUID中选择目标虚拟机的UUID。
在本步骤中,在服务器宿主机上,有可能同时运行一个或者多个虚拟机。客户端主机从其中选择一个虚拟机作为目标虚拟机,该目标虚拟机是客户端许可的在后续远程共享过程中可以远程访问该客户端USB设备的虚拟机。
在上述步骤207之后,在执行后续过程中的任何时刻,还可以随时变更允许远程共享的USB设备,具体他,可以执行下述步骤209。
步骤209 客户端主机的设备控制管理器将允许远程共享的USB设备设置为不允许远程共享的USB设备。
在步骤208之后,客户端将USB设备远程共享到服务器。具体地,进入下述步骤 210。
步骤210 客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一 IP报文。
在本步骤中,该USB设备远程共享请求消息中包括允许共享的USB设备的总线标识ID、厂商ID、设备ID、驱动信息和目标虚拟机的UUID。
步骤211 服务器宿主机的虚拟主机控制器将根集线器端口状态变更为设备插入。
在本步骤中,服务器宿主机的虚拟主机控制器将根集线器端口状态变更为设备插入,在服务器宿主机生成虚拟的允许远程共享的USB设备。
步骤212 服务器虚拟机通过设备虚拟化机制访问所述虚拟的允许远程共享的 USB设备。
在本步骤中,服务器虚拟机通过设备虚拟化机制访问所述虚拟的允许远程共享的 USB设备,具体地,在此过程中,服务器虚拟机向服务器宿主机的USB设备驱动模块发送USB设备远程访问请求。
步骤213 服务器宿主机的USB设备驱动模块将USB设备远程访问请求转化为第一 USB请求块(USB Request Block,简称URB)并传递到服务器宿主机的虚拟主机控制器。
步骤214 服务器宿主机的虚拟主机控制器将第一 URB封装到第二 IP报文中传送给客户端的虚拟USB设备驱动模块。
步骤215 客户端主机的虚拟USB设备驱动模块根据第二 IP报文的内容建立第一 URB并传递给客户端的主机控制器。
步骤216 客户端主机的主机控制器驱动传递第一 URB描述的数据。
步骤217 第一 URB完成后,客户端主机的主机控制器以中断方式调用URB完成回调函数。
步骤218 客户端主机的虚拟USB设备驱动模块向服务器的宿主机的虚拟主机控制器返回携带USB设备请求完成消息的IP报文。
步骤219 服务器宿主机的虚拟主机控制器向服务器宿主机的USB设备驱动模块返回USB设备请求完成消息。
在本发明实施例二中,客户端主机对接入该主机自身的USB设备进行设置,从中选择允许远程共享的USB设备,并且客户端可以指定允许共享该USB设备的服务器的虚拟机,该虚拟机对该USB设备的访问操作对应的URB通过IP报文发送到客户端,客户端将该 IP报文转换成URB并执行,从而实现了服务器的虚拟机远程访问USB设备,并可以对该虚拟机进行选择,进一步提高了面向虚拟机的USB设备远程共享的灵活性。
图3为本发明实施例三的面向虚拟机的USB设备远程共享系统的结构示意图。如图3所示,该系统包括客户端主机31、服务器宿主机32和设置在服务器宿主机32上的服务器虚拟机33。
其中,客户端主机31包括应用模块311、虚拟USB设备驱动模块312和主机控制器313。服务器宿主机32包括应用模块321、USB设备驱动模块322和虚拟主机控制器 323。
具体地,客户端主机31的应用模块311用于向服务器宿主机32的应用模块321 发送携带USB设备远程共享请求消息的第一 IP报文。该USB设备远程共享请求消息包括 允许共享的USB设备的总线标识ID、厂商ID、设备ID和驱动信息。
客户端主机31的虚拟USB设备驱动模块312用于根据第二 IP报文的内容建立第一 URB并传递给客户端主机31的主机控制器313。
客户端主机31的主机控制器313用于驱动传递第一 URB描述的数据。
服务器宿主机32包括应用模块321、USB设备驱动模块322和虚拟主机控制器 323。
服务器宿主机32的虚拟主机控制器323用于将根集线器端口状态变更为设备插入,在服务器宿主机32生成虚拟的允许远程共享的USB设备;并且将第一 URB封装到第二 IP报文中传送给客户端主机31的虚拟USB设备驱动模块312。
服务器宿主机32的USB设备驱动模块322用于将USB设备远程访问请求转化为第一 USB请求块URB并传递到服务器宿主机32的虚拟主机控制器323。
服务器虚拟机33用于通过设备虚拟化机制访问虚拟的允许远程共享的USB设备,向所述服务器宿主机32的USB设备驱动模块322发送USB设备远程访问请求。
在上述技术方案的基础上,进一步地,客户端主机31还可以包括设备控制管理器314。设备控制管理器314用于循环查看客户端主机31接入的全部USB设备的设备文件,获取接入的全部USB设备的总线ID、厂商ID、设备ID和驱动信息,在接入的全部USB设备中设置允许远程共享的USB设备。
进一步地,客户端主机31的设备控制管理器314还用于查询服务器宿主机32中运行的全部虚拟机的虚拟机标识UUID,从全部虚拟机的UUID中选择目标虚拟机的UUID。上述USB设备远程共享请求消息中还包括目标虚拟机的UUID。
进一步地,客户端主机31的设备控制管理器314还用于将允许远程共享的USB设备设置为不允许远程共享的USB设备。
在上述技术方案的基础上,具体地,服务器宿主机32和设置在服务器宿主机32上的服务器虚拟机33之间的信息交互过程可以采用现有的任意的虚拟机技术实现。以下仅对其中一种具体实施例进行简要介绍。具体地,在服务器虚拟机33与服务器宿主机32硬件之间存在一个层,用于决定访问,称为虚拟机监控器。虚拟机的操作系统中包括设备驱动模块,虚拟机发出对允许远程共享的USB的访问命令后,虚拟机监控器截获该访问命令,虚拟机监控器将该访问命令转换为对宿主机32的操作系统的系统调用命令,将该系统调用命令转发给宿主机32的操作系统的设备驱动模块,通过宿主机32的操作系统的设备驱动模块访问宿主机32的物理硬件装置和允许远程共享的USB设备。
在本发明实施例三中,客户端的应用模块向服务器的应用模块上报允许共享的 USB设备的信息,服务器的虚拟主机控制器根据该信息在服务器建立虚拟的该USB设备并将对该USB设备的访问操作对应的URB通过IP报文发送到客户端,客户端的虚拟USB设备驱动模块将该IP报文转换成URB并执行,从而实现服务器远程访问USB设备。该USB设备远程共享系统不是简单地对文件进行共享,而是实现了设备层面的共享,并且不需要在客户端和服务器的主机中增加新的硬件设备,USB设备的连接数目也不受限制,因此提高了面向虚拟机的USB设备远程共享的灵活性。
需要说明的是对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种面向虚拟机的通用串行总线USB设备远程共享方法,其特征在于,包括客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一互联网协议IP报文,所述USB设备远程共享请求消息包括允许共享的USB设备的总线标识ID、厂商ID、设备ID和驱动信息;所述服务器宿主机的虚拟主机控制器将根集线器端口状态变更为设备插入,在所述服务器宿主机生成虚拟的所述允许远程共享的USB设备;所述服务器虚拟机通过设备虚拟化机制访问所述虚拟的允许远程共享的USB设备,向所述服务器宿主机的USB设备驱动模块发送USB设备远程访问请求;所述服务器宿主机的USB设备驱动模块将所述USB设备远程访问请求转化为第一 USB 请求块URB并传递到服务器宿主机的虚拟主机控制器;所述服务器宿主机的虚拟主机控制器将所述第一 URB封装到第二 IP报文中传送给客户端的虚拟USB设备驱动模块;客户端主机的虚拟USB设备驱动模块根据所述第二 IP报文的内容建立所述第一 URB 并传递给客户端的主机控制器;所述客户端主机的主机控制器驱动传递所述第一 URB描述的数据。
2.根据权利要求1所述的方法,其特征在于,所述客户端主机的主机控制器驱动传递所述第一 URB描述的数据之后还包括所述第一 URB完成后,所述客户端主机的主机控制器以中断方式调用URB完成回调函数;所述客户端主机的虚拟USB设备驱动模块向所述服务器的宿主机的虚拟主机控制器返回携带USB设备请求完成消息的IP报文;所述服务器宿主机的虚拟主机控制器向所述服务器宿主机的USB设备驱动模块返回 USB设备请求完成消息。
3.根据权利要求1或2所述的方法,其特征在于,所述客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一 IP报文之前还包括所述允许远程共享的USB设备接入所述客户端主机;客户端主机的USB设备驱动模块获取USB设备访问请求,将所述USB设备访问请求转化为第二 URB并传送到所述客户端主机的主机控制器;所述客户端主机的主机控制器驱动传递所述第二 URB描述的数据; 所述第二 URB完成后,所述客户端的主机控制器以中断方式调用URB完成回调函数; 所述客户端主机的USB设备驱动模块返回USB设备访问请求完成消息。
4.根据权利要求3所述的方法,其特征在于,所述客户端主机的USB设备驱动模块返回USB设备访问请求完成消息之后,所述客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一 IP报文之前,还包括客户端主机的设备控制管理器循环查看客户端主机接入的全部USB设备的设备文件; 客户端主机的设备控制管理器获取所述接入的全部USB设备的总线ID、厂商ID、设备 ID和驱动信息;客户端主机的设备控制管理器在所述接入的全部USB设备中设置所述允许远程共享的USB设备。
5.根据权利要求3所述的方法,其特征在于,所述客户端主机的USB设备驱动模块返回USB设备访问请求完成消息之后,所述客户端主机的应用模块向服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一 IP报文之前,还包括所述客户端主机的设备控制管理器查询所述服务器宿主机中运行的全部虚拟机的虚拟机标识UUID ;所述客户端主机的设备控制管理器从所述全部虚拟机的UUID中选择目标虚拟机的 UUID ;所述USB设备远程共享请求消息中还包括所述目标虚拟机的UUID。
6.根据权利要求4所述的方法,其特征在于,所述客户端主机的设备控制管理器在所述接入的全部USB设备中设置所述允许远程共享的USB设备之后,还包括 所述客户端主机的设备控制管理器将所述允许远程共享的USB设备设置为不允许远程共享的USB设备。
7.一种面向虚拟机的通用串行总线USB设备远程共享系统,其特征在于,包括客户端主机、服务器宿主机和设置在所述服务器宿主机上的服务器虚拟机;所述客户端主机包括应用模块、虚拟USB设备驱动模块和主机控制器; 所述服务器宿主机包括应用模块、USB设备驱动模块和虚拟主机控制器; 所述客户端主机的应用模块用于向所述服务器宿主机的应用模块发送携带USB设备远程共享请求消息的第一互联网协议IP报文,所述USB设备远程共享请求消息包括允许共享的USB设备的总线标识ID、厂商ID、设备ID和驱动信息;所述客户端主机的虚拟USB设备驱动模块用于根据第二 IP报文的内容建立第一 URB 并传递给客户端的主机控制器;所述客户端主机的主机控制器用于驱动传递第一 URB描述的数据; 所述服务器宿主机的虚拟主机控制器用于将根集线器端口状态变更为设备插入,在所述服务器宿主机生成虚拟的所述允许远程共享的USB设备;并且将第一 URB封装到第二 IP 报文中传送给所述客户端的虚拟USB设备驱动模块;所述服务器宿主机的USB设备驱动模块用于将所述USB设备远程访问请求转化为第一 USB请求块URB并传递到服务器宿主机的虚拟主机控制器;所述服务器虚拟机用于通过设备虚拟化机制访问所述虚拟的允许远程共享的USB设备,向所述服务器宿主机的USB设备驱动模块发送USB设备远程访问请求。
8.根据权利要求7所述的系统,其特征在于,所述客户端主机还包括设备控制管理器,用于循环查看客户端主机接入的全部USB设备的设备文件,获取所述接入的全部USB设备的总线ID、厂商ID、设备ID和驱动信息,在所述接入的全部USB设备中设置所述允许远程共享的USB设备。
9.根据权利要求8所述的系统,其特征在于,所述客户端主机的设备控制管理器还用于查询所述服务器宿主机中运行的全部虚拟机的虚拟机标识UUID,从所述全部虚拟机的UUID中选择目标虚拟机的UUID ;所述USB设备远程共享请求消息中还包括所述目标虚拟机的UUID。
10.根据权利要求8或9所述的系统,其特征在于,所述客户端主机的设备控制管理器还用于将所述允许远程共享的USB设备设置为不允许远程共享的USB设备。
全文摘要
本发明提供一种面向虚拟机的USB设备远程共享方法和系统。客户端主机向服务器宿主机发送携带USB设备远程共享请求消息的IP报文,服务器宿主机生成虚拟的允许远程共享的USB设备,服务器宿主机的USB设备驱动模块将服务器虚拟机发送的USB设备远程访问请求转化为URB并传递到服务器宿主机的虚拟主机控制器,服务器宿主机的虚拟主机控制器将URB封装到IP报文中传送给客户端的虚拟USB设备驱动模块,客户端主机的虚拟USB设备驱动模块根据该IP报文的内容建立URB并传递给客户端的主机控制器进行驱动。采用本发明提供的面向虚拟机的USB设备远程共享方法和系统,能够提高面向虚拟机的USB设备远程共享的灵活性。
文档编号H04L29/08GK102523264SQ20111040211
公开日2012年6月27日 申请日期2011年12月6日 优先权日2011年12月6日
发明者怀进鹏, 李博, 李建欣, 沃天宇, 焦烨 申请人:北京航空航天大学