控制队列缓冲区的方法

文档序号:7728095阅读:393来源:国知局
专利名称:控制队列缓冲区的方法
技术领域
本申请书涉及控制队列缓冲区的方法,所述队列缓冲区连接到链路并且被安排来对准备通过所述链路发送的数据单元进行排队。
背景技术
在基于数据单元的通信中,亦即,其中,要传输的信息分成多个单元,而且各个单元通过通信网络发送,众所周知,在沿着网络的链路上提供队列缓冲区,使得通过这样的链路传输的单元可以被缓冲。缓冲区可以是发送或输入缓冲区(亦即用于要通过所述链路发送的数据单元的缓冲区)或接收或输出缓冲区(亦即用于已经通过所述链路发送的数据单元的缓冲区)。
用于传输数据的这样的单元可以有不同的名称,诸如通信协议数据单元、帧、分组、段、单元(cell)等,取决于特定的上下文、所用的特定通信协议和某些其他习惯。在本文献的情况下,所有这样的数据单元都一般地称作数据单元。
把数据单元放入队列、使它们在所述队列中向前走、并从所述队列取出数据单元的程序称作队列管理。
在数据单元传输网络中一种已知的现象是所谓拥塞现象。拥塞的意思是已经不可能轻易地处理准备通过所述连接或链路传输的数据单元数目的状态。由于在给定链路上拥塞的结果,与所述链路相关的队列缓冲区中的数据单元数目将增加。对拥塞状态作出反应,众所周知,已实现一种所谓队满丢弃(drop-on-full)的数据单元丢弃机制,按照所述机制,所述队列缓冲区接收新数据单元时,将与队列长度相关的参数,诸如实际队列长度或平均队列长度与预定的阈值比较,若超过阈值,则丢弃数据单元。所述阈值指示队满状态。“丢弃”的意思是不把它放入队列,因而不会把它进一步传输。
准备丢弃的数据单元可以是新到的数据单元,在这种情况下,所述机制被称作队尾丢弃,除队尾丢弃技术外,已知还实现所谓随机丢弃,其中按照随机函数挑选一个已经在队列中的数据单元,或者所谓队首丢弃,其中丢弃所述队列中的第一个数据单元。这样的队满丢弃机制不仅用来减少拥塞链路的负载,而且用来向所述数据单元的信源和/或目的地发出暗示性拥塞通知。就是说,例如,正如从TCP(传输控制协议)已知的,对数据单元的接收者和发送者一般都实现拥塞控制机制,使得当检测到数据单元已经丢失时,减少数据单元的发送速率和/或数量。
除一旦超过预定的阈值,亦即一旦判定队“满”,就开始丢弃数据单元这样的队列管理系统之外,还有人提出了比较老练的管理方案,被称作积极的队列管理,在意见征询(Request for Comment(RFC))2309中作了描述。更具体地说,RFC 2309建议被称作随机早期检测(RED)的积极队列管理机制。按照RFC 2309,RED的概念是认识到不要等到队满,而是实现一种在达到队满状态之前就导致丢弃某些分组的机制是有用的。
按照RFC 2309,RED算法包括两个主要部分,就是说,首先估计平均队列的大小,然后决定是否丢弃输入的数据单元。更具体地说,当新数据单元到达时,所述算法估计平均队列大小,若平均队列大小处于最小阈值minth和最大阈值maxth之间,则作为平均队列大小的函数计算一个几率值,并根据所得几率判断是否要丢弃所述输入的数据单元。若平均队列大小超过最大阈值maxth,则所述输入的数据单元必须丢弃。几率函数是一个线性函数,它具有一个值p(minth)=0,而其中p(maxth)是预定的最大几率maxp,其中maxp小于1。
关于最小阈值minth或最大阈值maxth的选择,RFC 2309并未提供任何信息。
在Sally Floyd和Van Jacobson在1993年8月的IEEE/ACMTransaction on networking上的“避免拥塞的随机早期检测网关”一文中对RED算法作了广泛的讨论,其中最小阈值minth,最大阈值maxth和最大几率maxp都被设置为固定的参数。关于minth和maxth的选择,它指出这些阈值的最佳值取决于需要的平均队列大小,而maxth的最佳值部分地取决于链路可以允许的最大平均延迟时间。另外,它指出maxth至少应为minth的两倍。
在讨论RED参数设置的因特网文献中,Sally Floyd在http//www.acir.org/floyd/REDparameter.txt中指出,用于确定minth的最佳值部分地取决于链路速度、传播延迟时间和最大缓冲区大小。
1997年11月Wu-chang Feng等人在“在拥塞的TCP-IP网络中消除分组丢失的技术”一文中提出一种称为自适应RED,其中几率参数maxp适应于通信量负载。尽管在所述文献中描述的详细算法使用固定阈值,但是它在结尾时指出,也可以使阈值取决于输入通信量。Wu-chang Feng等人在1999年3月Infocom’99上的“自配置RED网关”一文中提出了类似的建议。
PCT专利申请WO 00/60817提出另一个改进RED的建议,其中在源自响应分组丢失的速率自适应应用的通信量之间引入微分。所述文献提议至少引入两个丢弃先例水平,称作“剖面内”(in profile)和“剖面外”(out profile)。每一个丢弃先例水平具有它自己的最小阈值minth和/或最大阈值maxth。
从PCT专利申请WO 00/57599已知一种队列管理机制,其中丢弃函数按照入口处流速测量和流量曲线选择。
从美国专利6,134,239已知一种在超载负载缓冲区处拒收ATM分组的方法。提出一种RED概念。按照所述文献,监测与超载缓冲区队列有关的第一阈值和与特定连接相关的第二阈值,若两个阈值都被超过,则丢弃特定连接的输入分组。
美国专利5,546,389描述一种控制缓冲区访问方法,并专门与ATM缓冲区相关。提出使用一个或多个阈值和这样的阈值的动态控制,其中动态是根据输入和离去的通信量决定的。
欧洲专利1 028 600描述一种ATM开关的采用动态队列长度阈值的缓冲区管理方案。每当一个新单元到达时便动态地更新一个公用阈值,其中新的值是根据通信量状态决定的。
欧洲专利0 872 988描述一种改进RED的建议,其目的在于为使用不同TCP版本的多个连接共用一个瓶颈链路时提供隔离。所述文献提出的解决方案是为每个连接使用带宽保留保证。若一个连接利用不足,则另一个连接可以使用利用不足的连接的部分带宽。当所述连接需要收回它的缓冲区空间时,操作一种预定的分组丢弃机制,诸如最长队列先丢(LOF)机制。
发明目的本发明的目的是提供一种控制队列缓冲区的改进方法,其中所述方法把与队列长度相关的参数与长度阈值比较,并采用自动阈值自适应程序。
发明概述达到上述目的的是一种具有权利要求1特征的方法。在从属权利要求中描述了有利的实施例。
按照本发明,根据队列缓冲区中的数据单元准备通过其发送的链路的一个或多个特性,安排自动阈值自适应程序,以便自动地和动态地修改长度阈值,诸如从RED已知的最小阈值minth或从队满丢弃队列管理方案中已知的单个阈值。
因此,与以上讨论的先有技术形成对比,其中长度阈值不是固定值,而是适合于通信量负载状态。本发明提出根据链路特性自动地和动态地修改长度阈值。这导致一种高度灵活的积极队列管理形式,它提供改进的通过量和减少延迟时间,尤其是通过具有时变特性的链路,诸如无线电链路。
本发明的方法可以应用于任何已知的队列管理方案,其中把与队列长度相关的参数与至少一个长度阈值进行比较,若超过所述阈值,则执行拥塞通知程序。就是说,本方法可以应用于例如上述任何RED方案,应用于队满时丢弃数据单元的方案,可以是队尾丢弃、随机丢弃或队首丢弃,应用于任何已知的不丢弃而实现明确拥塞通知的方案。
另外,尽管本发明推荐的实施例采用给IP(因特网协议)分组排队的方法,但是本发明的方法不限于任何特定协议的数据单元,并且,例如,还可以应用于ATM单元的队列管理方法。
按照本发明一个推荐的实施例,一个或多个链路特性是链路的往返时间(RTT)和所述链路的数据速率(DR)或位速率,而阈值自适应程序包括随链路的往返时间和数据速率而变地更新长度阈值。这种更新可以每隔固定的时间间隔进行一次,或者响应特定的触发事件,诸如上述链路特性改变。换句话说,在后一种方案中,每当往返时间或数据速率变化时阈值随往返时间和数据速率而变地更新。可以指出,阈值的更新将不在所考虑的链路特性发生无限小的变化时启动,因为将有某种粒度。换句话说,要监测所考虑的链路特性,若这些特性中的一个发生大于预定步距或粒度大小的变化,则更新所述阈值。
更新阈值的功能最好包括根据往返时间和数据速率计算链路容量值(LC);以及把阈值设置为等于算出的链路容量值,或者至少随所述链路容量值、例如所述链路容量值和预定常数之和而变地确定所述阈值。
所述自动阈值自适应程序还可以包括根据链路的连接状态自动改变长度阈值。换句话说,在这种情况下,链路的连接状态是自适应据以进行的链路特性。更具体地说,在链路失去连接,亦即不能传输数据单元时,最好自动增大长度阈值,例如,乘以诸如2的预定系数。长度阈值取决于连接性的改变可以由它自己实现,或者可以与上述长度阈值根据诸如往返时间和数据速率这样的链路特性更新的程序结合。
响应链路的连接性改变长度阈值的程序最好还包括连接状态再次允许数据单元传输之后使长度阈值复位的特征。这种复位可以是返回到长度阈值以前的值,或者可以根据诸如上述往返时间和数据速率等一个和多个特性计算新的长度阈值。复位操作最好还考虑复位时队列中的数据单元个数(实际队列长度),以便逐步把长度阈值复位到所述新值。
与本发明相关而采用的拥塞通知程序可以根据要求或适用性选择,并且任何已知的暗示性的或明确的拥塞通知程序均可采用。例如,作为一种暗示性的拥塞通知程序,可以作出丢弃数据单元的决定,其中所述决定可以依据给定的几率(像在RED技术的情况下)或无条件地进行(像在队满丢弃技术的情况下)。明确的拥塞通知程序的一个示例是在数据单元中设置一个适当的拥塞通知标志。例如,可以设置IP分组IP报头中的所谓ECN(明确拥塞通知)标志。设置或不设置所述标志的决定再次可以有条件地根据预定的几率函数作出,或无条件地作出。还应指出,与本发明相关而采用的拥塞通知程序可以结合暗示性拥塞通知程序和明确的拥塞通知程序,亦即可以包括作出丢弃数据单元的决定和设置数据单元中明确拥塞通知标志的决定。
如前所述,本发明可以应用于至少使用一个长度阈值的队列管理方法。换句话说,可以应用于利用队满丢弃技术的队列管理方法,其中自动使指示队满的单个阈值自适应,或者可以应用于利用多个阈值的队列管理方法,诸如利用两个阈值minth和maxth的RED的队列管理方法。按照本发明,若采用多个阈值,则可以其中只有一个是根据一个或多个链路特性而被自动修改的,而另一个固定不变,或者另一个也可以被自动修改,例如,根据同一个特性,或者根据与特定阈值相关的各自的单独的链路特性。例如,根据第一组链路特性修改RED的最小阈值minth,而根据不同于所述第一组的第二组链路特性修改最大阈值maxth。
按照推荐的实施例,其中本发明的方法应用于RED,根据往返时间和数据速率更新最小阈值minth,而以minth和预定的常数之和的形式简单地计算最大阈值maxth。
附图简要说明现将参照详细的实施例描述本发明,不应该把参照附图所描述的实施例作为本发明的限制。附图中

图1表示队列缓冲区的示意框图;图2表示用于说明本发明基本实施例的流程图;图3表示用于说明本发明更详细的实施例的流程图;图4表示用于说明不同阈值自适应程序的流程图;图5表示用于说明本根据链路连接性改变长度阈值的程序的实施例的流程图;以及图6表示用于说明拥塞通知程序的实施例的流程图。
详细描述图1表示的队列缓冲区2的示意框图,所述队列缓冲区2连接到链路1并被安排来把输入的数据单元30排入队列20,以便把所述数据单元30通过链路1发送。队列缓冲区被包括在属于网络3的传输所述数据单元30的单元(未示出)中。例如,所述单元可以是网络3的路由器。
队列缓冲区2也可以安排成起接收缓冲区的作用,用于从链路接收数据单元、向网络3输出排入队列的数据单元。
如前所述,按照本发明,链路1、队列缓冲区2和数据单元30可以是任何需要的类型。例如,数据单元30可以是IP分组,而队列缓冲区2可以是用于向前递送所述IP分组的IP路由器的一部分。但是,队列缓冲区2也可以是ATM缓冲区,在这种情况下,数据单元30是ATM单元。
尽管链路可以是任何适当或需要的类型,但是本发明的方法最好应用于连接到无线电链路,诸如无线电话链路的队列缓冲区。例如,链路1可以由按照GSM(全球移动通信系统)、UMTS(万用移动电话系统)或任何其他移动电话通信标准的移动蜂窝电话网络。就是说,由于无线电链路一般具有时变特性,基于一个或多个链路特性的自动阈值自适应程序特别有效和有用。
就是说,本发明的队列管理方法可以有效地适用于无线电链路的时变特性,其方法是修改一个或多个长度阈值,把该长度阈值和与队列长度相关的参数比较,以便启动拥塞通知程序,。
图2表示本发明的方法的基本实施例的流程图。在步骤S1中,确定与队列20的长度相关的长度参数的值。这个与队列长度相关的参数可以以任何需要的适当的方法与队列长度相关,例如,可以是实际的或瞬间队列长度QL或由实际或瞬间队列长度推算的参数,诸如平均值QLAV。
在图2所示的示例中,与队列长度相关的参数是平均队列长度QLav。这个平均队列长度QLav可以按照任何已知的或适当的平均算法计算,而这样的一种算法一般可以包括通过求旧平均乘以第一权重系数与瞬间队列长度乘以第二权重系数之和来计算。例如,QLav可以计算如下QLav(新)=QLav(旧)×(1-1/2n)+(QL×1/2n) ...(1)式中QL代表瞬间队列长度值,n是可以在0和1之间调整的指数型权重系数。
然后,在步骤S2,把QLav与长度阈值Lth比较。若超过长度阈值Lth,则执行拥塞通知程序S3,否则跳过拥塞通知程序S3。
在图2所示的示例中,流程然后进到Lth的自动阈值自适应程序,就是说,进入步骤S4。按照本发明,这个自动阈值自适应程序S4安排来根据一个或多个长度特性1自动地修改长度阈值Lth。
可以指出,图2中各步骤的特定安排只是一个示例。具体地说,构成判断执行拥塞通知程序的程序的步骤S1,S2和S3,与步骤S4的Lth之前的自适应程序无关。因此,步骤S1,S2和S3可以独立于S4进行安排,就是说,S4也可以在S1-S3之前或与之并行执行。尤其是可以指出,步骤S1至S3为一方,S4为另一方,一般可以包含在一个具有多个步骤的控制队列缓冲区的较大的方法中,但是这样的额外的步骤未示出,因为它们不属于本发明。图2的方法可以用软件实现,而步骤S1-S3可以例如在一个线程中实现,而S4可以在另一个线程中实现。但是,所述方法也可以直接用硬件的形式实现。
表示本发明较详细的实施例的流程图示于图3。与图2中所示的相同或等效的步骤标以相同的符号,不再赘述。
可以指出,诸如QLav等与队列长度相关的参数和长度阈值Lth可以用任何要求或适当的方式表达和测量。例如,可以把这些参数表达为以位或字节为单位的数据量,或者这些参数也可以表达为数据单元的个数,亦即把实际队列长度QL表达为数据单元数的整数个数(但是由于求平均值的缘故,平均队列长度QLav一般不是整数)。
按照图3的示例,一次对话在步骤S5开始。之后,步骤S6确定是否已出现阈值比较触发事件。若这样的事件出现,则正如联系图2说明的,执行步骤S1,S2和S3。若未出现,或者通过了步骤S1,S2和S3之后,则流程进到步骤S7。在步骤S7,确定是否出现了自适应触发事件,若是,则执行步骤S4的Lth的自动阈值自适应程序。若步骤S7的判断结果是否定的,并且在步骤S4完成之后,则图3的流程进到步骤S8,在其中确定对话是否要结束。若对话不要结束,则流程循环回到步骤S6,否则流程结束。
步骤S6的阈值比较触发事件可以用任何需要的或适当的方法选择。例如,步骤S1至S3的阈值比较可以定期,亦即每隔一定的时间间隔启动。在这种情况下,阈值比较触发事件将是例如特定定时条件的出现,或者计数器达到特定的值的事件。作为一个示例,可以实现从一个预定值向下计数至0的阈值比较计数器,当所述计数器达到零时,给出步骤6的阈值比较触发事件。若判定所述值为0,则启动步骤S1,S2和S3的程序,并将计数器复位为预定值,使之从新开始向下计数。
阈值比较也可以由与数据单元被队列接收或发送的事件或对于队列中个别数据单元采取的特定动作触发。例如,阈值比较触发事件可以是向链路释放数据单元。步骤S6的阈值比较触发事件最好是要缓冲的新数据单元的到达。
步骤S7中导致自动阈值自适应程序S4启动的自适应触发事件可以根据要求或适当选择。例如,可以定期启动自动阈值自适应程序,使得步骤S7中的自适应触发事件可以是某个时间条件为真,或者计数器达到某个值,正如上面联系步骤S6的触发事件已经描述的。步骤S6和步骤S7中的两个触发事件可以具有相同的固定周期,或者可以以不同的时间间隔发生。换句话说,可以用同一个计数器来确定步骤S6和步骤S7的触发事件,在这种情况下,两个步骤S6和S7有效地合并为单一步骤,或者可以用不同的计数器或不同的计数器值从不同的初始值向下计数。
步骤S7的自适应触发事件最好是作为对长度阈值Lth进行修改的基础的一个或多个链路特性的变化。可以指出,在实践中,将仅仅确定具有一定粒度的变化。换句话说,并非特性中任何这样小的变化都考虑为触发事件,而是只有当变化了一定量度时,才考虑为触发事件。
利用特性的变化作为触发事件的示例示于图4a,其中示出的步骤S71和S41代替了图3的S7和S4。就是说,图4a表示一个示例,其中自动阈值自适应程序基于链路1的往返时间RTT和数据速率DR。因此,步骤S71检查是否往返时间RTT和数据速率DR中的一个或两个都发生了变化,若是如此,则以RTT和DR的函数的形式确定长度阈值Lth的新值。可以指出,上述往返时间RTT只与链路1有关,并非端点到端点的往返时间。
在先有技术中已知,往返时间RTT是表示数据单元的发送和相关的确认消息的接收之间所经过的时间周期的参数。RTT可以用任何需要的和适当的方法确定,尤其是用任何已知的方法确定。例如,RTT在采用ARQ(自动重发请求)的系统中是自动测量的,但是即使在不使用ARQ的系统中,RTT也可以用一种适当的专门方案测量,诸如从链路1发送侧向链路1的接收侧发送专门的RTT测量信号,其中接收侧被安排来发回适当的确认信号。这个示例亦称“ping”。
类似链路的RTT,数据速率DR也可以用任何适当的或需要的方法确定。例如,DR可以用专门的测量方法测量,或者它也可能是要求DR作为输入的另一个控制程序的现成的参数。
在步骤S41中更新Lth的程序最好包括根据往返时间RTT和数据速率DR适当估算链路的容量值LC。然后根据估算的链路容量值LC计算链路阈值Lth。
现将参照图6描述本发明的另一个实施例。在这个实施例中,控制队列缓冲区的方法采用两个长度阈值,最小阈值minth和最大阈值maxth。在这个示例中,结合图2,3和4a的实施例所提出的阈值Lth对应于minth。步骤S3的拥塞通知程序仍是确定超过步骤S2中的minth的数值QLav是否超过maxth,或者它是否处于minth和maxth之间。这一点表示为图6中的步骤S31。可以指出,图6的这些步骤S31-S34可以用来代替图2和3所示的步骤S3,亦即图6的步骤S31-S34仍是步骤S3的拥塞通知程序的一个特例。
如图6所示,若QLav处于minth和maxth之间,则程序进到步骤S32,在其中根据QLav计算几率p。例如,函数p(QLav)可以定义为线性的并具有数值p(minth)=0和p(maxth)=maxp,式中maxp是最大几率值,可以是固定的,或者它本身可以是一个自适应参数。自然,可以选择适当的或需要的p(QLav)的其他类型函数。
然后,在步骤S32之后,利用在步骤S32算出的几率值p(QLav)对数据单元执行拥塞通知,见步骤S33。另一方面,若步骤S31的判定结果是否定的,亦即QLav超过maxth,则在步骤S34对数据单元执行无条件的拥塞通知操作。
可以在步骤S33根据几率值p(QLav)执行拥塞通知操作,例如,可以用这样的方法,即利用所述几率作为权重进行随机处理来进行,其中随机过程产生“是”或“否”,而且以几率p(QLav)产生“是”。在先有技术中这程序是众所周知的,这里就不必进一步描述了。若处理的结果是“是”,则执行拥塞通知,而若结果是“否”,则不执行拥塞通知操作。
在步骤S33或在步骤S34中进行的拥塞通知可以用任何适当的或需要的方式选择,而且可以是例如暗示性的拥塞通知操作,诸如丢弃数据单元,或者是明确的拥塞通知、诸如在数据单元中设置适当的通知标志或发送明确的通知消息(信源熄灭)。这在前面已经描述了,不必赘述。可以指出,在步骤S33,S34中可以进行同样类型的拥塞通知操作,例如,在两种情况下都进行丢弃操作,或者在两种情况下都进行标志设置操作,但也同样可以在步骤S33中进行一种类型的拥塞通知操作,而在步骤S34中进行另一种操作,例如,在步骤S33中的拥塞通知操作可以是丢弃数据单元的动作,而在步骤S34中的拥塞通知操作可以是标志设置操作。
另外,可以用任何适当的或需要的方法选择用于确定在步骤S33或S34中对之执行拥塞通知操作的数据单元的程序。例如,拥塞通知操作总是对最后到达的数据单元进行,或者用随机的方法在队列数据单元之间选择一个数据单元,或者选择队列中第一个数据单元。选择数据单元执行拥塞通知操作的这样的技术在先有技术中是众所周知的,其他任何已知的技术均可采用,故在此不必赘述。
按照采用两个阈值minth和maxth的本实施例,步骤S4(图2,3)或S41(图4a)的自适应程序仍是首先按下式估算链路的容量LCLC=(RTTWC+RTT)·DR.......(2)式中DR是链路的数据速率,RTT是链路的往返时间,而RTTWC是预定的常数。然后,确定作为估算的链路容量LC的函数的下阈值minth,例如,设置所述下阈值minth等于所述估算的链路容量LC或者设置所述下阈值minth等于LC和另一个预定常数ε的和。最后,把上阈值maxth设置成等于minth和另一个预定常数之和。
关于第一预定常数RTTWC的选择,所述常数最好选择为是在所述链路上传输的数据单元的总的最坏情况下端点到端点的往返时间,其中端点到端点意指从数据单元的信源到数据单元目的地,而且其中RTTWC还不包括链路本身RTT的贡献。但是,RTTWC不应设置为无限高的数值、使得利用2001年的因特网作为基础时,最好不超过300ms的值。由于另一方面RTTWC应该反映最大RTT,亦即最坏情况下的RTT的事实,所以利用2001年因特网作为基础,RTTWC值宜设置在200ms和300ms的范围内,更宜设置在200ms和250ms的范围内。
自然,在因特网以外的其他类型的网络中,可以采用更窄的范围,在将来的因特网中也是如此,取决于与2001年当前的因特网相比速度的提高情况。
第二个预定的常数ε可以是0,或者相对于典型的链路容量值的一个小的值。例如,若链路具有额定的或最大的链路容量LCmax,则ε可在0至0.01·LCmax的范围内选择。同样地,ε可以设置为等效于一个小的数据单元数目,诸如2或3。
最后,关于用于计算maxth的第三常数,所述第三常数宜为小的数据单元数目,例如,3至6个数据单元。若minth和maxth表达为数据单元的数目,则为了计算maxth,在minth上加上范围在3-6内的整数即可,在minth和maxth表达为数据量(以字节或位为单位)的情况下,则按照以数据量量度的预定的数据单元大小(诸如,最大段大小)乘以范围在3-6内的整数的方式来计算第三常数。
利用以上述方程式(2)为基础的minth(Lth)的自适应的本发明的本实施例,最好应用于这样一种网络中缓冲用于IP分组的缓冲区,所述网络中向外发送这样的IP分组的流量控制是按照传输控制协议(TCP)或利用比较拥塞控制方案的协议,诸如基于速率通信协议的TCP友好的速率控制协议操作的。就是说,上述阈值的设置保证了受网络限制的TCP发送者(受网络限制是指传送中的分组数目受拥塞控制限制)将充分利用其可用带宽。本发明的发明者认识到,受网络限制的TCP发送者应该允许将其发送窗口至少增大到分组馈入其中的管道的容量的两倍,以便充分利用横跨多个负载减小事件的可用带宽。
如上所述,第一常数RTTWC最好设置为对在队列缓冲区2中缓冲并通过链路1传送的数据单元估计的最坏情况端点到端点的往返时间的值。若端点到端点往返时间可以足够好地估计,则与将所述常数简单地设置在上述200至300ms范围内相比,对所述常数尤其可以达到更精确的选择。若被管理的队列包含属于一个信息流的数据单元,则尤为如此。利用信源和目的地地址、信源和目的地端口号码和协议识别符来识别信息。信息流的定义和概念在先有技术中是众所周知的,例如,在TCP(传输控制协议)的情况下,在先有技术中是众所周知的,故此不必赘述。在这种情况下,从端点到端点最坏情况往返时间的比较精确的估计减去链路往返时间是可能的。可以指出,一般一个队列缓冲区都对属于多个不同信息流的数据单元进行缓冲。但是可以设想,队列缓冲区2提供多个队列20,其中每个队列与一个给定的信息流相联系,每个队列按照其各自的控制参数进行管理。
在上述实施例和图4a的实施例中,自动阈值自适应程序是一种更新一个或多个阈值的程序。下面将描述另一个实施例,其中自动阈值自适应程序包括响应链路连接状态而进行的阈值改变程序。如可以安排来代替图3步骤S7和S4的图4a中所示,首先在步骤S72确定链路1的连接状态是否改变了,若是,则启动S42的阈值改变程序。
步骤S72中的所述确定最好简单地确定链路1是否提供连接。换句话说,确定数据单元可否传输。步骤S42的阈值改变程序最好这样安排,即,当链路1的连接状态这样地改变、使得没有数据单元被传输,例如,链路发生故障时,增大阈值Lth,例如将瞬间值乘以一个预定的因数fc。换句话说,当链路失去连接时,步骤S42中的程序把长度阈值从Lth增大为fc.Lth。
如其中步骤S73和S43相当于图4a的步骤S72和S42的图5中所示,增大阈值Lth的步骤最好后跟在其中确定连接是否恢复的步骤S44。若是,则流程进到步骤S45,其中把阈值复位为新值。可以复位为增大前的阈值,亦即把以前增大后的值除以因数fc,或者可以重新计算Lth,例如,正如以前联系Lth更新程序所说明的。换句话说,测量一个或多个链路特性,诸如RTT和DR,并按照其预定的函数,例如按照上列方程式(2)计算Lth的新值。
尽管可以立即把长度阈值Lth复位为新值,但是最好按照阈值复位时队列中数据单元的数目(瞬间队列长度)逐步改变其值。就是说,若阈值Lth突然变小,而且用作启动拥塞通知程序的基础的与队列长度相关的参数突然变得大于阈值Lth,则会突然出现大量的拥塞通知操作(例如,丢弃大量数据单元)。为了避免出现这种情况,步可以用这样的方式实现骤S45的阈值复位程序,即,Lth高的初始值不立即复位到新值,而是首先将其减小到与队列长度相关的参数的瞬间值(例如,QL或QLav),若与队列长度相关的参数减小,则随之减小,直至达到上述计算的Lth新值为止。
上述根据长度的连接状态改变链路的程序,其优点是链路出现故障时避免不必要的拥塞通知操作。尤其是在拥塞通知操作是丢弃数据单元时,根据链路连接状态进行的所述阈值改变程序保证进入缓冲区的数据单元整个负载被吸收或者在链路出故障时在链路上进行缓冲,而数据单元的丢失得以避免。因此,拥塞通知程序的执行会向发送或接收数据单元的端点给出错误信息,这一般会以对被发送的数据单元的没有保证的限制来表示回答。
如前所述,图4a的步骤S71,S41可以用图3的步骤S7,S4代替,图4a的步骤S72,S42可以用图3的步骤S7,S4代替,图5的步骤S73,S45可以用图3的步骤S7,S4代替。另外,还可以把图4a的更新程序与图4b或图5的阈值改变程序结合起来,例如,安排一序列的步骤S71,S41,S72和S42代替图3的步骤S7,S4。
此外,可以指出,本发明的方法还可以由自动阈值自适应程序补充,以便根据对队列缓冲区2可用的当前存储器容量自动减小长度阈值Lth。
尽管已经借助于详细的实施例描述了本发明,但是这些只用来使本发明得到更好的理解,并不打算用来限制其范围。本发明的范围在后附的权利要求书中定义。权利要求书中的引用符号用来使权利要求更加容易理解,也不打算限制其范围。
权利要求
1.一种控制队列缓冲区(2)的方法,所述队列缓冲区(2)连接到链路(1),并被安排来把数据单元(30)排入队列(20)中,所述方法包括确定(S1)与所述队列(20)的长度相关的长度参数的值(QL,QLav);把所述值(QL,QLav)与长度阈值(Lth)比较(S2),若所述值(QL,QLav)等于或大于所述长度阈值(Lth;minth;maxth),则执行(S3)拥塞通知程序;以及自动阈值自适应程序(S4,S7);其特征在于所述自动阈值自适应程序(S4,S7)被安排来根据所述链路(1)的一个或多个特性而自动地修改所述长度阈值(Lth;minth;maxth)。
2.如权利要求1所述的方法,其特征在于这样安排所述自动阈值自适应程序(S4,S7)、以便每隔一段时间更新所述长度阈值(Lth;minth;maxth)。
3.如权利要求1所述的方法,其特征在于所述自动阈值自适应程序(S4,S7)包括以下步骤确定所述一个或多个特性中的一个或多个特性是否已经改变(S71);以及当发生改变时更新(S41)所述长度阈值(Lth;minth;maxth)。
4.如权利要求1至3中的一个所述的方法,其特征在于所述一个或多个链路特性之一是表示数据单元通过所述链路发送和接收到相关的确认消息之间所经过的时间段的参数(RTT)。
5.如权利要求1至4中的一个所述的方法,其特征在于所述一个或多个链路特性之一是所述链路(1)为发送所述数据单元而提供的数据速率(DR)。
6.如权利要求1至5中的一个所述的方法,其特征在于所述自动阈值自适应程序(S4,S7)包括以下步骤估算链路容量值(LC);以及根据所估算的链路容量值(LC)确定所述长度阈值(Lth;minth;maxth)。
7.如权利要求4,5和6所述的方法,其特征在于所述自动阈值自适应程序(S4,S7)包括根据以下因素估算链路容量值(LC)-表示数据单元通过所述链路发送和接收到相关的确认消息之间所经过的时间段的参数(RTT);和-所述链路(1)为发送所述数据单元而提供的数据速率(DR)。
8.如权利要求7所述的方法,其特征在于通过确定表示数据单元经由所述链路发送和接收到相关的确认消息之间所经过的时间段的所述参数(RTT)和第一预定常数(RTTWC)之和来估算所述链路容量值(LC);以及把所述链路容量值(LC)设置成等于所述和与所述数据速率(DR)的乘积。
9.如权利要求8所述的方法,其特征在于所述第一预定常数(RTTWC)代表数据单元从其信源到其目的地的发送和在其信源接收到相关的确认消息之间所经过的最大时间段的估计值,排除所述数据单元经过所述链路发送和经过所述链路接收到相关的确认消息之间所经过的时间段。
10.如权利要求9所述的方法,其特征在于所述第一预定常数(RTTWC)在200ms至300ms的范围内,最好在200ms至250ms的范围内。
11.如权利要求6至10中的一个所述的方法,其特征在于把所述长度阈值(Lth;minth;maxth)设置成等于所述估算的链路容量值(LC)。
12.如权利要求6至10中的一个所述的方法,其特征在于把所述长度阈值(Lth;minth;maxth)设置成等于所述估算的链路容量值(LC)与第二常数(ε)之和。
13.如权利要求1至12中的一个所述的方法,其特征在于所述长度阈值(Lth;minth;maxth)是第一长度阈值(minth);所述拥塞通知程序(S3)包括把所述长度参数的所述值(QL;QLav)与大于第一长度阈值(minth)的第二长度阈值(maxth)加以比较(S31)的步骤;以及所述自动阈值自适应程序(S4,S7)包括以所述第一长度阈值(minth)和预定常数之和的形式计算所述第二长度阈值(maxth)的步骤。
14.如权利要求1至13中的一个所述的方法,其特征在于所述自动阈值自适应程序(S4,S7)包括安排来根据所述链路(1)的连接状态(S72)而自动地改变所述长度阈值(Lth;minth;maxth)的阈值改变程序(S42;S43,S44,S45)。
15.如权利要求14所述的方法,其特征在于所述阈值改变程序(S42;S43,S44,S45)包括以下步骤确定所述连接状态是否允许数据单元的传输,而若所述连接状态不允许数据单元的传输,则按照预定阈值增大程序增大所述长度阈值(Lth;minth;maxth)。
16.如权利要求15所述的方法,其特征在于所述阈值增大程序包括把当前长度阈值(Lth;minth;maxth)乘以预定因数(fc)。
17.如权利要求16所述的方法,其特征在于所述预定因数(fc)是2。
18.如权利要求15至17中的一个所述的方法,其特征在于所述阈值改变程序(S42;S43,S44,S45)还包括以下步骤确定(S44)所述阈值增大程序之后所述连接状态是否再次允许数据单元传输,若所述连接状态再次允许数据单元传输,则按照预定的阈值复位程序(S45)把所述长度阈值(Lth;minth;maxth)设置为新值。
19.如权利要求18所述的方法,其特征在于所述阈值复位程序(S45)包括使所述长度阈值(Lth;minth;maxth)返回执行所述阈值增大程序之前的值。
20.如权利要求18所述的方法,其特征在于所述阈值复位程序(S45)包括根据所述链路(1)的一个或多个特性的当前值更新所述长度阈值(Lth;minth;maxth)。
21.如权利要求18至20中的一个所述的方法,其特征在于所述阈值复位程序(S45)包括根据所述队列缓冲区(2)中的数据单元的个数逐步把所述长度阈值(Lth;minth;maxth)复位为所述新值。
22.如权利要求21所述的方法,其特征在于所述阈值复位程序(S45)包括若所述队列(20)的长度(QL)瞬间值超过所述新值,则把所述长度阈值(Lth;minth;maxth)复位为所述队列(20)的长度(QL)瞬间值,并逐步把所述长度阈值(Lth;minth;maxth)减小到所述连续减小队列(20)长度(QL)的瞬间值,直至达到所述新值为止。
23.如权利要求1至22中的一个所述的方法,其特征在于每隔一段时间执行所述确定与所述队列(20)的长度相关的参数的值(QL;QLav)的步骤和所述值(QL;QLav)与所述长度阈值(Lth;minth;maxth)的所述比较的步骤。
24.如权利要求1至22中的一个所述的方法,其特征在于当所述缓冲区接收到要通过所述链路发送的新的数据单元时,执行所述确定与所述队列(20)的长度相关的参数的值(QL;QLav)的步骤以及所述值(QL;QLav)与所述长度阈值(Lth;minth;maxth)的所述比较的步骤。
25.如权利要求1至24中的一个所述的方法,其特征在于所述拥塞通知程序(S3)包括作出丢弃数据单元的决定,以便丢弃或保留数据单元。
26.如权利要求1至25中的一个所述的方法,其特征在于所述拥塞通知程序(S3)包括作出数据单元设置标志的决定,以便决定是否在数据单元中设置拥塞通知标志。
27.如权利要求25或26所述的方法,其特征在于所述决定是为新接收到的数据单元作出的。
28.如权利要求1至27中的一个所述的方法,其特征在于与所述队列(20)的长度相关的所述长度阈值(QL;QLav)是所述队列(20)的当前长度(QL)。
29.如权利要求1至27中的一个所述的方法,其特征在于与所述队列(20)的长度相关的所述长度阈值(QL;QLav)是所述队列(20)的平均长度(QLav)。
30.如权利要求1至29中的一个所述的方法,其特征在于所述链路(1)的无线电链路。
31.如权利要求1至30中的一个所述的方法,其特征在于还包括自动阈值自适应程序,用以根据所述队列缓冲区(2)可用的当前存储器容量自动减小所述长度阈值(Lth;minth;maxth)。
32.如权利要求1至31中的一个所述的方法,其特征在于所述数据单元是因特网通信协议的分组。
33.一种计算机程序,所述计算机程序被安排来执行如权利要求1至31中的一个的方法。
34.一种数据载体,它存储如权利要求33的计算机程序。
35.一种数据单元传输装置,它包括队列缓冲区(2),所述数据单元传输装置被安排来连接到链路(1)、以便通过所述链路发送数据单元,其中,所述数据单元发送装置被安排来执行如权利要求1至31中的一个的方法。
36.如权利要求35所述的数据单元传输装置,其特征在于;所述数据单元传输装置是数据单元传输网络中的路由器。
37.如权利要求36所述的数据单元传输装置,其特征在于所述路由器是因特网通信协议的路由器。
全文摘要
一种控制队列缓冲区(2)的方法,所述队列缓冲区(2)连接到链路(1),并被安排来把数据单元(30)排入队列(20)中,所述方法包括确定(S1)与所述队列(20)的长度相关的长度参数的值(QL,QL?
文档编号H04L12/56GK1531804SQ02807835
公开日2004年9月22日 申请日期2002年4月5日 优先权日2001年4月9日
发明者M·迈尔, M 迈尔, R·卢维格 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1