CN116955236A - 一种基于虚拟化的usb设备共享方法及系统 - Google Patents

一种基于虚拟化的usb设备共享方法及系统 Download PDF

Info

Publication number
CN116955236A
CN116955236A CN202311210796.9A CN202311210796A CN116955236A CN 116955236 A CN116955236 A CN 116955236A CN 202311210796 A CN202311210796 A CN 202311210796A CN 116955236 A CN116955236 A CN 116955236A
Authority
CN
China
Prior art keywords
usb
virtual
equipment
switch
virtualization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202311210796.9A
Other languages
English (en)
Other versions
CN116955236B (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yuan Kernel Beijing Technology Co ltd
Original Assignee
Yuan Kernel Beijing Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yuan Kernel Beijing Technology Co ltd filed Critical Yuan Kernel Beijing Technology Co ltd
Priority to CN202311210796.9A priority Critical patent/CN116955236B/zh
Publication of CN116955236A publication Critical patent/CN116955236A/zh
Application granted granted Critical
Publication of CN116955236B publication Critical patent/CN116955236B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • G06F13/225Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及USB设备资源共享技术领域,公开了一种基于虚拟化USB设备的文件共享方法及系统,将USB设备直连至USB交换机上,同时USB交换机的另一端通过以太网连接物理服务器;物理服务器通过虚拟化技术手段,将USB设备抽象为虚拟USB设备;为同一个USB设备以及不同的USB设备配置对应的共享管理策略,将USB虚拟设备分配给一个或者多个虚拟主机,从而实现USB设备的共享。与现有技术相比,本发明可以实现硬件级别的USB设备共享,不需要在业务操作系统上安装特定的驱动程序或代理,减少了安装和配置的复杂性,提高了使用的便利性。

Description

一种基于虚拟化的USB设备共享方法及系统
技术领域
本发明涉及USB设备资源共享技术领域,具体涉及一种基于虚拟化的USB设备共享方法及系统。
背景技术
USB共享技术是一种将USB设备在多台计算机之间共享的技术,它可以让多个计算机同时共享一个USB设备,例如打印机、扫描仪、摄像头等。这种技术可以极大地提高设备的利用率和工作效率,节省用户的成本和空间,同时也便于管理和维护。目前,常见的USB共享技术有两种,一种是硬件USB共享器,另一种是软件USB共享器,主要包含了USB requestover IP(USB/IP)、USB over Ethernet、VirtualHere、USB hubs in software等。
硬件USB共享器是一种外置设备,它通过在计算机和USB设备之间插入共享器,将USB信号转换为其他协议信号,使多台计算机可以同时访问USB设备。这种共享器通常需要使用特定的驱动程序,并且要求USB设备的驱动程序必须在所有计算机上安装。
另一种软件USB共享器则是一种在计算机上安装的软件程序,它可以在计算机之间共享USB设备。这种共享器通常不需要硬件设备,只需要在所有计算机上安装共享软件即可。同时,软件共享器通常支持更多的设备类型,并且可以实现更高的数据传输速率。
USB设备共享器是一种能够实现多台计算机共享USB设备的外部设备。它可以将USB信号转换为其他协议信号,使多台计算机可以同时访问同一USB设备。USB设备共享器是一种便利的工具,可以将USB设备共享给多台计算机使用,但是也存在一些不足之处。具体如下:
可靠性问题:由于USB设备共享器需要进行信号转换和传输控制,因此可能会存在信号干扰和数据冲突的问题,导致数据传输不稳定或中断。
兼容性问题:不是所有的USB设备都支持共享功能,某些设备可能需要使用特定的驱动程序或软件才能正常使用。此外,USB设备共享器也可能不支持某些特殊类型的USB设备,如存储加密设备等。
性能问题:USB设备共享器在多台计算机之间共享USB设备时,可能会影响设备的性能和响应速度。特别是在大量数据传输时,可能会出现数据丢失、延迟等问题,影响工作效率。
安全性问题:USB设备共享器可能会增加数据泄露的风险,特别是在多个计算机之间共享存储设备和打印机等重要设备时,需要注意数据的隐私保护和访问权限的控制。
维护和管理问题:多个计算机共享同一设备可能会导致设备的维护和管理难度加大,需要更多的人力和资源投入。
USB/IP技术是一种基于网络的USB设备共享技术,它使用TCP/IP协议将USB设备连接到网络,并允许其他计算机通过网络访问设备,可以实现共享USB设备的跨网络访问,从而实现多用户同时使用USB设备的需求。它可以将USB设备的访问权限控制在一个主机上,并将USB设备的信息在网络中共享,同时支持多个USB设备的共享,提高了设备的利用率。这个技术可以运行在Windows、Linux和macOS等操作系统上。但是,USB/IP技术也存在一些缺点:
网络环境要求较高:USB/IP技术需要在计算机间建立网络连接,网络环境的稳定性和速度会对USB设备的使用产生影响。如果网络带宽不够大或网络延迟较高,USB/IP技术的使用效果会受到影响。
传输效率较低:USB/IP技术需要将USB设备信息转换成网络传输格式,并通过TCP/IP协议进行传输,这一过程会对数据传输效率产生一定的影响,可能会出现传输延迟或数据丢失等问题。
要求在主机端都安装相应的软件,使用前需要部署相应的共享环境,USB设备的共享依赖于虚拟通道的建立。
安全性问题:USB/IP技术是通过网络共享USB设备,可能会带来一定的安全隐患,例如黑客利用网络漏洞攻击共享设备,或者篡改数据等问题。
USB over Ethernet是一种将USB信号通过网络传输的技术,可以让多台计算机共享同一个USB设备,实现USB设备的远程访问。USB over Ethernet技术的实现需要两部分软件:一个是在USB设备所在的计算机上运行的服务器端软件,另一个是在需要访问USB设备的客户端计算机上运行的客户端软件。USB over Ethernet技术的优点包括能够在局域网内实现USB设备的远程共享,可以方便地共享多种类型的USB设备,并且可以在多台计算机之间轻松切换USB设备。但是,它也存在一些缺陷,例如传输延迟问题、带宽限制问题以及受限于网络拓扑等问题。同时USB over Ethernet不支持所有类型的USB设备,一些高速和高带宽的设备可能无法通过网络进行传输,或者传输效果不佳。在使用USB over Ethernet时,需要在服务器端和客户端分别安装相应的软件,依赖于软件的支持,不支持硬件级别的设备共享。
VirtualHere是一种基于USB over IP技术的USB设备共享软件,支持多种操作系统平台,可以让用户将USB设备共享给其他计算机,并且能够实现USB设备的远程访问和管理。同时还支持虚拟化环境和云计算平台。VirtualHere也存在一些缺陷。首先,它需要在每个需要访问共享USB设备的计算机上安装VirtualHere客户端软件,如果需要访问USB设备的计算机数量比较多,管理起来可能会比较麻烦。其次,如果VirtualHere服务端软件运行不稳定或者出现故障,可能会影响所有访问共享USB设备的计算机,导致系统不可用。此外,VirtualHere的商业版需要收费,使用起来可能会有一定的成本。
USB hubs in software是一种USB设备共享技术,它的实现原理是在软件层面上模拟多个USB端口,实现多台计算机共享同一个USB设备。该技术常被用于虚拟机和云计算等场景中,可以让多个虚拟机或者多个云主机共享同一个USB设备,从而实现设备的高效利用。由于USB hubs in software技术是在软件层面上模拟多个USB端口,不需要任何硬件设备支持,只需要安装USB设备共享软件即可实现多台计算机共享同一个USB设备。支持多台计算机同时连接一个USB设备,可以实现设备的高效利用。在虚拟机和云计算等场景中应用广泛,可以满足用户的多样化需求。但是,该技术也存在一些缺点。首先,它对计算机的性能有一定的影响,因为它需要在软件层面模拟USB集线器的功能。其次,如果多个USB设备同时访问共享的USB集线器,可能会出现数据冲突或错误,降低设备的稳定性和可靠性。最后,该技术只能在特定的虚拟化软件上运行,不适用于所有操作系统和硬件平台。
发明内容
针对现有技术中存在的问题,本发明提供一种基于虚拟化的USB设备共享方法及系统,可以实现硬件级别的USB设备共享,不需要在业务操作系统上安装特定的驱动程序或代理,减少了安装和配置的复杂性,提高了使用的便利性。
本发明提供了一种基于虚拟化的USB设备共享方法,包括如下步骤:
步骤1:将USB设备直连至USB交换机上,同时USB交换机的另一端通过以太网连接物理服务器;
步骤2:物理服务器通过虚拟化技术手段,将USB设备抽象为虚拟USB设备;
步骤3:为同一个USB设备以及不同的USB设备配置对应的共享管理策略,将USB虚拟设备分配给一个或者多个虚拟主机,从而实现USB设备的共享。
进一步地,在步骤1USB设备直连至USB交换机上后,根据虚拟化的USB虚拟设备资源进行池化管理,并且进行统一的资源分配;所述池化管理包括硬盘资源池、摄像头资源池、公共资源池。
进一步地,所述步骤1中USB交换机将多个USB设备连接到一个计算机或者同时连接多台计算机,所述USB交换机与所述计算机之间通过直连或者通过Wi-Fi进行连接。
进一步地,所述USB交换机在软件驱动层面包括设备管理、端口管理、访问控制、日志管理和数据传输;
所述设备管理,用于连接到USB交换机的USB设备的管理,驱动程序对每个USB设备进行识别和分类,并确定设备类型、设备ID、设备状态;
所述端口管理,用于管理USB交换机的物理端口,包括端口的开启、关闭、状态查询;
所述访问控制,根据用户的访问权限对USB设备进行访问控制;
所述日志管理,用于记录USB交换机的运行状态、异常事件;
所述USB交换机中的数据传输,由驱动程序负责管理,驱动程序通过USB总线与USB主机和各个USB设备进行通信,发送控制命令,接收和发送数据包;
所述驱动程序支持USB总线的各种传输类型和传输速度,并且对传输过程中出现的错误进行处理和恢复,USB总线上的数据传输分为控制传输和数据传输;
所述控制传输,用来发送和接收USB设备配置和状态信息,包括设备描述符、配置描述符、接口描述符、端点描述符、设备状态和错误码;
所述数据传输,用来传输实际的数据,包括批量传输、中断传输和等时传输。
进一步地,所述步骤2中的虚拟化技术主要包括如下操作:
将任意型号的USB设备虚拟化为一个或多个虚拟USB设备,使得虚拟USB设备能够经过USB交换机和以太网与物理服务器通信;通过Hypervisor,即虚拟机监控程序VMM将整个物理服务器宿主机虚拟化,并在其中运行一个或多个虚拟机,每个虚拟机都拥有自己的虚拟USB控制器和虚拟USB设备,利用VMM直接为虚拟机提供USB控制器和USB设备的访问接口,实现对USB设备的虚拟化。
进一步地,实现虚拟机对物理USB设备的远程访问具体包括如下操作:
Hypervisor在启动时会为虚拟机创建USB控制器,连接到USB交换机上对应的物理USB设备,并对每个设备进行检测和初始化,并为它们创建对应的虚拟设备,每个虚拟设备都有一个唯一的ID和地址;
Hypervisor将虚拟设备映射到物理USB设备,允许虚拟机与物理USB设备进行通信;
当虚拟USB设备接收到USB数据包时,Hypervisor将数据包封装为TCP或UDP数据包并通过网络发送到USB交换机设备;USB交换机接收到数据包后,将其解包还原成USB数据包,并将其发送到真实的USB设备上;
在物理USB设备接收到USB数据包时,USB交换机会将其封装为TCP或UDP数据包并通过网络发送到Hypervisor,Hypervisor将其解包还原成USB数据包,并将其发送到虚拟USB设备上。
进一步地,Hypervisor通过定期发送USB设备状态信息来保证虚拟设备和真实设备的同步;当一个USB设备的状态改变时,Hypervisor发送一条状态改变的消息到目标设备,以保证虚拟设备的状态和真实设备的状态一致。
进一步地,所述步骤3中共享管理策略通过资管分配模块实现,所述USB设备通过虚拟化技术,抽象出虚拟化设备列表,包括多对一的映射关系,然后通过资源分配模块,将虚拟化设备分配给对应的虚拟主机;
所述资管分配模块设计一个资源管理数据结构存储虚拟设备和虚拟主机之间的映射关系以及虚拟设备的状态信息;所述数据结构为一个哈希表,每个哈希表条目存储一个虚拟设备的唯一标识符,对应的值是一个结构体,包括虚拟设备的当前状态,当前状态包括 “已分配”、“未分配”;虚拟设备所属的物理设备的唯一标识符;虚拟设备已经分配给哪些虚拟主机。
在资源管理数据结构的基础上,使用轮询算法进行资源分配,实现虚拟USB设备的分配和释放,将虚拟设备轮流分配给不同的虚拟主机使用,直到所有虚拟主机都得到过机会。
进一步地,所述资管分配模块还包括:
在资源管理数据结构和轮询算法进行资源分配的基础上,实现一个资源分配接口,所述接口包括有:查询虚拟USB设备的状态信息;分配虚拟USB设备给指定的虚拟主机;释放虚拟USB设备;添加和删除虚拟USB设备和虚拟主机的映射关系;
在资源分配接口的基础上,实现事件处理程序来处理资源分配的相关事件,包括虚拟USB设备的插入和拔出,虚拟主机的启动和关闭;所述相关事件处理程序能够更新资源管理数据结构和调用资源分配接口。
本发明还公开一种基于上述基于虚拟化的USB设备共享方法的共享系统,包括USB设备、USB交换机、物理服务器以及在物理服务器虚拟化出来的虚拟主机;所述USB交换机上设置有资源池化模块、资源分配模块、资源控制模块;还包括虚拟化模块;
所述USB设备与所述USB交换机连接,所述USB交换机与所述物理服务器连接;所述USB设备通过所述虚拟化模块虚拟出虚拟USB设备;所述虚拟USB设备通过所述资源池化模块进行池化管理,通过资源控制模块统一管理,利用资源分配模块进行虚拟USB设备资源分配;
利用虚拟化模块将任意型号的USB设备虚拟化为一个或多个虚拟USB设备,虚拟USB设备经过USB交换机和以太网与物理服务器通信;通过Hypervisor,即虚拟机监控程序VMM将整个宿主机虚拟化,并在其中运行一个或多个虚拟机,每个虚拟机都拥有自己的虚拟USB控制器和虚拟USB设备,利用VMM直接为虚拟机提供USB控制器和虚拟USB设备的访问接口,实现对USB设备的虚拟化;
所述USB设备共享系统在进行USB设备共享过程中执行上述基于虚拟化的USB设备共享方法的步骤。
本发明的有益技术效果为:
1、本发明不需要在业务操作系统上安装特定的驱动程序或代理,减少了安装和配置的复杂性,提高了使用的便利性。可以实现硬件级别的USB设备共享,避免了软件驱动支持的限制,提高了设备共享的灵活性和兼容性。
2、本发明可以支持多种类型的USB设备,包括加密设备等,提高了设备的可共享性和共享范围,有利于企业内部资源的充分利用。
3、本发明提供了灵活的共享管理策略,管理员可以根据具体需求配置设备的共享时间和共享对象,有利于资源的合理分配和管理。
4、本发明能够提供安全的共享环境,通过设备授权和访问控制等技术,可以确保数据的安全性和保密性,有助于保护企业的核心业务信息。
附图说明
图1为本发明USB设备共享系统架构示意图;
图2为本发明USB设备共享抽象结构示意图;
图3为本发明USB交换机连接策略图;
图4为本发明USB交换机软件驱动示意图;
图5为本发明USB设备虚拟化流程框图;
图6为本发明USB设备资源分配过程示意图;
图7为本发明USB资源分配示意图。
具体实施方式
为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述,以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明公开了一种基于虚拟化的USB设备共享方法及统,如图1所示,整个系统的架构的结构包含了物理USB设备、USB交换机、物理服务器以及在物理服务器虚拟化出来的虚拟主机。物理USB设备包含了键盘、摄像头、鼠标、硬盘、GPU、U盾、加密狗、打印机等各种类型的USB设备。
USB设备通过直连的形式连接到USB交换机之上。同时USB交换机的另一端通过以太网连接物理服务器。物理服务器通过虚拟化技术手段,将USB设备抽象为虚拟设备。对于同一个USB设备以及不同的USB设备可以配置对应的共享管理策略,将USB虚拟设备分配个一个或者多个虚拟主机,从而实现USB设备的共享。
在USB设备连接到USB交换机后,USB设备共享系统能够根据虚拟化的USB设备资源进行池化管理,并且进行统一的资源分配。如图2所示,系统能够将所有的虚拟化USB设备进行划分,将抽象出来的USB设备划分为硬盘资源池、摄像头资源池、公共资源池等,然后经过资源控制模块的统一管理,经过资源分配模块去分配相应的虚拟USB设备资源。
本发明中,USB交换机是一种用于管理USB设备共享的硬件设备。将多个USB设备连接到一个计算机或者同时连接多台计算机,实现对USB设备的共享。USB交换机在USB端可以用于连接多个同类型或不同类型的USB设备。主机端用于连接一个或者多个主机,可以根据连接方式的不同选择直连或者通过Wi-Fi进行连接。无线USB交换机是一种使用Wi-Fi技术实现无线连接的USB交换机。与传统的有线USB交换机相比,无线USB交换机具有更大的灵活性和便携性,用户可以通过Wi-Fi连接到无线USB交换机,然后访问和共享连接到交换机的USB设备,具体参见图3。
使用USB交换机的作用主要有以下几点:
1)USB设备的共享:可以将多个USB设备连接到一个交换机上,实现多个计算机之间的共享,减少了多个计算机分别连接多个USB设备的不便。
2)USB设备的管理:交换机可以帮助用户对多个USB设备进行管理,可以对不同的USB设备进行分组,方便用户查找和管理。
3)USB设备的保护:交换机添加访问控制权限,限制用户访问某些USB设备,从而保护用户的数据安全。
4)USB设备的扩展:交换机提供更多的USB接口,为用户扩展USB设备提供方便。
在USB交换机的具体实现上,在软件驱动层面主要包含了设备管理、端口管理、访问控制、日志管理和数据传输等部分,如图4所示。
设备管理部分用于连接到USB交换机的USB设备的管理,在实现这一功能时,驱动程序对每个USB设备进行识别和分类,并确定设备类型、设备ID、设备状态等信息,以便后续的包括设备的添加、删除、修改、查询等。
端口管理部分负责管理USB交换机的物理端口,包括端口的开启、关闭、状态查询等。
访问控制部分根据用户的访问权限对USB设备进行访问控制,防止未授权的用户访问USB设备。
日志管理部分负责记录USB交换机的运行状态、异常事件等信息,方便系统管理员进行故障排除和管理。
USB交换机中的数据传输是由驱动程序负责管理的。驱动程序需要通过USB总线与USB主机和各个USB设备进行通信,发送控制命令,接收和发送数据包。驱动程序需要支持USB总线的各种传输类型和传输速度,并且需要对传输过程中出现的错误进行处理和恢复。USB总线上的数据传输可分为控制传输和数据传输。
控制传输是用来发送和接收设备配置和状态信息的,包括设备描述符、配置描述符、接口描述符、端点描述符、设备状态和错误码等信息。控制传输是由USB主机发起的,发送的数据量较小,速度较慢。数据传输是用来传输实际的数据的,包括批量传输、中断传输和等时传输。批量传输是用来传输大量数据的,数据传输的速度较慢,但是可以保证数据的可靠性;中断传输是用来传输小量数据的,数据传输的速度较快,但是不能保证数据的可靠性;等时传输是用来传输对时间要求较高的数据的,数据传输的速度较快,但是必须保证数据的实时性。
物理服务器通过虚拟化技术手段,可以将任意型号的USB设备虚拟化为一个或多个虚拟USB设备,使得这些虚拟设备可以经过USB交换机和以太网与物理主机通信。通过Hypervisor,即虚拟机监控程序(VMM)将整个宿主机虚拟化,并在其中运行一个或多个虚拟机,每个虚拟机都拥有自己的虚拟USB控制器和虚拟USB设备。利用VMM直接为虚拟机提供USB控制器和设备的访问接口,实现对USB设备的虚拟化。使用TCP/IP协议栈将虚拟USB设备通过网络连接到物理主机。具体来说,可以将虚拟USB设备的数据流封装成TCP/IP数据包,利用网络连接(如以太网)将这些数据包发送到物理主机,再在物理主机上将数据包解封装还原成原始的USB数据流,VMM再将原始的USB数据流发送到虚拟USB控制器上的虚拟USB设备。这样,就实现了虚拟机对物理USB设备的远程访问。最后,使用一些优化技术来提高传输效率和降低延迟。其中,包括使用高效的压缩算法压缩传输的数据、利用多线程技术并行处理传输数据、以及采用零拷贝技术来减少CPU负载等,此非本申请需要保护的重点,此处不做赘述。使用这种方式可以满足很多对数据传输效率和实时性要求较高的应用场景。
如图5所示,Hypervisor在启动时会为虚拟机创建USB控制器,根据资源分配模块的资源分配规则连接到USB交换机上对应的物理USB设备,并对每个USB设备进行检测和初始化,并为它们创建对应的虚拟设备。每个虚拟设备都有一个唯一的ID和地址。之后Hypervisor将虚拟设备映射到物理USB设备,从而允许虚拟机与物理USB设备进行通信。当虚拟USB设备接收到USB数据包时,Hypervisor会将这些数据包封装为TCP或UDP数据包并通过网络发送到USB交换机设备。USB交换机设备接收到数据包后,将其解包还原成USB数据包,并将其发送到真实的USB设备上。同样的,在物理USB设备接收到USB数据包时,USB交换机会将其封装为TCP或UDP数据包并通过网络发送到Hypervisor,Hypervisor将其解包还原成USB数据包,并将其发送到虚拟USB设备上。
Hypervisor通过定期发送USB设备状态信息来保证虚拟设备和真实设备的同步。当一个USB设备的状态改变时,Hypervisor会发送一条状态改变的消息到目标设备,以保证虚拟设备的状态和真实设备的状态一致。Hypervisor通过控制命令来控制USB设备。例如,当需要重启或关闭一个USB设备时,Hypervisor会发送一个控制命令到物理USB设备,物理USB设备将执行对应的操作,并返回执行结果。
在USB共享系统中,资源分配是一个重要的模块,它负责将虚拟USB设备分配给不同的虚拟主机,以实现多个主机共享同一USB设备的功能。如图6所示,USB设备通过Hypervisor虚拟化层,抽象出虚拟化设备列表,包含了多对一的映射关系,然后通过资源分配模块,将虚拟化设备分配给对应的虚拟主机。
资源分配模块首先,需要设计一个资源管理数据结构来存储虚拟设备和虚拟主机之间的映射关系,以及虚拟USB设备的状态信息等。这个数据结构可以是一个哈希表,每个哈希表条目存储一个虚拟设备的唯一标识符,对应的值是一个结构体,包括虚拟设备的当前状态,如“已分配”、“未分配”等;虚拟设备所属的物理设备的唯一标识符,以便进行实际的设备访问;虚拟设备已经分配给哪些虚拟主机。
在资源管理数据结构的基础上,使用轮询算法进行资源分配,来实现虚拟设备的分配和释放。将虚拟设备轮流分配给不同的虚拟主机使用,直到所有主机都得到过机会。在具体实现时,可以记录每个虚拟主机上次访问虚拟设备的时间戳,以便优先分配给最长时间未使用的虚拟主机。
在资源管理数据结构和资源分配算法的基础上,实现一个资源分配接口,供其他模块调用。该接口主要包括的功能有:查询虚拟设备的状态信息;分配虚拟设备给指定的虚拟主机;释放虚拟设备,以便重新分配给其他虚拟主机;添加和删除虚拟设备和虚拟主机的映射关系。
最后,在资源分配接口的基础上,通过实现一些事件处理程序,来处理资源分配的相关事件,如虚拟设备的插入和拔出,虚拟主机的启动和关闭等。这些事件处理程序应该能够更新资源管理数据结构和调用资源分配接口,以便及时响应这些事件,并保持资源分配的正确性。
通过这样的资源分配策略,可以得到如图7所示的资源分配图,对于每个虚拟主机,在自己的操作系统中享有一个USB设备列表。允许多个虚拟主机共享同一个USB设备,但是在虚拟主机的视图中对USB设备资源是独享的。
USB设备的资源控制模块是指通过软件控制USB设备的使用时间、使用权限、使用方式等参数,实现对USB设备的资源控制。这种资源控制是针对一个或多个USB设备、一个或多个用户、一个或多个主机的,以满足不同场景下对USB设备资源的需求。
1)时间控制;通过在驱动程序中添加计时器,记录USB设备的使用时间,并在达到限制时间后发送禁用信号给Hypervisor断开虚拟USB设备连接,从而禁用该设备。主要包含了时间限制,时间配额功能。对于每个用户分配一个特定的时间配额,通过设定访问时间的开始时间和结束时间,对USB设备的使用时间进行限制,当超出规定的时间配额后,用户无法再使用USB设备。
2)使用权限控制;通过资源分配模块的的权限管理机制,限制某些用户或程序对特定USB设备的访问权限。例如,可以设置某一类别USB设备,例如HID类型设备的使用权限,只有拥有相应权限的用户或程序才能访问该类型设备。可以根据Vendor ID和Product ID设定某一特定USB设备的使用权限,只有拥有相应权限的用户或程序才能访问该设备。亦可以通过设定不同的用户组,对每个用户组设定不同的USB设备访问权限,例如只允许某些用户使用某些特定的USB设备,或者限制某些用户对USB设备进行读写操作。同时对USB设备进行权限设置,例如只允许特定的USB设备与Hypervisor进行连接,或者限制某些USB设备只能在特定的应用程序中使用。
3)数据传输控制;在驱动程序中实现数据传输的控制,包括数据的读写权限和速率限制等。例如,可以限制某些用户或程序只能读取设备的数据而不能写入数据,或者限制数据的传输速率以防止设备被恶意占用。
4)实时监控和记录;在系统中实时监控USB设备的使用情况,包括设备的使用时间、使用者、传输数据量等信息,并将这些信息记录在系统日志中。这样可以及时发现异常使用行为并采取相应措施。
以上所述仅是本发明的优选实施方式,并不用于限制本发明,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。

