CN105075202B - 用于在分组网络中处理分组的方法、节点和分组网络 - Google Patents
用于在分组网络中处理分组的方法、节点和分组网络 Download PDFInfo
- Publication number
- CN105075202B CN105075202B CN201480018721.3A CN201480018721A CN105075202B CN 105075202 B CN105075202 B CN 105075202B CN 201480018721 A CN201480018721 A CN 201480018721A CN 105075202 B CN105075202 B CN 105075202B
- Authority
- CN
- China
- Prior art keywords
- queue
- grouping
- state
- node
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/263—Rate modification at the source after receiving feedback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/31—Flow control; Congestion control by tagging of packets, e.g. using discard eligibility [DE] bits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/624—Altering the ordering of packets in an individual queue
Abstract
用于在分组网络中处理分组的方法、节点和分组网络。一种方法和装置,其用于如果缓冲队列中已经存在具有相同的第一状态值的分组,则在所述分组到达缓存器时将分组标签状态值从第一值改变为不同的值。在端节点处接收到的分组中的标签状态值(112)的序列用于确定分组网络中的缓存器的队列长度。之后,端节点可以改变其发送速率以适应缓存器的速率。
Description
技术领域
本发明描述了一种重标记分组的方式,从而表示分组网络中的缓存器处的队列的长度,并且其具体地涉及了一种用于基于所示队列长度的传输速率自适应的方法和装置。
背景技术
每当数据源几乎没有或没有与可用容量的数量有关的信息时,它将会面临两难的处境,但是它需要尽快地发送数据,而不引起过度拥塞。每当数据源开始新的数据流时,每当数据源在空闲期后重新开始时,以及每当另一流完成已经共享相同容量时,它将会面临两难的处境。
针对TCP已经提出的一族拥塞控制算法结合了二种操作形式:一种依赖于拥塞反馈(闭环控制),而另一种在没有反馈(开环控制)时。在当前的因特网上,当发送器几乎没有或没有与可用容量的数量有关的信息时,开环控制必须在流的开始或重新开始时或在竞争流的结束时使用。
例如,大多数TCP算法采用相同的“慢启动”算法,以指数方式增加发送速率,通过加倍每个往返行程的发送速率来探测更多容量,直到接收器反馈到它已检测到作为拥塞的第一信号的丢失。发送器在其发送速率超过可用容量之后的一次往返行程时间,接收此反馈。当它接收到该信号时,它将正以可用容量两倍以上的速率发送。
在TCP算法内使用称为拥塞窗口的概念,以控制其速率。所述窗口是能够以超过已被确认的数据来发送的数据量。在几乎或根本不知道可用容量(开环)的情况下,难以争论是否一个拥塞窗口好于另一个,任何特性都可能在某些情况下是安全的,而在其它情况下是不安全的。因特网标准称流应当以不超过4380B(通过以太网的3个全尺寸分组)的窗口开始,且一般以10个分组的窗口进行试验。当没有与实际可用容量(开环控制)有关的更好信息时,这些数量由惯例设定,以控制流的特性。同样地,为什么TCP在其起始阶段期间的每次往返行程会加倍其窗口是没有特殊理由的。加倍必定匹配在其闭环(或“拥塞避免”)阶段期间,TCP算法的另一部分所做的减半。然而,加倍和减半两者的选择数目是相当随意的。
此加倍并非始终与非TCP业务很好地相互作用。考虑到低速率(例如64kb/s)常数-比特-速率语音流正在另一空1Gb/s链路上进行的情况。进一步想象到大的TCP流在具有十个1500B分组的初始拥塞窗口和往返行程时间200ms的相同链路上开始。为了发现可用容量的数量,流每次往返行程时加倍其窗口直到在几乎11个往返行程之后,其窗口为每次往返16,666个分组(1Gb/s)。在下一往返期间,它将在获得检测暗示其前一往返行程超过可用容量的丢弃的第一反馈之前加倍到2Gb/s。该下一往返(16,666个分组)中将丢弃大约50%的分组。如果缓存器尺寸合适,则分组的该巨大丢失是最佳情形。
在本示例中,TCP已经用去11个往返行程时间(在这种情况下超过2秒)以发现其正确的操作速率。此外,当TCP丢弃该大量分组时,它可以需要花很长时间进行恢复,有时导致数秒(由于长期超时已经报告了的100秒[Ha08],或主机释放大量缓冲所需的时间)的中断。在该过程中,由于在这期间内丢弃了至少50%的语音分组,该语音流也可能中断至少200ms且经常更长时间。
这表明在流-启动期间存在两个问题:i)在流稳定在可用容量的正确速率之前的长时间;和ii)在新开始流发现其已经将其速率增加超出可用容量(过冲)之前,对本身及对其它流的特大量丢失损害。
这些问题不仅出现在新流开始时。非常相似的情形发生在流已经空闲一段时间,然后重新开始时。当流在空闲之后重新开始时,它不足以记得上次活动时的可用容量的数量,因为同时其它业务可能已经开始使用相同容量,或者使用相同容量的流可能已经完成,留下远比之前更多的可用容量。
这些问题甚至不是仅在流开始或重新开始时出现。如果双流正在共享相同容量,则它们将不断地缓慢地试图使用更多容量,有意地导致缓存器定期溢出和丢失。当任一流检测到丢失时,它通过减速进行响应。所有增加和所有减少的结果导致各流消耗一部分的平均容量。然而,当一个流完成时,其它流未被明显地告知更多容量可用。在最后消耗其它流释放的所有容量之前,它仅仅继续缓慢地增加,这可能是非常长的时间。
最近,新TCP算法(诸如立方TCP(Cubic TCP))已经被设计为更快地寻找出最新可用容量。然而,它们越快地发现新容量,它们越多地在达到可用容量的新限度和检测已经达到新限度的往返行程之后之间过冲。
随着因特网链路容量的增加,且流使用的比特速率增加,在过慢增长和过多过冲之间的该开环控制困境逐渐地变得更为严重。
多个用于分组网络(即,队列正在建立)中信令拥塞的不同方法在现有技术中是已知的,例如,主动队列管理(AQM)技术(例如,RED、REM、PI、PIE、CoDel)可以被配置为当检测到队列正在开始增长时,但是在队列排满之前,丢弃一部分的分组。随着队列变长,所有AQM算法丢弃更多分组。
可以布置主动队列管理算法以丢弃更大比例的、标记有更低服务等级或标记为协议期满的业务。例如,加权随机早期检测[WRED]确定是否使用RED AQM算法来丢弃到达分组,但是用于该算法的参数取决于标注在每个到达分组上的服务等级。
显式拥塞通知(ECN)[RFC3168]无论是在IPv4(图2)或IPv6(图3)中都是借助于IP报头中的两比特ECN字段在TCP/IP网络中传递拥塞信号。在引入ECN之前,这两个比特存在于这两种类型的IP报头中,但始终设定为零。因此,如果这些比特均为零,则队列管理进程假设分组来自不理解ECN协议的终端系统上的传输协议,因此对于信令拥塞,它仅使用丢弃,并非ECN。
图4示出了IPv4或IPv6中的两个ECN比特的所有四种组合的含义。如果任一比特为一,则说明分组具有的队列管理进程来自ECN能力传输(ECT),即,发送器和接收器都理解ECN标记、以及丢弃,作为拥塞的信号。
当队列管理进程检测到拥塞时,对于具有非零ECN字段的分组,它将ECN字段设定为经历拥塞(CE)码点。当接收到该标记的分组时,TCP接收器在其发送的分组的TCP报头中设定回复经历拥塞(ECE)标志,以确认其已经接收到该数据分组。如果已经丢弃了分组,至少出于其速率控制的目的,标准TCP源解释ECE反馈。但是毫无疑问,它不必转发该ECN标记的分组。
丢弃和拥塞信号不是相互排斥的信号,并且流使得ECN能够具有检测并响应两个信号的潜力。
ECN标准[RFC3168]有意地将相同含义分配给具有一个比特集的两个ECN码点(01和10)。它们都意味着传输是ECN能力(ECT)传输,并且如果它们需要进行区别,则它们分别被称为ECT(1)和ECT(0)。目的是允许有在未来提议区分这些字段的新方法的范围。
存在一些已知的用于二个ECN能力传输(ECT)码点的另选用途。
一种思想已经使用ECT(1)值来发出在不拥塞(ECT(0))和拥塞(CE)之间的拥塞的中等水平的信号。该思想已经在称为拥塞前通知(PCN[RFC5670])的方法的一个变型中被标准化。PCN使用并非实际上的队列的虚拟队列;相反,它是代表如果缓冲以比实际缓冲排出更慢地排出而可能已经形成的队列的长度的数量。PCN的一个变型使用两个虚拟队列,一个被配置为以比另一更慢的速率排出。当较慢的虚拟队列排列时,它使用ECT(1)码点来标记分组,而当较快的虚拟队列排列时,它使用CE码点来标记分组。所述PCN方法未被标准化,其作为仅在网络内的终端系统的信号。
AQM和ECN并非仅针对IP-感知设备。在队列排入缓存器之前,许多非IP设备使用AQM来丢弃分组并且使用一些明显包括发出拥塞信号的设备的低于IP的分层协议替代丢弃分组(例如MPLS[RFC5129])。这种低层协议通常封装IP分组。以MPLS的情况为例,当内部IP分组在MPLS子网的出口边缘处解封装时,在外部MPLS报头上的任何ECN标记被传播到内部IP报头以被转发到其目的地。
MPLS报头中的ECN的编码足够灵活,以能够至少在MPLS报头的大小的约束之内,定义至少一个级别严重性的拥塞通知。然后,例如,可以对两个等级的PCN标记进行编码。
在“通过使用针对许可控制和终止控制进行编码的PCN基线发出PCN阈值标记信号”中,附录D,D.佐滕等人[1],描述了用于标记代表瞬时利用逻辑链路的分组的比例的机制。通过标记在虚拟队列非空时到达的每个分组的ECN字段,来发出利用逻辑链路的信号。然后标记分组中的比特相比于所有比特的比例代表瞬时利用,但是该代表仅对到达时距的泊松分布是精确的。
已有来自研究机构的针对网络节点的其它提议,向终端系统发出预警即将到来的拥塞的信号,并发出实际队列增长的信号,以解决在新数据流开始时的开环控制问题。例如,夏勇等人[2]在“一个以上的比特足够”中的VCP,当链路的利用已经超过了设定阈值时,以与PCN类似的方式,使用ECN字段的ECT(1)码点来发送信号。
在“Anti-ECN标记:用于高带宽延迟连接的标记方案”中,S.Kunniyur[3],每个分组在其报头中携带一个称为Anti-ECN比特的比特。该比特初始设定为0。每个沿着该分组的路径的路由器通过确定该分组是否已经到达空的虚拟队列,来检查是否其可以允许流增加其发送速率。如果是的话,则路由器将该比特设定为1。如果到达时虚拟队列为非空,则它将该比特设定为0。然后接收器使用ACK分组来将该比特回应回到发送器。如果该比特被设定为1,则发送器增大其拥塞窗口,以及其速率。
专利申请US2002009771[6]公开了用于释放队列中分组的流量整形和调度功能。适于传输的分组设置有针对分组创建的标签,所述标签可以作为对标签的二叉树中的分组进行分类的依据来操作。所述标签是几个选取出的用于传输的分组的顺序的决定因素之一,然而,所述标签不用于表示在节点处的任何类型的拥塞。
发明内容
根据本发明的第一方面,提供了一种用于在分组网络中的节点处处理分组的方法,所述方法包括以下步骤:在队列处接收携带设定为第一状态值的状态标签的分组;检查所述分组到达时所述队列中已有的任一分组在离开所述队列时是否具有设定为相同的第一状态值的标签;以及,如果所述分组到达时所述队列中已有的任一分组在离开所述队列时具有设定为相同的第一状态值的标签,则将接收到的分组的所述标签状态值改变为不同的状态值。
如果队列中已有在离开所述队列时仍具有所述第一状态值的分组,则通过改变状态标签的值,来根据状态标签的序列来确定所述节点处的明确的队列长度,无论所述节点以何种单位测量队列长度。此外,接收状态标签的序列的终端系统能够从所述序列中快速地检测出队列增长的最开始迹象。
根据本发明的第二方面,提供了一种用于在分组网络中处理分组的节点,所述节点包括:接口,其被布置为在操作中接收并排队具有设定为第一状态值的状态标签的分组;以及模块,其被布置为在操作中:检查所述分组到达时所述队列中已有的任一分组在离开所述队列时是否具有设定为相同的第一状态值的标签;并且如果所述分组到达时所述队列中已有的任一分组在离开所述队列时具有设定为相同的第一状态值的标签,则将接收到的分组的所述标签状态值改变为不同的状态值。
根据本发明的第三方面,提供了一种用于估计在网络节点处等候处理的分组的队列的长度的方法,该网络节点被布置为根据本发明所述的方法进行操作,所述方法包括以下步骤:在另一节点处接收与已经经由所述网络节点路由的分组相关联的标签状态值的序列,其中,所述标签状态值被设定为第一状态值或不同的状态值;并且根据标签状态值的所述序列估计所述队列的所述长度。
通过根据接收到的状态标签的序列来估计队列长度,发送器节点将能够判断出是否它一直过缓地发出分组,或它将能够量化其传输速率已经比可用容量快多少,并相应地适应性地改变其分组传输速率。此外,发送器节点将在早期意识到不断增加的队列长度,远在存在实际拥塞以前,因此更快地对任何问题做出反应。
优选地,接收节点通常将它接收的状态标签反馈回到发送器节点作为编码的反馈消息,使得发送器能够根据携带第一状态值的分组之间的间隔确定队列长度。另选地,接收节点本身可以确定该间隔,并不断地导出队列长度。然后接收节点可以不断地将代表此队列长度的值反馈回发送器,或者接收节点甚至可以确定发送器使用的新速率并将代表该速率的值反馈回发送器。
根据本发明的第四方面,提供了一种在分组网络中的节点,该节点被布置为在操作中估计网络节点处等候处理的分组的队列的长度,该网络节点适于根据本发明来操作,所述节点包括:接口,其被布置为在操作中接收与已经经由所述网络节点路由的分组相关联的标签状态值的序列,其中,所述标签状态值被设定为第一状态值或不同的状态值;以及模块,其被布置为在操作中根据标签状态值的所述序列估计所述队列的所述长度。
附图说明
现将通过示例的方式参照如下附图来描述本发明的实施方式:
图1示出了典型的分组网络的示意图。
图2示出了IPv4分组报头。
图3示出了IPv6分组报头。
图4示出了IPv4或IPv6中的显式拥塞通知(ECN)字段的当前定义。
图5示出了随着队列长度的发展,非队列的ECN标记过程的示例图。
图6示出了具有单个未标记的分组队列的缓存器。
图7示出了非队列的ECN标记算法的排队和离队算法的相关部分的流程图。
图8示出了与非ECN能力分组进行混合的非队列的ECN标记。
图9示出了另选的非队列ECN标记算法的排队和离队算法的相关部分的流程图。
图10示出了随着队列长度的发展,另选的非队列的ECN标记过程的示例图。
图11a示出了发送器/接收器节点的示例性实施方式。
图11b示出了路由器节点的示例性实施方式。
具体实施方式
图1示出了典型的分组网络(10)的示意图。发送器节点(11)沿着路径(12)向接收器(18)发送数据分组。一连串路由器沿着路径转发数据分组。发送器节点(11)将其转发到客户边缘(CE)路由器(13),所述客户边缘路由器依次将它们转发到提供商边缘(PE)路由器(14)。其它发送器(未示出)通常将连接到CE路由器而其它CE路由器(未示出)通常将连接到PE路由器。PE路由器数据分组转发到核心路由器,所述核心路由器可以依次经由一个或多个核心路由器将它们向第二PE路由器(16)转发,所述第二PE路由器(16)经由另一CE路由器(17)将它们转发到接收器节点(18)。应当理解的是,从发送器节点至接收器节点的路径可以通过不同数量的路由器到图1所示的那些。
参照图11a,发送器/接收器节点(11,18)包括:接口(22)(其用于发送并接收去往/来自网络(10)的分组)、总线(21)、处理器CPU(23)、至少一个存储器(24)、至少一个存储装置(25)(其用于存储一个或多个程序模块(27))以及任选地一种缓存器(20)。然后程序模块(27)当被加载到存储器(24)中并由处理器(23)执行时,将执行后文描述的队列长度估计方法。
参照图11b,每个路由器(13、14、15、16、17)包括:处理器CPU(23)、至少一个存储器(24)、至少一个存储装置(25)(其用于存储一个或多个程序模块(26))和至少一个缓存器(20)(其用于每个输出接口(22))和总线(21)。一个或多个程序模块(26),当被加载到存储器(24)并由处理器(23)执行时,将执行后文描述的分组处理方法。
图6描述了具有几个已按特定顺序到达的分组(93、94)的这些缓存器(20)中的一个。实施时,从分组报头所选信息可以与实际分组被分别缓存,但是为了简明起见,仅示出单个缓存器。在先前分类和调度阶段中,路由器可能已经确定了哪些分组要在该缓存器中排队。缓存器及其管理包括:分组存储装置(90),离队功能模块(91)(其将分组转发给线)以及排队功能模块(92)(其排队到达的数据分组)。
可以在相同网络接口卡上实施排队功能模块和离队功能模块。另选地,在分布式机器体系结构中,它们可以在单独的卡上实施,同时共享对与分布式缓冲存储器有关的公共控制信息的访问。在这种情况下,缓存器(20)的部件将在逻辑上而非实体上是关联在一起的。
虽然术语“路由器”已经用于所有网络节点,但是这不是为了从实施本发明的缓存器中排除非-IP-已知节点,例如,以太网开关或MPLS开关。同样地,它不从实施本发明中排除具有缓存但没有路由或切换的功能,例如,终端系统、防火墙或网络地址转换器。
借助于图5,将首先描述非队列的ECN标记方法,用于单一瓶颈队列的最简单情况,其中,所有到达分组为大小相同并且来自均为ECN能力的数据源。
图5示出了在图中作为到达/离开分组(113)的时间函数的队列长度。时间沿着横轴被划分成时隙(110),同时分组(113)被例示为小矩形。在每个时隙期间,一个分组由离队功能模块(91)从缓存器转发到线(从在横轴下面,以对角线箭头的方向离开系统的单一分组的流(112)表示)。这不意在暗示实际中路由器在分立的时槽步骤中操作单个分组的大小;这仅仅是一种简化解释过程的方法。零、一个或多个分组(113)可以在一个时隙(110)期间到达,由沿着图顶所示的到达分组的堆栈表示,其中对角线箭头(114)示出在下一时隙(110)期间,整体到达堆栈的分组加入队列。每个时隙中的队列长度由图的主体中的分组的堆栈的高度所示。以粗边示出刚刚已被添加到当前时隙内的队列的分组。
图5中各分组(113)内的字符(115)(或缺少字符)使用图底处的图例中的缩写形式来表示该分组中的ECN码点的值。在该初始简单情况下,所有到达分组来自已经将ECN字段设定为ECT(0)的发送器,其是标准的ECN行为。
为编码队列长度信号的这些特定码点的选择不旨在排除其它类似编码。它仅用于例示本发明的具体示例,其已被设计成能够在当前的因特网中递增地部署。其它编码同样有效,特别是在部署的约束不适用的情况下。
当具有ECT(0)码点的分组到达时,如果在队列中没有具有ECT(0)标记的其它分组,则排队算法仅仅允许其保持ECT(0)标记。在分组带标号(111)的情况下,在队列中间已存在ECT(0)分组。因此,新到达分组被重新标记为ECT(1)码点。随着时间的推移,每个时隙中有一个分组离开队列,因此任何分组似乎沿着对角线向图右下方前进,直到它离开流(112)中的队列。
一旦未标记的分组(ECT(0))离开队列,将到达的下一分组可以保持未标记。这是图5所示的零的对角条纹可以按照当新ECT(0)分组到达时的队列长度间隔开的原因。因此,离开队列的分组的流(112)中的ECT(0)分组之间的间隔代表在较晚的ECT(0)分组最初到达时的队列的长度。
该间隔可以以分组、字节或时间进行测量。在更多实际情形中,到达分组将大小各异。分组标记过程将与已述的不存在区别,即如果队列中已存在标记ECT(0)的分组,则每个到达分组将仍然被标记为ECT(1)码点。随着分组离开缓存器,然后在一个ECT(0)分组的开始和之前的ECT(0)分组的开始之间的传输字节的数量将代表两个分组中的第二个到达时刻以字节计的队列的长度。同样地,在一个ECT(0)分组开始离队和之前ECT(0)分组开始离队之间的持续时间将代表由第二ECT(0)分组经历的排队延迟。
下文描述了采用图6和图7中的伪码和图来实施非队列的ECN标记算法的一种方式。后文还描述了另选的算法,不过应该理解的是,这两个示例算法没有排除实现相同结果的其它类似方式。
算法由两个功能组成,这两个功能是排队模块(92)和离队模块(91)的一部分。这两个功能共享用于在二者之间进行通信的二进制变量ect0inQ(100),如果队列中存在携带ECT(0)码点的分组,那么该二进制变量ect0inQ(100)被设定为真。其初始化如下。
Boolean ect0inQ=FALSE
图6例示了已经包含两个分组的分组存储装置(90),第一个(93)具有ECT(0)标记,而第二(94)具有ECT(1)标记。
随着每个到达分组进行排队,在排队功能模块(92)内的如下算法允许队列中不超过一个、具有ECN字段为ECT(0)的分组:
随着每个分组离队,运行以下算法以保持ect0inQ变量,该ect0inQ变量追踪队列中是否存在标记为ECT(0)的分组:
作为示例,认为当第一分组(93)到达携带ECT(0)标记的排队功能模块(92)时,队列为空。在阶段(101),仅携带ECT(0)标记到达的分组被传递到非队列的ECN标记算法。该分组这样做,所以它传递到阶段(102),该阶段测试共享变量ect0inQ。当最后的ECT(0)分组离开队列时,通过上述初始步骤,或通过离队循环的更早执行,该共享变量将已被设定为假。因此,执行传递到阶段(104),其中,ECT(0)码点保持不变且ect0inQ被设定为真,以反映现在队列中允许单个ECT(0)分组进入的事实。然后执行传递到阶段(105),该阶段执行普通排队机构将分组增加到缓存器的存储器结构中。
作为不同示例,认为携带ECT(0)标记的第三分组(95)到达排队功能模块(92),同时第一分组仍尚未被完全转发到线。在阶段(101),测试新到达的分组是否携带ECT(0)标记,该分组这样做,因此传递到阶段(102),该阶段测试共享的变量ect0inQ。因为ECT(0)分组(93)仍然正位于队列的头部,ect0in仍为真。所以此时,执行传递到阶段(103),该阶段ECN字段被重标记为ECT(1)。然后执行再次传递到阶段(105),该阶段执行普通排队机构将分组增加到缓存器的存储器结构中。
当分组(93)已经最终完成通过正常离队处理(108)被转发到线时,离队功能(91)的模块被称作管理非队列的ECN标记。如果即将完成离队的分组携带ECT(0)标记,如分组(93)所做,则阶段(106)传递执行到将共享ect0inQ标记设定为假的阶段(107),这表明队列中不再存在ECT(0)分组。这将允许新ECT(0)分组通过排队功能中的阶段(102)的下一次执行来进入队列,因为如已经解释过的,它将传递到阶段(104)而非(103)。
另一方面,如果阶段(108)之后即将完成离队的分组没有携带ECT(0)标记,则阶段(106)将执行直接传递到外部离队功能,以处理下一分组的操作,而不执行除此以外的任何操作。
此算法设计是已知互斥算法的示例,使得排队(92)部分和离队(91)部分的实施可以在独立并行的处理器上执行,因为不可能事件或竞态条件的任何顺序可以永远同时允许两个ECT(0)分组进入队列。
如参照图5已指出的,在输出分组流(112)中的未标记的(ECT(0))分组之间的间隔代表后一ECT(0)分组到达队列的时刻的队列长度。参照图1,数据发送器(11)能够连续地监控队列长度,接收节点(18)必须将数据流中它已经接收到的每种类型的ECN码点的数量的编码反馈回到发送器(11)。
另选地,接收节点本身可以确定该间隔,并不断地导出队列长度。然后接收节点可以不断地将代表该队列长度的值反馈回发送器,或接收节点甚至可以确定发送器将使用的新的速率,并将代表该速率的值反馈回发送器。
不过,接收器将简单反映其接收到的ECN字段的值的编码时最直接的,因为该反馈已经通过较新的端到端传输协议进行提供,并且它正被添加到较老的那些协议中,诸如TCP。
具体地,M.Kuhlewind和R.Scheffenegger[4]的名为“TCP中更准确的ECN反馈”的提议早于因特网工程任务组(IETF),用于修改TCP协议,使得接收节点(图1中的18)将其在数据流中已经接收到的每种类型的ECN码点的数量的指示反馈回到发送器(11)。其它最新的端到端传输协议已经提供了足够的ECN反馈信息,例如,基础数据报拥塞控制协议(DCCP[RFC4340])和为增加ECN能力[RFC6679]的实时控制协议(RTCP)的最近修改。
不过,所有通过缓存器进入网络中链路的分组不必在相同的发送器处开始。例如,参照图1,虽然发送器(11)被连接到CE路由器(13)和(PE)路由器(14)之间的链路,但是其它发送器也可以连接到该CE路由器。此外,在发送器(11)内,多个独立过程可以通过此链路来发送数据。因此,图5中的分组可以被划分为子集,每个属于在不同的发送和接收过程之间的不同数据流。
现在将显示的是,非队列的ECN标记方案平均地将队列长度发送信号至这些独立数据流中的每一个,使得这不仅仅用于仅一个数据流单独存在于链路上。一个数据流中存在的分组越多,平均测量变得越精确,使得短流接收队列长度的粗略估计,同时较大流显示所述展开队列长度的更精确视图。这足够用,因为如果短流队列长度的估计过大或过小,则短流能够对其它流造成有限的伤害,然而如果较大流队列长度的测量明显不正确,则能够对其它流造成更多伤害。
作为示例,为简便起见,认为图5中的分组的队列是10个分组的恒定竖直队列,以便离开缓存器的流中的每第十个分组携带ECT(0)码点,而每另外九个携带ECT(1)。进一步认为分组的流由二个数据流组成,一个平均消耗20%的链路容量,而另一个消耗80%。假设分组从每个流随机地到达第一流将占用约20%的ECT(1)标记和20%ECT(0)标记。因此,在100个分组的流上,如下表所示,平均而言,10个将携带ECT(0),且第一流将看到其中的20%x 10=2个,同时总计90个将携带ECT(1),且第一流将看到其中的20%x 90=18个。因此,平均而言,第一流中20个分组中的2个将携带ECT(0),因此平均上第一流将准确地计算队列为20/2=10个分组长,即使它仅接收分组的20%。
非队列的ECN标记方案并未直接使得任一数据源能够确定对队列长度的自身贡献,与队列总长度不同。然而,推理技术将能够对此进行估计。例如,通过改变其自身的数据速率并将其变化与队列总长度的改变相关联,发送器能够确定其负责的一部分队列。另一可能的启发将是同时测量ECT(0)码点之间的时间及其自身的字节数。例如,进入80Mb/s线的10x1500B分组的队列应当在(10x1500*8)b/80Mb/s=1.5ms内排出。如果数据源知道(通过一些其它机制)其瓶颈链路是80Mb/s,并且如果它测量出每10个1500B分组中出现一个ECT(0)分组,但是它们之间的时间是7.5ms并非1.5ms,则能够估计到这对队列的1.5/7.5=20%做贡献。
现在将描述又一情形,其中,网络中的一些流是ECN-能力且其它流不是。在这种情况下,通过上述非队列的ECN标记算法给出的信号仅代表队列中的ECN能力分组的长度,好似非ECN能力分组不存在。
这在图8中示出,其中,不含字符标号的分组代表非ECN能力分组,如图底的图例所示。一些到达分组不是ECN-能力,然而它们携带ECT(0)码点。前面描述的非队列的ECN标记算法确保具有ECT(0)码点的唯一分组可以在任一时间排队,但是它没有考虑任何其它ECN码点。
在本示例中,在开始和结束时,ECT(1)标记未出现在ECT(0)标记之间,这意味着在任一时间队列中的ECN能力分组的数量仅为一。在某些情况下,在序列中间,ECT(1)分组插在两个ECT(0)分组之间。这意味着当较晚的ECT(0)分组到达时,两个ECN能力分组已在队列中。即使由于非ECN能力分组,队列实际上更长,该算法也未将其计入。
在如下情形中,可以存在ECN能力和非ECN能力业务的混合,非队列的ECN标记方案并未给出终端系统的来自所有业务的组合队列的全部画面。这可以是限制或优点。
限制是传统业务的实际队列长度可能长于由非队列的ECN标记方案报告的队列长度。因此,方案不能单独使用作为唯一的拥塞信令机制;甚至支持它的源也必须注意现存的拥塞信令方案,诸如分组丢弃或初始ECN标准的拥塞经历信号。
优点是来自非队列的ECN标记的信号仅表示由使用方案的终端系统所导致的队列的长度的一部分。因此,使用方案的终端系统可以检测其自身的集体尝试的结果,以保持队列短,而不会被不支持方案的遗留节点的行为所混淆。
在又一实施方式中,非队列的ECN标记方案与初始ECN标记方案结合使用。如已解释过的,初始标准ECN方法涉及标记一部分具有经历拥塞(CE)码点的ECN能力分组的拥塞缓存器,而不是将其丢弃,如果相同分组并非ECN能力,则会将其丢弃。
因此,通过与上面给出的多个流有关的类似论述,非队列的ECN标记方案和初始标准ECN方法[RFC3168]都可以被部署并且同时应用于相同的ECN能力分组。在一个节点处,当它处理每个分组时,会优选地在初始标准ECN标记算法之后执行非队列的ECN算法,因为非队列的ECN标记的结果取决于即将到来的分组中的ECN码点,但是初始标准ECN标记不是那样的。该顺序将保证在信号之间用于队列长度的精算值的更快速的收敛。
如果,如所推荐的,初始标准ECN标记应用在非队列的ECN标记之前,该信号将代表ECN分组的队列的平均长度,但未算CE分组。鉴于此,CE-标记分组的比例通常是小的且几乎总是非常小,所估计的队列长度的误差通常也非常小。从更早的推理中可以导出与非ECN能力分组有关的推理,因为CE分组也被非队列的ECN标记算法所忽略。
然而,初始标准ECN方案很可能在路径中靠后的拥塞节点处,随后在路径中靠前的节点处标记分组,该路径已经使用非队列的ECN方案对其进行标记。在这种情况下,信号仍将给出正确的平均队列长度,一般而言它将仅花费更长时间来收敛。可以从更早的推理中导出与共享瓶颈的多个流有关的推理。CE标记可随机地被应用,因此它可以被认为是单独随机地选择的分组的子集,该子集将具有和将要分离出分组的流对队列长度信号相同的效果。
当数据流通过网络中的多个缓存器时,诸如沿着路径通过图1中的网络,有时一个以上的缓存器将同时成为瓶颈,虽然瓶颈更典型地在不同的缓存器而不是队列之间移动,以在两个或多个中同时形成。
在两个或多个同时瓶颈的情况下,其全部具有非队列的ECN标记方案,最终的信号将给出对最长队列的长度的估计。如果最长队列在路径中靠后,则此测量将被向上舍入到路径中靠前的队列长度的下一个整数倍数。
例如,参照图1,让我们假设同时恒定队列已在缓存器处形成于CE路由器(13)的上行链路并在缓存器处形成于PE路由器(16)处的下行链路,用于从CE路由器(13)向CE路由器(17)的方向传送数据。我们将对两个队列长度分别使用符号q1和q2,且q用于穿过两个瓶颈的业务的ECT(0)码点之间的间隔。
如果q1≥q2,则测量间距将仅是
q=q1;q1≥q2,
因为仅几个ECT(0)标记将离开较早的瓶颈,而路径上稍后的瓶颈不会将任何ECT(1)标记恢复到ECT(0);它仅保证在任一时刻至多一个ECT(0)码点处于队列中。
如果q2>q1,则
因为较早的队列输出偶然的ECT(0)标记而较晚的队列通过将其重标记到ECT(1)而仅能移除其中一些。它无法将其余ECT(0)码点一起移动靠近,它仅能将它们留在原地。
(是表示顶函数的方式,其是x向上舍入到下一整数值的值)。
在现实情况下,队列长度将是变量而非常量。然后来自组合队列的ECT(0)标记之间的间隔将变化且平均值将接近上述结果。
现在将描述发送器节点是如何使用非队列的ECN标记信号的反馈。在流的开环控制阶段期间,例如,在流-开始时,当发送器正在试图感测可以多快地发出分组时,它可以按其连着的接口(通常远快于路径中稍后的瓶颈)的速率发出分组的短时突发。它将发送在ECN字段中具有ECT(0)码点的所有分组。
我们已经描述了端到端传输协议,该传输协议反馈接收到的每个ECN码点的数量。因此我们将假设接收器返回反馈,反馈指示在网络中已经通过的非队列的ECN标记算法之后所产生的ECN码点。
假设发送器发送10个尺寸相等的分组的初始突发,并且在延迟的一次往返行程之后,反馈回的ECN标记顺序为:0,1,1,0,1,1,1,1,1,1,
其中,0是ECT(0)的简写而1是指ECT(1)。此序列暗示当第一分组到达(即,此流可能仅在瓶颈中)时,可能根本没有队列。两个第一ECT(0)标记之间的三个分组的间隔还暗示发出的分组速率是瓶颈速率的两倍至高达三倍。
事实上,如果发送的分组速率比瓶颈速率快n倍,则ECT(0)标记之间的间隔将形成序列n、n2、n3等,因此,没有随后的零,因此在下一ECT(0)标记之前的最小间距是七个分组,该事实暗示n2≥7。因此,发送器可以从上述反馈序列中推断出n>2,n≤3和n≥√7,或2.65≤n≤3。
随着第一个确认到达发送器,它可以开始释放进一步分组,同时不断地更新其可用容量的最佳估计。一旦反馈已经到达最初四个确认(ACKs),发送器的n的最佳估计将是2.5(2和3之间中间)。因此它将能以首个往返发送10个分组的速率(首个往返参考速率)的约1/2.5开始发送分组。甚至仅在第四ACK之前,发送器将知道n>2。一旦来自首个往返的所有10个确认已经返回,同时反馈中没有进一步的零,其n的最佳估计将大约为2.825(在2.65和3之间中间)。然后,能够将其平均发送速率增加到首个往返参考速率的约1/2.825,作为瓶颈速率的合理估计。为了改善其瓶颈链路速率的估计,它还应当将啁啾添加到定步,我们将在稍后对其进行描述。
当第二往返的ACK开始到达时,它们都可以反馈ECT(0),这将暗示着所选速率已太慢,或许仅稍微。这是也是推荐啁啾的原因(参见下文)。
然而,让我们假设所选定步相反稍快于可用容量,并且返回反馈的序列是:
针对ACK的反馈:0,0,0,0,1,0,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1...
该序列暗示随着每个分组到达,队列正在逐渐地增长,如下:
暗示的队列长度:1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5...
因为此序列暗示队列按每发送四个中约一个分组的速率增长,这暗示着发送器应当减速其定步以在原来发送四个的时间发送三个分组。因此以其之前速率的约75%发出分组应当大约匹配该瓶颈速率。
在不同的情形中,如果流的最初分组的ACK发出接收到ECT(1)的信号,则确实地揭示其它业务已在瓶颈缓存器中排队。然后相比于如果针对每个突发的第一分组的反馈是ECT(0),则发送器将需要更谨慎地进行。相反地,一个初始ECT(0)ACK并不一定暗示着发送器是独立的,但是这越频繁地发生,就越可能为真。
上述示例示出发送器可以使用来自非队列的ECN信号的丰富信息,从而快速地发现具有远远更低的过冲风险的正确发送速率。如上述那些的简单算法需要立即定步所发送的分组以便响应该反馈不断改变的水平。
如已指出的,发送器可以低估而不是高估定步输出分组的速率,然后随后反馈的往返或许将发出恰好ECT(0)分组的流的信号,这将给出极少的与接下来使用的速率有关的有用信息。
一种更有用的策略将通过保持整体所选平均速率高于分组的序列,但改变单个分组之间的间隔,来测试每个往返中的各种速率。最快地显露信息的策略,对其它业务具有最少潜在中断是发送分组的“啁啾(chirp)”,其中,啁啾是在分组间间隔变得越来越近的一连串小量分组(例如,4到12),参见Kuhlewind等人,“用于拥塞控制的啁啾---实施可行性”[5]。
另选地,或进一步地,可以在每个啁啾期间增加分组大小。改变分组大小还有助于在不同类型的队列之间进行区分,即是否队列起因于无法足够快地传输比特或起因于无法足够快地处理报头。
在啁啾的最初几个分组中,分组间发送速率或许将低于瓶颈容量且不形成任何队列。然后随着分组靠得更近,它们将开始引起队列,且非队列的ECN标记算法将通过重新标记分组的所需数量,来向ECT(1)发出该队列长度的信号。当一个啁啾结束而下一个开始时,它将允许队列排出。然后部分地通过下一啁啾,队列将再次开始建立。以这种方式,发送器可以询问队列的多少将以平均速率附近范围内的速率构建,从而改变其速率以适应瓶颈的当前可用容量。此过程是可能的,不管发送器的数据流单独处于瓶颈中,或与其它流竞争。
非队列的ECN标记提供队列开始增长时点的显式测量。基于啁啾的之前方法已不得不准确地测量由啁啾诱发的排队延迟的变化,其提供强噪声信号,因为存在延迟变化的诸多其它原因,诸如来自操作系统中或任一端硬件处或网络中的其它处理的中断。另外,通过增加一分组到队列而进入快速线的延迟变化非常小-通常远小于延迟中的那些其它变化。例如,进入1Gb/s线的队列的一个额外的1500B分组诱发(1500x8)b/1Gb/s=12微秒的额外延迟。相反地,非队列的ECN标记方法给出显式信号,通过该信号,能够导出队列长度(以分组、字节和/或时间计),无论线有多快。因此它耐受线速的未来增加。
如果发送器发出标记ECT(0)的所有分组且反馈显示网络路径上没有任何地方已被修改为ECT(1),这可以是两个可能情形的迹象:
·路径上的最小可用容量大于发送器可以发送的最高速率,因此不存在网络瓶颈;
·网络瓶颈不实施非队列的ECN标记。
即使返回一些ECT(1)反馈,这可以是第一瓶颈实施非队列的ECN标记的迹象,但是然后业务遇到后续更狭窄的瓶颈不实施非队列的ECN标记。
因此,安全起见,如果存在不实施非队列的ECN标记的瓶颈的迹象,则发送器应当谨慎地进行。它能够通过测量ACK速率来对此进行测试,即,返回确认的速率。然后,它基于非队列的ECN标记,来计算它将使用的试行速率。如果ACK速率明显慢于该试行速率,则发送器应当谨慎地进行(例如,使用传统TCP慢启动)。如果ACK速率和试行速率大致相同,则发送器可以假设它已经试验性地从非队列的ECN标记中推断出的速率适于使用。
这可以引发为何ACK速率无法始终用于确定瓶颈容量的问题,使得非队列的ECN标记冗余。答案是难以准确地测量ACK速率,然而非队列的ECN标记给精确的显式信号。因此,避免明显比ACK速率更快地发送是有用的安全检查,但是ACK速率自身太不精确而无法单独使用。
除了发送器希望快速地将其发送速率与可用容量相适应之外,本发明可以用于估计节点处或通过网络节点横跨路径的队列长度,以解决问题。例如:
·测试探针可以希望发送最小测试业务量,以测量可用容量;
这种探针可以用于:
用于网络运营商测试网络的性能,同时致使对现有业务的最小中断;
测试是否存在足够可用容量的应用,以对现有业务的最小中断开始新会话。
·网络运营商可以希望通过被动地测量通过监控点的业务中的ECT(0)标记之间间隔,通过选择具有表示它们已经穿过网络中的关注点,或通过多个节点的关注路径的源和目的地地址的分组,来定期地监控网络中的队列长度。
·网络运营商或应用可以发送分组的流,以监控由于两个ECT(0)标记之间的延迟所指示的路径上排队的延迟。
·网络运营商或应用可以发送分组的流,以通过测量总延迟并减去排队延迟,来监控沿着通过网络的一条路径的基础延迟。可以采用到达具有ECT(0)标记的接收器处的两个分组并测量发送第二和接收第一之间的时间,来测量单向基础延迟。双向基础-延迟可以通过响应网络远端处的回声-服务器的分组并将任一方向上将单向基站延迟加在一起,通过监控正向方向上ECN标记的反馈和反向方向上ECN标记本身的间隔之间的间隔。
·另选地,基础延迟可以通过发送适当间隔开的分组的流并测量那些具有证明尚未经历过排队的ECT(0)值的序列的延迟,来测量基础延迟。
现在将借助于图9和图10来描述非队列的ECN标记的另选实施方式。在此另选过程中,分组上的ECN标记不变直到它们离开队列。分组到达时的唯一动作是使用其到达的时间来对其进行戳记。
图9左侧的流程图详述了用于该另选的图6的排队过程(92)。图9右侧的流程图详述了用于该另选的图6的离队过程(91)。图10示出了如图5的到达和离开分组的相同情形,但是它例示了该另选实施方式如何工作,而不是图5所示的实施方式。
排队过程是简单回路,其中,随着每个分组(pkt)到达,在阶段(110),到达时的挂钟时间被存储在与分组(pkt.tsi)相关联的存储结构中,其中,tsi代表“进行时间戳(timestamp in)”,因为这等同于到达时对分组戳记时间戳。图10示出了队列中的每个分组上戳记的tsi的值。为简便起见,在一个时隙(以粗线勾边)之内到达的所有分组被显示为戳记有相同值,虽然实际上时间戳的粒度可以更精细。随着时间的推移,这些分组前进穿过队列,就像图10描述的那样,具有相同时间戳的分组会斜对角向下前进并且到达右侧。在阶段(105),执行对分组进行排队所需的其它正常步骤。
用于该排队过程的伪码给出如下:
在先前标记有ECT(0)的分组离开队列时,时间在离队过程的相关点时应该已经被存储在一个被叫做t0的变量中。因此变量t0保持“最后的ECT(0)分组离开的时间”,且每当ECT(0)分组离开时,其值会被示出在图10中的横轴以下变化。我们将看到在排队期间添加时间戳,以便当分组稍后离队时,它可以与t0进行比较。
在离队过程的第一阶段中,采取正常的离队步骤(108)。然后,在该另选非队列的ECN标记实施方式(111)的离队侧的第一阶段中,检查队列的头部处的分组,以查看它是否携带ECT(0)标记。如果它没有携带的话,不需要确定它是否应当从ECT(0)改变,因此无需进一步的处理来完成该分组的离队过程。但是,如果分组携带有ECT(0)标记,则它传递到阶段(112)。
在阶段(112),当分组到达时,与分组相关联的时间戳与当最后标记ECT(0)的分组离开时的存储时间t0进行比较。如果时间戳不大于t0,则这暗示该分组在最后ECT(0)分组离开队列之前到达队列。因此,该分组应在阶段(114)被重新标记ECT(1),因为它被添加到队列中时,队列中已有另一ECT(0)分组。如果另一方面,时间戳大于t0,则这暗示着该分组在最后ECT(0)分组离开队列之后到达。因此,在该分组上的ECT(0)码点被允许保持,因为在其到达时队列中不存在其它ECT(0)标记的分组。因而,剩下的所有要做的事情就是传递到阶段(113),其中,更新t0以存储当前时间,因为这是ECT(0)分组已经离队的时间。
用于该离队过程的伪码给出如下:
dequeue(packet){
foreach packet{
%code to dequeue the packet here
if(read_ECN(packet)==ECT0){
if(pkt.tsi>t0){t0=time(now)}
else{write(pkt,ECT(1)}
}
}
可以看出,该另选过程导致相同的结果,就如同参照图7中的流程图的图5中最初所示的实施方式。
用作时间戳tsi和变量t0的参考的时间不必以任何精度进行测定,只要在排队和离队过程中均使用公用时间基准。实际上,只要每当任何尺寸的分组离开时,其增加至少一个增量且由排队和离队过程所涉及的数量同步递增,任何单调地增长的数量都可以用作参考。
现在将描述本发明更进一步的另选实施方式,该实施方式在分组报头中的新限定的字段中编码队列长度,而不是在IP报头的ECN字段的单个剩余码点中。在该实施方式中,分组报头定义一个多比特字段作为队列长度字段。例如,IPv6扩展报头可以定义为这种目的,或者IPv4报头中的分组识别符(ID)字段的子字段可以在分组中被重新使用,其中,ID字段不用于其初始目的,因为设定了“不分段”(DNF)标志。
实施初始版本的该实施方式的缓存器应当将该队列的长度(例如,以字节计)作为内部变量保持,然后将该数量的当前值(作为整数)写入到能够在该新限定的字段中携带该值的每一个分组中。该实施方式的更实际版本将队列长度的标准编码写入该字段。例如,可以使用以2为底数的队列长度的对数(以字节计),或以标准浮点格式的数字。它可以在到达或离开时写入队列长度。
对于到达时此队列长度计数器字段中已有除零之外的数值的分组,如果缓存器中的值大于分组中已有值,则缓存器仅仅需要将其自身队列的长度重写该值。以这种方式,方案将通过网络在路径上发出最大队列的信号。
本实施方式的优点在于瞬时队列长度的精确值的编码可在每个分组中得到,然而在前述实施方式中,队列长度仅可在接收到携带ECT(0)的分组时精确获知。该实施方式的一个缺点在于它要求将在IP(及在其它低层协议中)中限定的新字段。另一缺点在于测量队列长度的单位受限于方案(示例中的字节)所定义的单元,然而在前述实施方式中,队列长度可以通过选择测量标记分组之间的间隔的单位,以字节、分组或时间单位进行测量。
可以通过管理网络中或终端系统中的各自路由器、开关或其它中间盒的缓存器的程序模块所提供的应用程序数据中具体实施的可执行计算机程序代码,来至少部分地实现本发明的示例性实施方式。当将这种计算机程序代码加载到由相应处理器执行的每个路由器、开关、中间盒或终端系统时,它提供了计算机程序代码结构,该计算机程序代码结构能够根据本发明上述示例性实施方式来执行缓存器的功能。
此外,本领域技术人员将理解的是,参考的计算机程序结构可以对应于图7或图9中所示的过程流,其中,过程的每个步骤可以对应于计算机程序代码的至少一条线,与相应路由器、开关、中间盒或终端系统中的处理器相结合,以提供用于实现所述过程的装置。
上述实施方式应当被理解为本发明的说明性示例。设想本发明的其它实施方式。例如,用于实现所述过程的模块或模块的一部分可以以硬件或硬件和软件组合进行实施。
用于确定中间节点的缓冲队列长度的方法及因此所需的模块可以在发送器节点、接收器节点、另一中间节点或在每个中部分地实施。例如,接收节点能够计算队列长度并将其连同标签值的序列一起反馈回发送器节点,其中,在发送器可以进行标签值序列的更加详细分析,诸如,确定在分组发送速率和缓存器的速率之间的差异并将分组发送速率与缓存器的速率相互适应。
总之,提供了一种用于如果缓冲队列中已经存在具有相同第一状态值的分组,则在所述分组到达缓存器时将分组标签状态值从第一值改变为不同值的方法和装置。在端节点处接收到的分组中的标签状态值的序列用于确定分组网络中的缓存器的队列长度。此后端节点可以使其发送速率与缓存器的速率相适应。
参考文献
[1]Satoh,D.,Maeda,Y.,Phanachet,O.&Ueno,H.,"Single PCN ThresholdMarking by using PCN baseline encoding for both admission and terminationcontrols,"Internet Engineering Task Force Internet Draft draft-satoh-pcn-st-marking-01(March 2009)(Work in progress)<http://tools.ietf.org/html/draft- satoh-pcn-st-marking-01>
[2]Xia,Y.,Subramanian,L.,Stoica,I.&Kalyanaraman,S.,"One more bit isenough,"Proc.ACM SIGCOMM'05,Computer Communication Review 35(4):37--48(2005)
[3]S.S.Kunniyur,"AntiECN Marking:A Marking Scheme for High BandwidthDelay Connections,"Proceedings,ICC,Alaska,May 2003.<http:// www.seas.upenn.edu/~kunniyur/papers/aecn.html>
[4]Kühlewind,M.&Scheffenegger,R.,"More Accurate ECN Feedback in TCP,"Internet Engineering Task Force Internet Draft draft-ietf-tcpm-accurate-ecn-01(July 2012)(Work in Progress)
[5]Kühlewind,M.&Briscoe,B.,"Chirping for Congestion Control---Implementation Feasibility,"In:Proc.Int'l Wkshp on Protocols for Future,Large-scale&Diverse Network Transports(PFLDNeT'10)(November 2010)
[6]US patent application 2002/097719“Method and apparatus for trafficshaping for router queues/egress”,Chaskar et al.
Claims (14)
1.一种用于在分组网络中的节点处处理分组的方法,该节点具有用于存储一个或多个分组的队列,所述方法包括以下步骤:
在所述队列处接收携带设定为第一状态值的状态标签的第一分组;
确定在所述第一分组到达时所述队列中已有的所存储的分组在离开所述队列时具有设定为相同的第一状态值的状态标签;
将所述第一分组的标签状态值改变为不同状态值;
使所存储的分组从所述队列离队;
在所述队列处接收携带设定为所述第一状态值的状态标签的第二分组;
检查在所述第二分组到达时已在所述队列中的任何分组在离开所述队列时是否具有设定为相同的第一状态值的状态标签;
向所述分组网络中的另一节点发送标签状态值序列,该序列包括:
与设定为所述第一状态值的第一个所存储的分组关联的状态标签,
与设定为不同状态值的第一分组关联的状态标签,以及
与设定为所述第一状态值的所述第二分组关联的状态标签。
2.根据权利要求1所述的方法,所述方法还包括以下步骤:对所接收到的第一分组戳记指示所述第一分组到达所述队列的时间的指示符tsi;存储指示具有设定为所述第一状态值的状态标签的最新分组离开所述队列的时间的另一指示符t0;将所接收到的第一分组的所述指示符tsi与所存储的指示符t0进行比较;并且如果tsi小于或等于t0,则将所接收到的第一分组的标签状态改变为所述不同状态值;并且如果tsi大于t0,则保持所述第一状态值。
3.一种用于在分组网络中处理分组的节点,所述节点包括:
接口,其被布置为在操作中接收并排队具有均被设定为第一状态值的状态标签的第一分组和第二分组;
用于存储一个或多个分组的队列;以及
模块,其被布置为在操作中:
确定在所述第一分组到达时已在所述队列中的所存储的分组在离开所述队列时具有设定为相同的第一状态值的状态标签;
将所述第一分组的标签状态值改变为不同状态值;
使所存储的分组从所述队列离队;
在所述队列处接收携带设定为所述第一状态值的状态标签的第二分组;
检查在所述第二分组到达时已在所述队列中的任何分组在离开所述队列时是否具有设定为相同的第一状态值的状态标签;
向所述分组网络中的另一节点发送标签状态值序列,该序列包括:
与设定为所述第一状态值的第一个所存储的分组关联的状态标签,
与设定为不同状态值的第一分组关联的状态标签,以及
与设定为所述第一状态值的所述第二分组关联的状态标签。
4.根据权利要求3所述的节点,所述节点还包括用于存储指示符t0的存储器,所述指示符t0指示具有设定为所述第一状态值的所述状态标签的最新分组离开所述队列的时间,并且其中,所述模块还被布置为在操作中将所接收到的第一分组戳记指示所述第一分组到达所述队列的时间的指示符tsi,并且将所接收到的第一分组的所述指示符tsi与所存储的指示符t0进行比较,并且如果tsi小于或等于t0,则将所接收到的第一分组的标签状态改变为所述不同状态值,或者如果tsi大于t0,则保持所述第一状态值。
5.一种用于估计在网络节点处等候处理的分组的队列的长度的方法,该网络节点被布置为根据权利要求1或2所述的方法进行操作,所述方法包括以下步骤:
在另一节点处接收与所述第一分组、第二分组以及所存储的分组关联的所述标签状态值序列,所述标签状态值序列与已经经由所述网络节点路由的分组相关联,其中,所述标签状态值被设定为第一状态值或不同状态值;并且
根据标签状态值的所述序列估计在所述第二分组到达时所述队列的所述长度。
6.根据权利要求5所述的方法,所述方法还包括以下步骤:通过确定在所述序列中的具有设定为所述第一状态值的各自状态标签的两个分组之间的间隔,或者通过确定在所述序列中设定为所述不同状态值的连续的状态标签的数量、长度或持续时间,来估计队列长度,其中,所述间隔代表所述第二分组到达所述分组网络中的中间节点时的所述队列长度。
7.根据权利要求5所述的方法,所述方法包括:接收器节点根据标签状态值的所述序列估计队列长度,或另选地,所述接收器节点将标签值的所述序列的编码发送到发送器节点且所述发送器节点估计所述队列长度。
8.根据权利要求7所述的方法,其中,如果所述分组网络中存在多于一个的流,则每个流的所述发送器节点通过改变其自身的数据速率并使不同的数据速率与总队列长度的变化相关联,来估计其自身对所述总队列长度的贡献。
9.根据权利要求5所述的方法,所述方法包括发送器节点基于确定的队列长度而适应性地改变所述发送器节点的传输速率。
10.根据权利要求5所述的方法,所述方法还包括:发送器节点发出一连串的分组,在所述一连串的分组中,分组间间隔变得越来越近;根据状态值的所述序列确定队列的多少以平均速率附近范围内的速率构建,并且改变发送速率以适应瓶颈节点的当前可用容量。
11.根据权利要求5所述的方法,其中,如果所述分组已经通过一系列的网络节点,其中所述一系列的网络节点中的每一个网络节点均包括队列,则所述节点估计最长队列的长度。
12.一种分组网络,该分组网络包括:
第一网络节点,该第一网络节点根据权利要求3或4所述的节点来操作;以及
第二网络节点,该第二网络节点被布置为在操作中估计在所述第一网络节点处等候处理的分组的队列的长度,所述第二网络节点包括:
接口,其被布置为在操作中接收与已经经由所述第一网络节点路由的所述第一分组、第二分组以及所存储的分组相关联的标签状态值序列,其中,所述标签状态值被设定为第一状态值或不同状态值,
其中,所述第一网络节点或所述第二网络节点包括模块,该模块被布置为在操作中根据所述标签状态值序列估计在所述第二分组到达时所述队列的长度。
13.根据权利要求12所述的分组网络,其中,所述模块还被布置为在操作中:通过确定在所述序列中的具有设定为所述第一状态值的各自状态标签的两个分组之间的间隔来估计队列长度,其中,所述间隔代表所述第二分组到达所述分组网络中的所述第一网络节点时的所述队列长度,或者,根据在所述序列中设定为所述不同状态值的连续的状态标签的数量、长度或持续时间来估计所述队列长度。
14.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质存储计算机程序,当所述计算机程序由处理器执行时使所述处理器执行根据权利要求1、2、以及5到11中任一项所述的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20130250049 EP2784997A1 (en) | 2013-03-28 | 2013-03-28 | Re-marking of packets for congestion control |
EP13250049.7 | 2013-03-28 | ||
GB201307077A GB201307077D0 (en) | 2013-04-18 | 2013-04-18 | Re-marking of packets for queue control |
GB1307077.6 | 2013-04-18 | ||
PCT/GB2014/000121 WO2014155043A1 (en) | 2013-03-28 | 2014-03-27 | Re-marking of packets for queue control |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105075202A CN105075202A (zh) | 2015-11-18 |
CN105075202B true CN105075202B (zh) | 2019-07-12 |
Family
ID=50473695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480018721.3A Active CN105075202B (zh) | 2013-03-28 | 2014-03-27 | 用于在分组网络中处理分组的方法、节点和分组网络 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9985899B2 (zh) |
EP (1) | EP2979407B1 (zh) |
CN (1) | CN105075202B (zh) |
WO (1) | WO2014155043A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014155043A1 (en) | 2013-03-28 | 2014-10-02 | British Telecommunications Public Limited Company | Re-marking of packets for queue control |
US9426418B2 (en) | 2014-07-29 | 2016-08-23 | Qualcomm Incorporated | Reducing delay in video telephony |
US9667722B2 (en) * | 2014-10-20 | 2017-05-30 | Arista Networks, Inc. | Method and system for non-tagged based latency calculation |
US9923836B1 (en) * | 2014-11-21 | 2018-03-20 | Sprint Spectrum L.P. | Systems and methods for configuring a delay based scheduler for an access node |
CN105744635B (zh) * | 2014-12-12 | 2019-01-18 | 北京永安信通科技股份有限公司 | 基于后向阀门的数据包传输调度方法和装置 |
US9667560B2 (en) * | 2014-12-24 | 2017-05-30 | Nicira, Inc. | Flow sequencing |
CN105873224B (zh) * | 2015-01-22 | 2019-04-02 | 北京永安信通科技股份有限公司 | 基于交互式斜率比较的数据包传输调度方法和装置 |
US10645013B2 (en) | 2015-04-02 | 2020-05-05 | Nicira, Inc | Data flow identifiers |
CN107852371B (zh) | 2015-08-06 | 2021-06-29 | 英国电讯有限公司 | 数据分组网络 |
WO2017021048A1 (en) | 2015-08-06 | 2017-02-09 | British Telecommunications Public Limited Company | Data packet network |
US10148582B2 (en) * | 2016-05-24 | 2018-12-04 | Samsung Electronics Co., Ltd. | Managing buffers for rate pacing |
US10986021B2 (en) * | 2018-03-06 | 2021-04-20 | International Business Machines Corporation | Flow management in networks |
US10673648B1 (en) * | 2018-07-06 | 2020-06-02 | Netronome Systems, Inc. | Network interface device that sets an ECN-CE bit in response to detecting congestion at an internal bus interface |
CN111314240B (zh) * | 2018-12-12 | 2023-04-14 | 深圳市中兴微电子技术有限公司 | 拥塞控制方法及装置、网络设备及存储介质 |
CN110098893B (zh) * | 2018-12-21 | 2021-09-10 | 中南大学 | 面向IPv6的差分显式反馈传输控制方法 |
US11502965B2 (en) * | 2020-09-09 | 2022-11-15 | Hewlett Packard Enterprise Development Lp | Burst packet preload for ABW estimation with rate limiters |
CN112059183A (zh) * | 2020-09-14 | 2020-12-11 | 南京铁道职业技术学院 | 激光熔化系统及其方法 |
CN114338545A (zh) * | 2020-09-30 | 2022-04-12 | 华为技术有限公司 | 流量整形方法及装置 |
CN116170380B (zh) * | 2023-04-21 | 2023-08-29 | 中国科学技术大学 | 基于拥塞预测的ecn标记策略和队列管理方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7372865B2 (en) * | 2003-07-09 | 2008-05-13 | Fujitsu Limited | Processing data packets using time stamped marker packets |
CN101427497A (zh) * | 2005-08-30 | 2009-05-06 | 思科技术公司 | 基于实时拥塞反馈来更新最佳路径的方法 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5426640A (en) | 1992-01-21 | 1995-06-20 | Codex Corporation | Rate-based adaptive congestion control system and method for integrated packet networks |
GB9520807D0 (en) | 1995-10-11 | 1995-12-13 | Newbridge Networks Corp | Fair queue servicing using dynamic weights |
EP0789076A3 (en) | 1996-02-07 | 1999-04-14 | Takeda Chemical Industries, Ltd. | G protein coupled receptor proteins, their production and use |
JP3123447B2 (ja) | 1996-11-13 | 2001-01-09 | 日本電気株式会社 | Atm交換機のスイッチ制御回路 |
US6128642A (en) | 1997-07-22 | 2000-10-03 | At&T Corporation | Load balancing based on queue length, in a network of processor stations |
US6646987B1 (en) | 1998-10-05 | 2003-11-11 | Nortel Networks Limited | Method and system for transmission control protocol (TCP) packet loss recovery over a wireless link |
US6215769B1 (en) | 1998-10-07 | 2001-04-10 | Nokia Telecommunications, Inc. | Enhanced acknowledgment pacing device and method for TCP connections |
US6252848B1 (en) | 1999-03-22 | 2001-06-26 | Pluris, Inc. | System performance in a data network through queue management based on ingress rate monitoring |
US6618378B1 (en) | 1999-07-21 | 2003-09-09 | Alcatel Canada Inc. | Method and apparatus for supporting multiple class of service connections in a communications network |
US6839321B1 (en) | 2000-07-18 | 2005-01-04 | Alcatel | Domain based congestion management |
US7266613B1 (en) | 2000-08-09 | 2007-09-04 | Microsoft Corporation | Fast dynamic measurement of bandwidth in a TCP network environment |
US6996074B2 (en) | 2000-08-11 | 2006-02-07 | The Regents Of The University Of California | Receiver-initiated multiple access for ad-hoc networks (RIMA) |
US7120159B2 (en) | 2000-10-30 | 2006-10-10 | Matsushita Electric Industrial Co., Ltd. | Apparatus and method for packet transmission |
US6836475B2 (en) | 2000-12-01 | 2004-12-28 | Nokia Corporation | Method and apparatus for traffic shaping for IP router queues/egress |
US20020078164A1 (en) | 2000-12-13 | 2002-06-20 | Marnetics Ltd. | System and method for data transfer acceleration in a TCP network environment |
GB2372172B (en) | 2001-05-31 | 2002-12-24 | Ericsson Telefon Ab L M | Congestion handling in a packet data network |
US6480500B1 (en) | 2001-06-18 | 2002-11-12 | Advanced Micro Devices, Inc. | Arrangement for creating multiple virtual queue pairs from a compressed queue pair based on shared attributes |
US6958998B2 (en) | 2001-07-09 | 2005-10-25 | International Business Machines Corporation | Traffic management in packet-based networks |
US7095750B2 (en) | 2001-08-16 | 2006-08-22 | International Business Machines Corporation | Apparatus and method for virtualizing a queue pair space to minimize time-wait impacts |
US7286483B2 (en) * | 2002-11-14 | 2007-10-23 | Intel Corporation | Electronic data transfer based on selective storage of incoming packets |
JP4049777B2 (ja) | 2003-03-31 | 2008-02-20 | 富士通株式会社 | 通信装置及び通信方法 |
US7324535B1 (en) | 2003-04-10 | 2008-01-29 | Cisco Technology, Inc. | Methods and apparatus for maintaining a queue |
US20050190779A1 (en) | 2004-03-01 | 2005-09-01 | Cisco Technology, Inc., A California Corporation | Scalable approach to large scale queuing through dynamic resource allocation |
CN1327677C (zh) | 2003-11-21 | 2007-07-18 | 清华大学 | 基于ecn且带预测验证的拥塞控制方法 |
US7609640B2 (en) | 2003-12-19 | 2009-10-27 | Nokia Corporation | Methods and applications for avoiding slow-start restart in transmission control protocol network communications |
US7426181B1 (en) | 2004-03-26 | 2008-09-16 | Packeteer, Inc. | Slow-start adaptive mechanisms to improve efficiency of bandwidth allocation |
US7339899B2 (en) | 2004-09-30 | 2008-03-04 | Microsoft Corporation | Method and system for network emulation using packet reorder emulation techniques |
US7457296B2 (en) * | 2004-09-30 | 2008-11-25 | Intel Corporation | Method and apparatus for sorting packets in packet schedulers using a connected trie data structure |
KR100597425B1 (ko) | 2005-02-16 | 2006-07-05 | 삼성전자주식회사 | 무선 네트워크 환경에서 전송 지연으로 인한 불필요한 재전송을 감소시키기 위한 방법 및 이를 이용한 통신 장치 |
US7680038B1 (en) | 2005-04-25 | 2010-03-16 | Electronic Arts, Inc. | Dynamic bandwidth detection and response for online games |
US7567508B2 (en) | 2005-05-23 | 2009-07-28 | Cisco Technology, Inc. | Method and system for providing delay bound and priortized packet dropping |
KR100739710B1 (ko) | 2005-06-14 | 2007-07-13 | 삼성전자주식회사 | 패킷의 손실 타입을 판별하는 방법 및 장치 |
US7831970B2 (en) | 2005-06-30 | 2010-11-09 | Avaya Inc. | Method and apparatus for scheduling periodic tasks based on synthetic homogenization |
US7961621B2 (en) | 2005-10-11 | 2011-06-14 | Cisco Technology, Inc. | Methods and devices for backward congestion notification |
CN101034346A (zh) * | 2006-03-10 | 2007-09-12 | 北京佳讯飞鸿电气有限责任公司 | 一种循环队列的数据存储方法 |
US7733893B2 (en) | 2007-06-29 | 2010-06-08 | Global Ip Solutions (Gips) Ab | Method and receiver for determining a jitter buffer level |
US7843817B2 (en) | 2008-03-11 | 2010-11-30 | Cisco Technology, Inc. | Congestion control in wireless mesh networks |
EP2266254B1 (en) | 2008-03-26 | 2012-05-16 | Telefonaktiebolaget L M Ericsson (publ) | Available bandwidth estimation in a packet-switched communication network |
US8483701B2 (en) | 2009-04-28 | 2013-07-09 | Pine Valley Investments, Inc. | System and method for controlling congestion in cells within a cellular communication system |
EP2398194A1 (en) | 2010-06-17 | 2011-12-21 | British Telecommunications Public Limited Company | Monitoring path characterisation information |
US9178789B2 (en) | 2011-08-19 | 2015-11-03 | Futurewei Technologies, Inc. | System and method for transmission control protocol slow-start |
WO2013081518A1 (en) | 2011-12-01 | 2013-06-06 | Telefonaktiebolaget L M Ericsson (Publ) | Reduction of packet header compression overhead due to high ecn rate |
US9699103B2 (en) | 2012-09-05 | 2017-07-04 | Flash Networks, Ltd | Method and system for flow controlling |
EP2784997A1 (en) | 2013-03-28 | 2014-10-01 | British Telecommunications public limited company | Re-marking of packets for congestion control |
WO2014155043A1 (en) | 2013-03-28 | 2014-10-02 | British Telecommunications Public Limited Company | Re-marking of packets for queue control |
GB201313760D0 (en) | 2013-07-31 | 2013-09-18 | British Telecomm | Fast friendly start for a data flow |
EP2869514A1 (en) | 2013-10-30 | 2015-05-06 | Alcatel Lucent | Method and system for queue management in a packet-switched network |
EP3075110B1 (en) | 2013-11-27 | 2018-01-10 | Telefonaktiebolaget LM Ericsson (publ) | Controlling a transmission control protocol window size |
CN107852371B (zh) | 2015-08-06 | 2021-06-29 | 英国电讯有限公司 | 数据分组网络 |
WO2017021048A1 (en) | 2015-08-06 | 2017-02-09 | British Telecommunications Public Limited Company | Data packet network |
-
2014
- 2014-03-27 WO PCT/GB2014/000121 patent/WO2014155043A1/en active Application Filing
- 2014-03-27 CN CN201480018721.3A patent/CN105075202B/zh active Active
- 2014-03-27 US US14/780,685 patent/US9985899B2/en active Active
- 2014-03-27 EP EP14716368.7A patent/EP2979407B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7372865B2 (en) * | 2003-07-09 | 2008-05-13 | Fujitsu Limited | Processing data packets using time stamped marker packets |
CN101427497A (zh) * | 2005-08-30 | 2009-05-06 | 思科技术公司 | 基于实时拥塞反馈来更新最佳路径的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2014155043A1 (en) | 2014-10-02 |
US9985899B2 (en) | 2018-05-29 |
EP2979407B1 (en) | 2018-09-12 |
CN105075202A (zh) | 2015-11-18 |
US20160057065A1 (en) | 2016-02-25 |
EP2979407A1 (en) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105075202B (zh) | 用于在分组网络中处理分组的方法、节点和分组网络 | |
US20220360533A1 (en) | Data center congestion management for non-tcp traffic | |
TWI486042B (zh) | 對資料中心環境最佳化之通信傳輸 | |
CA2875457C (en) | Systems and methods for managing congestion | |
US8976669B2 (en) | Switch fabric end-to-end congestion avoidance mechanism | |
KR100863539B1 (ko) | 통신방법 | |
CN101272290B (zh) | Ip网络中路径拥塞状态的测量方法和测量装置 | |
US9426083B2 (en) | Consistency checking for credit-based control of data communications | |
CN108881056A (zh) | 一种拥塞控制方法、网络设备及其网络接口控制器 | |
CN106059951B (zh) | 一种用于dcn中基于多级拥塞反馈的传输控制方法 | |
CN110351196B (zh) | 云数据中心中基于精确拥塞反馈的负载均衡方法及系统 | |
US20150271081A1 (en) | Flow Aware Buffer Management for Data Center Switches | |
CN105432046B (zh) | 用于数据流的快速友好启动的方法、装置及介质 | |
US7656796B1 (en) | Class-based detection of microcongestion on QoS-enabled links | |
CN107948103A (zh) | 一种基于预测的交换机pfc控制方法及控制系统 | |
CN104601488B (zh) | 一种软件定义网络中流量控制方法和装置 | |
EP2784997A1 (en) | Re-marking of packets for congestion control | |
US20150092549A1 (en) | Systems and methods for high throughput traffic pattern generation | |
CN110505112A (zh) | 一种网络性能监测方法、装置和存储介质 | |
CN102098733B (zh) | 基于无线传感网络的数据传输方法及系统 | |
CN105681223B (zh) | 一种sdn的数据包转发方法及装置 | |
CN104869077A (zh) | 基于令牌的传输控制方法及系统 | |
CN101094188A (zh) | 随机先期检测装置及其硬件实现方法 | |
US10812391B1 (en) | Methods and apparatus for load balancing in a network | |
JP6101114B2 (ja) | パケット伝送装置およびそのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |