在通过网络连接的第一与第二计算机之间的流中传送数据的制作方法

文档序号:6596235阅读:207来源:国知局
专利名称:在通过网络连接的第一与第二计算机之间的流中传送数据的制作方法
在通过网络连接的第一与第二计算机之间的流中传送数据
背景技术
许多企业正在过渡到网络布置,其中中央服务器的计算资源被提供给用户所位于的本地计算机。集中在一个或者多个中央服务器处的计算资源(例如,软件应用程序、处理资源、存储资源,等等)可被选择性地分配给由在本地计算机处的用户所建立的会话。提供协议以使在本地计算机处的用户能够通过计算机网络访问并且共享远程计算机(例如,中央服务器)的桌面。一种此类协议是用于通过网络连接提供远程显示和输入能力的远程桌面协议(RDP),如由微软公司所提供的。另一种可被使用的协议是来自惠普公司(Hewlett Packard Co.)的远程图形软件(RGS)协议。RGS被设计成充分利用远程计算机的计算机和图形资源以传递在本地计算机处的交互远程访问。远程计算机的桌面视频数据被通过网络传输到本地计算机,其在本地计算机处的窗口中本地地显示桌面视频数据。RGS 被设计成通过网络提供桌面视频数据的快速捕获、压缩和传输。RGS还允许从远程计算机将音频数据发送到本地计算机以用于在本地计算机的音频设备上输出。RGS还捕获本地计算机处的用户键盘输入和鼠标输入,并且将键盘输入和鼠标输入发送到远程计算机以便通过远程计算机的操作系统、以及通过运行在远程计算机上的应用程序来处理。RGS还允许从本地计算机将其它外围设备(例如,诸如存储设备)的数据传送到远程计算机。某些外围设备(诸如附连到本地计算机的存储设备(例如,硬盘驱动器、光盘驱动器、等等))被视为“大容量设备”,因为这些设备可能在单个传输操作中能够传输相对大量的数据(“批量数据”)。通过网络将批量数据从本地计算机传输到远程计算机消耗相对大部分的本地计算机与远程计算机之间的可用网络带宽。因此,当正在发生批量数据传输操作时,余下的可用于将视频数据和/或音频数据从远程计算机发送到本地计算机的网络带宽的量就减少, 这可能不利地影响在本地计算机处观看视频数据或者听音频数据期间的用户体验。


通过举例的方式、参考以下图来对本发明的某些实施例进行描述
图1是包括本地计算机和远程计算机的示例性布置的方框图,其中可结合本发明的实施例;
图2是依照实施例的、由本地计算机所执行的对本地计算机与远程计算机之间的网络上的数据流进行节流的处理的流程图;以及
图3是依照另一实施例的、由远程计算机执行的对本地计算机与远程计算机之间的网络上的数据流进行节流的处理的流程图。
具体实施例方式图1图示了一种布置,其中本地计算机100 (用户位于该本地计算机处)被通过数据网络104而连接到远程计算机102。尽管在图1中描绘了仅仅一个本地计算机100和一个远程计算机102,但是应该注意的是,可存在多个本地计算机100和/或多个远程计算机102。本地计算机100使用在本地计算机100与远程计算机102之间建立的会话中的远程计算机102的资源。例如,本地计算机100可使用远程计算机102的图形资源,其中该远程计算机102通过网络104将远程计算机的桌面视频数据传递到本地计算机100以用于显示在本地计算机100的显示设备106中。同样,本地计算机可使用远程计算机102的音频资源,其中远程计算机102通过网络104将远程计算机的音频数据传递到本地计算机100 以用于通过本地计算机100的音频输出设备107 (例如,头戴式耳机、扬声器、等等)输出。同样,一个或者多个用户接口设备108被附连到本地计算机100。用户接口设备 108的状态变化被通过数据网络104从本地计算机100传送到远程计算机102。根据HID标准,用户接口设备 108 可为人机接口设备(HID) JBUniversal Serial Bus (USB),Device Class Definition For Human Interface Devices (HID), Firmware Specification (第 1. 11版,2001年6月27日)中所述。HID设备108可为鼠标、键盘、滚动球式输入设备、写字板、等等。此外,一个或者多个大容量设备109被附连到本地计算机100。“大容量设备”是能够潜在地通过网络104在单个传输操作中将相对大量的数据(“批量数据”)从本地计算机100传输到远程计算机102的设备。大容量设备的实例包括存储设备,诸如,硬盘驱动器、光盘驱动器、或者任何其它类型的存储设备。大容量设备还可包括本地计算机100的内部存储器139。其中可以将批量数据从本地计算机100的内部存储器139传输到远程计算机102的示例性场景是在剪切和粘贴或者复制和粘贴操作的情况下的,其中用户可能已经在本地计算机处选择了相对大量的数据以保存到另一应用程序或者文件中,所剪切的或者复制的数据通过网络104从内部存储器139传输到远程计算机102。通过网络104将批量数据从本地计算机100传送到远程计算机102消耗网络104 的相对大部分的可用带宽。因此,当正在进行批量数据传输操作时,余下的可用于将视频数据和/或音频数据从远程计算机102发送到本地计算机100的网络带宽的量就减少,这可能不利地影响在本地计算机100处观看视频数据或者听音频数据期间的用户体验。依照某些实施例,提供一种机制以将不同的优先级分配给本地计算机100与远程计算机102之间的不同的数据流。为了提高在本地计算机100处从远程计算机102获得数据(例如,观看视频数据和/或听音频数据)期间的用户性能,分配给从远程计算机102到本地计算机100的视频数据和/或音频数据的流的(一个或多个)优先级被设置成高于分配给从大容量设备109到远程计算机102的任何批量数据的传输的优先级。数据的“流” 指的是明显地可识别的数据传送。明显的数据流可以是与不同的应用程序相关联的流(例如,传送用于显示视频的视频数据的一个流;传送用于输出音频的音频数据的另一流;和传送批量数据的再一流;等等)。在图1的实例中,描绘了三种数据流流A (从远程计算机102到本地计算机100 的音频数据);流B (从远程计算机102到本地计算机100的视频数据);以及流C (从本地计算机100到远程计算机102的批量数据)。在本地计算机100与远程计算机102之间可以存在其它的流。这些流的一些或者所有可并发地进行。依照某些实施例,分配给流C的优先级低于分配给流A和流B的优先级中的任何一个,从而使得将给音频数据和视频数据有效地分配比批量数据更大的部分的网络104的
5带宽。以这种方式,如果存在音频数据或者视频数据要传输,那么流C中的批量数据的传输就被延迟直到音频数据或者视频数据在流A或者流B中被发送为止。对这些流的优先级的分配可由在远程计算机102中的调度器117来执行。数据网络104可根据互联网协议(IP)传送数据。HID设备108和大容量设备109 可通过到本地计算机100的一个或多个通用串行总线(USB)链路110 (有线的或者无线的 USB链路)而附连到本地计算机100。HID设备108连接到HID控制器112,并且大容量设备 109连接到大容量设备控制器113。在上述的实施方式中,与HID设备108或者大容量设备 109相关的任何数据具有USB数据的形式,所述USB数据在通过数据网络104传输到远程计算机102的IP分组中加以传送。尽管在所述的实施例中提到的是“USB”和“IP”,但是应当注意的是,根据某些实施例的技术可适用于根据其它类型的协议的数据分组。本地计算机100被称为“接收系统”,并且远程计算机102被称为“发送系统”。同样地,本地计算机100包括接收器软件114,并且远程计算机102包括发送器软件116。该发送器软件116用于通过数据网络104将远程计算机102 (发送系统)的桌面视频数据和音频数据发送给本地计算机100 (接收系统)中的接收器软件114,其中桌面视频数据被显示在显示设备106处,并且音频数据由音频输出设备107输出。注意,由发送器软件116所发送的桌面视频数据和音频数据是可由相应的显示设备和音频输出设备呈现的实际的呈现视频数据和呈现音频数据。该呈现视频数据和呈现音频数据不同于包含在必须被转换成可由相应的输出设备呈现的格式的源视频文件(例如,MPEG文件)或者源音频文件中的数据。远程计算机102中的发送器软件116从远程计算机102中的视频子系统136处接收视频数据。该视频子系统136的视频数据可由附连到远程计算机102的显示设备显示。 然后,发送器软件116对被发送到接收器软件114的视频数据应用压缩,其然后可在在显示设备106处显示视频数据之前对视频数据执行解压缩。类似地,发送器软件116从远程计算102中的音频子系统137接收音频数据。音频子系统137的音频数据可由附连到远程计算机102的音频输出设备输出。发送器软件116 也对发送到接收器软件114的音频数据应用压缩,其然后可在在音频输出设备107处输出音频数据之前对音频数据执行解压缩。注意,在某些实施方式中实际的显示设备或者音频输出设备不是必须被连接到远程计算机102的视频子系统136或者音频子系统137 ;然而,在其它实施方式中,显示设备或者音频输出设备可被连接到远程计算机102。在某些实施例中,发送器软件116和接收器软件114是根据来自惠普公司 (Hewlett - Packard Co.)的远程图形软件(RGS)协议。RGS被设计成充分利用远程计算机的计算机和图形资源以从本地计算机传递交互远程访问。在不同的实施例中,发送器软件 116和接收器软件114可根据来自微软公司的远程桌面协议(RDP)来操作,从而通过网络连接提供远程显示和输入能力。在更多的实施例中,发送器软件116和接收器软件114可以是根据其它技术。本地计算机100中的对应的设备驱动器118与HID控制器112和大容量设备113 进行交互,以分别地执行有关HID设备108和大容量设备109的操作。例如,对应的设备驱动器118可接收HID设备108的变化指示(例如,在用户已经移动鼠标、启动键盘、移动滚动球式输入设备、移动与写字板有关的输入设备时、等等)。此外,另一设备驱动器118可通过网络104从大容量设备109处接收批量数据以便传输。接收器软件114通过网络104将相应的HID数据和批量数据发送到远程计算机 102。依照某些实施例,接收器软件114包括节流器115以在所述节流器115检测到存在来自远程计算机102的活动的数据流(例如,流A和/或流B)的情况下,对通过网络104来自大容量设备109的批量数据的传输进行节流。对数据流进行“节流”指的是放慢所述流中的数据的传输速率、延迟所述流中的数据的传输、和/或停止所述流中的数据的传输。本地计算机100与远程计算机102之间的数据的流动通过网络接口 120和122来进行。网络接口 120和122中的每个都包括物理网络接口控制器以及协议栈(包括IP协议栈)。网络接口 120通过数据网络104将相应的IP分组中的USB数据(批量数据和/或HID 数据)发送到远程计算机102。IP分组由远程计算机102中的网络接口 122接收,所述网络接口 122从IP分组中提取USB批量数据和/或HID数据。在发送器软件116处所接收的批量数据被转发给虚拟内插器124,所述虚拟内插器1 可使所接收的批量数据被存储在远程计算机102中的永久性存储器150中。该虚拟内插器1 拦截来自远程计算机102中的设备驱动器126的呼叫,其旨在用于位于远处的外围设备,例如附连到本地计算机100的大容量设备109和HID设备108。该虚拟内插器 124防止到位于远处的外围设备的呼叫到达远程计算机102中的操作系统的下层(内核)设备驱动器。各设备驱动器1 可创建分别被提供给音频子系统137和视频子系统136的音频数据和视频数据,以由相应的输出设备加以呈现,所述输出设备诸如是连接到远程计算机100和远程计算机102的相应的输出设备。同样地,另一设备驱动器1 可接收关于用户接口设备(例如位于远处的HID设备108)的启动(例如,移动)的更新。远程计算机102还包括软件应用程序134。对应的软件应用程序134可能具有将从附连到本地计算机100的大容量设备109检索到的所请求的批量数据。另一软件应用程序134可能正在等待来自HID设备108的更新的信息。依照某些实施例,发送器软件116包括将优先级分配给用于在本地计算机100与远程计算机102之间传送数据的流的调度器117。该调度器117可将已分配的优先级传送到节流器115,从而使得当节流器115检测到在本地计算机100与远程计算机102之间存在其它数据流时,节流器115可确定批量数据的传送是否将要被节流。本地计算机100包括一个或者多个连接到存储器139的中央处理单元(CPU) 138。 本地计算机100的软件模块(例如,接收器软件114和设备驱动器118)在一个或多个CPU 138上是可执行的。远程计算机102类似地包括一个或者多个连接到存储器132和永久性存储器150 的CPU140。远程计算机102的软件模块(例如,软件应用程序134、设备驱动器126、虚拟内插器IM和发送器软件116)在一个或多个CPU 140上是可执行的。图2图示了由接收系统(本地计算机100)所执行的程序。本地计算机100中的接收器软件114接收(在202处)用于本地计算机100与远程计算机102之间的对应数据流的所分配的优先级。例如,数据流可包括在图1中所描绘的流A、B和C。针对对应的数据流的优先级的分配可由远程计算机102中的调度器117来执行。在分配了优先级以后,发送器软件116将与已分配的优先级有关的信息发送到接收器软件114。接下来,接收器软件114识别(在204处)与将要被传送的不同流相关联的数据。
7如果对于较高优先级的一个或者多个流(例如,图1中的流A和流B)来说存在数据要传送, 则本地计算机100中的节流器115对较低优先级的流进行节流(在206处),所述较低优先级的流例如是图1中的用于将批量数据从本地计算机100发送到远程计算机102的流C。图3图示了根据替代实施例的、在发送系统(远程计算机102)处执行的流程。图 3的流程可代替图2的流程来加以执行。远程计算机102中的调度器117将优先级分配(在302处)给远程计算机102与本地计算机100之间的各数据流。发送器软件116接下来识别(在304处)与将被传送的不同流相关联的数据。基于所识别的数据,该发送器软件116将指示发送(在306处)到本地计算机100中的接收器软件114以通知接收器软件114对哪些数据流进行节流,例如图1中的本地优先级批量数据流C。上文描述的软件(包括图1的接收器软件114、节流器115、设备驱动器118、发送器软件116、调度器117、虚拟内插器124、和设备驱动器126)的指令被加载以便在处理器 (例如图1中的一个或者多个CPU 139、140)上执行。处理器包括微处理器、微控制器、处理器模块或者子系统(包括一个或者多个微处理器或者微控制器)、或者其它控制或者计算设备。“处理器”可指代单个组件或者指代多个组件(例如,一个CPU或者多个CPU)。(软件的)数据和指令被存储在各存储设备中,其被实现作为一个或者多个计算机可读的或者计算机可用的存储介质。该存储介质包括不同形式的存储器,所述存储器包括 半导体存储设备,例如动态随机存取存储器或者静态随机存取存储器(DRAM或者SRAM)、可擦除并且可编程的只读存储器(EPR0M)、电可擦除并且可编程的只读存储器(EEPROM)和闪速存储器;磁盘,例如固定盘、软盘和可移动盘;其它的包括磁带的磁性介质;和光学介质 (例如,紧致盘(CD)或者数字视频盘(DVD)。注意,上文所讨论的软件的指令可被提供在一个计算机可读的或者计算机可用的存储介质上,或者替换地,可被提供在分布在可能具有多个节点的大系统中的多个计算机可读的或者计算机可用的存储介质上。此类计算机可读的或者计算机可用的存储介质或者媒体被视为是物品(或者制品)的一部分。物品或者制品可指代任何制造的单个组件或者多个组件。在前述说明中,陈述了很多细节以提供对本发明的理解。然而,本领域的技术人员将理解本发明可以在没有这些细节的情况下实现。虽然已针对有限数量的实施例对本发明进行了公开,但本领域的技术人员将从中知晓许多的修改和变化。意图是,随附权利要求将此类修改和变化覆盖为落入本发明的真实精神和范围内。
权利要求
1.一种用于包括通过网络连接到第二计算机的第一计算机的网络布置中的方法,包括通过所述第一计算机与第二计算机之间的网络在多个流中传送数据,其中所述第二计算机具有可由所述第一计算机通过所述网络而远程地访问的资源,并且其中所述第二计算机具有设备驱动器,以接收附连到所述第一计算机的用户输入设备处的用户输入;以及根据分配给对应的多个流的不同的优先级,促使所述多个数据流中的至少第一个数据流被节流,从而使得给所述多个流中的至少第二个流提供更大部分的网络带宽,其中所述第二流用于传送与由所述第一计算机进行的对所述第二计算机的资源的远程访问有关的数据。
2.根据权利要求1所述的方法,其中,所述被远程地访问的第二计算机的所述资源是音频资源或者视频资源,所述方法进一步包括将所述第二流中的音频数据或者视频数据从所述第二计算机传送到所述第一计算机, 其中所述音频数据或者视频数据由所述第一计算机处的输出设备来呈现。
3.根据权利要求2所述的方法,进一步包括将所述第一流中的、附连到所述第一计算机的外围设备的数据从所述第一计算机传送到所述第二计算机。
4.根据权利要求3所述的方法,其中,传送所述外围设备的所述数据包括传送数据存储设备的所述数据。
5.根据权利要求3所述的方法,其中,传送所述外围设备的所述数据包括传送所述外围设备的通用串行总线(USB)数据。
6.根据权利要求2所述的方法,进一步包括将与第一流中的、在所述第一计算机处执行的剪切和粘贴或者复制和粘贴操作相关联的数据从所述第一计算机传送到所述第二计算机。
7.根据权利要求2所述的方法,进一步包括将与所述用户接口设备相关联的数据从所述第一计算机传送到所述第二计算机的所述设备驱动器。
8.根据权利要求7所述的方法,其中,传送所述音频数据或者视频数据包括传送所述第二计算机的音频子系统或者视频子系统的所述音频数据或者视频数据,其中所述音频数据或者视频数据由所述第二计算机的设备驱动器来产生。
9.根据权利要求1所述的方法,其中,所述传送步骤和促使步骤由所述第二计算机执行,所述方法进一步包括所述第二计算机中的调度器将不同的优先级分配给所述多个数据流。
10.根据权利要求1所述的方法,其中,所述传送步骤和促使步骤由所述第一或者第二计算机中的任一个执行。
11.一种第一计算机,包括处理器;能在所述处理器上执行的发送器软件,其用于通过网络将音频数据和视频数据中的至少一个发送到第二计算机以便由附连到所述第二计算机的输出设备输出,并且接收与附连到所述第二计算机的用户接口设备有关的数据;以及能在所述处理器上执行的调度器,其用于将不同的优先级分配给所述第一计算机与所述第二计算机之间的数据流,其中所述数据流包括用于传送音频数据和视频数据中的至少一个的至少一个流,和用于通过所述网络将附连到所述第二计算机的外围设备的数据传送到所述第一计算机的第二流,其中所述发送器软件将指示提供给所述第二计算机以使所述第二计算机对所述第二流中的所述数据的传送进行节流。
12.根据权利要求11所述的第一计算机,其中,所述外围设备是用于传送批量数据的大容量设备。
13.根据权利要求11所述的第一计算机,进一步包括设备驱动器;以及虚拟内插器,其拦截由所述设备驱动器进行的以访问附连到所述第二计算机的所述外围设备的呼叫。
14.根据权利要求11所述的第一计算机,其中,所述外围设备的所述数据包括通用串行总线(USB)数据。
15.一种物品,其包括包含指令的至少一个计算机可读存储介质,当所述指令被执行时使第一计算机通过网络将音频数据和视频数据中的至少一个发送到第二计算机以便由附连到所述第二计算机的输出设备输出;在所述第一计算机中的设备驱动器处接收与附连到所述第二计算机的用户接口设备有关的数据;将不同的优先级分配给所述第一计算机与所述第二计算机之间的数据流,其中所述数据流包括用于传送音频数据和视频数据中的至少一个的至少一个流,和用于通过所述网络将附连到所述第二计算机的外围设备的数据传送到所述第一计算机的第二流;以及将指示提供给所述第二计算机以使所述第二计算机对所述第二流中的所述数据的传送进行节流。
全文摘要
一种网络布置包括通过网络连接到第二计算机的第一计算机。通过所述第一计算机与第二计算机之间的网络传送多个流上的数据,其中所述第二计算机具有可由所述第一计算机通过所述数据网络而远程地访问的资源,并且其中所述第二计算机具有设备驱动器,以接收附连到所述第一计算机的用户输入设备处的用户输入;根据分配给对应的多个流的不同的优先级,促使所述多个数据流中的至少第一个数据流被节流,从而使得给所述多个流中的至少第二个流提供更大部分的网络带宽,其中所述第二流用于传送与由所述第一计算机进行的对所述第二计算机的资源的远程访问有关的数据。
文档编号G06F3/00GK102301361SQ200980155759
公开日2011年12月28日 申请日期2009年1月29日 优先权日2009年1月29日
发明者M. 金 J. 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1