Claims (10)

1.一种基于虚拟化的USB设备共享方法,其特征在于,包括如下步骤:
步骤1:将USB设备直连至USB交换机上,同时USB交换机的另一端通过以太网连接物理服务器;
步骤2:物理服务器通过虚拟化技术手段,将USB设备抽象为虚拟USB设备;
步骤3:为同一个USB设备以及不同的USB设备配置对应的共享管理策略,将USB虚拟设备分配给一个或者多个虚拟主机,从而实现USB设备的共享。
2.根据权利要求1所述的基于虚拟化的USB设备共享方法,其特征在于,在步骤1USB设备直连至USB交换机上后,根据虚拟化的USB虚拟设备资源进行池化管理,并且进行统一的资源分配;所述池化管理包括硬盘资源池、摄像头资源池、公共资源池。
3.根据权利要求1所述的基于虚拟化的USB设备共享方法,其特征在于,所述步骤1中USB交换机将多个USB设备连接到一个计算机或者同时连接多台计算机,所述USB交换机与所述计算机之间通过直连或者通过Wi-Fi进行连接。
4.根据权利要求3所述的基于虚拟化的USB设备共享方法,其特征在于,所述USB交换机在软件驱动层面包括设备管理、端口管理、访问控制、日志管理和数据传输;
所述设备管理,用于连接到USB交换机的USB设备的管理,驱动程序对每个USB设备进行识别和分类,并确定设备类型、设备ID、设备状态;
所述端口管理,用于管理USB交换机的物理端口,包括端口的开启、关闭、状态查询;
所述访问控制,根据用户的访问权限对USB设备进行访问控制;
所述日志管理,用于记录USB交换机的运行状态、异常事件;
所述USB交换机中的数据传输,由驱动程序负责管理,驱动程序通过USB总线与USB主机和各个USB设备进行通信,发送控制命令,接收和发送数据包;
所述驱动程序支持USB总线的各种传输类型和传输速度,并且对传输过程中出现的错误进行处理和恢复,USB总线上的数据传输分为控制传输和数据传输;
所述控制传输,用来发送和接收USB设备配置和状态信息,包括设备描述符、配置描述符、接口描述符、端点描述符、设备状态和错误码;
所述数据传输,用来传输实际的数据,包括批量传输、中断传输和等时传输。
5.根据权利要求1所述的基于虚拟化的USB设备共享方法,其特征在于,所述步骤2中的虚拟化技术主要包括如下操作:
将任意型号的USB设备虚拟化为一个或多个虚拟USB设备,使得虚拟USB设备能够经过USB交换机和以太网与物理服务器通信;通过Hypervisor,即虚拟机监控程序VMM将整个物理服务器宿主机虚拟化,并在其中运行一个或多个虚拟机,每个虚拟机都拥有自己的虚拟USB控制器和虚拟USB设备,利用VMM直接为虚拟机提供USB控制器和USB设备的访问接口,实现对USB设备的虚拟化。
6.根据权利要求5所述的基于虚拟化的USB设备共享方法,其特征在于,实现虚拟机对物理USB设备的远程访问具体包括如下操作:
Hypervisor在启动时会为虚拟机创建USB控制器,连接到USB交换机上对应的物理USB设备,并对每个设备进行检测和初始化,并为它们创建对应的虚拟设备,每个虚拟设备都有一个唯一的ID和地址;
Hypervisor将虚拟设备映射到物理USB设备,允许虚拟机与物理USB设备进行通信;
当虚拟USB设备接收到USB数据包时,Hypervisor将数据包封装为TCP或UDP数据包并通过网络发送到USB交换机设备;USB交换机接收到数据包后,将其解包还原成USB数据包,并将其发送到真实的USB设备上;
在物理USB设备接收到USB数据包时,USB交换机会将其封装为TCP或UDP数据包并通过网络发送到Hypervisor,Hypervisor将其解包还原成USB数据包,并将其发送到虚拟USB设备上。
7.根据权利要求6所述的基于虚拟化的USB设备共享方法,其特征在于,Hypervisor通过定期发送USB设备状态信息来保证虚拟设备和真实设备的同步;当一个USB设备的状态改变时,Hypervisor发送一条状态改变的消息到目标设备,以保证虚拟设备的状态和真实设备的状态一致。
8.根据权利要求1所述的基于虚拟化的USB设备共享方法,其特征在于,所述步骤3中共享管理策略通过资管分配模块实现,所述USB设备通过虚拟化技术,抽象出虚拟化设备列表,包括多对一的映射关系,然后通过资源分配模块,将虚拟化设备分配给对应的虚拟主机;
所述资管分配模块设计一个资源管理数据结构存储虚拟设备和虚拟主机之间的映射关系以及虚拟设备的状态信息;所述数据结构为一个哈希表,每个哈希表条目存储一个虚拟设备的唯一标识符,对应的值是一个结构体,包括虚拟设备的当前状态,当前状态包括“已分配”、“未分配”;虚拟设备所属的物理设备的唯一标识符;虚拟设备已经分配给哪些虚拟主机;
在资源管理数据结构的基础上,使用轮询算法进行资源分配,实现虚拟USB设备的分配和释放,将虚拟设备轮流分配给不同的虚拟主机使用,直到所有虚拟主机都得到过机会。
9.根据权利要求8所述的基于虚拟化的USB设备共享方法,其特征在于,所述资管分配模块还包括:
在资源管理数据结构和轮询算法进行资源分配的基础上,实现一个资源分配接口,所述接口包括有:查询虚拟USB设备的状态信息;分配虚拟USB设备给指定的虚拟主机;释放虚拟USB设备;添加和删除虚拟USB设备和虚拟主机的映射关系;
在资源分配接口的基础上,实现事件处理程序来处理资源分配的相关事件,包括虚拟USB设备的插入和拔出,虚拟主机的启动和关闭;所述相关事件处理程序能够更新资源管理数据结构和调用资源分配接口。
10.一种基于权利要求1至9任一所述的基于虚拟化的USB设备共享方法的共享系统,其特征在于,包括USB设备、USB交换机、物理服务器以及在物理服务器虚拟化出来的虚拟主机;所述USB交换机上设置有资源池化模块、资源分配模块、资源控制模块;还包括虚拟化模块;
所述USB设备与所述USB交换机连接,所述USB交换机与所述物理服务器连接;所述USB设备通过所述虚拟化模块虚拟出虚拟USB设备;所述虚拟USB设备通过所述资源池化模块进行池化管理,通过资源控制模块统一管理,利用资源分配模块进行虚拟USB设备资源分配;
利用虚拟化模块将任意型号的USB设备虚拟化为一个或多个虚拟USB设备,虚拟USB设备经过USB交换机和以太网与物理服务器通信;通过Hypervisor,即虚拟机监控程序VMM将整个宿主机虚拟化,并在其中运行一个或多个虚拟机,每个虚拟机都拥有自己的虚拟USB控制器和虚拟USB设备,利用VMM直接为虚拟机提供USB控制器和虚拟USB设备的访问接口,实现对USB设备的虚拟化;
所述USB设备共享系统在进行USB设备共享过程中执行如权利要求1至9任一所述的基于虚拟化的USB设备共享方法的步骤。
CN202311210796.9A 2023-09-20 2023-09-20 一种基于虚拟化的usb设备共享方法及系统 Active CN116955236B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311210796.9A CN116955236B (zh) 2023-09-20 2023-09-20 一种基于虚拟化的usb设备共享方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311210796.9A CN116955236B (zh) 2023-09-20 2023-09-20 一种基于虚拟化的usb设备共享方法及系统

