用于应用的网络分类的制作方法

文档序号:12071206阅读:134来源:国知局
用于应用的网络分类的制作方法与工艺

当计算设备上的多个应用共享该计算设备上或者该计算设备外部的相同的有限网络资源时,已经使用了各种技术来试图平衡那些应用的联网需求。计算机用户和应用常常偏好在消耗网络资源的应用之间的某种折中和优先排序。然而,在实践中,用于共享网络访问的先前技术通常没有最优地实现那些偏好和优先级。例如,设备的用户可能偏好在其设备上的IP话音(VoIP)通话具有低网络时延,并且在设备上的web浏览是敏捷和响应式的。用户也可能偏好诸如云同步和操作系统更新之类的后台大量网络传输以使得能够实现满意的前台性能并保持合理进度的方式产生其对设备的网络资源的消耗。

除了通常无法满意地共享网络访问之外,先前的访问共享技术对于软件开发者进行访问或者实现而言通常并不方便。例如,虽然服务质量(QoS)设施可能是有用的,但是它们通常并不以统一的方式可用或者被实现。大多数QoS技术在应用级以下发生,并且因此可能无法被应用可靠地操纵。大多数QoS方法,例如区分服务,取决于两个终端之间的网络的行为和支持。这样的支持可能并不存在于所有网络路径上。关于便利性,网络共享行为也已经在应用内被实现,但是这常常要求具有很少或者不具有应用之间的直接协调的复杂网络编程。这不但对于不同应用实现其自身的网络共享逻辑而言是重复的,而且应用的不同资源共享行为可能会冲突。

虽然存在诸如由操作系统实现以允许应用实现特定类型的网络消耗行为的LEDBAT(低额外延迟后台传输)之类的协议,但是利用这样的协议的编码可能增加开发应用的成本和开销,并且可能使得开发者不太可能使用这样的协议。另外,如LEDBAT的广泛部署的低优先级TCP(传输控制协议)机制具有缺点,并且通常不提供理想的用户体验(对于其他示例,参见Internet Engineering Task Force Request for Comments 6297)。例如,LEDBAT协议仅限制TCP发送窗口而对于接收流没有影响,而大多数客户端侧的互联网流量是流入的。即便当如LEDBAT的机制在不要求复杂的开发者编码的情况下可用时,可能操作系统或者网络堆栈也不可能确定应用应当使用这样的机制。换言之,难以推断关于网络资源冲突的用户和应用意图,并且应用很少规定其网络优先级。设备的网络资源的共享也不是以在不易遭受诸如“迟到者”现象(例如,参见Request For Comments 6817,第4.4节)之类的问题的情况下在竞争应用之间一致的方式实现的。

下面讨论与设备网络资源的方便和有效共享有关的技术。



技术实现要素:

以下发明内容被包括以仅用于引入下面在具体实施方式中讨论的一些概念。本发明内容不是全面性的,并且不打算界定所要求保护的主题的范围,所述范围由结尾处呈现的权利要求阐述。

一种操作系统实现网络流的类别。应用将其网络流指派给类别。操作系统进而按照流处于哪些类别中而调控流。随着条件改变,可以通过按照流已被指派给哪些类别调控所述流来使得网络资源可用或者被更充分地利用。可以通过限制较低优先级类别中的流而使得网络资源可能快速地或者抢先地对于较高优先级类别中的流可用。

下面将参考结合附图考虑的以下具体实施方式来解释附带特征中的许多特征。

附图说明

将从根据附图阅读的以下具体实施方式中更好地理解本说明书,在附图中,相同参考数字用来指定附随说明书中的相同部件。

图1示出了具有实现网络堆栈的操作系统的计算设备。

图2示出了使用应用编程接口(API)的应用的过程。

图3示出了流分类模型的示例。

图4示出了具有相应网络性能种类的示例流。

图5示出了分类模型的另一示例。

图6示出了流管理器的详细视图。

图7示出了流管理器可以通过其调控流的示例过程。

图8示出了流分类模型的另一示例。

图9示出了用于共同流管理的实施例的过程。

图10示出了计算设备的附加细节。

具体实施方式

下面讨论的实施例涉及允许应用将其网络流分类到网络堆栈或者操作系统,所述网络堆栈或者操作系统进而按照网络流的分类以系统范围的方式和谐地安排对于设备的网络资源的共享。讨论将从系统综述和对于应用可以如何选择系统将如何调控其网络行为的解释开始。接下来将描述网络流分类模型的示例和用于实现其的细节。

图1示出了具有实现网络堆栈104的操作系统102的计算设备100。可以从任何已知的操作系统联网堆栈导出网络堆栈104,其中添加内容或者改变根据本说明书是清楚明白的。例如,可以使用包装器(wrapper)来修改或者增强TCP/IP网络堆栈。一般地,在任何网络协议堆栈的传输级处的实现方式将是方便的。在计算设备100上,各种各样的任意应用106中的任一个可以通过数据网络108而执行和通信。应用106的一些示例是web浏览器、后台下载器、在线游戏、实时话音或者视频通信程序、数据库客户端、媒体流传输应用等等。为了与远程设备109交换数据,应用106通过数据网络108通信,数据网络108可以是运送IP(互联网协议)流量或其变体的网络。在存在可视化层(例如,管理程序(hypervisor))并且应用在不同虚拟机上的访客操作系统上执行的情况下,网络通信对于计算设备100可以是完全或者部分本地的。

操作系统102可以包括一个或者多个接口驱动器110(设备驱动器),其除了其他已知的功能之外,将分组传递到相应的网络接口112,并且从相应的网络接口112接收分组。可以假定,应用106在用户空间中执行,并且本文讨论的操作系统102和联网特征在内核空间中执行。然而,这并不作要求。内核模式代码或者用户模式代码可以将网络分类指派给由此控制的网络流,并且流管理器114可以在内核空间或者用户空间中执行。在一个实施例中,网络流管理可以使用与已知的TCP/IP网络堆栈交换分组的用户模式包装器来实现。

流管理器114管理和调控用于应用106的网络流116。网络流116(此后被称为“流”)是对应于在计算设备100和远程设备109之间的相应网络连接(例如,IP五元组)的操作系统对象。典型地,每个流具有FIFO缓冲器以及由操作系统和流的应用用来在对流执行操作时标识流的描述符或者句柄。网络堆栈104可以提供代表流116实现传输协议的传输层模块(例如,TCP模块)。操作系统102提供应用编程接口(API)118,应用106使用该应用编程接口(API)118来执行与流相关的操作,诸如实例化流对象、设置流参数、发起与流的网络连接、关闭流、获得和设置流属性值(诸如要连接到的网络地址、要使用的远程和本地端口、要使用的协议、联网参数等等)。当如本文中描述的那样进行扩展或者修改时,Winsock API、Berkeley套接口API以及其他类似的API都适合用作API 118。

图2示出了一种使用API 118向网络堆栈104通知要与特定流相关联的流类别或者种类的应用的过程。在步骤140,应用形成或者获取流。流可以或者可以不具有网络连接。在应用执行代码中,流可以被称为描述符、句柄、对象等等。应用可以从另一应用或者进程获取流,或者可以发起流作为新的对象。在后者的情况下,流的各种参数或者属性可以由应用在使用流来形成网络连接之前设置。如上指出的,这样的参数例如可以是远程网络地址、本地网络地址(当多个网络接口112在计算设备100 100上可用时)、本地和远程端口、协议设置等等。

在步骤142,应用使用API 118来将流类别或者种类(此后被称为“类别”)具体指派给流。应用可以将其他类别指派给应用的流中的其他流。步骤142可以在流的寿命期间在任何时间执行,包括当流被实例化时、在为流形成网络连接之前、在流被连接且可能运送流量之后、当流运送流量时等等。而且,可以对同一流反复执行步骤142以改变当前被指派给该流的类别,从而,如接下来将讨论的,相应地改变流管理器114如何通过流调控分组流。

在步骤144,操作系统,具体是流管理器114,控制网络流的网络资源使用。流管理器114用作中央协调器,其和谐地安排由操作系统管理的多个(可能是所有)流的网络行为。流管理器114可以跟踪流的实际网络性能,并且特别是关于时延和带宽(吞吐量)性能以及可能地在不同大小时间窗内的平均吞吐量来调控其行为。流管理器114还可以例如通过分析探测分组的回程时间(RTT)、通过接收关于沿着流的网络路径的各种设备的队列大小的信息等等来接收关于网络条件的信号。值得注意的是,流管理器114应当能够确定用于每个流的最近和/或当前带宽、时延、或者这两者。在一个实施例中,并非所有流都具有显式的应用指派的类别。然而,流管理器114还可以可能通过将这些流视为具有默认类别来管理它们。在一个实施例中,流管理器114不是一个不同的模块或者组件,而是遍及操作系统102和/或网络堆栈104分散的逻辑(如本文中使用的术语“流管理器”是指这两种设计)。换言之,流管理逻辑的放置并不重要。

图3示出了流分类模型180A的示例。图3还示出了将类别指派给流的代码182的样本。分类模型180A具有八个类别,其中四个用于带宽并且四个用于时延。在该示例分类模型180A中,可以将两个类别指派给同一流;一个类别用于带宽而一个类别用于时延。如在样本代码182中可见的,“高”带宽和“低”时延类别被指派给由“socket_s”表示的流。在其他实施例中,分类模型180A可以仅具有带宽类别、或者仅具有时延类别、或者具有拥有两个性能维度的单独类别,如在图5中示出的。图4示出了具有相应网络性能种类的示例流190。流190可以具有通过API 116指派的标识符和类别192。在一个实施例中,相应流的分类是操作系统102用来表示流的、相应数据结构或者对象的标记或属性。

图5示出了分类模型180B的另一示例。分类模型180B具有六个类别(A到F):实时类别、响应式(交互式)类别、流传输类别、正常类别、最终类别和不可见类别。该分类模型180B对于开发者而言可能是方便的,因为各个类别紧密对应于常见类型的网络消耗应用。每个类别可以具有在网络性能的一个或者多个维度中的相应性能范围、下限、上限等等,如在流管理器114的逻辑中实现的。例如,可以如下实现类别(带宽以每秒兆位(MBS)为单位、时延以毫秒(ms)为单位):

实时:1 MBS,200 ms,

响应式:0.1 MBS,50 ms,

流传输:3 MBS,1500 ms,

正常:0.2 MBS,5000 ms,以及

最终、不可见:0 MBS,0 ms。

这些数字仅仅是示例;可以使用任何值,并且一些类别可以不具有带宽和/或时延规定。

流管理器114可以具有用以实现这样的策略或规则202的控制逻辑200(图6),该策略或规则202用于当需求在流之间产生冲突时要如何依据这些流的类别实现它们的性能目标。例如,规则202可以规定用于带宽的优先性,以使得当流媒体传输类别的流处于或者接近其限度时可以通过按照其他流的类别对其他流进行节流来使得带宽可用。例如,当种类-A的流要求联网资源时,可以首先对不可见流进行节流,然后是最终流,然后是正常流,然后是响应式流。各类别也可以具有相应的权重以规定要节流的带宽(或者时延)的相对部分,从而允许处于较高优先级类别中的流获取从低优先级的流释放的带宽的大部分和从中等优先级的流释放的带宽的小部分。在另一实施例中,网络资源的使用按照流类别被优先排序或者分摊。如果响应式的流要求附加带宽,则可以可能从最低优先级类别的流开始、在保持可以分让带宽的任何流处于其性能规定内的同时从这些流(例如通过节流)吸取带宽。总之,可以通过各种各样的算法、规则/优先级、性能值等等实现按照流的类别共同管理流的网络资源消耗。

按照应用规定的类别对于流的集中式全局管理的潜在优点是可以改进用户的体验。例如,假设用户的设备正在运行具有已被分类成“流传输”的网络流的多媒体流传输应用。还假设用户开启web浏览器应用,该web浏览器应用将其HTTP浏览流分类成“响应式”,并且将其下载流分类成“正常”。当用户请求web页面时,因为对应的响应式类别的流具有比流传输类别的流更高的时延优先级,所以流传输类别的流可以被临时节流(例如,持续50ms)以允许响应式类别的流满足其时延要求。流传输类别的流的短暂减慢将很可能不会被用户注意到(由于缓冲的缘故),并且web页面将快速下载。如果用户发起了文件下载,则可以从流传输类别的流“借取”带宽直到达到其带宽下限为止,从而允许正常类别的下载流在不中断来自流传输类别的流的媒体的播放的情况下以最大化其带宽的方式进行。

图6示出了流管理器114的详细视图。各流190每个都具有相应的队列240,其中分组在被传递到设备驱动器以用于由对应的网络接口传输之前或者被从设备驱动器接收到之后排队。控制逻辑200如上描述的那样管理流190的网络性能。控制逻辑200可以反复地接收关于带宽和时延的更新。更新可以来自接口驱动器110、网络堆栈104或者外部源。这样的更新可以指示各种网络条件和统计数据,诸如用于计算设备100或者用于各个网络接口112的当前带宽可用性、当前或者预计的时延信息、网络拥塞等等。控制逻辑200可以使用该信息来调控网络资源如何被流消耗。

图7示出了控制逻辑200可以通过其调控流的示例过程。以规律的间隔,流管理器114可以在步骤260开始对活动的(active)流(在本自然段,“流”是指当前迭代的流)进行循环迭代。在步骤262,获取流的当前性能统计数据。例如,获取当前或者估计的带宽和时延。该信息可以从最近吞吐量进行估计、按照当前流量统计数据进行预计、基于排队分组的量、到来分组的速率和其他已知技术。流的类别可以影响其多久被迭代估计一次。

在步骤264,流管理器114确定流的类别或者种类,并且确定流是否正在(或者预期将)按照其规定的种类执行。在步骤266,如果流没有按照所规定的那样执行,那么流管理器114实现打算满足流的类别规定的适配。例如,将其类别考虑在内,可以使其他流节流、暂停等等。这可以通过调整流的接收窗口和/或发送窗口、扩展或者收缩流缓冲器、暂停通过流的分组流等等来完成。应用或者其他组件没有必要为分组打标记,应用也没有必要使用协议级QoS特征。从应用的角度来看,流是普通的TCP(或者类似的)流。在步骤268,处理下一个流(如果有的话)。

关于本文中提及的以下内容应当被理解为涵盖不止是仅仅相对于在主机机器上的其他连接的性能:流没有按照其相应类别的规定执行、对于性能符合性的确定或者驱动性能调整的确定。如果流的网络连接正在经历比连接已经历的最低单向延迟多100 ms的单向延迟,则例如诸如LEDBAT协议之类的协议认为该流没有按照规定那样执行。这种假定在于,LEDBAT连接可能是引起增大的延迟的因素,并且限制该连接的窗口可能会减小用于穿过相同共享网络资源的其他连接的延迟。换言之,流类别的规定可以相对于彼此是相对的、相对于性能值是绝对的、或者是两者的组合。另外,可以提供正式语言或者句法来表达复杂的规定,例如可能是基于标记式(例如,可扩展标记文件)声明性语言的形式的布尔运算符、条件式语句等等的句法。或者,这样的复杂逻辑可以被“硬编码”到流管理器、网络堆栈等的编程中。

图8示出了流分类模型180C的另一示例。每个种类具有时延分量和带宽分量。各种类可以沿着任一维度重叠。在该示例中,流的分类将带宽和时延性能目标两者都指派给流。如果假定一个类别(例如类别-E)打算在对应的流上传达对应于实时或者快速响应性的时延规定(即,网络流量将响应于用户请求以最小的明显延迟开始流动),那么流管理器逻辑可以使用本地操作系统的各种网络影响机制来“后移(backoff)”或者向下调控其他流,诸如类别-D的流(或者所有其他流、或者所有其他活动的流等等)。也就是说,当被分类为对时延敏感的新连接或者新流量开始时,低优先级的连接可以立即在本地被削弱。例如,如果由用户发起的web浏览器将要请求web对象,则可以抢先削弱后台文件传输以使得接下来的浏览器流量以干净的网络开始。先前的方法通常依赖于基于对新流量而言常常不是立即有用的竞争流量做出的服务质量决定。类似的方法可以用于带宽性能、或者用于网络性能特性的组合。注意,本地流量削弱可以通过暂停从应用到其网络连接的数据流、暂停缓冲分组的传输、调整联网窗口大小、暂缓或者降级处理流流量的线程、或者通过调整可以潜在影响流对网络资源的消耗的、流的其他操作参数来完成。

图9示出了用于共同流管理的实施例的过程。在该实施例中,流管理器114可以如下实现对网络资源的重新分配。在步骤280,按照其类别,确定目标流需要附加的网络资源,例如带宽或者时延或者这两者。作为一个解释性示例,将假定分类模型180C的类别-A的流需要附加带宽。在步骤282,获得用于每个类别的流的合计的(aggregate)统计数据。在步骤284,以类别适当的次序评估那些合计的统计数据,并且在步骤286,根据需要调整它们。首先评估按照网络需求的、最低优先级类别的流(即,类别-E)。如果类别-E的流的合计的带宽作为整体具有额外带宽,那么对类别-E的流进行节流以提供附加带宽。如果类别-E的流不产生足够的带宽,那么评估下一优先级类别(类别-C)的合计的统计数据。也就是说,如果对类别-E的流进行节流没有释放足够的带宽,则评估类别-C的流的合计的带宽,并且根据需要对该类别中的流进行节流。如果类别-C和类别-E的流两者都不能在满足其类别要求的同时交出足够的带宽,那么可以逼迫较低优先级类别的流(类别-E)到其类别的带宽目标以下,以帮助满足较高优先级类别-A的流的带宽要求。

如果在以上示例中,替代或者除了增加的带宽之外,流要求改进的时延,则执行类似的过程,只不过以取决于类别的时延特质的次序来执行每个类别的合计统计数据的评估以及对于其中的流的任何调整。

虽然本说明书可能在某些地方将网络资源称为被分配或者被重新分配,但是资源的“分配”是使用(上文所述的)各种网络影响机制中的任一个网络影响机制来试图满足流类别的规定的副作用的概念化表征。而且,基于流类别采取的优先排序或者流调控措施可能不一定涉及对应的流的网络资源消耗的立即增加或减少。例如,诸如LEDBAT协议(其可以被修改为提供流类别)之类的协议在LEDBAT已经决定低优先级连接需要被“限制”时可能不一定会损害低优先级连接的带宽或者时延。例如,减小连接的发送窗口的大小可能不会对其吞吐量或者时延具有立即的影响;由于许多可能的原因,连接可以随后获得更好的吞吐量或者时延。

图10示出了可以在其上实现上文描述的实施例的一般计算设备100的附加细节。计算设备100可以具有显示器300以及存储装置302和处理硬件304,其可以是以下一项或者多项的组合:中央处理单元、图形处理单元、模拟到数字转换器、总线芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)或者复杂可编程逻辑器件(CPLD)等等。存储装置302可以是磁存储装置、静态存储器、易失性存储器等等的任何组合。如本文使用的术语“存储装置”的意义不是指信号或者能力本身,而是指物理装置(包括诸如磁存储介质、光学存储介质、静态存储器设备等等的物理介质,但不是信号本身)。计算设备100的硬件元件可以以计算领域中熟知的方式协作。另外,输入设备306可以与计算设备100集成或者与计算设备100通信。计算设备100可以具有任何形式因子,或者可以用于任何类型的涵盖性设备中。计算设备100可以是诸如智能电话、平板计算机、游戏设备、服务器、架装或者底板式板载计算机、片上系统或者其他装置之类的手持式设备的形式。一般地,计算设备100将是分立的网络节点或者设备。

上文讨论的实施例和特征可以以存储在易失性或者非易失性计算机或者设备可读装置中的信息的形式来实现,其中这样的信息能够配置计算设备100执行本文中描述的实施例。这些装置可以包括诸如光学存储装置(例如,致密盘只读存储器(CD-ROM))、磁介质、全息照相存储装置、闪速只读存储器(ROM)、或者用于存储数字信息的其他设备之类的装置。所存储的信息可以是机器可执行指令(例如,经编译的可执行二进制代码)、源代码、字节代码、或者可用来使得计算设备能够或者配置其执行本文中描述的实施例的其他信息的形式。这还被认为至少包括易失性存储器(诸如随机存取存储器(RAM))和/或在执行施行实施例的软件期间存储诸如中央处理单元(CPU)指令之类的信息的虚拟存储器,以及存储允许程序或者可执行文件被装载和执行的信息的非易失性设备。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1