多流确认调度 【技术领域】
本发明通常涉及网络通信,尤其涉及网络通信中的多流确认调度。
背景技术
大多数因特网用户具有与因特网不对称的链路(例如,非对称数字用户线路或ADSL)。例如,在ADSL中,用户下载带宽通常大于用户上载带宽。虽然非对称链路可能存在于另一些配置中,但是下载主要与从因特网上接收到的数据分组有关;上载主要与向因特网发送的数据分组相关。
在许多数据传输协议中,接收节点必须发送一种确认分组以表示成功接收到数据分组。当发送节点从接收节点接收到确认分组时,它将按照传送序列发送另一个数据分组。相反,如果发送节点未从接收节点接收到的确认分组,则它将暂时中止其发送动作和/或假设前次发送未成功时,尝试在超时阶段之后重新发送前次已发送的分组。因此,确认分组的定时和成功接收将显著地影响数据从发送节点到传送到接收节点的速率。
此外,如果一个给定连接的节点正在发送包括数据分组和确认分组的数据(即节点正在处理多通信流),来自第一节点的发送数据,尤其是大数据分组的操作会大大延迟来自该节点的确认分组的发送。因此,由于数据分组发送和确认发送数据包都在争夺同一个发送队列,忙于发送大量数据分组的发送队列会降低该节点可将确认返回到另一个发送节点的速率,由此降低了其它发送节点发送更多数据分组的速率。因此,一个节点的发送动作将大大影响该节点接收数据分组的速率。
可降低至该节点通信量的接收速率的给定节点的确认分组阻塞的结果会由于非对称连接而加剧(例如,下载=1024kbps对上载=64kbps)。例如,当一个下载目标节点是经由典型ADSL连接同时接收和发送数据分组时,该节点遭受接收流量可能会受到该节点无法及时向下载源节点返回从下载目标节点来的确认的限制—该来自下载目标节点的确认与来自同一节点的上载数据分组争夺上载链路的较小带宽(与下载链路相比)。因此,在上载连接的这种阻塞将降低通过较大下载连接的流量。
【发明内容】
本文所描述和要求的实现通过调度可由发送节点发送的多流的确认分组和数据分组的次序和定时来解决上述问题,以便获得对上载链路和下载链路的良好全面的利用。在一实施例中,估算发送队列中各个分组的持续时间,以便在不受到发送速率的过多影响的情况下,确定发送队列中后一数据分组是否可在该发送队列中的前一数据分组之前发送。节点的相对确认优先级参数有效地调整可用的发送带宽,以便用于提高确认发送速率,并由此提高从另一个节点的节点接收速率。
在一些实现中,还提供一些制品作为计算机程序产品。计算机程序产品的一???个实现是提供通过计算机系统可读或通过编码计算机程序可读的一种计算机程序存储介质。计算机程序产品的另一个实现是,通过计算系统和编码计算机程序来在以载波体现的计算机数字信号中提供。
本文还描述并列举了其它实现。
【附图说明】
图1示出了具有多流确认调度的非对称网络链路;
图2示出了在重排操作之前的具有多流确认调度的示例性系统;
图3示出了在重排操作之后的图2的具有多流确认调度的示例性系统;
图4示出了多线程确认调度的操作;
图5示出了可用于实现上述技术的系统。
【具体实施方式】
图1示意了具有示例性多流确认调度的非对称网络链路100。计算机系统102(例如上载源)被配置成通过非对称网络链路100使用因特网访问因特网服务供应商(ISP)104例如下载源),这是一种用于具有ADSL服务的家庭用户的常用配置。在此示例性实施例中,非对称网络链路100包括一个带宽为64kbps的上载链路106和一个带宽为1024kbps的下载链路108,但是还可以考虑其它的速率。应当理解,在一个对称网络链路配置中也可以采用多流确认调度。
每个链路包括一个或多个流,并且将链路带宽的一部分分配给各个流。例如,链路可以包括具有链路总带宽的80%的连接相关流以及具有链路总带宽的20%的非连接相关流。将这些示例性分配应用到非对称网络链路100,上载链路106中的连接相关流的发送速率可因此达到约52kbps,而下载链路108中的连接相关流的接收速率可达到约820kbps。
在特定流内还可实施多个流。例如,在特定连接相关流中,可存在从内容提供web站点下载数字视频流的一个连接或流以及将数字图像上载到个人相册web站点的第二连接。作为连接相关流,这些流的每一个在上载链路106和下载链路108内共享分配给这些连接相关流的带宽。
计算机系统102包括为其网络通信提供多流确认调度的软件。由于计算机系统102(例如接收节点)从ISP 104(例如发送节点)接收下载数据分组,计算机系统的网络堆栈生成要发送回ISP 104的确认数据分组。确认分组向ISP104的发送节点通知接收节点已经接收了前一发送数据分组,并且可以接收另一个数据分组。响应于确认分组的接收,发送节点可在流中发送一后继分组(如果有)。这样,确认分组作为下载数据分组的一个节流阀—如果发送节点未能尽快接收该确认分组,则将降低了发送节点发送数据分组的速率。
应当理解,一些分组可包含数据以及一个或多个确认。这些分组还可称为“确认分组”,因为它们确认接收到了包含数据的一个或多个分组,并发信号通知发送器传送新的分组。确认分组通常指示被确认的数据量,以及籍此的可通过发送节点发送给接收节点的数据量。
当多流经由给定流发送时,可通过非对称网络服务增大确认速率相对接收速率的影响。在下载(例如数字视频)和上载(数字图像)流b并发的示例中,两个流都在上载侧争夺较小的“管道”—上载流发送数据,而下载流发送确认。这样,尽管在下载链路108中可用的较大带宽如何,下载数据可能由于上载链路106的阻塞而减速,该上载链路106可能充满多流的数据分组和确认分组的组合。
为了减轻此阻塞,在与堆栈相关联的分组调度器驱动器中实现的多流确认调度器模块可相对于另一个流中的数据分组重排一个流中的确认分组。例如,上载源102的发送队列可在上载流的较大数据分组的后面排列下载流的确认分组。这样,当数据分组经由较慢的上载链路106发送时,下载流的确认分组可能被延迟。同时,下载流不发送其它数据,因为其在等待确认,尽管计算机系统102已为另外下载数据做好了准备。相反,在较大数据分组的前面重排确认分组可以使下载流接收其正在等待的确认,由此下载流开始后续的发送数据。
图2示出了在重排操作之前的具有多流确认调度的示例性系统200。上载源202经由网络(例如因特网)耦合到下载源204。上载源202正在执行应用程序206,该应用程序206是在上载流A中将数据分组上载到下载源204中的应用程序208(例如表示数字图像上载操作两侧)。饱和上载链路203被示为具有来自任意流的数据分组。类似地,下载源204正在执行应用程序210,该应用程序210在下载流B中将数据分组下载到上载源202中的应用程序214(例如,表示数字视频下载操作的两侧)。未饱和下载链路205被示为具有来自任意流的确认和数据分组。
由于每个数据分组由给定源接收,该数据分组都采用时间戳(或序列号)来标记,这些时间戳或序列号可表示所接收的数据分组相对于其它分组的次序。下载源204的网络堆栈中的确认模块216和上载源202的网络堆栈中的确认模块218在一个或多个流中检测(示为虚线箭头217和219)数据分组的接收。对接收的数据分组进行分类以按需识别其流(例如TCP连接)。如果数据分组是连接相关流的一部分,则用于接收到的数据分组的确认分组被发送到接收源将要返回给始发源的连接相关发送队列。如果数据分组并非专用连接流的一部分,则用于接收到的数据分组的确认分组被发送到接收源将要返回给始发源的的非连接相关队列。在非连接相关流中,应用程序通常按需负责处理任意确认。在上载源202中,示出了连接相关发送队列215,而在下载源204中,示出了连接相关发送队列221。
发送队列215按从头到尾的次序包括流A的数据分组、流B的确认分组和流C的确认分组。上载链路203中的其它数据分组都来自其它流。当上载源202将数据分组发送到上载链路203时,确认分组被延迟直到数据分组发送完成。同时,下载源204不在流B中发送后继数据分组,直到其接收到流B的相应确认分组,该相应确认分组被卡在上载源202的发送队列215中。
图3示出了重排操作之后的具有多流确认调度的示例性系统200。如所示,数据分组和其中一个确认分组都在发送队列215中被重排。响应于重排条件设置的满足,执行重排以便在上载速率和下载速率之间保持所需的平衡。例如,上载源202可被配置成使下载速率支持一些等级,反之亦然。
重排的条件是基于相对确认优先级参数(RAP),该参数反映为了提高源接收速率而牺牲多少源发送速率来在另一个流中返回确认。例如,等于“1”的相对确认优先级参数表示确认分组总是获得高于数据分组的优先级。例如,可认为确认被分配了一部分发送速率RT(例如RAP*RT),而数据被分配了剩余部分的发送速率RT(例如(1-RAP)*RT)。可以调整相对确认优先级参数以在多流通信的发送和接收速率之间提供所需的折衷方案。在一个实施例中,1/8的相对确认优先级参数被认为提供了可接受的结果,但是也可考虑其它参数值。在此情况中,参数表示1/8的发送速率可被分配给经重排的确认分组。
另一RAP参数可基于链路上确认与数据的比。在此方法中,确认被分配了一部分发送速率RT(例如RT*RAP/(1+RAP)),而数据被分配了剩余部分的发送速率RT(例如RT*(1/(1+RAP)))。
图4示出了第一节点的示例性多线程确认调度的操作400,其中第一节点从第二节点接收数据分组,并将数据分组发送到第二节点或其它节点。第一检查操作402检查发送队列中的第一分组,其中该第一分组不必为发送队列中前端的分组,而仅仅是发送队列中比操作400中经检查的其它分组更早进行转发。检查操作402记录与发送队列相关联的通信流的第一分组的TCP连接、分组大小(size)(P1)和发送速率(RT)。
基于这些信息,预测操作404在基于相对确认优先级参数RAP的“折扣”发送速率RD下计算第一分组的发送持续时间(即发送整个第一分组所需的时间)。通常,该折扣发送速率表示,如果牺牲一部分发送速率来提高特定确认分组优先级时数据分组所获得的部分发送速率。因此,该折扣发送速率低于通信流的发送速率。在一个实施例中,尽管还可以考虑其它算法,但折扣发送速率计算如下:
RD=(1-RAP)RT
因此,折扣发送数量下的第一分组的预计发送持续时间D1可使用如下计算:
D1=P1RD]]>
另一个检查操作406检查发送队列中的第二分组,此第二分组被排列成晚于第一分组发送。第二分组直接排列在第一分组之后,或在发送队列中略为较后的位置。检查操作406记录与发送队列相关联的通信流的第二分组的TCP连接、分组大小(P2)、和发送速率(RT)。如果第二分组在与第一分组相同的流中,则挑选并检查另一个分组直至找到不同流中的分组。
基于这些信息,预测操作408计算第一分组和第二分组在标准发送速率RT下的发送持续时间(即发送第一分组和第二分组所需的时间)。因此,第一和第二分组在标准发送速率下的的预测发送持续时间D2可使用以下来计算:
D2=(P1+P2)RT]]>
如通过操作410测试的,如果D2≤D1(重排条件),则在重新调度操作412中,第二分组可被重新调度成在第一分组之前的发送队列中进行发送。如果第二分组是确认分组,则重排会减小第一节点的确认延迟时间,并增加第一节点从第二节点接收数据的速率。然后,继续操作414重新开始处理发送队列中的后继分组。
在另一个实施例中,第一个检查操作402检查发送队列中的第一分组和第二分组,其中第一分组不必为发送队列前端的分组,而仅仅要求比操作400中经检测的其它分组更早进行转发。检查操作402记录与发送队列相关联的通信流的第一分组和第二分组的TCP连接、分组大小(P1和P2)、发送速率(RT)。因此,第一分组和第二分组在折扣发送速率下的预测发送持续时间D1可使用以下计算:
D1=(P1+P2)RD]]>
在此实现中,检查操作406检查发送队列中的第三分组。检查操作406记录与发送队列相关联的通信流的第三分组的TCP连接、分组的大小(P3)、和发送速率(RT)。如果第三分组在与第一分组或第二分组相同的流中,则挑选并检查另一个分组直至找到不同流中的分组。
基于这些信息,预测操作408计算第一分组、第二分组和第三分组在标准发送速率RT下的发送持续时间。因此,第一分组、第二分组和第三分组在标准发送速率下的预测发送持续时间D2可使用以下计算:
D2=(P1+P2+P3)RT]]>
如通过操作410测试的,如果D2≤D1(重排条件),则在重新调度操作412中,任一第三分组可被重新调度成在第二分组之前的发送队列中发送。如果第二分组是确认分组,则重排会减小第一节点的确认延迟时间,并增加第一节点从第二节点接收数据的速率。然后,继续操作414重新开始处理发送队列中的后继分组。
另一个实施例中,上述两个分组的特定重排条件可能不满足,但是如果第三分组适于满足另一个重排条件,但仍可执行重排。如果D2>D1,则不重排分组P1和P2,但D1和发送P1(其为P1/RT)的实际时间之间的差值可以称为“移位(carry)”,该移位可结合比较后继分组对(或分组集)组合以满足另一个重排条件。移位可使用以下计算:
Δ=D1-P1RT=P1RD-P1RT]]>
例如,考虑按次序通过发送队列输送的、大小为P1、P2和P3的分组(即,P1被调度成第一个发送,接着是P2,然后是P3),没有一个满足D2≤D1的重排条件。然而,分组P1的D1与P1的P1/RT之间的差值(Δ1)以及分组P2的D1与P2和P3的D2之间的差值仍可论证重排—如果(D2-Δ1)不大于P2的D1,则P3可被重排成在P1或P2之前。然而,应当理解,P1已经在该点发送,从而仅仅可对P3和P2重排。
在又一个实施例中,接收节点的目标接收速率可影响重排。例如,在接收节点以高于流接收速率重排确认分组是可能的,由此在发送节点的发送队列中产生称为排队延迟的阻塞。此结果通常并非所期望的。因此,结合接收速率和重排条件进行考虑可能是有益的。
在一个实施例中,确认分组表示接收节点进行确认的数据量A。所表示的数据量(确认量)通知接收节点:为该有关的流发送至少A或更多的数据是随意的。这样,响应于确认分组的接收,可监视多流的确认量以大致预测发送节点每秒要发送的数据量。发送节点的预测发送速率是接收链路中的连接特定流的有效接收速率,并且可对来自该接收节点的确认进行管理,以防止发送节点的预测发送速率超过接收链路中的连接特定流的接收速率。
接收速率极限可以结合本文所述确认调度的实现,以进一步提高整体通信性能。例如,确认分组的预测发送持续时间可以表示成如下(其中分组大小为P1):
D1Tx=P1RD]]>
并且归因于第一确认分组的有效接收持续时间等于确认量A1除以从发送节点至接收节点的下载接收速率RR或:
D1Rx=A1RR]]>
两个确认分组的全部速率合成D2表示为:
D2=max(P1RT,D1Rx)+max(P2RT,D2Rx)]]>
或在另一个实施例中为:
D2=max(P1+P2RT,D1Rx+D2Rx)]]>
然后,可应用重排条件D2≤max(D1Tx,D1Rx).]]>
用来实现本发明的图6的示例性硬件和操作环境包括计算机20形式的通用计算设备,包括处理单元21、系统存储器22和将包括系统存储器在内的各种系统元件操作地耦合到处理单元21的系统总线23。仅存在一个或可存在多个处理单元21,从而计算机20的处理器包括单个中央处理器(CPU)或通常称为并行处理环境的多个处理单元。计算机20可以是常规计算机、分布式计算机或任意其它类型的计算机;本发明并不限于此。
系统总线23可以是包括使用各种总线架构中的任一种的存储器总线或存储器控制器、外围总线、交换结构、点对点连接以及局域总线在内的若干类型总线结构中的任意一种。系统存储器还可简单涉及存储器,并包括只读存储器(ROM)24和随机存取存储器(RAM)25。包含有助于诸如在启动期间在计算机20内的元件之间传递信息的基本例程的基本输入/输出系统(BIOS)26通常存储在ROM 24中。计算机20还包括对硬盘读或写的硬盘驱动器27(未示出)、对可移动磁盘29读或写的磁盘驱动器28、以及对诸如CD ROM或其它光学介质的可移动光盘31读或写的光盘驱动器30。
硬盘驱动器27、磁盘驱动器28和光盘驱动器30通过硬盘驱动接口32、磁盘驱动器接口33和光盘驱动器接口34连接到系统总线23。驱动器及其相关的计算机可读介质向计算机可读指令、数据结构、程序模块和计算机20的其他数据提供了非易失性存储。本领域技术人员应当理解,诸如磁带盒、闪存、数字视频光盘、随机存取存储器(RAM)、只读存储器(ROM)等的可存储由计算机访问的数据的任意类型的计算机可读介质可用在示例性操作环境中。
包括操作系统35、一个或多个应用程序36、其他程序模块37和程序数据38的许多程序模块可被存储在硬盘、磁盘29、光盘31、ROM24或RAM25中。用户可以通过例如键盘40和定点设备42的输入设备向个人计算机20输入指令和信息。其它输入设备(未示出)可以包括话筒、操纵杆、游戏垫、圆盘式卫星天线扫描仪等。这些或其他输入设备通常通过耦合到系统总线的串行端口接口46与处理单元21相连,但可通过其它诸如并行端口、游戏端口、或通用串行总线(USB)端口的其它接口来连接。监视器47或其它类型的显示设备也可经由诸如视频适配器48的接口连接到系统总线23。除监视器之外,计算机通常包括其它外围输出设备(未示出),诸如扬声器和打印机。
计算机20可工作在使用到诸如远程计算机49的一个或多个远程计算机的逻辑连接的网络化环境中。这些逻辑连接通过耦合到计算机20或作为其一部分的通信设备来实现;本发明并不限于特定类型的通信设备。远程计算机49可以是另一个计算机、服务器、路由器、网络PC、客户机、对等设备或其它公共网络节点,并且通常包括以上就计算机110所描述的组件中的许多或所有组件,尽管图10仅示出了存储器存储设备50。图6中所示的逻辑连接包括局域网(LAN) 51和广域网(WAN) 52。这些网络环境在所有类型的网络的办公室、企业计算机网络、内联网和因特网中是普遍的。当在LAN网络环境中使用时,计算机20通过网络接口或作为一类通信设备的适配器53连接至LAN 51。当在WAN网络环境中使用时,计算机20通常包括调制解调器54、网络适配器、一类通信设备或用于在广域网52上建立通信的任意类型的通信设备。或为内置式或为外置式的调制解调器54可经由串行端口接口46连接至系统总线23。在网络化环境中,关于计算机20所述的程序模块或其一部分可以存储在远程存储器存储设备中。应当理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段和通信设备。
在示例性实现中,调度器模块、判定块以及其它模块可结合作为操作系统35、应用程序36或其它程序模块37的一部分。分组的大小、发送持续时间和其它数据可以作为程序数据38进行存储。
本文描述的技术可以作为一个或多个系统中的逻辑操作和/或模块实现。该逻辑操作可实现为(1)在一个或多个计算机系统中执行的处理器实现的步骤的序列以及(2)在一个或多个计算机系统内的互连机器或电路模块。类似地,各种组件模块的描述可根据由模块执行或起作用的操作来提供。结果实现是一个选择问题,取决于实现所述技术的底层系统的性能要求。因此,构成本文所述的技术的实施例的逻辑操作涉及各种操作、步骤、目标或模块。此外,应当理解,逻辑操作可以按照任何次序执行,除非另外明确声明或者权利要求语言固有所需的特定次序。
上述说明书、示例和数据提供了本发明示例性实施例结构和用途的完整描述。因为可实现本发明的许多实施例而不背离本发明精神和范围,所以本发明取决于以下所附权利要求。具体地,应当理解,所述技术可不依赖于个人计算机来使用。因此可预期其它实施例。