Publications (2)

Publication Number Publication Date
CN116955236A true CN116955236A (zh) 2023-10-27
CN116955236B CN116955236B (zh) 2023-12-12

Family

ID=88454999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311210796.9A Active CN116955236B (zh) 2023-09-20 2023-09-20 一种基于虚拟化的usb设备共享方法及系统

Country Status (1)

Country Link
CN (1) CN116955236B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117407123A (zh) * 2023-12-12 2024-01-16 麒麟软件有限公司 基于多系统隔离的usb设备虚拟共享系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523264A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 面向虚拟机的usb设备远程共享方法和系统
CN102567074A (zh) * 2011-11-29 2012-07-11 中标软件有限公司 一种面向虚拟机的usb设备重定向方法
CN103312781A (zh) * 2013-05-15 2013-09-18 山东超越数控电子有限公司 一种虚拟usb总线的实现方法
CN105391652A (zh) * 2015-12-03 2016-03-09 武汉噢易云计算有限公司 基于usb重定向实现usb设备网络共享的系统及方法
CN107341039A (zh) * 2016-04-28 2017-11-10 中兴通讯股份有限公司 一种虚拟环境下对usb设备进行管理的方法、主机和系统
CN107357743A (zh) * 2017-07-28 2017-11-17 郑州云海信息技术有限公司 一种控制usb设备的方法及装置
CN109284170A (zh) * 2018-09-11 2019-01-29 山东观海数据技术有限公司 一种局域网内usb共享系统及共享方法
CN111782319A (zh) * 2020-06-16 2020-10-16 贵州省广播电视信息网络股份有限公司 在云桌面挂载USBKey实现共享访问的系统及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567074A (zh) * 2011-11-29 2012-07-11 中标软件有限公司 一种面向虚拟机的usb设备重定向方法
CN102523264A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 面向虚拟机的usb设备远程共享方法和系统
CN103312781A (zh) * 2013-05-15 2013-09-18 山东超越数控电子有限公司 一种虚拟usb总线的实现方法
CN105391652A (zh) * 2015-12-03 2016-03-09 武汉噢易云计算有限公司 基于usb重定向实现usb设备网络共享的系统及方法
CN107341039A (zh) * 2016-04-28 2017-11-10 中兴通讯股份有限公司 一种虚拟环境下对usb设备进行管理的方法、主机和系统
CN107357743A (zh) * 2017-07-28 2017-11-17 郑州云海信息技术有限公司 一种控制usb设备的方法及装置
CN109284170A (zh) * 2018-09-11 2019-01-29 山东观海数据技术有限公司 一种局域网内usb共享系统及共享方法
CN111782319A (zh) * 2020-06-16 2020-10-16 贵州省广播电视信息网络股份有限公司 在云桌面挂载USBKey实现共享访问的系统及方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117407123A (zh) * 2023-12-12 2024-01-16 麒麟软件有限公司 基于多系统隔离的usb设备虚拟共享系统
CN117407123B (zh) * 2023-12-12 2024-04-05 麒麟软件有限公司 基于多系统隔离的usb设备虚拟共享系统

Also Published As

Publication number Publication date
CN116955236B (zh) 2023-12-12

Similar Documents

Publication Publication Date Title
US11190375B2 (en) Data packet processing method, host, and system
US8874952B2 (en) Computer system and availability method thereof
US8554890B2 (en) Method of deploying a production environment using a development environment
EP2721501B1 (en) Method and apparatus for remote delivery of managed usb services via a mobile computing device
JP6055310B2 (ja) 仮想記憶ターゲットオフロード技術
EP1900178B1 (en) Method and system for managing virtual instances of a physical port attached to a network
TWI526931B (zh) 用於虛擬機器之繼承產品啟動
US7792923B2 (en) Disk system adapted to be directly attached to network
US6738818B1 (en) Centralized technique for assigning I/O controllers to hosts in a cluster
CN116955236B (zh) 一种基于虚拟化的usb设备共享方法及系统
EP1248179A1 (en) Selective activation and deactivation of peripheral devices connected to a USB system
JP2004506980A (ja) コンピュータネットワークを介してブロックレベルストレージアクセスを提供するためのアーキテクチャ
US20150113114A1 (en) Network interface adapter registration method, driver, and server
AU2007278728A1 (en) Method and apparatus for distributing usb hub functions across a network
JP2010033404A (ja) 仮想計算機システムおよび仮想計算機システムの制御方法
JP2003323263A (ja) 共有メモリ制御方法および制御システム
WO2022120992A1 (zh) 基于虚拟环境的内存共享系统及方法
JP2000172639A (ja) 遠隔操作方法及びデ―タ処理システム
US7428594B2 (en) File server system
CN110224917A (zh) 数据传输方法、装置及系统、服务器
US20110246600A1 (en) Memory sharing apparatus
CN110830574A (zh) 一种基于docker容器实现内网负载均衡的方法
JPH117404A (ja) ネットワーク接続型scsi装置ならびに同装置を用いたファイルシステム
US6356985B1 (en) Computer in multi-cluster system
KR20150002426A (ko) 네크워크 입출력 가상화 환경에서 가상 머신의 이동성 지원 방법 및 이를 수행하는 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant