在计算机网络中控制包传输的方法和设备的制作方法

文档序号:7608869阅读:177来源:国知局
专利名称:在计算机网络中控制包传输的方法和设备的制作方法
技术领域
本发明与计算机网络有关,尤其与控制计算机网络中数据的丢弃和传输有关。
背景技术
由于对大量网络应用程序越来越多的使用,例如涉及互联网的那些应用程序,人们对计算机网络的兴趣也日益增长。通常用交换机来把一个网络的多个部分连接在一起或者连接多个网络。

图1描绘了可以用在计算机网络中的交换机10的简易框图。交换机10包括交换网络3和插片7、8和9。每个插片7、8和9通常是一块电路板,至少包括网络处理器2和端口组4。端口组4通过不同的网络节点直接或间接地与主机(未显示)相连。插片7、8和9能够向交换网络3提供流量并接收来自交换网络3的流量。因而,与插片7、8或9中的一个插片相连的任意主机就可以和与插片7、8和9中的相同或不同插片相连的主机通信。
图2描绘了与图1中所示的网络处理器2作用相同的一种可编程网络处理器的实施方案的高级框图。如图所示,网络处理器2包括入口交换接口(入口SWI)11,入口入队/出队/调度逻辑(入口EDS)12,嵌入复合处理器(EPC)13,入口物理MAC多路复用器(入口PMM)14,以及出口物理MAC多路复用器(出口PMM)15,出口入队/出队/调度逻辑(出口EDS)16和出口交换接口(出口SWI)17。网络处理器2还可以包含其它存储和处理设备。EPC13包括多个协议处理器和协处理器。入口EDS12和出口EDS16能够为从设备到交换网络和从交换网络到设备的流量传输分别执行特定的入队、出队和调度功能,所说的设备例如以太网设备。入口SWI11和出口SWI17为连接到其它设备提供链路,例如别的网络处理器或交换机(图2中未显示)。在和交换网络一起使用时,入口SWI11和出口SWI17与交换机10的交换网络3(图1)连接在一起。入口PMM14和出口PMM15分别从物理层接收或向其传输流量。这里所描述的可编程网络处理器的体系结构和操作在所受保护上有别于这里所描述的发明。在一些应用中,这里所描述的通过交换网络和一个或多个网络处理器的组合能够实现的功能可以通过单个网络处理器或一对耦合在一起的网络处理器在没有提供交换网络的情况下实现。
图3描绘了交换机10的一种替代简化框图,不同的是它描绘了一些由网络处理器2执行的功能。虽然一些功能由和图1中所示的相同部件来执行,也可以给这些部件加上不同的标签。例如,为了解释通过交换机10的流量的通路,把图1中的交换网络3描绘成图3中的交换网络26。交换机10连接那些与端口A18相连的主机(未示出)和与端口B36相连的主机(未示出)。因而,交换机10允许数据包被从一个源地址传递到一个目的地址。数据包可以包括多种不同类型的数据包。例如,以太网包(通常称为帧)、ATM包(通常称为信元)和IP包(通常称为包)都可以是这里所说的包。
交换机10执行多种不同的功能,包括对提供给交换机10的数据包分类,跨越交换机10传输数据包并重组包。这些功能分别由分类器22、交换网络26和重组器30提供。分类器22对提供给它的包进行分类并把每个包分割成适当大小的部分,这里称它们为信元。交换网络26是一个连接矩阵,通过这个连接矩阵可以通过交换机10在信元的路线上传输它们。重组器30把信元重新组装成正确的包。随后包可以被提供给端口组36的正确端口,并输出给目的主机。分类器19可以是一个网络处理器1的一部分,而重组器30可以是另一个网络处理器5的一部分。所描绘的网络处理器1和5的一些部分分别为流出端口组A18和流入端口组B36的流量执行功能。然而,网络处理器1和5还分别为流出端口组A和流入端口组B的流量执行功能。然而,网络处理器1和5还分别执行流出端口组B36和流入端口组A18的流量传输功能。因而,每个网络处理器1和5都能够执行分类和重组功能。此外,每个网络处理器1和5都可以是图1和2中所示的网络处理器。
因为跨越交换机传递流量中的瓶颈,可能需要数据包在执行分类、传输和重组之前进行等待。其结果是可以提供队列20、24、28和34。与队列20、24、28和34相连的是入队机制19、23、27和32。入队机制把包或信元放入对应的队列中并且能够提供送回给产生包的主机的通知。分类、入队和调度功能优选地由图2中描绘的网络处理器中的入口EDS12和出口EDS16提供。用EDS12控制入队机制19和23、队列20和24、分类器22和调度器21和25。类似地,用出口EDS16控制入队机制27和32、队列28和34、重组器30和调度器29和35。
图3中还描绘了调度器21、25、29和35。这些调度器分别控制对将要离开队列20、24、28和34的单个包的调度。概括来说,并随后面的描述会更加清楚,本申请是网络处理器2的出口部分,由图2中的出口PMM15、出口EDS16和出口SWI17描述。本发明的一个示例的重点包括调度器35,它控制通往端口组B36的流量。为清楚起见,参照调度器35和队列34讨论调度器的功能。通常,为调度器35提供与队列34中的每个包有关的信息。这个信息可以包括包的类型,例如实时包,对这种包来说传输时间非常重要,或者数据包,对这种包来说传输速度并不重要。调度器35根据这个信息以及提供给它的其它信息决定队列34中的每个单个包将被移出队列并送往它的目的地。例如,调度器35可以包括一个或多个日历和一个加权公平排队环,每个日历包括多个位置,排队环包括另外多个位置。调度器35可以把特定的包放在日历中,并把其它包放在环中。调度器把特定量的时间分配给日历中的每个位置。日历中的每个位置可以有一个单个的包或者为空,其中的包通常由一个标识符表示。当调度器到达一个特定位置时,放在该位置上的包将被从队列出取出并送往其目的地。然而,如果日历中的位置是空的,调度器35就等待一个特定的时间量,然后移动到该日历中的下一个位置。类似地,调度器35把其它包放在调度器35的加权公平排队环的位置中。加权公平排队环中的一个位置可以被一个包占据,也可以为空。如果某个位置被包占据了,当调度器35到达这个包时就发送该位置上的包。对于没有被占据的位置,调度器35跳到下一个被占据的位置。通过使用调度器35来控制离开队列34的单个包,流量就可以流过交换机10。
虽然队列20、24、28和34是分开描述的,但具有本领域中常识的人将很容易明白这些队列中的一些或全部可以是同一个物理存储器资源的一部分。
已经开发出了一些方法来控制流过交换机10的流量,提高那些使用了交换机的网络的性能。尤其在试图确保相关存储器资源,例如队列,不被超载时可以使用一种称为RED(随机早期丢弃或探测)的方法。图4描绘了RED中所用的方法。RED方法通常由入队机制19、23、27、32中的一个来使用,以分别控制通过相应队列20、24、28、34的流量。为了清楚起见,将参照入队机制19和队列20来阐明RED方法。
在被称为小时段(epoch)的一小段时间的末尾,由入队机制通过步骤41为该小时段确定队列20的队列级别。注意所确定的队列级别可能是该小时段的平均队列级别。另外,所确定的队列级别也可能是队列20所在的存储器资源的总级别。然后通过步骤42判断队列级别是否高于最小阈值。如果队列级别不高于最小阈值,就通过步骤43中把常规传输比例设为1。步骤43还把丢弃比例设为0。传输比例决定在下一个小时段中将要传输的包的比例。丢弃比例决定将要丢弃的包的比例。因此,常规丢弃比例等于1减去常规传输比例。因而传输比例为1就表示应该传输所有包,不能丢弃任何一个。
如果在步骤42中确定了队列级别高于最小阈值,接着就通过步骤44中确定该小时段的队列级别是否高于最大阈值。如果队列级别高于最大阈值,就通过步骤45中把常规传输比例设为0而把常规丢弃比例设为1。如果队列级别不高于最大阈值,就通过步骤46中把常规丢弃比例设置成与前一个小时段的队列级别除以最大可能队列级别成比例,或者作为选择,也可以设置成与队列级别的其它一些线性函数成比例。因而,常规丢弃比例就和队列20中被占据的比例或队列级别的其它线性函数成正比。因此,在步骤46中还把常规传输比例设置为与1减常规丢弃比例成比例。
随后通过步骤47在下一个小时段中利用在步骤43、45或46所设置的常规传输比例和常规丢弃比例随机地丢弃包。因而,当队列级别低于最小阈值时,就由入队机制19在下一个小时段中把所有包都传输给队列20。当队列级别高于最大阈值时,就由入队机制19在下一个小时段中丢弃所有包或把它们加入一个丢弃队列。当队列级别在最小阈值和最大阈值之间时,由入队机制19丢弃的包的比例与队列20被占据的比例或队列级别的其它线性函数成比例。因而,队列级别越高,被丢弃的包的比例越大。另外,还向那些被丢弃的包的发送者提供一个通知,它引起该发送者中止发送另外的包一段时间。
也可以随机选择被选中丢弃的单个包。例如,对每个包来说,入队机制可以在0和1之间产生一个随机数。把该随机数和常规丢弃比例进行比较。如果该随机数小于或等于常规丢弃比例就丢弃该包。否则就把它传输给队列20。根据传输比例丢弃包的这个过程一直进行到由步骤48确定该小时段结束为止。当该小时段结束时,RED方法就在步骤41中再次开始,以确定下一个小时段的常规传输比例并在下一个小时段中根据常规传输比例丢弃包。
因为可以根据队列级别丢弃包,RED方法允许对通过交换机10的流量进行一些控制。其结果是,由于弃尾(droptail)而丢弃的包比在没有任何机制用于在队列变满之前丢弃包的交换机中所丢弃的包要少。当因为队列满而必须丢弃包时弃尾就发生了。其结果是在确定是否丢弃包中没有机会计算包的优先级。此外,在一些情况下RED方法还能够减少向交换机10发送包的主机的同步。这之所以会发生是因为可以根据常规传输比例随机地丢弃包,而不是当队列级别等于或接近最大队列级别时丢弃所有包。因而相对于没有使用RED方法的交换机提高了交换机10的性能,没有使用RED方法的交换机即当它的缓冲区资源耗尽时简单地丢弃下一个到来的包的交换机。
虽然RED方法改进了交换机10的操作,本领域的技术人员将很容易理解在很多情况下,该方法不能充分控制通过交换机10的流量。尽管在队列变满之前就可以丢弃包或信元,但在某些情况下主机仍然趋向于同步。在交换机10中的流量处于中度或更高程度的拥塞时这种情况更容易发生。常规传输比例是基于队列级别的。然而,队列级别也可以不是交换机状态的指示。例如,低于最小阈值的队列级别可能是因为交换机10中流量的低级别(只有少量包通过交换机)。然而,低队列级别也可能是因为在前一个小时段中因为通过交换机10的流量过高而丢弃了多个包。如果低队列级别是由低流量级别造成的,那么增加常规传输比例是适当的。如果低队列级别是由于高丢弃比例,就不希望增加常规传输比例。RED方法对这两种情况并不进行区别。其结果是,可能在不应增加传输比例的时候增加了它。当发生这种情况时,队列很快就会被填满。传输比例随后将被降低,队列级别也将降低,而且队列可能再次变满。交换机10因而开始在队列满和队列空之间摇摆。其结果是交换机10的平均利用率变得非常之低而且使用交换机10的网络的性能也会受损。
图5描绘了由位于纽约Armonk的国际商用机器公司的雇员们最近开发出的一种方法的流程图。这种方法被称为BLUE。BLUE方法不仅考虑到了队列级别,还考虑到了传输速率和提供速率。提供速率是向入队机制提供包或信元以提供给相应队列的速率。和RED方法一样,将用入队机制19和队列20来描述BLUE方法。通过步骤52为刚刚结束的上一个小时段确定队列20的队列级别、由入队机制19提供给队列20的传输比例和提供速率。提供速率是向入队机制19提供包的速率。因而,提供速率可以来自由端口组A18中的一个或多个端口提供的流量的流。
随后通过步骤54中确定是包丢失还是队列级别大于某个阈值。不管是哪种情况都表明应该增加丢弃比例。如果发生了包丢失,就通过步骤56中给丢弃比例增加一个由经验确定的第一常数。在步骤56中还降低了传输比例,因为传输比例等于1减去丢弃比例。如果在步骤54中确定不应该增加丢弃比例,就通过步骤58中确定是否应该减少丢弃比例。如果队列级别或提供速率过低就应该减少丢弃比例。如果应该减少丢弃比例,就通过步骤60中把丢弃比例减去一个也是依靠经验产生的第二常数。在步骤56或60中确定的丢弃比例,如果有变化,或者随后在步骤62中用旧的丢弃比例确定在下一个小时段中传输给队列20的包的比例。在步骤62中可以随机地或者通过考虑每个包的优先级丢弃包。因而确保了正确的丢弃比例,也因此维持了正确的传输比例。随后通过步骤64确定小时段是否结束。如果是,就返回到步骤52。否则,BLUE方法就在步骤62开始重复执行。若要获得BLUE方法更详细的资料,有兴趣的读者可以访问http//www.eecs.umich.edu/usuchang/blue/这个Web站点。
虽然BLUE方法针对它的预定目的工作得很好,而且相对RED方法来说也有一定的提高,但本领域的技术人员将很容易看到BLUE方法占用了相对较长的时间来达到稳定状态。因而,虽然它相对于RED方法对性能有所提高,网络性能仍然比期望的要差。
另一种用于控制跨越交换机的流量的方法能够根据例如顾客为服务所付的价格提供不同的服务。顾客希望通过支付更多的费用来确保更快的响应或者确保该用户的流量即使在其它用户的流量因为拥塞而被丢弃时也能正确地传输。因而提出了有区别服务的概念。有区别服务可以通过网络为不同的用户提供不同级别的服务或者流量的流。
DiffServ是一种提供有区别服务的新兴互联网工程特别任务标准(IETF)(参见IETF RFC 2475和相关RFC)。DiffServ是基于性能总计流(behavior total flow)的。性能总计流可以看作是从网络的一端到另一端的流水线。在每个性能总计流之内,单个的主机之间可以有数百个对话。然而,DiffServ与性能总计流之内的会话无关。而是与性能总计流之间的的带宽分配有关。根据DiffServ,将在性能总计流之间公平分配多余的带宽。此外,DiffServ还提供了测量提供给每个性能总计流的服务级别的方法,下面将对此进行讨论。
一种用于提供不同级别服务的机制使用权重和队列级别的组合来提供不同级别的服务。图6描述了这样一个方法。通过步骤72设置队列级别阈值和权重。通常是由网络管理员在步骤72中设置队列级别阈值。可以为通过特定队列、交换机10或网络处理器1或5的不同管道或流设置权重。因而,权重通常是为不同的性能总计流而设。通常通过步骤74在一段称为小时段的时间的末尾获得瞬时队列级别、平均队列级别、瞬时管道流速率或平均管道流速率。随后通过步骤76根据队列级别和队列级别阈值的比较结果以及权重来改变管道的流。在步骤76中权重较高的管道的流会经历较大的改变。队列值或管道的管道流速率决定了提供给队列的流量比例,例如队列34,由相应的入队机制,例如入队机制32,通过管道传输给队列34。因而在步骤78中根据流传输流量给队列或丢弃流量。网络管理员随后通过步骤80确定是否已经满足期望级别的服务。如果已经完成,网络管理员就完成了他或她的任务。然而,如果没有完成期望级别的服务,就通过步骤72重新设置队列级别或管道流级别阈值,如果可能还要设置权重,并重复该方法。
虽然这里所描述的DiffServ方法能够运行,但本领域的技术人员将很容易看到它难以确定改变队列级别阈值对通过网络的特定管道将有什么影响。因而,使用该方法的网络管理员可能不得不在达到不同用户或计算机中的管道(性能总计流)的期望的流速率之前进行大量的实验。
此外,该方法在用来测量服务质量的参数上进行间接操作。队列级别并不是通常用于服务的直接测量标准。通常,例如在DiffServ中(参见IETF RFC 2475和相关RFC),由下列四个参数测量服务级别丢失率、带宽、延迟和振动。丢失率是在流量流过交换机时被丢弃的百分比。性能总计流的带宽是对该性能总计流通过交换机到达目的地的流量数的测量。延迟是在跨越网络发送流量中导致的延迟。振动是延迟对于时间的变化。队列级别并不被看作是对服务质量的直接测量。因而,该方法没有直接为服务质量提出任何标准,使得网络管理员用该方法提供不同级别的服务更加困难。
即使在使用RED方法或BLUE方法时,像调度器35这样的调度器也可能遇到比给定时间中所能完成的还要多的工作量。特别是希望在特定时间内从队列34中移出过多的包时,调度器可能无法应付通过交换机10的流量。例如,调度器35也许能够确保从队列34中移出的包被以第一速率转发给它们的最终目的地,例如一个目标端口。第一速率可能受限于多种因素,例如目标端口接受流量的能力。RED和BLUE方法可以允许以第二速率从队列中移出包。如果第二速率大于第一速率,包就开始在调度器35中淤塞。例如,如果调度器35包括一个日历和一个加权公平排队环,那么日历和加权公平排队环中的所有位置最终都会被占据。因而包将从离开队列34开始一直被延迟到调度器35中的日历或加权公平排队环中有一个位置开放为止。结果是包通过交换机10的延迟增加,流量变慢,并且交换机10也没有像期望的那样有效工作。
有了上面的论述,适用领域的技术人员就可以理解本发明了,所谓适用领域是需要用一些系统和方法来更好的控制通过交换机的流量的领域。本发明解决这些需求。
发明概述本发明提供能够控制计算机网络中多个包的流的方法、设备和计算机可读介质。计算机网络包括一个队列。方法和设备包括确定队列的队列级别以及确定流向队列的多个包的提供速率。该方法和设备还包括根据队列级别和提供速率控制通往队列的多个包的传输比例,以使在队列级别在至少第一队列级别和第二队列级别之间时传输比例和队列级别被临界性地衰减(critically damped)(像这里所定义的)。
根据这里所公开的方法、设备和介质,本发明提供了提供传输比例并据此丢弃包的机制,以使计算机网络不仅稳定而且能够快速达到平衡。
附图概述图1是可以用在计算机网络中的交换机的简化框图。
图2是可以用在计算机网络中并在特定应用中能像交换机一样工作的可编程网络处理器的简化框图。
图3是可以用在计算机网络中的交换机的替代简化框图。
图4是描绘控制通过交换机的流量的RED方法的流程图。
图5是描绘控制通过交换机的流量的BLUE方法的流程图。
图6是描绘控制通过交换机的流量的DiffServ方法的流程图。
图7是一个简化的流程图,描绘依照本发明控制通过像图1或图3中所示的交换机的流量的一种方法的特定特征。
图8是图7中方法的一种实现的简化流程图。
图9和图7类似的视图,描绘合乎本发明的另一种方法的特征。
图10是可以用在图9的方法中的特定方法步骤的简化流程图。
图11是图9中方法的一种实现的简化流程图。
图12与图7和图9类似的视图,描绘合乎本发明的另一种方法的特征。
图13是图12中方法的一种实现的简化流程图。
图14是图12中方法的另一种实现的简化流程图。
图15和16将被一起看作本发明的方法的另一种实现的简化流程图。
图17是可以用在图15和图16的方法中的特定方法步骤的简化流程图。
图18是可以用在图15和图16的方法中的特定方法步骤的简化流程图。
图19是在图1和图3的交换机中出现的调度器的图示。
图20是可以用在与本发明一致的方法中的特定方法步骤以及运行图19中的调度器的流程图。
图21是可以用在与本发明一致的方法中的特定方法步骤以及运行图19中的调度器的流程图。
发明详述本发明涉及对计算机网络中流量控制的改进。给出下面的描述是为了使本领域的技术人员能够构造并使用本发明的不同实施方案,将在一个专利申请和它的权利要求的上下文中给出这些描述。本领域的技术人员将很容易理解对优选实施方案的不同修改,而且可以把这里的一般原则应用到其它实施方案上面。因而,不能把本发明规定为只限于所示的实施方案,而是符合与这里所描述的原则和特征相一致的最广泛的范围。
用在计算机网络中的交换机通常包括队列,队列可以是相同存储器资源的逻辑队列部分或分开的存储器资源,在队列中可以暂时存放包或者被称为信元的更小的包片断。把包放入队列的入队机制也可以有一种丢弃包的机制以控制通过交换机的流量并改善网络的运行。例如,前面在图4的方法中所描述的随机早期丢弃或探测(RED)机制,它根据队列级别丢弃特定包。虽然RED在特定情况下能够运行,但在很多网络中它都无法提高网络性能。例如,如果网络中的交换机有中等流量或者高流量的话,网络仍将经常遭受振动。因而,这样的网络同为它所设计的容量比较起来可能只能携带很少量的流量。
本发明提供用于控制计算机网络中多个包的流的方法、设备和带有指令的介质。计算机网络中包括一个队列。方法、设备和介质包括确定队列的队列级别并确定流向队列的多个包的提供速率。它们还包括控制流向队列的多个包的传输比例。根据队列级别和提供速率控制传输比例,以使在队列级别在至少第一队列级别和第二队列级别之间时传输比例和队列级别被临界性地衰减。
将根据特定系统和特定部件描述本发明。然而,本领域的技术人员将很容易理解这些方法和系统对于计算机网络中的其它部件也将有效地运行。还将在队列环境中描述本发明。然而,本领域的技术人员将很容易理解当队列是单个存储器资源之内的逻辑队列或是分开的存储器资源的一部分时本发明都能有效地运行。还将在系统的精确地降低上下文中描述本发明。然而本领域的技术人员将很容易理解本发明通常在小时段上进行操作。因而,所提供的衰减可能是在操作的每个瞬间上的瞬时精确地降低。还将根据包和队列描述本发明,这些队列用在执行特定操作之前或之后。然而,本领域的技术人员将很容易理解这些方法和系统对于例如信元这样的其它大小的流量、其它队列、在执行其它操作之前或之后也能有效地运行。还将根据通过主动丢弃包来控制网络流来论述本发明。然而本领域的技术人员将很容易明白这些系统和方法控制包到达队列的速率以及送回给包来源的信号即将生效,该信号指示将要发送的包的比例,而其它包保留在来源。因此,对传输比例的控制类似于对提供包的速率的控制,例如由一个或多个来源提供。
为了更详细地阐明合乎本发明的方法和系统,现在参考图7,图7描绘了根据本发明的方法90的一种实施方案。方法90可以和图1中的交换机一起使用。为明确起见,将结合图3中描绘的队列20和入队机制19一起来阐明方法90。然而,方法90也可以和其它队列一起使用,例如队列24、28、34。方法90还可以和其它入队机制一起使用,例如入队机制23、27、32。在优选实施方案中,使用方法90的系统中的多个队列是同一存储器资源的一部分。然而,方法90也完全可以用在每个队列有一个单独的存储器资源的另外的系统中。
参考图7,通过步骤92确定前一小时段的队列级别和提供速率。在优选实施方案中,队列级别在前一个小时段的末尾确定的,而且它是存储器资源的级别。还是在优选实施方案中,步骤92中确定的提供速率是在前一小时段期间总共提供给存储器资源的输入。在优选实施方案中,前一小时段的传输比例也是在步骤92中确定的。在一种替代实施方案中,在方法90中队列级别的确定包括确定对应于入队机制19的队列20的队列级别。也是在优选实施方案中,传输比例在一个小时段上是固定不变的,因而可以在前一小时段期间的任意时刻确定传输比例,但使用方法90优选地是在前一小时段的开始确定传输比例。
随后通过步骤94控制传输比例,以使传输比例和队列级别在一个队列级别范围上被临界性地减少。传输比例是根据队列级别和输入比例进行控制的。在优选实施方案中,还根据先前的传输比例来控制传输比例。在优选实施方案中,步骤94计算从前一个小时段以来传输比例中的变化以便为精确地降低提供期望的传输比例并向前一个小时段的传输比例加入传输比例中的变化。可以在其上这样控制传输比例的队列级别范围可以扩大到所有可能的队列级别。然而,在优选实施方案中,在其上为精确地降低控制传输比例的队列级别范围在最小队列级别和最大队列级别之间,最小队列级别大于等于0,最大队列级别小于等于最大可能队列级别。随后通过步骤96用传输比例丢弃包,以维持交换机正常运行。可以用传输比例丢弃适当比例的包,因为传输比例等于1减去丢弃比例。如上所述,丢弃比例是将要丢弃的包所占的比例。在一种实施方案中,包是被随机丢弃的。然而,在另一种实施方案中,是部分根据包的优先级丢弃包的。还是在优选实施方案中,步骤96中的丢弃包还向发送主机提供一个通知,告知该包已被丢弃。结果是该主机可以暂停通往交换机的流量。
如上所述,在步骤94中控制传输比例以为由传输比例和队列级别描述的系统提供精确地降低。这允许通过队列20的流量能够快速达到一个稳定状态,因此交换机10也能快速达到稳定状态。因为提供了精确地降低,通过队列20的流量,像由队列级别和传输比例所描述的那样,应该在最短时间内达到稳定状态。精确地降低所要求的传输比例以及传输比例和队列级别之间的关系可以按照下列各项由不同的原理来描述。
可以把队列级别和丢弃速率看作描述队列20的状态的变量。当队列级别增加时,丢弃速率应该提高以防止队列20变满。然而,如果丢弃速率提高了,队列级别应该下降。因而,可以把队列想象成带有正-负反馈环,或者是队列级别和丢弃速率之间的关系。这个关系就是在传统系统中导致振动的原因。可以把本发明看作向丢弃速率增加摩擦,以使丢弃速率不像它在传统的控制流量的方法中和队列级别变化地一样快,所说的传统方法如RED。其结果是可以衰减或防止振动。
还可以用稳定性理论来解释本发明。然而为了简单起见,我们使用传输速率而不用丢弃速率。可以用传输速率、提供速率和输出速率来描述队列级别。输出速率是从队列或存储器资源送出项的速率。由传输速率乘以提供速率再减去输出速率给出队列级别关于时间的变化。因而,队列级别关于时间的变化等于往队列中输入项的速率减去从队列中输出项的速率。可以解释为dQ(t)/dt=I(t)*T(t)-O(t)其中Q(t)=队列级别I(t)=向入队机制提供项(即包)的速率T(t)=传输比例=即,提供给入队机制的项被传输给队列的比例
O(t)=从队列输出项的速率还要注意D(t)=1-T(t)其中D(t)=丢弃比例此外,注意Q(t)、I(t)和O(t)均固定为非负,并且T(t)的值在
范围内。
队列级别变化的时间速率和传输比例之间的关系由队列20的属性设定。同样,丢弃比例和传输比例之间的关系也由它们的属性设定。然而传输比例本身实际上可以是所期望的任意数值。而且传输比例可以按照期望而变化。因而,可以设置传输比例来确保提供精确地降低。在优选实施方案中,选择由下式描述传输比例dT(t)/dt=κ(t)*(β-αT(t)-Q/Qmax)其中κ(t)=一个可能取决于时间的数字α =常数β =常数Qmax=最大可能队列级别因为没有给传输比例施加物理约束,除了规定它在0和1之间,在此范围内可以任意选择。
如上所述,传输比例的目标是提供精确地降低,允许系统尽快地达到稳定。为了能够方便地解释精确地降低,将假定提供速率I(t)和输出速率O(t)在平衡也就是稳定状态时为常数。然而,即使在I(t)和O(t)连续变化的地方分析依然是正确的,对网络来说通常也是正确的。
在平衡时,如果输出速率和提供速率是常数,那么队列级别关于时间的变化速率和传输关于时间的变化速率应该为零。也就是说,在平衡时0 =I(t)*T(t)-O(t)0 =(t)*(-T(t)-Q/Qmax)I(t) =I=常数O(t) =0
=常数因此,在平衡时,T =O/Iα*T=β-Q/Qmax为清楚起见,还假定在最小时Q/Qmax是一个常数,例如0.25。已经确定在稳定区域中允许的最大I/O比例是1.6;在这个I/O比例下,Q达到了Qmax,T=5/8。同样,确定在Q小于等于Qmax/4时T应该为1。因而,在这两种极端平衡下0 =β-α*5/8-1,而且0 =β-α-1/4从这些假设可以确定α和β的数值分别为2和2.25。注意Q/Qmax和I/O的其它容许偏差可以产生其它数值的α和β。因而,可以根据平衡条件和与期望交换机10在其中进行操作的范围有关的一些假设来确定和。
为稳定起见,可以用部分导数确定队列级别和传输比例系统的线性近似矩阵。这样,描述该系统的矩阵为≠(dQ/dt)/≠Q ≠(dQ/dt)/≠T 0 I=≠(dT/dt)/≠Q ≠(dT/dt)/≠T κ-(t)/Qmaxα-*(t)该矩阵的特征值有负实数部分。因而,由队列级别和传输比例所描述的系统的轨迹是稳定的。也就是说,这样就可以控制通过交换机的流量在一定范围的级别上达到稳定。此外,如果(t)=I/Qmax特征值正好等于精确地降低的条件。从微分方程原理当系统矩阵的迹的平方等于行列式乘以4时就提供了精确地降低。也就是说对于上面所作的假设来说,α2*κ2(t) = 4*κ(t)*I/Qmax 或κ(t) =4*I/(Qmax*α2)= I(t)/Qmax因而,可以选择j(t)、α和β来产生传输比例,该传输比例将在期望系统为其运行的数值中提供精确地降低。使用上面的方程,可以为交换机10提供为提供精确地降低而期望的传输比例。例如,使用上面对Q/Qmax和I/O的假设,由传输比例和队列级别所描述的系统是
Q(t+Dt)=Q(t)+[I(t)*T(t)-O(t)]*DtT(t+Dt)=T(t)+(I(t)*Dt/Qmax)*(2.25-2*T(t)-Q(t)/Qmax)其中Dt = 计算机Q和T之间的时间间隔= 小时段的时间Q(t)/Qmax大于或等于0.25I(t)/O(t)小于或等1.6为了解决违反Q(t)、I(t)和O(t)的上述条件的情况,可以根据队列级别更改传输比例。例如,当Q/Qmax时可以使传输比例为1。同样,当I(t)/O(t)大于1.6时,队列开始以比预期更快的速度充满。因此,当队列到达一个级别或接近最大值时可以把传输比例设为0或某一很小的值。
如上所述,虽然在假定提供速率I(t)和输出速率O(t)在平衡时为常数的情况下阐释了上述分析,但当I(t)和O(t)在平衡状态下不为常数时对精确地降低的分析依然正确。因而仍然能够提供精确地降低,使传输比例能够快速适应队列级别的变化以及由此产生的提供速率和输出速率的变化。
为了更清楚地说明合乎本发明的方法和系统,参考图8,它描绘了用于控制通过交换机的流量的方法100的更详细的实施方案。为清楚起见,将用交换机10中的入队机制19和队列20来描述方法100。因而,入队机制19执行方法100。然而,方法100也可以由别的入队机制使用。此外,虽然参考了队列级别和通往入队机制19的提供速率,但正在确定的队列级别可以是针对整个存储器资源的,提供速率也可以是针对整个存储器资源的。
通过步骤102确定前一个小时段的队列级别和提供速率。队列级别优选地是在小时段的末尾相对于最小队列级别Qmin和最大队列级别Qmax而确定的。在步骤102中前一小时段的传输比例也是可用的。通常情况下,已经用方法100确定了传输比例,因而它将是容易使用的。然而,如果传输比例还不可用也可以确定传输比例。
然后通过步骤104确定队列级别是否高于Qmin。如果队列级别不高于Qmin,就通过步骤106把传输比例设为1。因而步骤106能够确保当队列级别足够低时所有包都由入队机制19传输给队列20。如果在步骤104中确定队列级别大于Qmin,就在步骤108中判断队列级别是否高于Qmax。如果队列级别高于Qmax,就通过步骤110把传输比例设为0。因而,步骤110确保当队列级别过高时丢弃所有的包。
如果队列级别既不低于Qmin也不高于Qmax,就在步骤112中为精确地降低控制传输比例。在优选实施方案中,用上面所述方程来设置传输比例。因而传输比例是根据前一小时段的队列级别、提供速率和传输比例以及小时段的长度为精确地降低而设置的。使用步骤106、110或112中设置的传输比例,由入队机制19传输或丢弃包(步骤114),以使提供给队列20的包的比例等于传输比例。优选地是以与传统RED方法中所用类似的模式随机丢弃包,上面关于图4对此有所论述。然而,再来参考图8,也可以根据包的优先级丢弃包。此外,优选地还要向发送被丢弃包的主机发回一个通知,以使它能够暂停通往交换机的流量。随后通过步骤116确定当前小时段是否已经完成。因为对传输比例的计算已经完成,可以通过确定一个特定时间是否已经过去来实现这个判断。如果该小时段还未结束,就继续步骤114。如果该小时段已经结束,就返回到步骤102。
因而可以使用方法90或100为精确地降低设置传输比例。优选地临界延迟只在期望的队列级别范围中才会发生。在此范围之外,根据确定队列级别对于精确地降低计算是过高还是过低把传输比例设置为0或1。因为可以随机或至少部分根据它们的优先级来丢弃包,所以能够防止向交换机发送流量的主机的同步。因为提供了精确地降低,方法90和100可以为系统提供比RED方法更好的稳定性。因为提供了精确地降低,方法90和100还可以比BLUE方法更快地达到平衡。从而提高了使用交换机10并且交换机10使用方法90或100的网络的性能。
可以用实验方法看到使用方法90或100带来的性能提升。把网络模型化为其中存在有瓶颈链路。另外,向网络提供足够获得大约百分之三十的超额流量(oversubscription)。因而对网络进行有目的的控制,以使大约百分之三十的流量将不得不被丢弃掉。在实验过程中,RED方法用弃尾(因为最大队列级别的缘故,不得不丢弃后来的包)丢弃了大约2,000帧或包。如前所述,由弃尾丢弃帧只在因为队列满而简单地丢弃帧时才会发生。由于这些帧是在队列满时被丢弃的,因而由弃尾丢帧不是我们所期望的。由弃尾丢帧干扰了网络并且无法根据包的优先级活动。
在相同的实验中,本发明不通过弃尾丢弃任何帧。因而在确定是否执行丢弃时本发明可以考虑包的优先级。此外,由本发明所传输的帧的总数也要高于RED方法。因此,方法90和100即使在高度超额流量时也能更好地管理网络中的流量。在这里所公开的实施方案中,本发明可以在直到至少百分之五十的超额流量情况下很好地运行。如上所述,因为提供了精确地降低,方法90和100还应该比BLUE方法更快地达到平衡。
在图9中所示的本发明的另一种实施方案(120)中,通过步骤122确定前一小时段的队列级别和提供速率。在优选实施方案中,队列级别是在前一小时段的末尾确定的,并且是存储器资源的级别。也是在优选实施方案中,在步骤122中确定的提供速率是在前一小时段期间总共提供给存储器资源的输入。在优选实施方案中,还在步骤122中确定前一小时段的传输比例。在替代实施方案中,方法120中队列级别的确定包括确定对应于入队机制19的队列20的队列级别。还是在优选实施方案中,在一个小时段上传输比例是固定不变的,因而可以在前一小时段中的任意时刻确定传输比例,但优选地是在前一小时段的开始确定它。
通过步骤124用来自前一小时段的队列级别确定队列20的虚拟最大队列级别。当确定交换机10发生拥塞时降低虚拟最大队列级别。当确定交换机没有拥塞时增加虚拟最大队列级别,最大可到小于或等于可能的最大队列级别。优选地,通过确定队列级别高于一个阈值来实现,该阈值小于可能的最大队列级别。也就是说,在队列20满之前确定交换机10将发生拥塞。因为在确定传输比例中使用了虚拟最大队列级别,计算传输比例就好比队列20可用的存储器资源小于存储器资源的实际大小。其结果是,在发生高度拥塞时,传输比例被设置为比它在拥塞程度低时更小。因此,交换机10能够更好地应付高流量的情况。
随后通过步骤126根据队列级别、提供速率和虚拟最大队列级别控制传输比例。在优选实施方案中,还对传输比例进行控制以使在确定了虚拟最大队列级别之后由传输比例和队列级别所描述的系统被精确地降低。在优选实施方案中,还根据先前的传输比例对传输比例进行控制。在其上对传输比例进行这样控制的队列级别范围可以扩展到所有可能的队列级别。然而,在优选实施方案中,在其上对为精确地降低这样控制传输比例的范围在最小队列级别和最大队列级别之间,最小队列级别大于或等0,最大队列级别小于或等于最大可能队列级别。优选地还对传输比例进行控制以使队列级别不超过虚拟最大队列级别。随后通过步骤128中用传输比例丢弃包以维持交换机10的正常运行。传输比例也可用来丢弃适当比例的包,因为传输比例等于1减去丢弃比例。如上所述,丢弃比例是将被丢弃的包的比例。在一种实施方案中,包是被随机丢弃的。然而在另一种实施方案中,是部分根据包的优先级来丢弃包。还是在优选实施方案中,步骤128中的丢弃包还向发送主机提供一个通知,告知该包已经被丢弃掉了。其结果是该主机可以暂停通往交换机10的流量。
图10是一个流程图,描绘了方法130的优选实施方案,方法130在图9中的方法120的步骤124中确定虚拟最大队列级别。在优选实施方案中,用于更新虚拟最大队列级别的方法130是和方法120的步骤126中更新传输比例并行执行的。参考图10,通过步骤132确定队列级别是否大于或等一个阈值。该阈值优选地是最大队列级别的比例。该比例可以在0和1之间的任何位置,但优选地在1/2和31/32之间。优选地,该阈值是最大可能队列级别的31/32。然而也可以使用最大可能队列级别的其它比例,包括127/148、7/8、3/4和1/2。然而,在以降低吞吐量为代价的情况下队列级别也可以保持在最大可能队列级别之下。如果队列级别大于或等于该阈值,就通过步骤134设置乘数。在步骤134中,优选地根据下列函数设置乘数M(t+Dt)=minimum{1,a*M(t)+b}其中M(t) = 为前一个小时段而计算的乘数a = 小于1的正常数,优选为31/32b = 大于或等于(1-a)且小于1的正常数,优选为1/4因而,在优选实施方案中,当在步骤132多次确定队列级别超出该阈值时,乘数接近第一个数值,它在优选实施方案中为1。
如果队列级别小于该阈值,就通过步骤136设置乘数。在步骤136中,优选地根据下列函数设置乘数M(t+Dt)=cM(t)+d
其中M(t) =为前一小时段计算的乘数c =小于1的正常数,优选为31/32d =小于或等于(1-c)的正常数,优选为1/64。
因而,在优选实施方案中,当在步骤132中多次确定队列级别低于该阈值时,乘数接近第二个数值,即二分之一。
这样,步骤134和136确定了乘数,它是前一乘数的指数加权平均,上限为1。此外,在多次拥塞的情况下,当队列级别多次高于阈值时,乘数将指数逼近第一个值,优选为1。当多次避免了拥塞时,当队列级别多次低于阈值时,乘数将指数逼近第二个值,优选为二分之一。
按照下列各项定义虚拟缓冲区虚拟最大队列级别。在多次没有拥塞的情况下,当队列多次低于阈值时,虚拟缓冲区容量与物理缓冲区容量相同,指定为Qmax。在多次拥塞的情况下,当队列级别多次高于阈值时,虚拟缓冲区容量是物理缓冲区容量的一半,或Qmax/2。本领域的技术人员将够理解在多次拥塞的情况中其它非1/2的比例也足以定义虚拟缓冲区容量。
在如上所述的一些流控制算法中,缓冲区中入队的数据量被表示为最大缓冲区容量Qmax的比例。因而Qmax在一些表达式中以分母出现,例如在队列级别Q(t)除以Qmax时,也就是Q(t)/Qmax。因此虚拟缓冲区容量的期望定义等价于使用数值2*M*Q/Qmax。也就是说,在多次没有拥塞的情况下,当M是1/2或接近1/2时,表达式2*M*Q/Qmax简单地变成Q/Qmax。在多次发生拥塞的情况下,当M为1或接近1时,表达式2*M*Q/Qmax就是简单的2*Q/Qmax,或者Q/(Qmax/2)。因而,把队列占用比例Q/Qmax乘以两倍,乘数M就有了比较Q和虚拟缓冲区容量或虚拟队列级别的效果。
在使用多交换机模型的模拟中,已经证明对乘数M的上述定义和使用能在最高达8比1的严重拥塞情况下稳定对丢弃比例的计算。当几个输入信号源碰巧对一个输出信道都有流量时可能会在交换机的操作中短暂地发生这样的拥塞。
图11是依照本发明用于控制网络中流量的方法140更详细的流程图。方法140可以和图1和3中所示的交换机10一起使用。为清楚起见,将结合图3中所描绘的队列20和入队机制19阐明方法140。然而,方法140也可以和其它队列和其它入队机制一起使用。在优选实施方案中,使用方法140的系统中的多个队列是同一存储器资源的一部分。然而,方法140也完全可以用在每个队列有一个单独的存储器资源的系统中。
通过步骤142确定前一小时段的队列级别和提供速率。此外,在步骤142中前一小时段的传输比例和乘数优选地也是可用的,因为这些数值优选地是为前一小时段计算的。然而,如果前一小时段的传输比例和乘数不可用,也可在步骤142中优选地确定它们。然后通过步骤144确定队列级别是否大于或等于最小阈值。在优选实施方案中,最小阈值是最大队列级别的四分之一。如果队列级别不是大于或等于最小阈值,就把传输比例设置为1(步骤146)。
如果队列级别大于最小阈值,就通过步骤148确定队列级别是否大于最大阈值。在优选实施方案中,步骤148包括确定队列级别是否超出了虚拟最大队列级别。
如果确定队列级别大于最大阈值,就通过步骤150把传输比例设置为0或者接近0。然而,如果确定队列级别不大于最大阈值,就通过步骤152使用前一小时段的乘数、队列级别、先前的传输比例、提供速率和最大队列级别确定传输比例。在优选实施方案中,由下式给出传输比例T(t+Dt)=minimum{1,maximum(1/8,T(t)+(2*I(t)*M(t)*Dt/Qmax)*(9/4-2*T(t)-2*M(t)*Q(t)*Qmax))}其中M(t) = 来自前一小时段的乘数Dt = 以合适的时间单元表示的小时段长度注意在T(t+Dt)的方程中出现了乘数M(t)。在每个Dt时间单元同时更新T和M。另外,注意在T(t+Dt)的方程中乘数M(t)出现了两次。如上所述它出现在2*M(t)*Q(t)/Qmax项中。效果是在多次拥塞的情况下把缓冲区容量除以2。乘数M(t)还出现在2*M(t)*I(t)/Qmax项中。这里在时间间隔Dt上提供给队列系统的位数是I(t)*D(t)。把这个数和Qmax相比较产生比例I(t)*Dt/Qmax。然后把这个比例乘以2*M(t)。再次,其效果是在拥塞情况下把缓冲区容量除以2。
在优选实施方案中,通过步骤154更新乘数是和计算传输比例并行的。在优选实施方案中,用图10中描述的方法130来更新乘数。然而,注意更新乘数完全可以和传输比例串行。此外,完全可以在计算当前小时段的传输比例中使用当前小时段的乘数。然而,在这种情况下,图11的步骤152中传输比例的数学公式将有所不同。
使用步骤146、步骤150或步骤152中设置的传输比例,入队机制19通过步骤156主动地丢弃包以维持交换机10的正常运行。通过步骤158确定小时段是否结束。如果没有结束,就返回到步骤156。否则重复步骤142。
方法120和140是稳定的,允许在交换机10中控制流量。此外,使用方法120和140,可以用虚拟最大队列级别或乘数解决高流量问题。因而,使用方法120或140的一种实施方案的交换机10能够适应百分之八百的超额,甚至在高度超额时也能够在不充满队列或存储器资源的情况下连续运行。此外,使用方法150还精确地降低了传输函数和队列级别,假定已经设置了乘数,否则为了确定衰减起见考虑使乘数为常数。因为队列级别和传输比例是被精确地降低的,交换机10将尽可能快地达到平衡。
还可以理解,本发明提供用于控制计算机网络中多个管道的方法和系统。像已公开的那样,计算机网络包括至少一个用于交换机的处理器。该至少一个处理器有一个队列。多个管道使用该队列通过交换机传输流量。该方法和系统包括允许为多个管道中的每个管道设置最小流和最大流并确定队列是否有多余的带宽。该方法和系统还包括如果存在多余带宽而且多个管道中某个管道的流小于该管道的最大流时根据最小流和最大流线性增加该管道的流量。该方法和系统还包括在不存在多余带宽而且多个管道中某个管道的流大于该管道的最小流量时根据最小流和最大流指数递减该管道的流量。
现在将根据通过队列的这样的管道或提供给队列的流来描述本发明。然而,本领域的技术人员将很容易明白管道可以是不同或相同类别的性能总计流,或进入使用队列用于存储的特定部件的任意提供速率的性能总计流。
为了更详细地阐明合乎本发明的方法和系统,现在参考图12,图12描绘了合乎本发明的方法160的一种实施方案。方法160可以和图1和图3中所示的交换机10一起使用。因而,可以在有多个插片7、8和9,并且每个插片7、8或9上有多个端口的交换机10中执行方法160。为清楚起见,将结合图3中所描述的队列20和入队机制19一起来阐明方法160。然而,方法160也可以和其它队列一起使用,例如队列22、28、34。方法160也可以和其它入队机制一起使用,例如入队机制23、27、32。在优选实施方案中,使用方法160的系统中的多个队列是同一存储器资源的一部分。然而,方法160也完全可以用在每个队列有单独的存储器资源的别的系统中。
参考图3和图12,通过步骤162设置向队列20提供流量的管道的最小和最大流。管道可以来自通往入队机制19的端口组A18中的任意端口。在优选实施方案中,我们感兴趣的管道是性能总计流。因而,步骤162优选地设置我们感兴趣的性能总计流的最小和最大带宽。此外,管道的最小流的和应该小于或等于共享队列处理器的服务速率S。这是因为流被定义为队列20能够服务的总流量数的比例。管道的最小流可为0。通常,队列20有一个规定的服务速率,队列20以该速率从队列输出项。在优选实施方案中,最小流速率的和小于服务速率S的二分之一。也是在优选实施方案中,每个管道的最大流小于或等于服务速率。虽然在优选实施方案中由队列20服务的最大管道数小于或等于1024,但在所控制的管道数上并没有实际的上限。另外,每个管道以提供速率Ii(t)向队列20提供流量,其中i表示第i个管道。可以根据不同的因素丢弃一些流量。第i个管道的传输比例Ti(t)是从第i个管道传输给队列16的流量的比例。因而,第i个管道的瞬时流fi(t)=Ii(t)*Ti(t)。在优选实施方案中,方法160还能够确保有流量流过它们的那些管道至少有它们的最小流。
通过步骤164确定队列20是否有多余的带宽可用。在优选实施方案中,如果队列级别正在增加就确定没有多余带宽。同样是在优选实施方案中,如果队列20为空或者队列20的队列级别正在下降就在步骤164中确定存在多余的带宽。因而,步骤164优选地包括确定队列级别并把队列级别和先前的队列级别进行比较。也是在优选实施方案中,如果队列级别既不是0也不是正在下降就确定没有多余的带宽。然而,也可以用其它标准来确定是否存在多余的带宽。
如果在步骤164中确定存在多余的带宽,就通过步骤166线性增加管道的流。优选地,步骤166是通过线性增加每个管道的传输比例来实现的。对管道的线性增加可以基于最小流、最大流或权重。因而,对管道的线性增加可以只基于该管道的最小或最大流,也可以基于最小流和权重的组合、最大流和权重的一些组合,或者最小流、最大流和权重的一些组合。然而,在优选实施方案中,对管道的线性增加是基于该管道的最小流。
如果在步骤164中确定不存在多余的带宽,就通过步骤168按指数规律减小管道的流。优选地,步骤168是通过按指数规律减少每个管道的传输比例实现的。对管道的指数减少可以基于最小流或最大流。因而,对管道的指数减少可以只基于管道的最小流或最大流,或者最小流和最大流的一些组合。然而在优选实施方案中,最管道的指数减少是基于该管道的最小流。因为减少实际上是按指数规律进行的,因此还可以基于该管道的当前流或传输比例。
因为方法160线性增加流并按照指数规律减少流,所以方法160通常能够确保通过管道流向队列20的流量自动并渐近地达到稳定。流将根据队列20是否有多余的带宽而增加或减少。当达到稳定时,只要存在多余带宽时流就将线性增加,随后将因为没有多余带宽而按指数规律减少,直到多余带宽再次变得可用为止。这种行为将一直重复下去。也就是说,来自管道的流量能够习惯于一种称为有限循环的稳定循环状态。因而,不管通过管道的流从什么状态开始,系统都将向着稳定循环行为移动。用其它的增加和减少的组合不能实现这种稳定的行为。例如,指数增加和线性减少或者指数增加和指数减少不能产生稳定的行为。此外,增加和减少每个管道的流将取决于该管道的最小和最大流以及它先前的流。因而,不同的管道可以有不同级别的流或服务。因此,方法160不仅能产生稳定的行为,还能提供有区别服务并分公平地分配队列20的多余带宽。网络管理员或其他用户必须做的所有事情只是根据特定顾客想要的服务级别为顾客设置不同的最小和最大流。因而,方法160可以由希望向不同顾客或为不同介质提供不同级别服务因特网服务提供商用在很多应用中,例如用在使用了DiffServ的网络中。仅仅是通过允许在方法160中为性能总计流、顾客、介质、类别或者与管道对应的其它流设置最小和最大流就实现了这一点。
图13描绘了依照本发明用图1和图3中所示的交换机提供有区别服务的方法170的更详细的流程图。因而,可以在有多个插片7、8和9,每个插片7、8或9上有多个端口的交换机10中执行方法170。为清楚起见,将结合图3中描绘的队列20和入队机制19来阐明方法170。然而,方法170也可以和其它队列一起使用,例如队列24、28、34。方法170也可以和其它入队机制一起使用,例如入队机制23、27、32。在优选实施方案中,使用方法170的系统中的多个队列是同一存储器资源的一部分。然而,方法170完全可以用在每个队列有一个单独的存储器资源的别的系统中。此外,将在管道环境中描述方法170,然而方法170也可以用于多种部件,包括与管道对应的性能总计流。
方法110在为正在控制的每个管道设置了最小和最大流之后开始,设置可以由管理网络管理员进行。通过步骤172根据管道的最小和最大流流为每个管道计算一个常数。对每个管道i来说,在步骤172中为它计算出常数Ci和Di。常数Ci用于线性增加管道i的流,如下所述。类似地,常数Di用于指数减少管道i的流,如下所述。在优选实施方案中,常数Ci和Di都基于最小流。在一种替代实施方案中,可以为不同的管道提供权重。在这种情况下,也可以根据所提供的权重计算常数Ci和Di。
一旦确定了这两个常数,就通过步骤174允许流量通过管道流向队列20。如果前一小时段的队列级别、瞬时多余带宽信号B和多余带宽信号E还不可用,就通过步骤176中确定它们。在优选实施方案中,在步骤176中也要使前一小时段的流可用。也就是说,步骤176确定必要的数值以在方法170中更新系统。然后通过步骤178中确定是否存在多余带宽。在优选实施方案中,如果队列20的队列级别为0或正在减少就确定存在多余带宽。否则将确定不存在多余带宽。然而,也完全可以使用其它标准来确定是否存在多余带宽。在优选实施方案中,所确定的队列级别是整个存储器资源的队列级别。然而,也可以为逻辑队列或子队列确定队列级别。如果不存在多余带宽,就通过步骤180把瞬时多余带宽信号B设为0。把信号B称为瞬时的是因为它是基于对队列级别的单一测量和对队列级别变化的单一确定。随后通过步骤182把多余带宽信号E设置为先前的多余带宽信号乘以一个常数。优选地,该常数是31/32而且通常应该小于1。在优选实施方案中,多余带宽信号是瞬时多余带宽信号的指数加权平均。多余带宽信号的值是在步骤182中适当设置的,因为瞬时多余带宽信号是0。
如果在步骤178中确定不存在多余带宽,就通过步骤184把瞬时多余带宽信号设置成1。随后通过步骤186把多余带宽信号设置成瞬时多余带宽信号的指数加权平均。因而,在优选实施方案中,多余带宽信号是先前的多余带宽信号乘以第一个常数再加上瞬时多余带宽信号乘以第二个常数。第一个和第二个常数都小于1,而且优选地分别是31/32和1/32。
在优选实施方案中,通过步骤188设置每个管道i的传输比例,和步骤178到186并行。然而,在一种替代实施方案中,可以用瞬时多余带宽信号和多余带宽信号串行地更新传输比例。如果先前的瞬时多余带宽信号B为1(多余带宽可用),步骤188就根据先前的传输比例、常数Ci和多余带宽信号设置每个管道i的传输比例。优选地,在步骤188中为先前存在的多余带宽设置的传输比例是Ti(t+Dt)=Ti(t)+Ci*E(t)其中Dt=小时段长度(从上次计算传输比例以来的时间)优选地,设置流单元,使得Dt和最大可能队列级别Qmax为1。因而传输比例线性减少。此外,只要多余带宽继续存在传输比例就将继续线性增加。如果在前一小时段中不存在多余带宽(B为0),就在步骤188中根据管道先前的传输比例Ti(t)、Di、以及管道先前的流fi(t)设置每个管道i的传输比例Ti(t+Dt)。当先前不存在多余带宽时,优选地由下式给出传输比例Ti(t+Dt)=Ti(t)-Di*fi(t)因而,在步骤188中设置的传输比例能够确保只要多余带宽不再继续存在,传输比例就将指数减少,并因此导致流也将指数减少。常数Ci和Di优选地是基于最小流值。下面将参照图14讨论Ci和Di的正确优选值。
回过去看图13,通过步骤190用步骤188中计算出的传输比例在小时段期间传输或丢弃通过交换机10的包。在优选实施方案中,不仅根据包流过的管道的传输比例,还根据每个包的优先级丢弃包。在另一种实施方案中,包是被随机丢弃的。通过步骤192中确定小时段是否结束。如果没有结束,就通过步骤190继续根据相同的传输比例传输流量。如果小时段已经结束,就从步骤176开始重复这个方法。
因为方法170线性地增加流并按指数规律减少流,因此方法170的运行类似于方法160,而且提供了很多相同的好处。因而,方法170能够确保通过管道流向队列20的流量能够自动并渐近地达到稳定。来自管道的流量能够习惯于一种称为有限循环的稳定循环状态。因而,无论通过管道的流量从什么状态开始,系统都将向着稳定循环行为移动。此外,增加或减少每个管道的流将取决于该管道的最小流和该管道先前的流。因而,不同的管道可以有不同级别的流。因此,方法170能够产生稳定的行为,公平的分配队列20的多余带宽,并提供有区别服务。网络管理员或其他用户所必须做的所有事情只是根据特定顾客所希望的服务级别有区别地为顾客设置最小和最大流。因而,方法170可以由希望向不同用户或为不同介质提供不同级别服务的因特网服务提供商用在很多应用当中,例如用在使用了DiffServ的网络中。仅仅通过在方法170中允许为性能总计流、用户、类别、介质或与管道对应的其它流设置最小和最大流就可以实现这一点。
此外,如果来自传输比例的流速率减少得足够快,描述管道的流的曲线下的面积就与流线性增加的斜率成正比。流的曲线下的面积指示每秒钟通过管道流入队列20的位数。还可以在一个小时段上计算通过管道的流,指示通过管道的精确的流。因而按照DiffServ中所定义的控制了流和带宽。
图14描绘了方法180的优选实施方案更详细的流程图,该方法用于提供有区别服务。方法180优选地引入上文中公开的发明。通常,现在将要公开的该方法在必要时使用上面所公开的发明以在高级别上控制传输比例,否则使用与较早前公开的方法相类似的方法。
方法180可以和图1和图3中所示的交换机10一起使用。因而可以在有多个插片7、8、9,每个插片7、8或9上有多个端口的交换机10中执行方法180。为清楚起见,将结合图3中描绘的队列20和入队机制19来阐明方法180。然而,方法180也可以和其它队列一起使用,例如队列24、28、34。方法180也可以和其它入队机制一起使用,例如入队机制23、27、32。在优选实施方案中,使用方法180的系统中的多个队列都是同一存储器资源的一部分。然而,方法180也完全可以用在每个队列都有单独的存储器资源的别的系统中。此外,将在管道环境中描述方法180,然而方法180也可用于多种部件,包括与管道对应的性能总计流。
方法180优选地在为每个管道设置了最小和最大流并在用到权重的地方设置了权重之后开始。如前所述,最小流的和应该小于1,而且优选地应该小于队列20的服务速率的一半。也是在优选实施方案中,最小和最大流中的每一个都小于服务速率。在优选实施方案中,流的数量小于或等于64。在优选实施方案中,每个管道的权重是1,因此并不影响交换机10的行为。如上所述,由管道提供给队列的提供速率Ii(t)乘以该管道的传输比例Ti(t)以使获得该管道的流fi(t)。
通过步骤182根据最小流确定用于增加或减少管道的流的常数,在有些地方还用到了权重。优选地,按照下列公式计算用于增加一个管道的流的常数Ci和用于减少流的常数DiCi=N*(Wi/W)*(S+fimin-S fjmin)/16j如果所有的权重都等于1,就像在优选实施方案中那样,那么Ci=N*(S+fimin-S fjmin)/16jDi=(S-fimin)*4其中N=对其分配带宽的流的数量Wi=第i个管道的权重,优选在
范围内W=N个权重的和fimin=第i个管道的最小流另外,还要再次选择流单元以使Dt和Qmax是1。
通过步骤184确定管道的流和队列20的队列级别。如果小时段刚好结束,就确定前一小时段的流和队列级别。流是在整个小时段上确定的,而队列级别优选地是小时段末尾时的队列级别。在优选实施方案中,队列级别是整个存储器资源的级别,而队列20是这个存储器资源的一部分。然而,在别的实施方案中,队列级别可以针对逻辑队列或子队列。在优选实施方案中,如果还没有确定前一小时段的瞬时多余带宽信号B和多余带宽信号E,就确定它们并使其可用。这样,随后的计算所需要的信息就可以使用了。
通过步骤186确定队列20是否存在多余的带宽。在优选实施方案中,步骤186包括确定队列级别是否为0或者是否正在降低。然而,也完全可以使用别的标准来确定是否存在多余的带宽。如果队列级别正在降低或者为0,就在步骤186中确定存在多余的带宽。否则就确定不存在多余的带宽。如果存在多余的带宽,就通过步骤188设置瞬时多余带宽信号为1。如果不存在多余带宽,就通过步骤190设置瞬时多余带宽信号为0。
随后通过步骤192设置带宽信号为瞬时带宽信号的指数加权平均。在优选实施方案中,指数加权平均信号被设置成E(t+Dt)=(31/32*E(t))+B(t+Dt)/32其中E(t+Dt)=当前小时段的多余带宽信号E(t) =前一小时段的多余带宽信号B(t+Dt)=当前带宽的瞬时多余带宽信号与从步骤186到192更新瞬时带宽信号和带宽信号并行,通过步骤194更新当前小时段的传输比例。在步骤194中设置传输比例,这样在可能时就可以为每个活动管道提供最小的流,这样每个管道的流就不会超出最大流,这样只要队列20(或对应的存储器资源)不超出期望的级别并且需要的话流就可以线性增加或指数减少,因此设置传输比例就可以临界性地衰减由队列级别和全局传输比例所描述的系统并且能够应付更高的超额速率。精确地降低意味着由队列级别和全局传输比例所描述的系统尽快地达到平衡。在优选实施方案中,每个管道的传输比例被设置为Ti(t+Dt)= A,如果在时间t时提供速率的和大于或等于常数D;= min{1,Ti(t)+F},如果fi(t)小于或等于fimin;= G*Ti(t),如果fi(t)大于fimax;否则= min{T(t),如果B(t)=1那么Ti(t)+Ci*E(t)否则如果B(t)=0 Ti(t)-Di*fi(t)}其中A = 小于1的常数,优选地为0.125D = 小于1的常数,优选地为0.25
F= 小于1的常数,优选地为0.125G= 小于1的常数,优选地为0.875T(t) = 全局传输比例优选地,由下式给出全局传输比例T(t) = minimum{1,maximum(1/8,T(t-Dt)+2*I(t-Dt)*M(t-Dt)*Dt/Qmax)*(9/4-2*T(t)-2*M(t)*Q(t)/Qmax))}其中M(t-Dt) = 来自前一小时段的乘数= 当多次确定队列级别超过阈值时,该乘数在优选实施方案中接近于1;当多次确定队列级别不超过阈值时,该乘数在优选实施方案中为1/2Dt= 以合适单位表示的小时段长度因而,全局传输比例确保能够临界性地衰减队列级别和全局传输比例并能够应付超额。
根据步骤194中确定的传输比例,通过步骤196传输或丢弃管道的包或流量片断。在优选实施方案中,步骤196在确定是否丢弃一个特定的包时考虑它的优先级。在别的实施方案中,单个包被随机地丢弃以维持计算出的传输比例。
随后通过步骤198确定小时段是否已经结束。如果小时段没有结束,就通过步骤196继续传输或丢弃包。如果小时段已经结束,就返回到步骤182以更新下一小时段的值。
方法180产生了和方法160和170几乎相同的好处,包括能够以稳定的方式提供有区别服务并能够公平地分配多余的带宽。用户用最小的努力就可以实现这些好处,仅仅设置管道的最小和最大流即可。方法180还可以由希望为不同的顾客、团体、性能总计流或不同的介质提供不同级别的服务的因特网服务提供商很多应用中,例如用在使用了DiffServ的网络中。仅仅在方法180允许性能总计流、顾客、介质或与管道对应的其它流设置最小和最大流即可实现这一点。因而,可以按照期望来控制通过管道的流和Diffserv服务标准。
此外,方法180还利用了上述两种方法的附加好处。因为可以使用全局传输比例,方法180能够用有效的方式应付更高程度的拥塞。乘数的使用确保交换机能够在大范围的超额上保持稳定,乘数对应于虚拟队列级别,当队列多次高于一个阈值时它就减少。在一种实施方案中,可以应付最高到百分之八百的超额。此外,既然全局传输比例在某种意义上是被精确地降低的,那么由队列级别和全局传输比例描述的系统将很快达到一个稳定状态。因此,方法180提供快速达到平衡的期望传输速率。
预见交换机10通常将使用方法180中与方法160和170对应的部分。因而管道通常都处于控制之下,这样才能达到稳定有限循环。在优选实施方案中,通过管道的流将增加到队列级别不再下降为止,并且将减少到队列级别下降或等于0为止。相信这将是正常的操作模式。然而,在临界情况下,例如因为几个管道突然变得活动起来并且期望它们的最小流或队列级别超过一个阈值,这时另一种方法变得活动起来。例如,可以用全局传输比例来试图确保队列20不变满。当已经应付过通常是短时的临界状态时,将再次使用导致稳定有限循环的传输比例。因而,使用方法180的交换机将在大范围的超额上有效地操作。
本发明还考虑了包括设置多个管道中的一个管道的流的传输比例为全局传输比例和微分传输比例中的最小值的方法和系统。如果存在多余带宽,并且管道的流小于为该管道设置的最大流,微分传输比例就能够根据最小流或最大流线性地增加流。如果不存在多余带宽而且管道的流大于为该管道设置的最小流,微分传输比例能够根据最小流或最大流按指数规律减少流。因而通过队列的流量是稳定的。该方法和系统还包括根据传输比例控制通往队列的流量的传输并使用调度器控制来自队列的流量。调度器可以使用一种策略或者多种策略的组合。例如,调度器可以使用下列策略中的一种或其组合先进先出、优先级排队、定制排队、加权公平排队、基于类别的加权公平排队、常规接口处理器加权公平排队、循环、加权循环其它已知的排队策略。
为了更清楚地描绘合乎本发明的附加方法和系统,现在参考图15和图16,它们描绘了合乎本发明的方法220的一种实施方案。方法220可以和图1和图3中所示的交换机10一起使用。因而,可以在有多个插片7、8、9,每个插片7、8或9上有多个端口的交换机10中执行方法220。为清楚起见,将结合图3中描绘的队列34和入队机制32方法220来阐明方法220。在优选实施方案中,方法220用在交换机10的出口端,因此也用在网络处理器5的出口部分。因而,方法220优选地是和入队机制32、队列34以及调度器35一起使用的。然而,方法220也完全可以和其它队列、其它入队机制以及其它调度器一起使用,例如队列20、24、28,入队机制19、23、27。在优选实施方案中,使用方法220的系统中的多个队列都是相同存储器资源的一部分。然而,方法220也完全可以用在每个队列都有一个单独的存储器资源的其它系统中。
通过步骤222设置向队列34提供流量的管道的最小和最大流。这些管道可能来自通往入队机制32的端口组A18中的任意端口。在优选实施方案中,我们感兴趣的管道是性能总计流。因而,步骤222优选地设置感兴趣的性能总计流的最小和最大流。此外,对于每个出口端口,管道的最小保证流的总和应该小于该端口的发送容量,在优选实施方案中小于该端口的发送容量的一半。这是因为流被定义为队列34能够服务的总流量的比例。管道的最小流可以为0。通常,队列34有规定的服务速率,队列34以该速率从队列中输出项。虽然在优选实施方案中由队列34服务的最大管道数小于或等于2248,但对所控制的管道数量是没有实际上限的。另外,每个管道以提供速率Ii(t)向队列34提供流量,i表示第i个管道。根据不同的因素,可以丢弃一些流量。第i个管道的传输比例Ti(t)是从第i个管道传输给队列34的流量的比例。因而,第i个管道的瞬时流fi(t)=Ii(t)*Ti(t)。在优选实施方案中,方法100还能够确保有流量流经它们的管道至少有它们的最小流。
一旦设置了管道的最小和最大流,嵌入式复合处理器可以开始控制通过交换机10的流量,通过步骤224完成。通过步骤226和228分别确定前一小时段的队列级别和提供速率。在优选实施方案中,队列级别是在前一小时段的末尾确定的,并且队列级别是存储器资源的级别。也是在优选实施方案中,步骤228中所确定的提供速率是在前一小时段期间总共提供给存储器资源的输入。在优选实施方案中,还在步骤226或228中确定前一小时段的传输比例和全局传输比例,如下所述。在一种替代实施方案中,方法220中队列级别的确定包括确定与入队机制32对应的队列34的级别。也是在优选实施方案中,传输比例和全局传输比例在一个小时段上是固定不变的,因此可以在前一小时段期间的任意时刻确定它们,但在优选实施方案中是在前一小时段的开始确定的。
然后通过步骤230控制全局传输比例,以使如果使用了全局传输比例的话能够在一个队列级别范围上精确地降低全局传输比例和队列级别。全局传输比例是根据队列级别和提供速率进行控制的。在优选实施方案中,还要根据先前的全局传输比例控制全局传输比例。在优选实施方案中,步骤230计算自前一小时段以来的传输比例中的变化,以使为精确地降低提供期望的全局传输比例并向前一小时段的全局传输比例添加全局传输比例中的变化。在其上对传输比例进行这样控制的队列级别范围可以扩展到所有可能的队列级别。然而,在优选实施方案中,在其上为精确地降低而对传输比例进行这样控制的队列级别范围在最小队列级别和最大队列之间,最小队列级别大于或等于0,最大队列级别小于或等于最大可能队列级别。
通过步骤232(图16)确定队列34是否有可用的多余带宽。在优选实施方案中,如果队列级别正在增长就确定不存在多余的带宽。也是在优选实施方案中,如果队列34为空,或者如果队列34的队列级别为0或正在降低,就在步骤232中确定存在多余的带宽。因而,步骤232优选地包括确定队列级别并对队列级别和先前的队列级别进行比较。也是在优选实施方案中,如果队列级别不为0也不是正在降低就确定不存在多余的带宽。然而,也完全可以用其它标准来确定是否存在多余的带宽。
如果在步骤232中确定存在多余的带宽,就通过步骤234设置管道的微分传输比例以允许管道的流线性地增加。优选地,步骤234是通过增加每个管道的微分传输比例来实现的。对管道的线性增加可以基于最小流、最大流或权重。因而,对管道的线性增加可以只基于该管道的最小流或最大流,最小流和权重的一些组合,最大流和权重的一些组合,也可以基于最小流、最大流和权重的一些组合。然而,在优选实施方案中,对管道的线性增加基于该管道的最小流。
如果在步骤232中确定不存在多余的带宽,就通过步骤236设置微分传输比例以允许管道的流按指数规律减少。优选地,步骤236是通过指数减少每个管道的微分传输比例实现的。对管道的指数减少可以基于最小流或最大流。因而,对每个管道的指数减少可以只基于该管道的最小流或最大流,也可以基于最小流和最大流的一些组合。然而,在优选实施方案中,对管道的指数减少是基于该管道的最小流。因为减少实际上是按指数规律进行的,因而它也可以基于该管道的当前流。
然后通过步骤238设置传输比例,将其设置为步骤230中确定的全局传输比例和步骤234或236中确定的微分传输比例中的最小值。在一种实施方案中,可以用为前一小时段确定的全局和微分传输比例来实现步骤238。这种情况下,步骤238可以和步骤226到236并行执行。
随后通过步骤240根据传输比例控制通往队列34的流量。在优选实施方案中,步骤240包括随机地或根据像包优先级这样的因素丢弃包,以确保维持在步骤238中确定的传输比例。在别的实施方案中,可以用丢弃比例代替传输比例。通常,丢弃比例等于1减去传输比例。
然后通过步骤242用调度器35来调度从队列中移出单个包以送往该包的最终目的地。调度器35因而为离开队列34的包分配带宽。也就是说,调度器35为即将送出队列34的帧分配时机。调度器35确定在步骤240中允许进入队列34的包何时被移出队列34并送往它们的最终目的。因而调度器35为通过交换机10的流量提供了另一级别的控制。
在优选实施方案中,调度器35根据提供给调度器35的包的特征以及像目标端口(即端口组B36中的一个端口)这样的后继资源的可用带宽来执行步骤242。因此,调度器35将调度每一个包,以使它能够被依照该包的要求发送。例如,可以用实时包提供给调度器35。实行包,例如声音数据的包,可能与传输速度以及传输中的振动有关。另外,调度器35可以考虑发送或接收包的客户机所支付的服务类型。可以用包所来自的管道的最小和最大流或者包本身的类型表示服务类型。对一个实时包来说,调度器35将以高优先级方式调度该包,所以该包能在期望时间帧之内到达。然而,还可以用数据包提供给调度器35,例如仅仅要求以最大努力(best efforts)来到达它的目的地的包。最大努力是廉价的,低级别的服务仅仅要求在发送包到它的目的地的过程中使用网络的最大努力。调度器35可以在一个低得多的级别上调度这样的包,所以只有在交换机10中有足够的带宽时才向前发送这样的包以转发它。
使用在步骤230和234或236中分别设置的全局传输比例和微分传输比例,以确定传输比例结合步骤242中调度器的使用提供了三种好处。第一,方法220能够确保在用全局传输比例作为传输比例期间队列34不变满。填充队列34将需要丢弃任意将要放置在队列34中的将来包,而这是不希望发生的。当队列34的队列级别高到足以引起队列34可能变满时可以选择在步骤238中设置的全局传输比例作为传输比例。因而,在步骤238中全局传输比例优选地很少被设置为传输比例。
当用全局传输比例作为传输比例时,就为由传输比例和队列级别描述的系统提供了精确地降低。这允许通过队列34和交换机10的流量快速达到一个稳定状态。这个稳定状态位于最小和最大期望队列级别之间的一个队列级别上,可以设置它以确保队列级别决不会变大到足以使队列34有变满的危险。因为可以提供精确地降低,当使用全局传输比例时,通过队列34的流量,如同队列级别和传输比例所描述的那样,应该在最短时间内达到稳定状态。
方法220允许以稳定的方式提供有区别服务。通过步骤238,在队列级别不会有超出最大期望队列级别的危险的情况下将使用微分传输比例。也就是说,在步骤234或236中设置的微分传输比例通常将用来在步骤238中提供传输比例。因为微分传输比例线性地增加流并按指数规律减少流,微分传输比例通常确保通过管道流向队列34的流量能够自动并渐近地达到稳定。流将根据队列34是否有多余的带宽而增加或减少。当达到稳定时,只要存在多余的带宽,流就将线性地增加,随后将因为缺乏多余带宽而指数减少,直到多余带宽再次变得可用为止。这种行为将重复下去。也就是说,来自管道的流量能够习惯于一种称为有限循环的稳定循环状态。因而,不管通过管道的流量从什么状态开始,系统都将向着稳定循环行为移动。用别的增加和减少的组合不能达到这个稳定的行为。例如,指数增加和线性减少或者指数增加和指数减少都不能产生稳定的行为。此外,在每个管道的流中的增加和减少将取决于该管道的最小和最大流以及该管道的先前的流。因而,不同的管道可以有不同级别的流或服务。因此,微分传输比例不仅能够分配产生稳定行为,而且还能提供有区别服务并公平地分配队列34的多余带宽。网络管理员或其他用户所要做的所有事情只是根据特定用户所期望的服务级别有区别地为用户设置最小和最大流。因而,方法220可以由希望向不同顾客或为不同介质提供不同级别服务的因特网服务提供商用在多种应用中,例如用在使用了DiffServ的网络中。仅仅通过在方法220中允许为性能总计流、顾客、介质、类别或对应于管道220的其它流设置最小和最大流就能够实现这一点。因而,方法220不仅能够确保以稳定的方式控制队列级别,还能确保以稳定的方式提供有区别服务。
方法220的第三个好处是在步骤242中使用调度器35。因为在步骤238中把传输比例设置成为全局和微分传输比例中的最小值,所以能够控制提供给队列34的流量的数量。其结果是,可以向调度器35提供切实可行的工作量,调度器35能够以期望速率完成它。也就是说,方法220可以防止以比调度器35所能处理的还要高的速率从队列向它提供流量。结果是能够减少或消除因为调度器35带来的延迟。这防止了在延迟、损耗、带宽分配和振动上有不可预知后果的调度器35的上游包形成积压。
图17在250描绘了步骤230的更详细的实施方案,根据队列级别和提供速率控制全局传输比例。步骤230在已经确定了前一小时段的传输比例、队列级别和提供速率后开始。在优选实施方案中,前一小时段的全局传输比例是在方法220的上一次迭代中确定的。然而,如果该传输比例还不可用的话也可以确定它。队列级别优选地是在小时段的末尾相对于最小队列级别Qmin和最大队列级别Qmax确定的。
随后通过步骤252确定队列级别是否大于Qmin。如果不是,就通过步骤254设置全局传输比例为1。因而如果队列级别足够低的话,步骤254确保所有包都将由入队机制32传输给队列34。如果在步骤252中确定队列级别大于Qmin,就通过步骤256确定队列级别是否大于Qmax。如果队列级别大于Qmax,就通过步骤258把全局传输比例设置成0。因而,如果队列级别过高,步骤258能确保所有包都将被丢弃。
如果队列级别既不低于Qmin也不高于Qmax,就通过步骤260为精确地降低控制全局传输比例。为了更清楚地像全局传输比例那样解释设置,将假设通向队列34的提供速率I(t)和从队列34流出的输出速率O(t)在平衡时,即在稳定状态时都是常数。然而,即使在I(t)和O(t)连续变化的地方分析依然是正确的,对网络来说通常也是正确的。
在平衡时,如果输出速率和提供速率是常数,队列级别关于时间而改变的速率和传输关于时间而改变的速率应该是0。也就是说,在平衡时0 =I(t)*gT(t)-O(t)0 =κ(t)(β-αγT(t)-Q/Qmax)I(t) = I=常数O(t) = O=常数gT(t) = 全局传输比例因此,在平衡时,gT =O/Iα*gT=β-Q/Qmax为清楚起见,还假定在Q/Qmax最小时是常数,例如0.25。已经确定在稳定范围中允许的最大I/O比值是1.6;在这个I/O比值上,Q达到了Qmax而T=5/8。同样,已经确定在Q小于等于Qmax/4时gT应该等于1。因而,在这两种极端的平衡下0 = β-α*5/8-1 并且= β-α-_从这些假设,可以确定α和β的值分别为2和2.25。注意Q/Qmax和I/O的其它容许偏差可以产生其它数值的和。因此,可以根据平衡条件和与期望交换机10在其中进行操作的范围有关的一些假设来确定和。为稳定起见,针对上面的假设,可以把它表示为α2*κ2(t) = 4*κ(t)*I/Qmax或者κ(t) = 4*I/(Qmax*α2)= I(t)/Qmax因而,可以选择(t)、α和β来产生传输比例,该传输比例将在期望系统对其进行操作的数值中提供精确地降低。使用上面的方程,可以为交换机10提供为提供精确地降低而期望的传输比例。例如,使用上面对Q/Qmax和I/O的假设,由传输比例和队列级别所描述的系统是Q(t+Dt)=Q(t)+[I(t)*gT(t)-O(t)]*DtgT(t+Dt)=gT(t)+(I(t)*Dt/Qmax)*(2.25-2*gT(t)-Q(t)/Qmax)*Dt其中Dt = 计算Q和T之间的时间间隔= 小时段的时间Q(t)/Qmax大于或等于0.25I(t)/O(t) 小于或等1.6为了解决违反Q(t)、I(t)和O(t)的上述条件的情况,可以根据队列级别更改传输比例。例如,当Q/Qmax时可以使传输比例为1。同样,当I(t)/O(t)大于1.6时,队列将开始以比预期更快的速度充满。因此,当队列达到一个级别或接近最大值时可以把传输比例设为0或某一很小的值。
这样,就根据队列级别、提供速率和来自前一小时段的传输比例,以及小时段长度为精确地降低设置了全局传输比例。如果用全局传输比例作为传输比例,由入队机制32传输或丢弃包以使提供给队列34的包的比例等于传输比例。优选地是以和RED方法中所用类似的方式随机地丢弃包。然而,也可以根据它们的优先级丢弃包。此外,优选地还要向发送被丢弃包的主机提供一个通知,以使该主机能够暂停通向交换机10的流量。
因而,可以使用方法230为精确地降低设置全局传输比例。优选地精确地降低只能在期望的队列级别范围内发生。在此范围之外,根据确定队列级别对精确地降低计算是过高或者过低,全局传输比例被设置为0或1。因为可以随机地或者至少部分根据包的优先级来丢弃包,因而可以防止向交换机10发送流量的主机的同步。因为提供了精确地降低,方法220和230能够比RED方法为系统提供更好的稳定性。因为提供了精确地降低,方法220和230也能比RED方法更快地达到平衡。因此,提高了使用交换机10,而交换机10使用了方法220和230的网络的性能。
图18描绘了依照本发明用于提供微分传输比例的方法270的更详细的流程图。方法270可以用来执行图15和16中描绘的方法220中的步骤232、234和236。再来参考图18,假定队列级别、瞬时多余带宽信号B和多余带宽值E都已经可用,优选地来自方法270的上一次迭代。然而,如果它们不可用,就应该计算这些值。在优选实施方案中,前一小时段的流也应该是可用的。
方法270在已经为正在控制的每个管道设置了最小和最大流之后开始,设置可以由网络管理员进行。通过步骤272根据管道的最小和最大流为该管道计算常数。对每个管道i,在步骤272中计算常数Ci和Di。常数Ci用于线性增加管道i的流,如下所述。类似地,常数Di用于指数减少管道i的流,如下所述。在优选实施方案中,常数Ci和Di都是基于最小流。在一种替代实施方案中,还可以为提供不同管道的权重。这种情况下,还可以根据所提供的权重计算常数Ci和Di。
根据最小流确定用于增加或减少管道的流的常数,在用到权重的地方还要根据权重来确定。优选地,按照下列公式计算一个管道的用于增加流的常数Ci和用于减少流的常数DiCi=(Wi/W)*(S+fimin-∑fjmin)/16j如果所有的权重都等于1,就象在优选实施方案中那样,那么Ci=(S+fimin-∑S fjmin)/16jDi=(S-fimin)*4其中Wi= 第i个管道的权重,优选地它是在
范围内W = 所有N个权重的总和fimin= 第i个管道的最小流另外,再次选择流单元以使Dt和Qmax为1。
一旦确定了这些常数,就允许流量通过管道流向队列34。通过步骤274确定是否存在多余的带宽。在优选实施方案中,只有当队列34的队列级别为0或正在下降时才确定存在多余带宽。否则将确定不存在多余的带宽。然而,也完全可以使用其它标准来确定是否存在多余的带宽。在优选实施方案中,队列级别是整个存储器资源的级别。然而,也可以为逻辑队列或子队列确定队列级别。如果不存在多余的带宽,就通过步骤280设置瞬时多余带宽信号B为0。信号B被称为瞬时的是因为它是基于对队列级别的单一测量和对队列级别中的变化的单一确定。然后通过步骤282设置多余带宽值E为一个常数,优选地为31/32,乘以它的前一个值,再加上1减去同一常数,优选地为1/32,乘以B。因而,在优选实施方案中,多余带宽值E是瞬时多余带宽信号B的指数加权平均。因为瞬时多余带宽信号是0,所以要在步骤282中适当地设置多余带宽值。
如果在步骤274中确定存在多余的带宽,就通过步骤276把瞬时多余带宽信号设置为1。然后通过步骤278把多余带宽值E设置为瞬时多余带宽信号的指数加权平均。因而,在优选实施方案中,多余带宽值是第一个常数乘以先前的多余带宽值再加上第二个常数乘以瞬时多余带宽信号。第一个和第二个可以常数都小于1,优选地分别为31/32和1/32。在优选实施方案中,设置指数加权带宽值为E(t+Dt) = (31/32)*E(t)+B(t)/32其中E(t+Dt) = 当前小时段的多余带宽值E(t) = 前一小时段的多余带宽值B(t) = 前一小时段的瞬时多余带宽信号在优选实施方案中,通过步骤284设置每个管道i的微分传输比例,与步骤274到282并行。然而,在一种替代实施方案中,可以和瞬时多余带宽信号以及多余带宽值串行更新微分传输比例。如果先前的瞬时多余带宽信号B为1(多余带宽可用),那么步骤284将根据先前的微分传输比例、常数Ci和多余带宽值设置每个管道i的微分传输比例。优选地,对于先前存在多余带宽,在步骤184中设置的微分传输比例是Ti(t+Dt) = Ti(t)+Ci*E(t)其中Dt = 小时段长度(自上次计算传输比例以来的时间)Ti(t) = 第i个管道在前一小时段(时间t)中的微分传输比例优选地,对流单元进行设置以使Dt和最大可能队列级别Qmax为1。因而,微分传输比例线性下降。此外,只要多余带宽继续存在,微分传输比例就将继续线性增加。如果在前一小时段中不存在多余的带宽(B为0),就在步骤284中根据该管道先前的微分传输比例Ti(t)、Di和该管道先前的流fi(t)设置第i个管道的微分传输比例Ti(t+Dt)。当先前不存在多余带宽时,优选地由下式给出微分传输比例Ti(t+Dt)=Ti(t)-Di*fi(t)因而,在步骤284中设置的微分传输比例确保只要多余带宽继续不存在,微分传输比例就将按指数规律下降,而且流也将因此而按指数规律下降。
图19描绘了和本发明一起使用的调度器290的优选实施方案。调度器290因而优选地被用作调度器21、25、29、35,尤其是调度器35。调度器290包括日历292、294和296以及加权公平排队环(“环”)298。然而,注意其它调度器(未显示)也可以和本发明一起使用。例如,一个或多个FIFO,它比可能要用到的调度器290简单一些。在别的实施方案中可能使用一种EDF(最早最终期限优先)调度器,这种调度器检查每个包的最终期限,并把有最早最终期限的包放在队列中的第一位以便发送。类似地,在别的实施方案中,还可以使用别的调度器。通常,无论使用什么样的调度器,都可以假定该调度器通过重复选择将要发送的下一包来重复执行一些期望的策略或策略组合。在一种优选实施方案中,策略可以是简单的,而且可由两个FIFO机制实现调度(一个用于带绝对优选级的实时流量,另一个用于所有其它流量,仅当第一个FIFO为空时才服务)。作为选择,在一种替代优选实施方案中,可以由复杂的调度器实施几种要求持续发送速率、峰值发送速率、最大释放数量和振动限制的策略。不管是什么情况,调度器本身并不进行流控制,即在拥塞期间有目的地丢弃低值包。而是由上面所描述的上游流控制机制用全局和微分传输比例提供流控制,同时满足简易性、健壮性、稳定性、公平带宽分配、低丢失率、低缓冲区占用率和高利用率这几个相互竞争的目标。
每个日历292、294和296都如前所述运行。因而,每个日历292、294和296都有特定数量的位置。注意在一个日历292、294或296中的位置编号可能不同于另一个日历292、294或296中的位置编号。每个位置可以容纳0个或1个将要发送的包。在本公开内容的上下文中,调度器,例如调度器290,日历292、294或296或者环298将被描述为有一个包。然而,调度器290,日历292、294或296,以及环298优选地使用包的标识符而不是包本身。
每个日历292、294或296在每个位置中花费特定量的时间。在优选实施方案中,日历292是低延迟日历,因而拥有日历292、294和296中最高的优先级。日历294是正常延迟日历,因而拥有日历292、294和296中次高的优先级。日历296是峰值速率日历,因而拥有日历292、294和296中最低的优先级。因此,在优选实施方案中,在日历292的每个位置中花费的时间少于在日历294的每个位置中花费的时间。同样,在日历294的每个位置中花费的时间少于在日历296的每个位置中花费的时间。因而日历292、294和296用于调度最高、正常和最低优先级的包。通过遍历日历292、294和296中每一个日历中的位置,调度器220确保按照包的优先级从相应的队列发送包,例如队列16。
环298优选地用于调度最低优先级的包。因而,放在环298中的包比放在日历292、294或296中的包的优先级都低。环298优选地是任务守恒的。因而,在特定的时间上,只要环228不为空,它就将做固定量的工作。环298也有特定数量的位置。环298中每个位置有正好0或1个包。然而,在遍历环298时,环228跳过没有被占据的那些位置,直接定位到下一个被占据的位置。其结果是环298任务守恒。
图20描绘了使用调度器290调度包的方法300的一种实施方案的简化流程图。通过步骤302确定将要被调度的包的特征,例如包类型。将被调度的包的类型可以部分基于该包携带的数据种类,例如像视频这样的实时数据和像电子邮件这样的纯数据。另外,也可以考虑包所来自的管道的类型。例如,在一种实施方案中,通常可用的管道类型是加速转发(EF)、最大努力(BE)和确保转发(AF)。典型地,EF管道携带实时流量。EF管道允许流量最高以可保障的最大流速率流动,并因此而提供高级别但相对昂贵的服务。由EF管道以高于可保障的最大流速率携带的流量可能会被丢弃。因而,很可能把EF管道的流量映射到高优先级日历,例如日历292,但也可能映射到日历294和296。BE管道通常携带低优先级的流量,例如数据包。BE管道通常使用在为更高优先级的流量至少分配了它的最小带宽之后可用的网络资源携带流量。因而可以把BE管道的流量映射到环298。AF管道拥有可保障的最低速率,顾客通常要为它支付额外的价格。然而,可以为AF管道分配网络中可用的多余资源或带宽的一些部分。因而可以把AF管道的流量映射到日历292、294和296以及环298的一些组合。
在优选实施方案中,还通过步骤304确定与将要调度的包来自同一管道(对应的管道)的上一个包的特征,例如包类型。然后通过步骤306确定将要调度的包是否是最高优先级。步骤306中所认为的“最高优先级”可以是一个高优先级的范围。另外,包优先级的确定可以考虑上一个包的优先级以及对应的管道的流速率。例如,如果一个包有高优先级,例如实时包,但指示对应管道的流高于能够保障的速率,就认为该包不具有最高优先级。如果将要调度的包具有最高优先级,就通过步骤308把它放到日历292中的一个位置中。在一种实施方案中,放置该包的位置要考虑日历292中其它一些包的属性。在一种实施方案中,该包被放在日历292中的一个开放位置当中。然而,在一种替代实施方案中,也可以把该包放在一个被占据的位置中,把该位置上原先的包移到另一个位置。
如果将要调度的包不具有最高优先级,就通过步骤310确定它是否具有次高优先级。步骤310中所认为的“次高优先级”可能是一个优先级范围。另外,包优先级的确定可以考虑上一个包的优先级和对应管道的流速率。如果该包具有次高优先级,就通过步骤312把它放在拥有次高优先级的日历294中的一个位置里。在一种实施方案中,放置该包的位置要考虑日历294中其它一些包的属性。在一种实施方案中,该包被放在日历294中的一个开放位置里。然而,在一种替代实施方案中,可以把该包放置在一个已被占据的位置中,并把该位置上原来的包移到另一个位置。
如果将要调度的包不具有次高优先级,就通过步骤314确定它是否具有第三高优先级。步骤314中所认为的“第三高优先级”可以是一个优先级范围。另外,包优先级的确定可以考虑上一个包的优先级和对应管道的流速率。如果该包具有第三高优先级,就通过步骤316把它放在拥有第三高优先级的日历296中的一个位置里。在另一种实施方案中,放置该包的位置要考虑日历296中其它一些包的属性。在一种实施方案中,该包被放在日历296中的一个开放位置里。然而,在一种替代实施方案中,可以把该包放在一个已被占据的位置中,并把该位置上原来的包移到另一个位置。
如果将要调度的包不具有第三高优先级,就通过步骤318把它放在环298中的一个位置里。在一种实施方案中,放置该包的位置要考虑环298中其它一些包的属性。在一种实施方案中,该包被放置在环298中的一个开放位置里。然而,在一种替代实施方案中,可以把该包放在一个已被占据的位置中,并把该位置上原来的包移到另一个位置。在优选实施方案中,步骤318在把包放在环298的过程中考虑来自相同管道的上一个包的大小。例如,如果不存在上一个包,就把该包优选地放置在环298中最远的未占据位置中。然而,如果来自相同管道的上一个包很大,就把该包优选地放在更远的未占据位置上。如果来自相同管道的上一个包很小,把该包优选地放在环298中更近的未占据位置上。因而,发送较大包的管道对环298的每次遍历将会有较少的时机(位置)。包的放置优选地部分基于来自相同管道的上一个包的大小,以确保环298以近似相同的速率工作在不同的管道上。
图21是描绘方法320的一种实施方案的流程图,方法320用于根据日历292、294和296以及环298中包的位置从相应的队列发送包。通常,调度器290从日历292发送包比从日历294发送包更快。调度器290从日历294发送包也比从日历296发送包更快。调度器290从日历296发送包也比从环298发送包更快。因而,用日历292、294和296调度的包优选地在环298中调度的包之前发送。
通过步骤322确定最高优先级日历292中的当前位置是否为空。如果当前位置不空,就通过步骤324把日历292当前位置中的包移出队列并送往交换机的下一部分。如果日历292中的当前位置为空,就通过步骤326确定次高优先级日历294中的当前位置是否为空。如果日历294中的当前位置不空,就通过步骤328把该位置中的包移出队列并送往交换机的下一部分。如果日历294中的当前位置为空,就通过步骤330确定第三高优先级日历296中的当前位置是否为空。如果日历296中的当前位置不是未占据的,就通过步骤332把步骤296中的包移出队列并送往交换机的下一部分。如果日历296中的当前位置是未占据的,就确定环298中的当前位置是否为空(步骤334)。如果不为空,就把与环298中的位置对应的包移出队列并送往交换机的下一部分(步骤336),直到要移往日历292、294或296中某个日历的下一位置的时候为止。优选地,当队列292中的下一个位置将要变成当前位置时会发生这种情况。这是因为最高优先级日历292优选地在每个位置中花费最短的时间。
通过步骤338使一个或多个日历中的下一个位置成为该日历中的当前位置。不管调度器290的哪个部分发送包,至少前进了一个日历。在优选实施方案中,步骤338至少前进日历292到下一个位置。也在是优选实施方案中,日历294和296以几倍于日历292前进到下一个位置的时间前进到它们的下一个位置。例如,在一种实施方案中,日历294每前进到它的下一个位置一次,日历292已经前进到它的下一个位置512次。因而,在优选实施方案中,步骤338可以前进多个日历292、294和296到下一位置。然后可以重复方法320。因而,使用方法300和320,流量的流、持续速率、峰值速率和释放数量都是被按照所期望的而对待的。如果流量的流速率等于或低于持续速率,就允许包以常规间隔进入高优先级日历292。如果流量的流速率高于持续速率但低于峰值速率,就暂时由释放数量确定,依然在较高优先级的日历292、294和296中调度包。如果流量保持高于持续速率并低于峰值速率更长的时间,那么包就进入环298,它只确保用最大努力来发送包。如果流后来又回落到等于或低于可保障速率,或者持续速率,就可以再次在高优先级日历中调度包。然后用日历292、294和296,以及环298和方法320把包移出队列。
因而,调度器290根据包的特征以及包所来自的管道的特征调度单个包从队列以及从管道的移出,队列例如队列34,管道特征例如来自该管道的上一个包的特征。其结果是,调度器290能够很好地控制通过交换机的流量。
因而,使用上述方法能够控制通过交换机10的流量和交换机10本身。例如通过使用全局传输比例可以确保交换机10的存储器资源不会被耗尽。尤其在大多数情况下可以驱动特定存储器资源的队列级别为一个很小的值。小队列级别不仅确保队列不会被耗尽,还确保能够减少或避免部分因为满队列或接近满的队列而产生的振动及其它不受欢迎的现象。另外,例如通过使用微分传输比例能够提供有区别服务。因而可以向不同的顾客提供不同级别的服务。另外,调度器能够确保在包级别上控制流量。此外,使用上述调度器和方法能够确保向调度器提供切实可行的工作量让它完成。因而,可以减少或消除因调度器而带来的额外延迟。
已经公开了用于控制通过网络的流量的方法和系统。为实现本发明而写的软件将存储在某种形式的计算机可读介质中,例如存储器、CD-ROM或通过网络传输,并由处理器执行。作为选择,可以用硬件实现本发明的部分或全部。虽然已经根据所示的实施方案描述了本发明,但本领域的技术人员将很容易理解对该实施方案可以有多种变化,而且这些变化应该在本发明的精神和范围之内。因此,本领域的技术人员可以在不背离所附权利要求的情况下进行很多更改。
权利要求
1.一种方法,包括以下步骤(a)控制通过计算机网络中一个队列移动的多个包的流,和(b)确定该队列的队列级别;(c)确定通往该队列的多个包的提供速率;(d)根据队列级别和提供速率控制通往该队列的多个包的传输比例,如果队列级别在第一队列级别和第二队列级别之间,传输比例和队列级别被精确地降低。
2.根据权利要求1的方法,其中该队列拥有可能的最大队列级别,并且进一步包括下列步骤(e)根据已确定的队列级别和最大队列级别确定一个虚拟最大队列级别。
3.根据权利要求2的方法,其中虚拟最大队列级别确定步骤(e)进一步包括以下步骤(e1)如果队列级别高于第一个阈值,就把虚拟最大队列级别增加到一个小于或等于最大队列级别的最大值;和(e2)如果虚拟队列级别低于第二个阈值就降低虚拟最大队列级别。
4.根据权利要求2的方法,其中虚拟队列级别确定步骤(e)进一步包括以下步骤(e1)为最大队列级别提供一个乘数,该乘数是一个指数加权平均,如果队列级别低于一个阈值,它接近第一个级别,如果队列级别高于该阈值它接近第二个级别,与虚拟队列级别对应的第一个级别是一个最小虚拟队列级别,与虚拟队列级别对应的第二个级别是最大队列级别;并且其中的传输比例控制步骤(d)进一步包括以下步骤(d1)根据队列级别、提供速率、先前的传输比例、乘数和最大队列级别,控制传输比例。
5.根据权利要求4的方法,其中乘数提供步骤(e1)包括以下步骤(e1i)如果队列级别低于阈值,设置乘数等于第一个常数乘以先前的乘数再加上第二个常数;和(e1ii)如果队列级别高于阈值,设置乘数等于第一个常数乘以先前的乘数再加上第三个常数。
6.根据权利要求5的方法,其中传输比例控制步骤(d1)进一步包括以下步骤(d1i)如果队列级别低于最小队列级别,控制传输比例为1;和(d1ii)控制传输比例为1和第二个值中的最小值,第二个值是第四个常数和第三个值中的最大值,第三个值是先前的传输比例加上第四个值,第四个值是第五个值乘以第六个值,第五个值是第五个常数乘以先前的乘数乘以提供速率乘以时间间隔再除以最大队列级别,第六个值是第六个常数减去第七个常数与先前的传输比例的乘积、再减去第八个常数乘以先前的乘数乘以队列级别除以最大队列级别。
7.根据权利要求6的方法,其中队列级别是先前的队列级别,提供速率是先前的提供速率。
8.根据权利要求1的方法,其中对传输比例是在多个小时间段中的每个小时间段之后进行控制的,且其中的传输比例控制步骤(d)进一步包括以下步骤(d1)根据前一小时间段的队列级别、提供速率和传输比例控制多个小时间段中的一个小时间段的传输比例,使得该小时间段的传输比例和前一小时间段的队列级别被精确地降低。
9.根据权利要求1的方法,其中队列进一步包括一个硬件存储器资源。
10.根据权利要求1的方法,其中传输比例控制步骤(d)进一步包括下列步骤(d1)设置传输比例关于时间的变化等于第一个数值乘以第二个数值,第一个数值取决于时间;第二个数值是第一个常数减去第二个常数乘以传输比例,再减去队列级别除以最大可能队列级别。
11.根据权利要求1的方法,其中传输比例控制步骤(d)进一步包括以下步骤(d1)根据传输速率和多个包中每个包的优先级丢弃多个包的一部分。
12.根据权利要求1的方法,其中传输比例控制步骤(d)进一步包括以下步骤(d1)控制传输比例,使得如果队列级别低于最小阈值就传输多个包中的每一个包;(d2)控制传输比例,使得如果队列级别高于最大阈值就不传输多个包中的任何包,或者只传输其中的一小部分;和(d3)控制传输比例,使得如果队列级别在最小阈值和最大阈值之间就精确地降低传输比例和队列级别。
13.根据权利要求1的方法进一步包括(e)定义多个使用队列的管道;(f)为多个管道中的每个管道设置最小流和最大流;(g)确定队列是否存在多余的带宽;和(h)如果存在多余带宽并且多个管道中某个管道的流小于该管道的最大流,就根据最小流和最大流中的一个线性增加该管道的流;或者(i)如果不存在多余带宽并且流大于管道的最小流,就根据最小流和最大流中的一个,按指数规律减少该管道的流,使得通过队列的流量就稳定了。
14.根据权利要求13的方法,其中多个管道是多个性能总计流。
15.根据权利要求13的方法,其中增加和减少步骤(h)和(i)是针对多个管道中的每一个管道执行的。
16.根据权利要求13的方法,其中多余带宽确定步骤(g)进一步包括以下步骤(g1)确定队列的队列级别;(g2)确定队列级别是否已经增加或减少;和(g3)如果队列级别已经减少或者为0就确定存在多余带宽,否则确定不存在多余带宽。
17.根据权利要求16的方法,其中多余带宽确定步骤(g3)进一步包括以下步骤(g3i)如果队列级别已经减少或者为0就设置瞬时多余带宽信号为1,否则设置瞬时多余带宽信号为0。
18.根据权利要求17的方法,其中多余带宽确定步骤(g3)进一步包括以下步骤(g3ii)设置多余带宽信号为瞬时多余带宽信号的指数加权平均。
19.根据权利要求18的方法,其中多个管道中某个管道的流是提供速率乘以传输比例,而且其中的增加和减少步骤(h)和(i)进一步包括以下步骤(h1)如果存在多余带宽,就设置流的传输比例为先前的传输比例加上第一个数值,第一个数值是第一个常数乘以多余带宽信号;和(i1)如果不存在多余带宽,就设置传输比例为先前的传输比例减去第二个数值,第二个数值是先前的流乘以第二个常数。
20.根据权利要求19的方法,其中第一个和第二个常数取决于该管道的最小流。
21.根据权利要求20的方法,其中第一个常数是一个权重乘以第三个数值,第三个数值是队列服务速率加上该管道的最小流再减去多个管道中每个管道的最小流之和。
22.根据权利要求13的方法,其中流是传输比例乘以提供速率,并且其中的增加和减少步骤(h)和(i)进一步包括以下步骤(hi1)如果来自多个管道的多个流之和大于第一个队列级别,就设置流的传输比例为第一个常数;(hi2)如果该管道的流小于或等于该管道的最小流,就设置该管道的传输比例为1和该管道先前的传输比例加第一个常数之和中的最小值;(hi3)如果该管道的流大于该管道的最大流,就设置传输比例为该管道先前的传输比例乘以第二个常数,第二个常数小于1;(hi4)否则设置该管道的传输比例为全局传输比例和第一个数值中的最小值;如果存在多余带宽,第一个数值为先前的传输比例加上第二个数值;如果不存在多余带宽,第一个数值为先前的传输比例减去第三个数值;第二个数值为第三个常数乘以一个信号,第三个常数取决于最小流,在多次存在多余带宽的情况下该信号接近于1,在多次不存在多余带宽的情况下该信号接近于0;第三个数值是第四个常数乘以先前的流,第四个常数取决于最小流;全局传输比例允许在全局传输比例和队列级别之间的精确地降低。
23.根据权利要求22的方法,其中全局传输比例是1和第一个数值中的最小值,第一个数值是第五个常数和第二个数值中的最大值,第二个数值是先前的全局传输比例加上第三个数值,第三个数值是第四个数值乘以第五个数值,第四个数值是第六个常数乘以先前的乘数乘以全局提供速率乘以时间间隔再除以最大队列级别,第五个数值是第七个常数减去第八个常数乘以先前的乘数乘以队列级别除以最大队列级别;乘数是指数加权平均,如果先前的队列级别低于一个阈值它接近第一个级别,如果先前的队列级别高于该阈值它接近第二个级别。
24.根据权利要求13的方法,其中控制传输比例的步骤(d)控制全局传输比例,并且该方法进一步包括以下步骤(j)设置多个管道中一个管道的流的传输比例为全局传输比例和微分传输比例中的最小值;如果存在多余的带宽并且多个管道中某个管道的流小于该管道的最大流,微分传输比例能够根据最小流或最大流线性增加该管道的流;如果不存在多余带宽并且多个管道中某个管道的流大于该管道的最小流,微分传输比例能够根据最小流或最大流按指数规律减少该管道的流;使得通过队列的流量就稳定了;(k)根据传输比例控制通往队列的流量的传输;(l)使用调度器控制来自队列的流量。
25.权利要求24的方法,其中传输比例设置步骤(j)进一步包括以下步骤(j1)如果存在多余带宽,就设置流的微分传输比例为先前的微分传输比例加上第一个数值,第一个数值是第一个常数乘以多余带宽值;和(j2)如果不存在多余带宽,就设置微分传输比例为先前的微分传输比例减去第二个数值,第二个数值是先前的流乘以第二个常数。
26.权利要求24的方法,其中传输比例设置步骤(j)进一步包括以下步骤(j1)如果来自多个管道的多个流之和大于第一个队列级别,就设置流的微分传输比例为第一个常数;(j2)如果管道的流小于或等于该管道的最小流,就设置该管道的微分传输比例为1和该管道先前的微分传输比例加上第一个常数之和中的最小值;(j3)如果管道的流大于该管道的最大流,就设置微分传输比例为该管道先前的微分传输比例乘以第二个常数,第二个常数小于1;和(j4)否则就设置该管道的传输比例为全局传输比例和第一个数值中的最小值;如果存在多余带宽,第一个数值是先前的微分传输比例加第二个数值;如果不存在多余带宽,第一个数值是先前的微分传输比例减去第三个数值;第二个数值是第三个常数乘以一个信号,第三个常数取决于最小流,在多次存在多余带宽的情况下该信号就接近于1,在多次不存在多余带宽的情况下该信号就接近于0;第三个数值是第四个常数乘以先前的流,第四个常数取决于最小流。
27.权利要求24的方法,其中传输比例设置步骤(j)是针对多个管道中的每个管道执行的。
28.权利要求24的方法,其中全局传输比例是1和第一个数值中的最小值;第一个数值是第五个常数和第二个数值中的最大值,第二个数值是先前的全局传输比例加上第三个数值,第三个数值是第四个数值乘以第五个数值,第四个数值是第六个常数乘以先前的乘数乘以全局提供速率乘以时间间隔除以最大队列级别,第五个数值是第七个常数减去第八个常数乘以先前的乘数乘以队列级别除以最大队列级别;乘数是指数加权平均,如果先前的队列级别低于一个阈值它就接近于第一个级别,如果先前的队列级别大于该阈值它就接近于第二个级别。
29.权利要求24的方法,其中多个管道中的每一个管道包括至少一种类型的服务,而且其中使用步骤(l)进一步包括以下步骤(l1)使用调度器根据至少一种类型的服务为多个管道中的每一个管道调度来自队列的流量。
30.权利要求29的方法,其中至少一种类型的服务是多个管道中每个管道的多个流中的每个流的特定类型的服务,而且其中使用步骤(l)进一步包括以下步骤(l1i)根据多个流中每个流的特定类型的服务为多个流中的每个流调度来自队列的流量。
31.权利要求24的方法,其中调度器包括至少一个日历。
32.权利要求24的方法,其中调度器包括至少一个加权公平排队环。
33.权利要求24的方法,其中调度器包括至少一个日历和至少一个加权公平排队环。
34.权利要求24的方法,其中调度器包括至少一个日历和至少一个先进先出机制。
35.一种设备,包括队列,用于存储通过计算机网络移动的多个包的流的一部分;入队机制,与队列连接,用于接收提供速率的多个包并控制通往队列的多个包的传输比例,传输速率是根据队列的队列级别和提供速率控制的,使得如果队列级别在至少第一队列级别和第二队列级别之间传输比例和队列级别被精确地降低。
36.根据权利要求35的设备,其中入队机制根据队列的队列级别和最大队列级别确定虚拟最大队列级别,入队机制根据队列的队列级别、提供速率以及虚拟最大队列级别控制传输速率。
37.根据权利要求36的设备,其中入队机制进一步包括如果队列级别高于第一个阈值,就把虚拟最大队列级别增加到小于或等于最大队列级别的最大值;如果队列级别低于第二个阈值就降低虚拟最大队列级别。
38.根据权利要求36的设备,其中入队机制进一步为最大队列级别提供乘数,乘数是指数加权平均,如果队列级别低于一个阈值它接近于第一个级别,如果队列级别高于该阈值它接近于第二个级别,对应于虚拟队列级别第一个级别是最小虚拟队列级别,对应于虚拟队列级别的第二个级别是最大队列级别;并且其中的入队机制进一步根据队列级别、提供速率、先前的传输比例、乘数和最大队列级别控制传输比例。
39.根据权利要求38的设备,其中入队机制进一步包括如果队列级别低于该阈值,就设置乘数等于第一个常数乘以先前的乘数再加上第二个常数;如果队列级别高于该阈值,就设置乘数等于第一个常数乘以先前的乘数再加上第三个常数。
40.根据权利要求39的设备,其中入队机制进一步控制传输比例为1和第二个数值中的最小值,第二个数值是第四个常数和第三个数值中的最大值,第三个数值是先前的传输比例加上第四个数值,第四个数值是第五个数值乘以第六个数值,第五个数值是第五个常数乘以先前的乘数乘以提供速率乘以时间间隔再除以最大队列级别,第六个数值是第六个常数减去第七个常数乘以称前的传输比例再减去第八个常数乘以先前的乘数乘以队列级别除以最大队列级别。
41.根据权利要求40的设备,其中队列级别是先前的队列级别,传输速率是先前的传输速率。
42.根据权利要求36的设备,其中队列进一步包括一个硬件存储器资源。
43.根据权利要求36的设备,其中入队机制进一步根据传输速率和多个包中每个包的优先级丢弃多个包的一部分。
44.根据权利要求35的设备,其中的队列由多个管道使用,而流量是通过这些管道进行传输的,进一步,其中的入队机制使用由用户为多个管道中的每个管道设置的最小流和最大流,入队机制为队列确定是否存在多余带宽,并且(a)如果存在多余带宽并且多个管道中某个管道的流小于该管道的最大流,就根据最小流和最大流线性增加该管道的流;或者(b)如果不存在多余带宽并且多个管道中某个管道的流大于该管道的最小流,就根据最小流和最大流按指数规律减少该管道的流;使得通过队列的流量就稳定了。
45.根据权利要求44的设备,其中的多个管道是多个性能总计流。
46.根据权利44的设备,其中入队机制根据是否存在多余带宽而增加或减少多个管道中每个管道的流。
47.根据权利要求44的设备,其中入队机制通过确定队列的队列级别、确定队列级别是否已经增加或减少来确定是否存在多余带宽,如果队列级别已经减少或者为0指示存在多余带宽,否则指示不存在多余带宽。
48.根据权利要求47的设备,其中通过如果队列级别已经减少或者为0就设置瞬时多余带宽信号为1,否则设置瞬时多余带宽信号为0,入队机制进一步指示多余带宽存在。
49.根据权利要求48的设备,其中入队机制进一步通过设置多余带宽信号为瞬时多余带宽信号的指数加权平均来指示多余带宽存在。
50.根据权利要求49的设备,其中管道的流是提供速率乘以传输比例,而且其中的入队机制进一步通过设置传输比例来增加或减少流,如果存在多余带宽就设置传输比例为先前的传输比例加上第数值,第一个数值是第一个常数乘以多余带宽信号;如果不存在多余带宽就设置传输比例为先前的传输比例减去第二个数值,第二个数值是先前的传输比例乘以第二个常数。
51.根据权利要求50的设备,其中第一个常数和第二个常数取决于管道的最小流。
52.根据权利要求51的设备,其中第一个常数是.125,第二个常数是.875。
53.根据权利要求51的设备,其中第一个常数是一个权重乘以第三个数值,第三个数值是队列服务速率加上管道的最小流减去多个管道中每个管道的最小流的和。
54.根据权利要求44的设备,其中入队机制进一步通过设置传输比例来增加或减少流,如果来自多个管道的多个流之和大于第一个队列级别,就设置传输比例为第一个常数;如果某个管道的流小于或等于该管道的最小流,就设置该管道的传输比例为1和该管道先前的传输比例加上第一个常数之和中的最小值;如果某个管道的流大于该管道的最大流,就设置传输比例为该管道先前的传输比例乘以第二个常数,第二个常数小于1;否则设置该管道的传输比例为全局传输比例和第一个数值中的最小值,如果存在多余带宽,第一个数值为先前的传输比例加上第二个数值,如果不存在多余带宽,第一个数值为先前的传输比例减去第三个数值,第二个数值为第三个常数乘以一个信号,第三个常数取决于最小流,在多次存在多余带宽的情况下该信号接近于1,在多次不存在多余带宽的情况下该信号接近于0;第三个数值是第四个常数乘以先前的流,第四个常数取决于最小流;全局传输比例允许在全局传输比例和队列级别之间的精确地降低。
55.根据权利要求54的设备,其中全局传输比例是1和第一个数值中的最小值;第一个数值是第五个常数和第二个数值中的最大值,第二个数值是先前的全局传输比例加上第三个数值,第三个数值是第四个数值乘以第五个数值,第四个数值是第六个常数乘以先前的乘数乘以全局提供速率乘以时间间隔除以最大队列级别,第五个数值是第七个常数减去第八个常数乘以先前的乘数乘以队列级别除以最大队列级别;乘数是指数加权平均,如果先前的队列级别低于一个阈值它就接近于第一个级别,如果先前的队列级别大于该阈值它就接近于第二个级别。
56.根据权利要求44的设备,其中该设备包括与多个插片对应的多个处理器,每个处理器有多个端口,而且其中的队列是多个处理器中一个处理器的队列。
57.根据权利要求44的设备,其中入队机制根据队列级别和提供速率控制通往队列的多个包的全局传输比例,使得如果队列级别在至少第一队列级别和第二队列级别之间时全局传输比例和队列级别被精确地降低;而且入队机制还设置多个管道中一个管道的流的传输比例为全局传输比例和微分传输比例中的最小值,如果存在多余带宽并且多个管道中某个管道的流小于该管道的最大流,微分传输比例能够根据最小流和最大流增加该管道的流,如果不存在多余带宽并且多个管道中某个管道的流大于该管道的最小流,微分传输比例能够根据和最大流按照指数规律减少该管道的流,使得通过队列的流量就稳定了;而且入队传输机制还根据传输比例控制通往队列的流量的传输;并且进一步包括调度器,以控制来自队列的流量。
58.根据权利要求57的设备,其中多个管道中的每个管道包括至少一种类型的服务,并且其中的调度器进一步根据至少一种类型的服务为多个管道中的每个管道调度来自队列的流量。
59.根据权利要求58的设备,其中至少一种类型的服务是多个管道中每个管道的多个流中的每个流的特定类型的服务,并且其中的调度器根据多个流中每个流的特定类型的服务为多个流中的每个流调度来自队列的流量。
60.根据权利要求57的设备,其中调度器包括至少一个日历。
61.根据权利要求57的设备,其中调度器包括至少一个加权公平排队环。
62.根据权利要求57的设备,其中调度器包括至少一个日历和至少一个加权公平排队环。
63.根据权利要求57的设备,其中调度器包括至少一个日历和至少一个先进先出机制。
64.根据权利要求35的设备,其中入队机制在多个小时间段中的每个小时间段之后控制传输比例,并且其中入队机制根据前一小时间段的队列级别、前一小时间段的提供速率和前一小时间段的传输比例控制多个小时间段中每个小时间段的传输比例,使得每个小时间段的传输比例和队列级别便会被精确地降低。
65.根据权利要求35的设备,其中队列进一步包括一个硬件存储器资源。
66.根据权利要求35的设备,其中入队机制进一步通过设置传输比例关于时间的变化来控制传输比例,设置其为第一个数值乘以第二个数值,第一个数值取决于时间,第二个数值是第一个常数减去第二个常数乘以传输比例再减去队列级别除以最大可能队列级别。
67.根据权利要求35的设备,其中入队机制进一步根据传输速率和多个包中每个包的优先级而丢弃这多个包中的一部分包。
68.根据权利要求35的设备,其中入队机制进一步控制传输比例,使得如果队列级别低于最小阈值就传输多个包中的每一个包,如果队列级别高于最大阈值就不传输多个包中的任何包,并且如果队列级别在最小阈值和最大阈值之间就精确地降低传输比例和队列级别。
69.一种计算机可读介质,包含了一个计算机可执行程序,该程序包括以下指令(a)确定在计算机网络中流动的多个包所通过的队列的队列级别;(b)确定流向队列的多个包的提供速率;和(c)根据队列级别和提供速率控制流向队列的多个包的传输比例,如果队列级别在至少第一个队列级别和第二个队列级别之间就精确地降低传输比例和队列级别。
70.权利要求69的计算机可读介质,还包括以下指令(d)根据队列级别和最大队列级别确定虚拟最大队列级别,进一步,其中的传输比例控制指令是基于队列级别、提供速率和虚拟最大队列级别。
71.权利要求70的计算机可读介质,其中虚拟最大队列级别确定指令(d)进一步包括以下指令(d1)如果队列级别高于第一个阈值,就增加虚拟最大队列级别到小于或等于最大队列级别的最大值;(d2)如果队列级别低于第二个阈值,就减少虚拟最大队列级别。
72.权利要求70的计算机可读介质,其中虚拟最大队列级别确定指令(d)进一步包括以下指令(d1)为最大队列级别提供一个乘数,该乘数是指数加权平均,如果队列级别低于一个阈值它接近于第一个级别,如果队列级别高于该阈值,它接近于第二个级别,对应于虚拟队列级别的第一个级别是最小虚拟队列级别,对应于虚拟队列级别的第二个级别是最大队列级别;并且其中传输比例控制指令(c)进一步包括下列指令(c1)根据队列级别、提供速率、先前的传输比例、乘数和最大队列级别控制传输比例。
73.权利要求72的计算机可读介质,其中乘数提供指令(d1)进一步包括以下指令(d1i)如果队列级别低于该阈值,就设置乘数等于第一个常数乘以先前的乘数再加上第二个常数;和(d1ii)如果队列级别高于该阈值,就设置乘数等于第一常数乘以先前的乘数再减去第三个常数。
74.权利要求73的计算机可读介质,其中传输比例控制指令(c1)进一步包括以下指令(c1i)如果队列级别低于最小队列级别就控制传输比例为1;和(c1ii)控制传输比例为1和第二个值中的最小值,第二个值是第四个常数和第三个值中的最大值,第三个值是先前的传输比例加上第四个值,第四个值是第五个值乘以第六个值,第五个值是第五个常数乘以先前的乘数乘以提供速率乘以时间间隔再除以最大队列级别,第六个值是第六个常数减去第七个常数乘以先前的传输比例再减去第八个常数乘以先前的乘数乘以队列级别除以最大队列级别。
75.权利要求74的计算机可读介质,其中队列级别是先前的队列级别,提供速率是先前的提供速率。
76.权利要求70的计算机可读介质,其中传输比例控制指令进一步包括以下指令(c1)根据传输速率和多个包中每个包的优先级丢弃多个包中的一部分。
77.权利要求69的计算机可读介质进一步包括以下指令(d)允许为使用队列的多个管道中的每个管道设置最小流和最大流;(e)确定队列是否存在多余带宽;和(f)如果存在多余带宽并且多个管道中某个管道的流小于该管道的最大流,就根据最小流和最大流,线性增加该管道的流;如果不存在多余带宽并且多个管道中某个管道的流大于该管道的最小流,就按照指数规律减少该管道的流;使得通过队列的流量就稳定了。
78.权利要求77的计算机可读介质,其中多余带宽确定指令(e)进一步包括以下指令(e1)确定队列的队列级别;(e2)确定队列级别是否已经增加或减少;和(e3)如果队列级别已经减少或者为0,就确定不存在多余带宽;否则确定不存在多余带宽。
79.权利要求77的计算机可读介质,其中流是提供速率乘以传输比例,增加或减少指令(f)进一步包括以下指令(f1)如果来自多个管道的多个流之和大于第一个队列级别,就设置流的传输比例为第一个常数;(f2)如果某个管道的流小于或等于该管道的最小流,就设置该管道的传输比例为1和该管道先前的传输比例加上第一个常数之和中的最小值;(f3)如果某管道的流大于该管道的最大流,就设置传输比例为该管道先前的传输比例乘以第二个常数,第二个常数小于1;和(f4)否则设置该管道的传输比例为全局传输比例和第一个数值中的最小值;如果存在多余带宽,第一个数值为先前的传输比例加上第二个数值;如果不存在多余带宽,第一个数值为先前的传输比例减去第三个数值;第二个数值为第三个常数乘以一个信号,第三个常数取决于最小流,在多次存在多余带宽的情况下该信号接近于1,在多次不存在多余带宽的情况下该信号接近于0;第三个数值是第四个常数乘以先前的流,第四个常数取决于最小流;全局传输比例允许在全局传输比例和队列级别之间的精确地降低。
80.权利要求79的计算机可读介质,其中全局传输比例是1和第一个数值中的最小值,第一个数值是第五个常数和第二个数值中的最大值,第二个数值是先前的全局传输比例加上第三个数值,第三个数值是第四个数值乘以第五个数值,第四个数值是第六个常数乘以先前的乘数乘以全局提供速率乘以时间间隔再除以最大队列级别,第五个数值是第七个常数减去第八个常数乘以先前的乘数乘以队列级别除以最大队列级别;乘数是指数加权平均,如果先前的队列级别低于一个阈值它接近第一个级别,如果先前的队列级别高于该阈值它接近第二个级别。
81.权利要求77的计算机可读介质,其中传输比例控制指令(c)控制传输比例,并且该介质进一步包括以下指令(g)允许为多个管道中的每个管道设置最小流和最大流;(h)确定队列是否存在多余带宽;(i)确定队列的队列级别;(j)确定流向队列的多个包的提供速率;(k)根据队列级别和提供速率控制流向队列的多个包的全局传输比例,以使在队列级别在至少第一队列级别和第二队列级别之间时精确地降低全局传输比例和队列级别;(l)设置多个管道中某个管道的流的传输比例为全局传输比例和微分传输比例中的最小值,如果存在多余带宽并且多个管道中某个管道的流小于该管道的最大流,微分传输比例能够根据最小流和最大流线性地增加该管道的流;如果不存在多余带宽并且多个管道中某个管道的流大于该管道的最小流,微分传输比例能够根据最小流和最大流按照指数规律减少该管道的流;使得通过该管道的流就稳定了;(m)根据传输比例控制通往队列的流量的传输;和(n)使用调度器控制来自队列的流量。
82.权利要求81的计算机可读介质,其中多个管道中的每个管道包括至少一种类型的服务,并且其中使用指令(n)进一步包括以下指令(n1)使用调度器根据至少一种类型的服务为多个管道中的每个管道调度来自队列的流量。
83.权利要求81的计算机可读介质,其中至少一种类型的服务是多个管道中每个管道的多个流中的每个流的特定类型的服务,并且其中的使用指令(n1)进一步包括以下指令(n1i)使用调度器根据多个流中每个流的特定类型的服务为多个流中的每个流调度来自队列的流量。
84.权利要求81的计算机可读介质,其中调度器包括至少一个日历和至少一个加权公平排队环。
85.权利要求69的计算机可读介质,其中对传输比例的控制是在多个小时间段中的每个小时间段之后进行的,而且其中传输比例控制指令(c)进一步包括以下指令(c1)根据前一小时间段的队列级别、前一小时间段的提供速率和前一小时间段的传输比例控制多个小时间段中每个小时间段的传输比例,以使前一小时间段的传输比例和队列级别会被精确地降低。
86.权利要求69的计算机可读介质,其中传输比例控制指令(c)进一步包括以下指令(c1)设置传输比例关于时间的变化等于第一个数值乘以第二个数值,第一个数值取决于时间,第二个数值是第一个常数减去第二个常数乘以传输比例再减去队列级别除以最大可能队列级别。
87.权利要求69的计算机可读介质,其中传输比例控制指令(c)进一步包括以下指令(c1)根据传输速率和多个包中每个包的优先级丢弃多个包中的一部分。
88.权利要求69的计算机可读介质,其中传输比例控制指令(c)进一步包括以下指令(c1)控制传输比例,使得如果队列级别低于最小阈值就传输多个包中的每个包;(c2)控制传输比例,使得如果队列级别高于最大阈值就不传输多个包中的任何包;和(c3)控制传输比例,使得如果队列级别在最小阈值和最大阈值之间就精确地降低传输比例和队列级别。
全文摘要
公开了用于控制计算机网络中多个包的流的方法、设备和程序产品。计算机网络包括一个设备定义队列。该方法、设备和程序产品包括确定队列的队列级别并确定通往队列的多个包的提供速率。它们还包括根据队列级别、提供速率和传输比例的前一个值控制进入或流出队列的多个包的传输比例,以使如果队列级别在至少第一个队列级别和第二个队列级别之间时队列级别和传输比例被精确地降低。公开了几种实施方案,其中使用了不同的技术来确定控制方式。
文档编号H04L12/56GK1391756SQ00816049
公开日2003年1月15日 申请日期2000年11月21日 优先权日1999年11月23日
发明者M·艾德米尔, B·M·巴斯, C·D·杰弗里斯, S·K·罗夫纳, M·S·西格尔, A·M·盖洛, B·K·戈蒂, M·赫德斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1