CN101656674A - 拥塞控制方法及网络节点 - Google Patents
拥塞控制方法及网络节点 Download PDFInfo
- Publication number
- CN101656674A CN101656674A CN200910175146A CN200910175146A CN101656674A CN 101656674 A CN101656674 A CN 101656674A CN 200910175146 A CN200910175146 A CN 200910175146A CN 200910175146 A CN200910175146 A CN 200910175146A CN 101656674 A CN101656674 A CN 101656674A
- Authority
- CN
- China
- Prior art keywords
- congested
- packet
- formation
- priority
- data flow
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种拥塞控制方法及网络节点,所述方法包括:网络节点获取从它到任意一个其它网络节点的多条最小代价路径;计算所述网络节点的每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度;根据拥塞指数和拥塞容忍度判断所述各个分组优先级队列是否发生拥塞;当发生拥塞时,根据发生拥塞的分组优先级队列所承载各个数据流的目的网络节点从多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口;通过未发生拥塞的输出接口的分组优先级队列传输发生拥塞的分组优先级队列的数据流。本发明实施例充分利用网络中的转发资源,保证发生拥塞的分组优先级队列正确进行传输。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种拥塞控制方法及网络节点。
背景技术
随着互联网的发展,越来越多的网络应用业务通过IP网络来实现数据传输。但是,IP网络的分组化和无连接特性导致各个网络节点所承载的数据流量在时间和空间上都呈现出随机性,由此导致网络节点拥塞甚至网络拥塞。目前,IP网络中的拥塞控制主要分为基于端系统的拥塞控制和基于网络自身的拥塞控制。
现有技术中,随机公平早期检测RED是一种典型的基于网络的主动式拥塞控制方法。该方法动态计算网络路由器每个输出接口中分组缓存队列的平均队列长度,在该平均长度较长时以概率方式主动丢弃分组。该方法的核心是通过控制输出接口的平均队列长度来控制网络节点接口的负荷量,进而避免网络中各个TCP协议发送实体同步减小发送流量或同步增大发送流量,从而避免网络节点和网络发生拥塞。RED使用最小队列阈值(minth)、最大阈值(maxth)和最大丢弃概率(maxp)等几个参数,对于每一个到达某个队列的分组,RED采用如下的指数加权平均方法计算相应输出接口分组队列的平均队列长度:
avgnew=(1-w)×avgold+w×q (1)
其中,0<w<1,q为真实队列长度。RED根据平均队列长度avgnew计算如下概率p:
以这个概率p丢弃正在该分组队列中等待的一个分组,当前得到的平均队列长度avgnew成为下一次计算平均队列长度的avgold,如此循环往复。
发明人在对现有技术的研究过程中发现,现有RED方式对拥塞的处理都采用直接丢弃分组队列的方式,这种方式导致网络中的数据转发效率降低;并且,由于路由协议可以为一个网络节点计算去往一个目的地的多条最短路径,但是RED方式对拥塞接口上分组的丢弃导致网络中具有相同最小代价的多条路径转发资源未得到充分利用。
发明内容
本发明实施例的目的是提供一种拥塞控制方法及网络节点,以解决现有技术中在拥塞时直接丢弃分组队列,导致路径转发资源无法得到充分利用的问题。
为解决上述技术问题,本发明实施例提供如下技术方案:
一种拥塞控制方法,包括:
网络节点获取从它到任意一个其它网络节点的多条最小代价路径;
计算所述网络节点的每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度,每个所述分组优先级队列中包含多条数据流;
根据所述拥塞指数和拥塞容忍度判断所述各个分组优先级队列是否发生拥塞;
当发生拥塞时,根据所述发生拥塞的分组优先级队列所承载各个数据流的目的网络节点从所述多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口;
通过所述未发生拥塞的输出接口的分组优先级队列传输所述发生拥塞的分组优先级队列的数据流。
一种网络节点,包括:
获取单元,用于网络节点获取从它到任意一个其它网络节点的多条最小代价路径;
计算单元,用于计算所述网络节点的每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度,每个所述分组优先级队列中包含多条数据流;
判断单元,用于根据所述拥塞指数和拥塞容忍度判断所述各个分组优先级队列是否发生拥塞;
选择单元,用于当所述判断单元判断发生拥塞时,根据所述发生拥塞的分组优先级队列所承载各个数据流的目的网络节点从所述多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口;
传输单元,用于传输非拥塞分组优先级队列的数据流以及通过所述未发生拥塞的输出接口的分组优先级队列传输所述发生拥塞的分组优先级队列的数据流。
可见,在本发明实施例中网络节点获取从它到任意一个其它网络节点的多条最小代价路径,计算每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度,根据拥塞指数和拥塞容忍度判断各个分组优先级队列是否发生拥塞,当发生拥塞时,根据发生拥塞的分组优先级队列所承载各个数据流的目的网络节点从多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口,通过未发生拥塞的输出接口的分组优先级队列传输发生拥塞的分组优先级队列的数据流。应用本发明实施例,当网络节点的输出接口传输的分组优先级队列发生拥塞时,不必丢弃该分组优先级队列中的分组,而通过该网络节点到其它网络节点之间的多条最短路径,为所述发生拥塞的分组优先级队列选择另一条最小代价路径所对应的非拥塞输出接口进行传输,由此可以充分利用网络中的转发资源,保证了发生拥塞的分组优先级队列既可以正确进行传输,又提高了网络资源的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得与本发明相关的其他的附图。
图1是本发明第一实施例中的拥塞控制方法的流程图;
图2是应用本发明拥塞控制方法实施例的一种路由器的结构示意图;
图3是本发明第二实施例中的拥塞检测子模块的执行流程图;
图4是本发明第三实施例中的拥塞决策子模块的执行流程图;
图5是本发明第四实施例中的避绕执行子模块的执行流程图;
图6是本发明实施例对进行拥塞避绕的全部数据流进行识别的流程图;
图7是本发明实施例寻找避绕接口的流程图;
图8是本发明网络节点的实施例框图。
具体实施方式
本发明实施例提供了一种拥塞控制方法及网络节点,该拥塞控制方法是由网络节点实施的主动式拥塞控制方法,也可称为避绕式拥塞控制方法,其核心是网络节点根据现有路由协议计算出它到任一个其它网络节点的多条最小代价路径,在此基础上周期地计算本节点内与这些最小代价路径对应的各个输出接口分组队列的拥塞指数,再根据拥塞指数判断各个接口分组队列的拥塞状态;本发明为不同等级传送性能要求的数据流赋予不同的拥塞容忍度,当一条接口某个分组队列的拥塞指数大于该队列承载的数据流的拥塞容忍度(本发明用分组队列的拥塞容忍度表示队列承载的数据流的拥塞容忍度)时,就判定该接口分组队列发生“拥塞”,继而针对通过该拥塞队列承载的每一个数据流在本地路由器内找出另一条等代价路径所对应的非拥塞接口,最后将数据流改向(或切换)到该非拥塞接口对应的分组队列。
在每一个网络节点将每个数据流的传送性能要求以及实际传送效果转换为输出接口的分组队列状态,利用多最小代价路径切换输出接口使得一个数据流的后续分组序列绕开发生拥塞的接口,从而将接口的负荷始终限制在较低水平,最终保证数据流在分组级别上的时延性能要求。
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
在介绍本发明实施例之前,首先对本发明实施例中涉及的术语进行介绍,本发明实施例的实施并不限定于具体的IP协议版本,其中主要以IPv6协议为背景进行描述。
1.数据流
数据流可以分为单播数据流和多播数据流,其中在单播环境中,一个单播数据流指从一个源节点发往同一个目的节点、具有相同端到端传送时延要求的分组序列,不同数据流的端到端传送时延要求可以不同。在IPv6协议下,通过分组头中的“流量类型”、“流标识”、“源IP地址”和“目的IP地址”四个字段来标识该分组序列所属的数据流,即“流量类型”、“流标识”、“源IP地址”和“目的IP地址”具有相同字段编码的各个分组构成一个数据流;在多播环境中,一个多播数据流指从一个源节点发往多个目的节点、具有相同端到端传送时延要求的分组序列,本发明实施例中为了简化表示,用多个具有不同“目的IP地址”、具有相同“源IP地址”、“流量类型”和“流标识”的单播数据流来表示一个多播数据流。
需要说明的是,本发明实施例中并不限制对数据流的定义,不排除其它的数据流定义。
2.数据流的传送时延要求
本发明实施例中将一个数据流的传送质量要求指定为该数据流的最大端到端传送时延D(即时延上界)。通过资源预约协议RSVP等方式,网络节点可以将该传送时延D分解为与传送路径上节点个数n相对应的n个“子上界”,其中节点Ni对应“子上界”di(i=1,2,...n,d1+d2+...+dn=D),其含义即为该数据流的每个分组穿越节点Ni的最大时延不能超过di。
3.数据流类
指经同一个网络节点传送且网络节点时延“子上界”相近的多个数据流。规定一个数据流类的时延子上界是其包含的多个数据流中的最小子上界,同一个输出接口上可以有多个数据流类,不同的数据流类经不同的分组优先级队列承载。
需要说明的是,本发明实施例与数据流类的定义无直接关联,并不限定数据流类的特定划分方法,另外,没有时延要求的数据流以及数据流类不在本发明实施例的应用范围内。
4.分组优先级队列
网络节点(可以为路由器)在它的每个输出接口均设置N个不同的优先级队列来缓存N个不同数据流类的分组,一个分组优先级队列与一个确定的节点时延子上界τi相对应(也可称为绑定),该τi是该数据流类所包含的多个数据流的最小子上界。任何两个不同分组优先级队列的时延子上界均不相同,N个分组优先级队列时延子上界的关系为:τ1<τ2<......<τN。因此,每个分组优先级队列中包含多条具有相同转发时延要求(即最小子上界)的数据流。
需要说明的是,本发明实施例的实施与优先级队列到时延子上界的绑定方法无直接关联,因此,不给出也不限定具体的绑定方法。
5.分组、接口、队列在本发明实施例中的关系
对于具有最大端到端传送时延要求的数据流,其任一分组进入一个网络节点后,网络节点先用其携带的目的IP地址为其选择输出接口,再根据其流量类型字段的区分服务编码点(DSCP)使其进入保证时延队列类,最后用源IP地址和流标识两个字段将其置入保证时延队列类中的相应优先级队列。
参见图1,为发明第一实施例中的拥塞控制方法的流程:
步骤101:网络节点获取从它到任意一个其它网络节点的多条最小代价路径。
其中,网络节点根据路由协议计算到其它网络节点的多条最小代价路径,每条所述最小代价路径对应所述网络节点的一个输出接口,网络节点为每个输出接口所传输的分组优先级队列的数据流建立流状态表和流转发表,所述流状态表中包含每个数据流的流量类型、流标识、源IP地址、目的IP地址、多路径标志、优先级、避绕标志和所述多条最小代价路径对应的输出接口,所述流转发表中包含每个数据流的流量类型、流标识、源IP地址、目的IP地址和所述分组优先级队列的数据流正在使用的当前下一跳输出接口。
步骤102:计算网络节点的每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度,每个分组优先级队列中包含多条具有相同转发时延要求的数据流。
其中,网络节点通过双重指数平滑算法对各个分组优先级队列的累计长度进行预测,根据每个分组优先级队列的累计长度和最大长度,采用轮询方式定期计算每个分组优先级队列的拥塞指数,将所述分组优先级队列的拥塞指数写入对应接口的队列拥塞状态表;
每个分组优先级队列对应的最大分组时延(即分组队列对应的最小子上界),每个分组优先级队列对应输出接口的带宽和每个分组优先级队列的容量,根据所述最大分组时延、接口带宽和队列容量计算各个分组优先级队列的拥塞容忍度,所述拥塞容忍度用于表示分组优先级队列所允许的最大拥塞程度,将所述分组优先级队列的拥塞容忍度写入对应接口的队列拥塞状态表。
步骤103:根据拥塞指数和拥塞容忍度判断各个分组优先级队列是否发生拥塞。
其中,从所述队列拥塞状态表中读取分组优先级队列的拥塞指数和拥塞容忍度,判断拥塞指数是否大于所述拥塞容忍度,若大于则所述分组优先级队列发生拥塞。
步骤104:当发生拥塞时,根据发生拥塞的分组优先级队列所承载各个数据流的目的网络节点,从多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口。
其中,根据所述发生拥塞的分组优先级队列所对应的输出接口标识、所述流状态表中的每个数据流的多路径标志、优先级和避绕标志查找通过所述发生拥塞的分组优先级队列传输的所有数据流,通过查找所述队列拥塞状态表,获取除传输所述发生拥塞的分组优先级队列的输出接口外的其它输出接口上与所述发生拥塞的分组优先级队列具有同等优先级的分组优先级队列的拥塞指数和拥塞容忍度,从所述流状态表中找出所述所有数据流中每一个数据流的所有非当前下一跳接口,根据所述具有同等优先级的分组优先级队列的拥塞指数和拥塞容忍度,以及所述每一个数据流的所有非当前下一跳接口,获取一个拥塞指数小于其自身拥塞容忍度的分组优先级队列对应的输出接口。
步骤105:通过未发生拥塞的输出接口的分组优先级队列传输发生拥塞的分组优先级队列的数据流。
其中,根据所述发生拥塞的分组优先级队列的数据流的流标识查找所述流转发表,将所述拥塞指数小于其自身拥塞容忍度的分组优先级队列对应的输出接口的标识写入所述流转发表的当前下一跳输出接口字段内,根据所述流转发表传输包括所述发生拥塞的队列在内的各个分组优先级队列的数据流。
为了进一步详细说明本申请实施例,下面对本申请实施例执行具体拥塞控制过程的条件进行说明。
1.网络节点运行能够计算多条最小代价路径的路由协议
对于任一个目的子网或目的节点,网络节点目前运行的域内路由协议一般只计算一条最小代价路径,并将与该最小代价路径对应的本地下一跳接口标识写入路由表和转发表中。但现有路由协议(如OSPF、IS-IS等)能够计算出多条最小代价路径,而不同的最小代价路径对应路由器不同的本地接口。本发明实施例中路由协议可以计算多条最小代价路径。
2.网络节点使用相同的传送服务质量要求的标准
鉴于支持端到端传送时延要求属于网络的整体功能而非个别网络节点的功能,因此本发明实施例可以在网络中广泛部署。对于具有最大端到端传送时延要求的一个数据流而言,其各个分组中标识所在数据流的“流量类型”、“流标识”、“源IP地址”和“目的IP地址”四个字段可以明确对应每个网络节点的时延子上界。本发明实施例不要求所有网络节点具有相同的数据流类划分标准,但需要每个网络节点将各个分组置入满足其时延子上界要求的分组优先级队列。
优先级队列个数通常等于所划分的具有时延子上界要求的数据流类的个数。各个网络节点用于支持最大端到端传送时延的分组优先级队列个数N不必相同。
3.分组优先级队列与时延子上界的对应关系已经确定
网络节点的每一个输出接口上每一个保证时延类的分组优先级队列Qi均与一个确定的网络节点时延子上界τi建立了对应关系,即Qi与τi绑定。
4.分组队列调度算法
本发明实施例基于分组队列调度算法。本发明实施例中需要定期地使用分组优先级队列的累计长度来计算队列的拥塞指数,而该拥塞指数的计算方法依赖于对多个分组优先级队列的调度算法。不同的分组优先级调度算法下计算优先级队列累计长度的方法可能不相同。本发明实施例不限定必须使用特定的调度算法。
5.状态表
本发明实施例中设置了三个状态表,分别具体描述如下:
(1)流状态表
流状态表用于存储分组优先级队列中各个数据流的标识、优先级、多路径标志、避绕标志和全部下一跳信息,其具体格式可以如下表1所示:
表1
流量类型 | 流标识 | 源IP地址 | 目的IP地址 | 优先级 | 多路径标志 | 避绕标志 | 当前下一跳接口 | 下一跳接口-1 | ... | 下一跳接口-n |
上表1中,“流量类型”、“流标识”、“源IP地址”和“目的IP地址”四个字段用于标识一个数据流,“优先级”字段表征一个数据流的各个分组穿越一个网络节点的最大时延要求,它对应该网络节点一个输出接口保证时延队列类别中的一个分组队列,“多路径标志”指示数据流在本网络节点是否存在与多条最短路径对应的多个下一跳接口,“避绕标志”用于指示是否已对数据流执行过拥塞避绕控制,多路径标志和避绕标志共同用于执行拥塞避绕控制,当前下一跳接口指示数据流正在使用的下一跳接口,而剩余n个下一跳接口字段中的每一个对应该数据流多条最短路径中的一个本地接口。
每个具有时延要求的数据流在流状态表中都有一个表项,其中流量类型、流标识、源IP地址、目的IP地址和优先级五个字段可以通过资源预约协议建立,n个下一跳接口字段依据路由协议建立,当前下一跳接口的初值可在n个下一跳接口之中选择一个。
用流量类型、流标识、源IP地址、目的IP地址、优先级、多路径标志和避绕标志七个字段中的一个或几个可以对流转发表进行按内容的寻址,或者,也可以用Hash(流量类型,流标识,源IP地址,目的IP地址,优先级,多路径标志,避绕标志)方式确定寻址用的地址,对于Hash函数的具体形式本发明实施例不进行限制。
参见如下表2,为一个具体的流状态表,其中主要示出了流标识为105和332的两个数据流的状态:
表2
(2)队列拥塞状态表
队列拥塞状态表用于存储各个传输接口上各个分组优先级队列的拥塞状态信息(如拥塞指数等),具体格式可以如下表3所示:
表3
队列优先级 | 接口标识 | 队列拥塞容忍度 | 队列拥塞指数 | ... | ... | ... | 接口标识 | 队列拥塞容忍度 | 队列拥塞指数 |
用队列优先级和接口标识可以对队列拥塞状态表进行按地址的寻址。每种分组优先级队列均有一个队列拥塞状态表表项,该表项包含了各个接口上相同优先级的分组队列的拥塞状态。
一个数据流类中的所有数据流具有相同的拥塞容忍度,本发明将该拥塞容忍度定义为承载该数据流类的分组优先级队列的拥塞容忍度。对于分组优先级队列Qi来说,表项中的队列拥塞容忍度表示保证分组时延意义下对拥塞的最大容忍限度,用CONi表示,它在第一次建立表项时首次计算。
队列拥塞指数是表征分组优先级队列拥塞程度的拥塞状态指标,本发明实施例中定期地计算每一个传输接口上每一个分组优先级队列的拥塞指数。
参见表4,为一个具体的队列拥塞状态表:
表4
(3)流转发表
流转发表用于存储各个数据流当前的下一跳接口标识,其具体格式可以如下表5所示:
表5
流量类型 | 流标识 | 源IP地址 | 目的IP地址 | 当前下一跳接口 |
本发明实施例中的流转发表是对目前使用的常规转发表的扩展,其中的流量类型、流标识、源IP地址和目的IP地址四个字段用来标识数据流。一个数据流的当前下一跳接口与前述流状态表中的同名字段取值相同。用流量类型、流标识、源IP地址和目的IP地址四个字段可以对流转发表进行按内容的寻址,也可以用Hash(流量类型,流标识,源IP地址,目的IP地址)函数确定寻址用的地址,对于Hash函数的具体形式本发明实施例不进行限制。
本发明实施例中,在分组优先级队列发生拥塞时,上述流状态表和队列拥塞状态表用于为受影响的数据流计算避绕传输接口,而流转发表则用于存储该避绕传输接口。
参见表6,为一个具体的流转发表:
表6
流量类型 | 流标识 | 源IP地址 | 目的IP地址 | 当前下一跳 |
接口 | ||||
1 | 105 | FE80::FEB1:7EA2 | FEC0::E876:5AE6 | 2 |
1 | 332 | FEC0::2980:FE43 | FEC0::BF35:87EF | 2 |
...... | ...... | ...... | ...... | ...... |
参见图2,为应用本发明拥塞控制方法实施例的一种路由器的结构示意图:
路由器中具有拥塞避绕功能的实体称为拥塞避绕模块,该拥塞避绕模块的结构是拥塞避绕结构的一种具体形式。在宏观层面,拥塞避绕模块位于路由器的路由计算模块和分组转发模块之间。路由计算模块用于计算出所有等代价的最短路径并将对应的多个本地接口标识输出到拥塞避绕模块,而每当完成对一个数据流的拥塞避绕时,拥塞避绕模块就将对应的避绕接口标识置入流转发表,分组转发模块根据更新后的流转发表执行对该数据流后续分组的转发。本发明实施例中,在路由器中建立和表示一个数据流的多条具有最小代价路径的过程如下:
在一台路由器中,到达某个目的节点的多条最小代价路径由现有路由协议计算得到,本发明实施例中引入了流状态表,在其中分别设立流量类型、流标识、源IP地址、目的IP地址、当前下一跳接口、下一跳接口-1、...、下一跳接口-n字段来表示一个数据流在一个路由器的多条最小代价路径所对应的输出接口。此外,本发明实施例还引入了流转发表,在其中分别设立流量类型、流标识、源IP地址、目的IP地址和当前下一跳接口字段来表示一个数据流正在使用的分组转发输出接口。本发明实施例可以通过在时间上互斥使用多条具有相同最小代价路径来实现主动拥塞避绕。
图2中,拥塞避绕模块包括拥塞避绕数据基和拥塞避绕操作基。拥塞避绕数据基用于表示有传送时延要求的数据流的特征以及传输接口队列的状态,它是支持拥塞避绕操作的物质基础;拥塞避绕操作基用于实现拥塞避绕操作,检测每个输出接口上每个分组优先级队列的状态、判定分组优先级队列是否发生拥塞、在发生拥塞时计算避绕传输接口并将避绕传输接口的标识存入拥塞避绕数据基。
具体地,拥塞避绕数据基中包括:流状态表,用于存储各个有传送时延要求的数据流的标识、优先级、多路径标志、避绕标志和全部下一跳信息;队列拥塞状态表,用于存储各个输出接口上同等优先级队列的拥塞状态信息;流转发表,用于存储各个数据流的当前下一跳接口标识。
具体地,拥塞避绕操作基包括:拥塞检测子模块,用于基于每个传输接口上每个分组优先级队列的长度定期检测其拥塞状态,计算出分组优先级队列的拥塞指数Coni作为拥塞决策控制的依据;决策控制子模块,用于依据拥塞检测子模块计算出的分组优先级队列拥塞指数Coni和分组优先级队列本身的拥塞容忍度CONi判定分组优先级队列是否发生拥塞,再根据判定结果向避绕执行子模块发送启动或停止避绕操作的命令;避绕执行子模块,用于启动一个新的拥塞避绕过程或者停止一个进行中的拥塞避绕过程。启动避绕的核心操作是在数据流所有等代价最短路径对应的多个本地接口(不包括拥塞接口)中找一个未发生拥塞且负荷最轻的传输接口并将其作为当前下一跳接口写入对应的流转发表项,停止避绕的核心操作则是对流状态表的避绕标志字段进行复位操作。
下面详细介绍拥塞避绕操作基的三个子模块的工作过程:
1.拥塞检测子模块
拥塞检测子模块根据分组优先级队列当前的长度信息以及双重指数平滑预测算法,以轮询方式定期计算一个输出接口上保证时延的各个分组优先级队列的拥塞指数,从而为拥塞决策控制子模块提供拥塞判决依据。
首先,一个分组优先级队列Q的拥塞检测周期T可按下述方法确定:假设N为输出接口上分组优先级队列的个数、t1为针对分组优先级队列Q的最长拥塞检测时间、t2为针对分组优先级队列Q的最长拥塞决策时间、t3为针对分组优先级队列Q的一次拥塞避绕执行的最长时间,由此可知如下公式:
(t1+t2+t3)=T/N (3)
因此
T=N*(t1+t2+t3) (4)
一个分组优先级队列的拥塞检测周期T也是拥塞检测子模块的工作周期,该工作周期包含了依次针对N个队列的N个等间隔的检测时间点,即在拥塞检测周期T内的第i个检测时间点(1+i/N)*T,检测分组优先级队列Qi(i=0,1,...,N-1),拥塞检测子模块针对N个分组优先级队列逐一进行拥塞指数的计算和拥塞检测。
在每个检测时间点t,拥塞检测子模块针对一个分组优先级队列Qi顺序执行如下的拥塞检测操作:
(i)计算分组优先级队列Qi的真实长度,其中真实长度指Qi中的总字节数;
(ii)计算分组优先级队列Qi的累计长度,其中累计长度指从当前时刻到Qi中的当前最后一个分组经接口输出的时间段内该接口所输出的总字节数;
(iii)计算分组优先级队列Qi在下一检测时间点t+T的预测队列长度;
(iv)计算分组优先级队列Qi的拥塞指数Coni t;
(v)将分组优先级队列Qi的拥塞指数写入Qi所在输出接口的队列拥塞状态表。
本发明实施例中引入的拥塞指数Coni t,用以表征一个保证时延的分组优先级队列Qi的拥塞程度,并以该指数作为拥塞决策子模块判定Qi是否拥塞的依据。拥塞指数Coni t为小于1的非负数,Coni t越大,表示分组优先级队列Qi的拥塞程度越高。
参见图3,为本发明第二实施例中的拥塞检测子模块的执行流程:
步骤301:准备操作。
在一台路由器中,假设具有相同转发时延要求的数据流j和数据流k(j≠k)均有两条最短路径,数据流j两条最短路径对应的接口分别为p和q(p≠q),数据流k两条最短路径对应的接口分别为p和r(p≠r)。初始时,接口p上的队列Qi用于转发数据流j和k的分组。路由器为此在三个状态表中建立如下的表项:
表7(流状态表项)
流量类型 | 流标识 | 源IP地址 | 目的IP地址 | 优先级 | 多路径标志 | 避绕标志 | 当前下一跳接口 | 下一跳接口-1 | ... | 下一跳接口-n |
e | j1 | j2 | j3 | Qi | 1 | 0 | p | q | * | * |
e | k1 | k2 | k3 | Qi | 1 | 0 | p | * | * | r |
上表7中,流量类型e表明是具有转发时延要求的数据流,“*”表示不关心对应字段的取值(下表同)。
表8(队列拥塞状态表项)
队列优先级 | 接口标识 | 队列拥塞容忍度 | 队列拥塞指数 | 接口标识 | 队列拥塞容忍度 | 队列拥塞指数 | 接口标识 | 队列拥塞容忍度 | 队列拥塞指数 | ... |
Qi | p | CONi | 0 | q | CONi | 0 | r | CONi | 0 |
表9(流转发表项)
流量类型 | 流标识 | 源IP地址 | 目的IP地址 | 当前下一跳接口 |
e | j1 | j2 | j3 | p |
e | k1 | k2 | k3 | p |
步骤302:在分组优先级队列Qi每个拥塞检测周期内的检测时间点t(t=(1+i/N)*T,i=0,1,...,N-1,下同)计算Qi的真实长度Yt i(单位:字节)。
步骤303:计算分组优先级队列Qi在当前检测时间点t的累计长度Xt i(单位:字节)。
需要说明的是,下面给出的对累计长度Xt i的计算方法基于采用优先级调度的假设,即在输出接口传送完一个分组之后,首先为优先级最高的队列传送其队头分组,仅当最高优先级队列为空时才为优先级次高的队列传送队头分组,以此类推。在这种优先级调度以及保证分组转发时延上界的要求下,较低优先级分组队列Qi在当前检测时间点t的累计长度Xt i定义为该优先级以及所有更高优先级分组队列的当前真实长度之和,即:
其中,Yt s-1和Yt s分别是Qs-1和Qs在t时刻的真实队列长度,而Qs-1是比Qs高一级的队列(s=2,3,...,i)。
步骤304:计算分组优先级队列Qi在下一个拥塞检测时间点t+T的队列预测累计长度Ft+T(单位:字节)。
步骤305:计算Qi在当前检测时间点t的拥塞指数Coni t。
步骤306:用输出接口标识p以及队列标识Qi为索引,将Qi的拥塞指数Cont i写入队列拥塞状态表。
下面详细描述分组优先级队列拥塞指数计算方法。
本发明实施例中采用双指数平滑算法对队列长度进行短期的预测,然后根据队列的预测长度计算队列拥塞指数。双重指数平滑算法是一种简单、有效因而得到广泛应用的序列预测算法,它基于队列长度在t时刻的值Xt,通过如下步骤给出t+1时刻队列的预测长度值Ft+1(单位:字节):
(i)Ft=ω×Xt+(1-ω)×Ft-1 (6)
(v)Ft+1=at+bt (10)
其中,Ft为简单指数平滑值(定义F0=0,F0 (2)=0),Ft (2)为二次指数平滑值,ω为平滑常数。平滑常数ω决定平滑的程度。平滑常数越小,则预测值Ft+1越平滑,即,预测值吸收队列长度瞬时突发的能力越强;另一方面,若平滑常数较大,则预测值跟踪队列长度瞬时突变的能力就较强。在网络中,一般而言,平滑常数ω的选择介于0.01与0.3之间。在实际应用中,将一个队列的累计长度作为(6)式中的Xt。
一个队列的拥塞指数由下式
计算得到,其中Lmax为缓存可容纳的最大队列长度(单位:字节),拥塞指数Cont i无量纲。
2.拥塞决策子模块
根据拥塞指数和拥塞容忍度可以判断一个分组优先级队列是否发生拥塞,如果发生拥塞,则命令拥塞避绕执行子模块针对该队列执行拥塞避绕,拥塞决策子模块的具体决策操作过程如下:
(1)从队列拥塞状态表读取分组优先级队列Qi的拥塞指数Coni t,及其拥塞容忍度CONi;
计算分组优先级队列拥塞容忍度的方法可以如下:
本发明实施例依据数据流对网络节点的分组转发时延子上界定义数据流所在队列的拥塞容忍度,如下式(12):
计算得出,其中Di为分组优先级队列Qi对应的节点最大分组转发时延(即,最小转发时延子上界,单位:秒),Bi为队列所在接口的带宽(单位:字节/秒),Lmax为队列容量(单位:字节),βi为分组优先级队列Qi的保护系数(0<βi≤1),它用于反映分组穿越节点所经历的除队列等待时延和链路输出时延之外的其他时延,可视具体的转发时延要求以及系统结构设计需求等情况适当确定。分组优先级队列Qi的拥塞容忍度CONi无量纲,它在队列的分组转发时延上界Di、接口带宽Bi、队列容量Lmax或保护系数βi改变时被重新计算。一个分组优先级队列的拥塞容忍度存储在队列拥塞状态表中的“队列拥塞容忍度”字段。
(2)若Coni t>CONi,则向避绕执行子模块发出启动对分组优先级队列Qi的避绕的命令,并将预先设置的避绕队列标识寄存器置为Qi,转至避绕执行子模块的处理部分;否则,如果预先设置的避绕队列标识寄存器等于Qi,就向避绕执行子模块发出停止对队列Qi的避绕的命令,并将避绕队列标识寄存器置为空;如果避绕队列标识不等于Qi,则结束当前流程。
避绕队列标识寄存器是拥塞避绕操作基的一个工作寄存器,决策子模块用它来避免向避绕执行子模块发出无效的停止避绕执行的命令,避绕队列标识寄存器的初始值为空。拥塞决策子模块的上述操作在时间上接续拥塞检测子模块的最后一个操作,另一方面,如果决策子模块向执行子模块发出启动或停止对队列Qi的避绕命令,则执行子模块在时间上接续决策子模块的命令操作。
参见图4,为本发明第三实施例中的拥塞决策子模块的执行流程:
步骤401:用输出接口标识p以及队列标识Qi为索引,从队列拥塞状态表读取队列Qi的拥塞指数Coni t及其拥塞容忍度CONi。
步骤402:判定分组优先级队列Qi是否发生拥塞,即:若Coni t>CONi,则判定队列Qi发生拥塞,转至步骤403;若Coni t≤CONi,则判定队列Qi未发生拥塞,转至步骤404。
步骤403:拥塞决策子模块向避绕执行子模块发出“启动对队列Qi的避绕”命令并将“避绕队列标识寄存器”置为Qi,然后转至拥塞避绕启动执行处理流程。
步骤404:如果“避绕队列标识寄存器”等于Qi,拥塞决策子模块就向避绕执行子模块发出“停止对队列Qi的避绕”命令并将“避绕队列标识寄存器”置为空,转至拥塞避绕停止执行处理流程;如果“避绕队列标识寄存器”不等于Qi,结束对数据流j的操作。
3.避绕执行子模块
当避绕执行子模块收到避绕决策控制子模块对一个分组优先级队列的避绕执行启动命令,则对其中每个存在多个下一跳接口的数据流执行如下操作:在这些数据流的所有等代价最短路径对应的多个本地接口(不包括拥塞接口)中找一个未发生拥塞且负荷最轻的接口,并将该接口作为当前下一跳接口写入对应的流转发表项。另外,在接收到停止避绕执行命令后停止对该分组优先级队列的避绕操作。
每个输出接口可以均设置一个独立的避绕执行子模块,具体的避绕执行过程分为以下的避绕开始和避绕停止两种情况。
(i)避绕开始情形
避绕执行子模块收到来自拥塞决策子模块的带有拥塞队列标识Qi的启动避绕执行命令时,将避绕队列标识寄存器置为拥塞队列的标识Qi,对需要进行并且能够进行拥塞避绕的全部数据流进行识别,然后对每一个需要且能够进行拥塞避绕的数据流寻找避绕接口,最后对每一个需要且能够进行拥塞避绕的数据流执行拥塞避绕。
(ii)避绕停止情形
避绕执行子模块收到来自拥塞决策子模块的带有拥塞队列标识Qi的停止避绕执行的命令时,先将流状态表中通过当前接口的当前拥塞优先级队列Qi转发的、具有多个输出接口的全部数据流的避绕标志均置零,再停止对队列拥塞状态表和流转发表的读写操作,中止对拥塞队列标识Qi的拥塞避绕执行操作(比如,令拥塞避绕执行状态机返回到空闲状态),最后将避绕队列标识寄存器置为空。
参见图5,为本发明第四实施例中的避绕执行子模块的执行流程:
步骤501:当接收到带有“拥塞队列标识Qi”的“启动避绕执行”命令,将“避绕队列标识寄存器”置为Qi。
步骤502:对需要进行并且能够进行拥塞避绕的全部数据流进行识别。
步骤503:当存在需要且能够进行避绕的数据流j时,为数据流j寻找避绕接口;如果不存在需要且能够进行避绕的数据流时,结束当前流程。
步骤504:根据找到的避绕接口对数据流j执行拥塞避绕,转至判断是否存在需要且能够避绕的数据流j的判断步骤。
步骤505:当接收到带有“拥塞队列标识Qi”的“停止避绕执行”命令时,将通过Qi转发的、具有多个输出接口的全部数据流的“避绕标志”置零,停止对队列拥塞状态表和流转发表的读写操作,中止对Qi的拥塞避绕执行操作。
步骤506:将“避绕队列标识寄存器”置为空,结束当前流程。
上述避绕执行子模块要对一个分组优先级队列执行避绕控制操作,要对需要进行拥塞避绕的全部数据流进行识别,通常用“当前拥塞接口标识”、“多路径标志”、“队列优先级”和“避绕标志”为索引从流状态表中找出通过当前接口中发生拥塞的优先级队列Qi转发的、具有多个输出接口的所有数据流。具体地,“多路径标志”用于查找具有多个输出接口的所有数据流(例如,“多路径标志”为1表明具有多个输出接口,为0则表示仅有一个接口),而“避绕标志”则支持以循环方式实现对各个数据流逐个识别(例如,“避绕标志”为1表明已执行避绕,为0则尚未执行避绕),用于针对当前拥塞队列的数据流集合中的每个数据流标识实施寻找避绕接口的避绕执行循环操作,其具体过程为:
(i)用“当前拥塞接口标识”、“多路径标志”和“队列优先级”从流状态表中找出通过当前接口的当前拥塞优先级队列Qi转发的、“多路径标志”为1的、“避绕标志”为0的一个数据流j;
(ii)为数据流j寻找避绕接口;
(iii)将数据流j在流状态表中表项的“避绕标志”字段值置为1;
(iv)重复上述步骤(i)至(iii)所示的处理直至步骤(i)在流状态表中找不到“避绕标志”为0任何数据流,此时,将流状态表中通过当前接口的拥塞队列Qi转发的、具有多个输出接口的全部数据流的“避绕标志”均一一置零,以指示针对当前接口的当前拥塞优先级队列Qi的避绕执行操作结束。
参见图6,为上述对进行拥塞避绕的全部数据流进行识别的流程,在此不再赘述。
上述避绕执行子模块要对一个分组优先级队列执行避绕控制操作,还需要为一个需要且能够进行拥塞避绕的、具有多个输出接口的数据流寻找避绕接口(上述寻找避绕接口的避绕执行循环操作具体过程中的(ii)),其具体过程为:
(i)用拥塞队列标识Qi查找队列拥塞状态表,找出不包括当前输出接口的所有其他输出接口上的同等优先级队列及其拥塞容忍度和拥塞指数,记查找结果集合A为:
A={<接口1标识,同等优先级队列拥塞容忍度,队列拥塞指数Con1 t>,
<接口2标识,同等优先级队列拥塞容忍度,队列拥塞指数Con2 t>,
......,
<接口N-1标识,同等优先级队列拥塞容忍度,队列拥塞指数ConN-1 t
>}
另记集合A中的所有的接口标识构成集合LA,而A中所有与Qi具有相同优先等级的队列的拥塞指数构成集合IA,即:
LA={接口1标识,接口2标识,......,接口N-1标识}
IA={Con1 t,Con2 t,......,ConN-1 t}
(ii)用“当前拥塞接口标识”、“多路径标志”和“队列优先级”从流状态表中找出通过当前接口的当前拥塞优先级队列Qi转发的、具有多个输出接口的所有数据流,记查找结果集合B为:
B={数据流1标识,数据流2标识,......,数据流m标识}
其中的“数据流j标识”为IPv6分组头中的“源IP地址”、“目的IP地址”、“流量类型”和“流标识”四个字段的值(j=1,2,......,m)。
对B中的每个数据流,执行如下(iii)至(iv)所示的处理操作。
(iii)对于数据流j(j=1,2,......,m),从流状态表中找出它的所有非当前下一跳接口标识,记该接口标识集合为Cj:
Cj={下一跳接口标识-1,...,下一跳接口标识-h}
(iv)参照(i)给出的集合A,另记LA和Cj的交集LA∩Cj所对应优先级队列的拥塞指数构成集合I’A,在I’A中找出最小拥塞指数Conj min,再分别记q和CONj为与Conj min对应的接口标识以及该接口上同等优先级队列的拥塞容忍度,如果:
Conj min<CONj (13)
成立,表明受拥塞影响的数据流j的另一条输出接口q的同等优先级队列尚未拥塞且负荷最轻,此接口q即为所寻找的避绕接口,寻找过程结束。如果(13)式不成立,表示数据流j虽有多条最短路径但不存在非拥塞的另一条接口,寻找过程结束。
参见图7,为上述寻找避绕接口的详细流程,在此不再赘述。
需要说明的是,本发明实施例在流状态表中引入“避绕标志”可以实现以循环方式逐个表示集合B中的m个数据流,在m个循环中的第x(x=1,2,...,m)次循环中,用“当前拥塞接口标识”和“队列优先级”从流状态表中找到“避绕标志”为0的数据流x的表项,而在第x次循环结束前再将数据流x表项的“避绕标志”置为1。数据流x表项的“避绕标志”为1表明已对其执行避绕,为0则尚未执行避绕。
基于此,上述避绕执行子模块对每一个需要且能够进行拥塞避绕的数据流执行拥塞避绕时,用数据流j的标识作索引访问流转发表,将寻找到的避绕接口标识q作为数据流j的“当前下一跳接口”写入流转发表,然后再将q作为数据流j的“当前下一跳接口”置入流状态表。
本申请进行拥塞控制的实施例中,可以进一步细化为针对四种不同情况进行主动避绕式拥塞控制,这四种情形的共同背景场景可以是路由器输出接口p上的分组优先级队列Qi发生拥塞,这四种情况分别如下所示:
情况一:经拥塞队列Qi承载的数据流j和数据流k均有多条最短路径且各自存在非拥塞的另一个接口;
情况二:避绕执行自然终止;
情况三:避绕执行因停止命令而中途终止;
情况四:避绕执行覆盖。
结合上述四种情况的拥塞避绕控制过程描述如下:
上述四种情况的共同背景场景为接口p上队列Qi的拥塞指示状态建立过程,该过程的目的是计算队列Qi的拥塞指数,具体流程与前述对于附图3的描述一致,在此不再赘述。
对于情况一,需要进行数据流j有多条最短路径且存在非拥塞的另一个输出接口的处理过程,该过程的目的是当队列Qi发生拥塞时将数据流j从输出接口p切换到避绕接口q上的同等分组优先级队列,具体流程包括对于附图4拥塞决策子模块的操作过程的描述(在此不再赘述),以及附图5、附图6和附图7拥塞避绕执行子模块的操作过程的描述(在此也不再赘述)。
对于情况二,需要进行避绕执行自然终止的处理过程,具体包括:在未收到停止命令且一个避绕执行自然终止时,将流状态表中通过当前接口的当前拥塞优先级队列Qi转发的,且具有多个输出接口的“避绕标志”为1的全部表项的“避绕标志”均一一置零,然后将“避绕队列标识寄存器”置为空。
对于情况三,需要进行避绕执行因停止命令而中途终止的处理过程,具体为在收到对一个队列停止避绕执行的命令时,执行如情况二中所述的流程,在此不再赘述。
对于情况四,需要进行避绕执行覆盖的处理过程,该过程指因启动一个新的避绕执行而使得当前正进行的避绕执行中途停止,具体包括:将流状态表中通过当前接口的当前拥塞优先级队列Qi转发的、具有多个输出接口的、
“避绕标志”为1的全部表项的“避绕标志”均一一置零,以表明针对当前接口的当前拥塞优先级队列Qi的避绕执行操作结束;将“避绕队列标识寄存器”置为新拥塞队列的标识,然后转入执行与上述情况一描述一致的处理过程,即对新拥塞队列执行拥塞避绕,在此不再赘述。
与本申请拥塞控制方法的实施例相对应,本申请还提供了网络节点的实施例。
参见图8,为本申请网络节点的第一实施例框图。
该网络节点包括:获取单元810、计算单元820、判断单元830、选择单元840和传输单元850。
其中,获取单元810,用于获取从它到任意一个其它网络节点的多条最小代价路径;
计算单元820,用于计算网络节点的每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度,每个所述分组优先级队列中包含多条数据流;
判断单元830,用于根据所述拥塞指数和拥塞容忍度判断所述各个分组优先级队列是否发生拥塞;
选择单元840,用于当所述判断单元判断发生拥塞时,根据所述发生拥塞的分组优先级队列所承载各个数据流的目的网络节点,从所述多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口;
传输单元850,用于传输非拥塞分组优先级队列的数据流以及通过所述未发生拥塞的输出接口的分组优先级队列传输所述发生拥塞的分组优先级队列的数据流。
具体地,获取单元810可以包括(图8中未示出):路径计算单元,用于根据路由协议计算到其它网络节点的多条最小代价路径,每条所述最小代价路径对应所述网络节点的一个输出接口;表项建立单元,用于为每个输出接口所传输的分组优先级队列的数据流建立流状态表和流转发表,所述流状态表中包含每个数据流的流量类型、流标识、源IP地址、目的IP地址、多路径标志、优先级、避绕标志和所述多条最小代价路径对应的输出接口,所述流转发表中包含每个数据流的流量类型、流标识、源IP地址、目的IP地址和所述分组优先级队列的数据流正在使用的当前下一跳输出接口。
具体地,计算单元820可以包括(图8中未示出):第一计算单元和第二计算单元,其中,
第一计算单元可以包括:队列长度预测单元,用于通过双重指数平滑算法对各个分组优先级队列的累计长度进行预测;拥塞指数计算单元,用于根据每个分组优先级队列的累计长度和最大长度,采用轮询方式定期计算每个分组优先级队列的拥塞指数;拥塞指数写入单元,用于将所述分组优先级队列的拥塞指数写入对应接口的队列拥塞状态表;
所述第二计算单元可以包括:参数获取单元,用于获取每个分组优先级队列对应的最大分组时延,每个分组优先级队列对应输出接口的带宽和每个分组优先级队列的容量;拥塞容忍度计算单元,用于根据所述最大分组时延、接口带宽和队列容量计算各个分组优先级队列的拥塞容忍度,所述拥塞容忍度用于表示分组优先级队列所允许的最大拥塞程度;拥塞容忍度写入单元,用于将所述分组优先级队列的拥塞容忍度写入对应接口的队列拥塞状态表。
具体地,判断单元830可以包括(图8中未示出):拥塞状态表读取单元,用于从所述队列拥塞状态表中读取分组优先级队列的拥塞指数和拥塞容忍度;拥塞指数判断单元,用于判断拥塞指数是否大于所述拥塞容忍度,若大于则所述分组优先级队列发生拥塞。
具体地,选择单元840可以包括(图8中未示出):数据流查找单元,用于根据所述发生拥塞的分组优先级队列所对应的输出接口标识、所述流状态表中的每个数据流的多路径标志、优先级和避绕标志查找通过所述发生拥塞的分组优先级队列传输的所有数据流;拥塞状态表查找单元,用于通过查找所述队列拥塞状态表,获取除传输所述发生拥塞的分组优先级队列的输出接口外的其它输出接口上与所述发生拥塞的分组优先级队列具有同等优先级的分组优先级队列的拥塞指数和拥塞容忍度;流状态表读取单元,用于从所述流状态表中找出所述所有数据流中每一个数据流的所有非当前下一跳接口;
输出接口获取单元,用于根据所述具有同等优先级的分组优先级队列的拥塞指数和拥塞容忍度,以及所述每一个数据流的所有非当前下一跳接口,获取一个拥塞指数小于其自身拥塞容忍度的分组优先级队列对应的输出接口。
具体地,传输单元850可以包括(图8中未示出):流转发表查找单元,用于根据所述发生拥塞的分组优先级队列的数据流的流标识查找所述流转发表;标识写入单元,用于将所述拥塞指数小于其自身拥塞容忍度的分组优先级队列对应的输出接口标识写入所述流转发表的当前下一跳输出接口字段内;数据流传输单元,用于根据所述流转发表传输包括所述发生拥塞的队列在内的各个分组优先级队列的数据流。
由上述本发明提供的实施例可见,在本发明实施例中,网络节点获取从它到任意一个其它网络节点的多条最小代价路径,计算每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度,根据拥塞指数和拥塞容忍度判断各个分组优先级队列是否发生拥塞,当发生拥塞时,根据发生拥塞的分组优先级队列承载的数据流从多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口,通过未发生拥塞的输出接口的分组优先级队列传输发生拥塞的分组优先级队列的数据流。应用本发明实施例,当网络节点的输出接口传输的分组优先级队列发生拥塞时,不必丢弃该分组优先级队列中的分组,而是通过该网络节点到其它网络节点之间的多条最短路径,为所述发生拥塞的分组优先级队列选择另一条最小代价路径所对应的非拥塞输出接口进行传输,由此可以充分利用网络中的转发资源,保证了发生拥塞的分组优先级队列既可以正确进行传输,又提高了网络资源的利用率。
本领域的技术人员可以清楚地了解到本发明实施例中的技术,并可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、Flash,磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于网络节点实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。
以上对本发明所提供的拥塞避绕的方法、装置及网络设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方案;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1、一种拥塞控制方法,其特征在于,包括:
网络节点获取从它到任意一个其它网络节点的多条最小代价路径;
计算所述网络节点的每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度,每个所述分组优先级队列中包含多条具有相同转发时延要求的数据流;
根据所述拥塞指数和拥塞容忍度判断所述各个分组优先级队列是否发生拥塞;
当发生拥塞时,根据所述发生拥塞的分组优先级队列所承载各个数据流的目的网络节点,从所述多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口;
通过所述未发生拥塞的输出接口的分组优先级队列传输所述发生拥塞的分组优先级队列的数据流。
2、根据权利要求1所述的方法,其特征在于,所述网络节点获取从它到任意一个其它网络节点的多条最小代价路径包括:
网络节点根据路由协议计算从它到任意一个其它网络节点的多条最小代价路径,每条所述最小代价路径对应所述网络节点的一个输出接口;
网络节点为每个输出接口所传输的分组优先级队列的数据流建立流状态表和流转发表,所述流状态表中包含每个数据流的流量类型、流标识、源IP地址、目的IP地址、多路径标志、优先级、避绕标志和所述多条最小代价路径对应的输出接口,所述流转发表中包含每个数据流的流量类型、流标识、源IP地址、目的IP地址和所述分组优先级队列的数据流正在使用的当前下一跳输出接口。
3、根据权利要求2所述的方法,其特征在于,所述计算每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数包括:
网络节点通过双重指数平滑算法对各个分组优先级队列的累计长度进行预测;
根据每个分组优先级队列的累计长度和最大长度,采用轮询方式定期计算每个分组优先级队列的拥塞指数;
将所述分组优先级队列的拥塞指数写入对应接口的队列拥塞状态表。
4、根据权利要求3所述的方法,其特征在于,所述计算网络节点的每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞容忍度包括:
获取每个分组优先级队列对应的最大分组时延,每个分组优先级队列对应输出接口的接口带宽和每个分组优先级队列的队列容量;
根据所述最大分组时延、接口带宽和队列容量计算各个分组优先级队列的拥塞容忍度,所述拥塞容忍度用于表示分组优先级队列所允许的最大拥塞程度;
将所述分组优先级队列的拥塞容忍度写入对应接口的队列拥塞状态表。
5、根据权利要求4所述的方法,其特征在于,所述根据所述拥塞指数和拥塞容忍度判断所述各个分组优先级队列是否发生拥塞包括:
从所述队列拥塞状态表中读取分组优先级队列的拥塞指数和拥塞容忍度;
判断拥塞指数是否大于所述拥塞容忍度,若大于则所述分组优先级队列发生拥塞。
6、根据权利要求4所述的方法,其特征在于,所述根据所述发生拥塞的分组优先级队列所承载各个数据流的目的网络节点,从所述多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口包括:
根据所述发生拥塞的分组优先级队列所对应的输出接口标识、所述流状态表中的每个数据流的多路径标志、优先级和避绕标志查找通过所述发生拥塞的分组优先级队列传输的所有数据流;
通过查找所述队列拥塞状态表,获取除传输所述发生拥塞的分组优先级队列的输出接口外的其它输出接口上与所述发生拥塞的分组优先级队列具有同等优先级的分组优先级队列的拥塞指数和拥塞容忍度;
从所述流状态表中找出所述所有数据流中每一个数据流的所有非当前下一跳接口;
根据所述具有同等优先级的分组优先级队列的拥塞指数和拥塞容忍度,以及所述每一个数据流的所有非当前下一跳接口,获取一个拥塞指数小于其自身拥塞容忍度的分组优先级队列对应的输出接口。
7、根据权利要求6所述的方法,其特征在于,所述通过未发生拥塞的输出接口的分组优先级队列传输所述发生拥塞的分组优先级队列的数据流包括:
根据所述发生拥塞的分组优先级队列的数据流的流标识查找所述流转发表;
将所述拥塞指数小于其自身拥塞容忍度的分组优先级队列对应的输出接口的标识写入所述流转发表中的当前下一跳输出接口字段内;
根据所述流转发表传输包括所述发生拥塞的队列在内的各个分组优先级队列的数据流。
8、一种网络节点,其特征在于,包括:
获取单元,用于获取从它到任意一个其它网络节点的多条最小代价路径;
计算单元,用于计算所述网络节点的每个输出接口上传输的需要保证时延的各个分组优先级队列的拥塞指数和拥塞容忍度,每个所述分组优先级队列中包含多条数据流;
判断单元,用于根据所述拥塞指数和拥塞容忍度判断所述各个分组优先级队列是否发生拥塞;
选择单元,用于当所述判断单元判断发生拥塞时,根据所述发生拥塞的分组优先级队列所承载各个数据流的目的网络节点,从所述多条最小代价路径对应的输出接口中选择一个未发生拥塞的输出接口;
传输单元,用于传输非拥塞分组优先级队列的数据流以及通过所述未发生拥塞的输出接口的分组优先级队列传输所述发生拥塞的分组优先级队列的数据流。
9、根据权利要求8所述的网络节点,其特征在于,所述获取单元包括:
路径计算单元,用于根据路由协议计算到其它网络节点的多条最小代价路径,每条所述最小代价路径对应所述网络节点的一个输出接口;
表项建立单元,用于为每个输出接口所传输的分组优先级队列的数据流建立流状态表和流转发表,所述流状态表中包含每个数据流的流量类型、流标识、源IP地址、目的IP地址、多路径标志、优先级、避绕标志和所述多条最小代价路径对应的输出接口,所述流转发表中包含每个数据流的流量类型、流标识、源IP地址、目的IP地址和所述分组优先级队列的数据流正在使用的当前下一跳输出接口。
10、根据权利要求9所述的网络节点,其特征在于,所述计算单元包括第一计算单元和第二计算单元,
所述第一计算单元包括:
队列长度预测单元,用于通过双重指数平滑算法对各个分组优先级队列的累计长度进行预测;
拥塞指数计算单元,用于根据每个分组优先级队列的累计长度和最大长度,采用轮询方式定期计算每个分组优先级队列的拥塞指数;
拥塞指数写入单元,用于将所述分组优先级队列的拥塞指数写入对应接口的队列拥塞状态表;
所述第二计算单元包括:
参数获取单元,用于获取每个分组优先级队列对应的最大分组时延,每个分组优先级队列对应输出接口的带宽和每个分组优先级队列的容量;
拥塞容忍度计算单元,用于根据所述最大分组时延、接口带宽和队列容量计算各个分组优先级队列的拥塞容忍度,所述拥塞容忍度用于表示分组优先级队列所允许的最大拥塞程度;
拥塞容忍度写入单元,用于将所述分组优先级队列的拥塞容忍度写入对应接口的队列拥塞状态表。
11、根据权利要求10所述的网络节点,其特征在于,所述判断单元包括:
拥塞状态表读取单元,用于从所述队列拥塞状态表中读取分组优先级队列的拥塞指数和拥塞容忍度;
拥塞判断单元,用于判断拥塞指数是否大于所述拥塞容忍度,若大于则所述分组优先级队列发生拥塞。
12、根据权利要求10所述的网络节点,其特征在于,所述选择单元包括:
数据流查找单元,用于根据所述发生拥塞的分组优先级队列所对应的输出接口标识、所述流状态表中的每个数据流的多路径标志、优先级和避绕标志查找通过所述发生拥塞的分组优先级队列传输的所有数据流;
拥塞状态表查找单元,用于通过查找所述队列拥塞状态表,获取除传输所述发生拥塞的分组优先级队列的输出接口外的其它输出接口上与所述发生拥塞的分组优先级队列具有同等优先级的分组优先级队列的拥塞指数和拥塞容忍度;
流状态表读取单元,用于从所述流状态表中找出所述所有数据流中每一个数据流的所有非当前下一跳接口;
输出接口获取单元,用于根据所述具有同等优先级的分组优先级队列的拥塞指数和拥塞容忍度,以及所述每一个数据流的所有非当前下一跳接口,获取一个拥塞指数小于其自身拥塞容忍度的分组优先级队列对应的输出接口。
13、根据权利要求12所述的网络节点,其特征在于,所述传输单元包括:
流转发表查找单元,用于根据所述发生拥塞的分组优先级队列的数据流的流标识查找所述流转发表;
标识写入单元,用于将所述拥塞指数小于其自身拥塞容忍度的分组优先级队列对应的输出接口的标识写入所述流转发表的当前下一跳输出接口字段内;
数据流传输单元,用于根据所述流转发表传输包括所述发生拥塞的队列在内的各个分组优先级队列的数据流。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101751469A CN101656674B (zh) | 2009-09-23 | 2009-09-23 | 拥塞控制方法及网络节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101751469A CN101656674B (zh) | 2009-09-23 | 2009-09-23 | 拥塞控制方法及网络节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101656674A true CN101656674A (zh) | 2010-02-24 |
CN101656674B CN101656674B (zh) | 2011-10-12 |
Family
ID=41710771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101751469A Expired - Fee Related CN101656674B (zh) | 2009-09-23 | 2009-09-23 | 拥塞控制方法及网络节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101656674B (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102223311A (zh) * | 2011-07-13 | 2011-10-19 | 华为数字技术有限公司 | 一种队列调度方法及装置 |
CN102271092A (zh) * | 2011-09-09 | 2011-12-07 | 西安电子科技大学 | 基于节点负荷量化等级的拥塞控制系统及控制方法 |
CN104361088A (zh) * | 2014-11-17 | 2015-02-18 | 国电南京自动化股份有限公司 | Scada系统基于实时权重分析的拥塞数据处理方法 |
CN104660504A (zh) * | 2013-08-05 | 2015-05-27 | Agh科学技术大学 | 计算机网络中进行封包多路径路由选择的装置及其方法 |
CN105207951A (zh) * | 2014-06-05 | 2015-12-30 | 北京邮电大学 | 一种广域网流量优化控制方法及装置 |
CN105284077A (zh) * | 2013-04-10 | 2016-01-27 | 感觉媒体 | 互联网协议电话带宽管理 |
CN106059941A (zh) * | 2016-07-14 | 2016-10-26 | 电子科技大学 | 一种消除链路拥塞的骨干网络流量调度方法 |
CN106685821A (zh) * | 2017-02-20 | 2017-05-17 | 华为技术有限公司 | 一种多路径选择方法及设备 |
CN106708607A (zh) * | 2015-11-12 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 消息队列的拥塞控制方法和装置 |
CN103873479B (zh) * | 2014-03-28 | 2017-09-12 | 北京邮电大学 | 一种基于跨层评估的平行数据传输算法 |
CN107528791A (zh) * | 2017-10-23 | 2017-12-29 | 北京交通大学 | 一种拥塞控制方法及设备 |
CN107544788A (zh) * | 2017-07-19 | 2018-01-05 | 北京中科睿芯智能计算产业研究院有限公司 | 一种带时间印记的数据流图拥塞检测方法 |
CN110784399A (zh) * | 2019-11-04 | 2020-02-11 | 海南大学 | 一种mptcp网络多路径优化组合传输方法及系统 |
CN110958640A (zh) * | 2019-11-19 | 2020-04-03 | 北京航空航天大学 | 一种低轨道卫星网络拥塞控制方法及装置 |
CN111930677A (zh) * | 2020-08-14 | 2020-11-13 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、装置及电子设备和存储介质 |
CN113949651A (zh) * | 2021-11-01 | 2022-01-18 | 北京百度网讯科技有限公司 | 网络传输方法、装置、设备、存储介质及程序产品 |
CN113973085A (zh) * | 2020-07-22 | 2022-01-25 | 华为技术有限公司 | 一种拥塞控制方法和装置 |
CN114079619A (zh) * | 2020-08-07 | 2022-02-22 | 中国电信股份有限公司 | 端口流量的采样方法和装置 |
CN114567679A (zh) * | 2022-03-25 | 2022-05-31 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
CN114884902A (zh) * | 2022-05-09 | 2022-08-09 | 中国联合网络通信集团有限公司 | 一种数据流传输方法、装置、网络设备及存储介质 |
CN115277572A (zh) * | 2022-07-29 | 2022-11-01 | 山东大学 | 一种多源点多汇点网络的拥塞控制方法及系统 |
CN116192777A (zh) * | 2022-12-30 | 2023-05-30 | 中国联合网络通信集团有限公司 | 路径学习方法、装置及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109089281B (zh) * | 2018-06-27 | 2022-02-18 | 海能达通信股份有限公司 | 一种集群通信方法、终端设备及存储介质 |
-
2009
- 2009-09-23 CN CN2009101751469A patent/CN101656674B/zh not_active Expired - Fee Related
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102223311A (zh) * | 2011-07-13 | 2011-10-19 | 华为数字技术有限公司 | 一种队列调度方法及装置 |
CN102271092A (zh) * | 2011-09-09 | 2011-12-07 | 西安电子科技大学 | 基于节点负荷量化等级的拥塞控制系统及控制方法 |
CN102271092B (zh) * | 2011-09-09 | 2014-03-12 | 西安电子科技大学 | 基于节点负荷量化等级的拥塞控制系统及控制方法 |
CN105284077A (zh) * | 2013-04-10 | 2016-01-27 | 感觉媒体 | 互联网协议电话带宽管理 |
CN104660504A (zh) * | 2013-08-05 | 2015-05-27 | Agh科学技术大学 | 计算机网络中进行封包多路径路由选择的装置及其方法 |
CN103873479B (zh) * | 2014-03-28 | 2017-09-12 | 北京邮电大学 | 一种基于跨层评估的平行数据传输算法 |
CN105207951A (zh) * | 2014-06-05 | 2015-12-30 | 北京邮电大学 | 一种广域网流量优化控制方法及装置 |
CN105207951B (zh) * | 2014-06-05 | 2020-06-09 | 北京邮电大学 | 一种广域网流量优化控制方法及装置 |
CN104361088A (zh) * | 2014-11-17 | 2015-02-18 | 国电南京自动化股份有限公司 | Scada系统基于实时权重分析的拥塞数据处理方法 |
CN106708607A (zh) * | 2015-11-12 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 消息队列的拥塞控制方法和装置 |
CN106708607B (zh) * | 2015-11-12 | 2020-12-22 | 创新先进技术有限公司 | 消息队列的拥塞控制方法和装置 |
CN106059941A (zh) * | 2016-07-14 | 2016-10-26 | 电子科技大学 | 一种消除链路拥塞的骨干网络流量调度方法 |
CN106059941B (zh) * | 2016-07-14 | 2018-12-18 | 电子科技大学 | 一种消除链路拥塞的骨干网络流量调度方法 |
CN106685821B (zh) * | 2017-02-20 | 2020-06-02 | 华为技术有限公司 | 一种多路径选择方法及设备 |
CN106685821A (zh) * | 2017-02-20 | 2017-05-17 | 华为技术有限公司 | 一种多路径选择方法及设备 |
CN107544788A (zh) * | 2017-07-19 | 2018-01-05 | 北京中科睿芯智能计算产业研究院有限公司 | 一种带时间印记的数据流图拥塞检测方法 |
CN107544788B (zh) * | 2017-07-19 | 2020-09-01 | 北京中科睿芯智能计算产业研究院有限公司 | 一种带时间印记的数据流图拥塞检测方法 |
CN107528791A (zh) * | 2017-10-23 | 2017-12-29 | 北京交通大学 | 一种拥塞控制方法及设备 |
CN110784399A (zh) * | 2019-11-04 | 2020-02-11 | 海南大学 | 一种mptcp网络多路径优化组合传输方法及系统 |
CN110958640A (zh) * | 2019-11-19 | 2020-04-03 | 北京航空航天大学 | 一种低轨道卫星网络拥塞控制方法及装置 |
CN110958640B (zh) * | 2019-11-19 | 2021-07-20 | 北京航空航天大学 | 一种低轨道卫星网络拥塞控制方法及装置 |
CN113973085B (zh) * | 2020-07-22 | 2023-10-20 | 华为技术有限公司 | 一种拥塞控制方法和装置 |
CN113973085A (zh) * | 2020-07-22 | 2022-01-25 | 华为技术有限公司 | 一种拥塞控制方法和装置 |
CN114079619B (zh) * | 2020-08-07 | 2024-02-13 | 中国电信股份有限公司 | 端口流量的采样方法和装置 |
CN114079619A (zh) * | 2020-08-07 | 2022-02-22 | 中国电信股份有限公司 | 端口流量的采样方法和装置 |
CN111930677A (zh) * | 2020-08-14 | 2020-11-13 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、装置及电子设备和存储介质 |
CN113949651B (zh) * | 2021-11-01 | 2023-04-07 | 北京百度网讯科技有限公司 | 网络传输方法、装置、设备、存储介质 |
CN113949651A (zh) * | 2021-11-01 | 2022-01-18 | 北京百度网讯科技有限公司 | 网络传输方法、装置、设备、存储介质及程序产品 |
CN114567679A (zh) * | 2022-03-25 | 2022-05-31 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
CN114567679B (zh) * | 2022-03-25 | 2024-04-02 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
CN114884902A (zh) * | 2022-05-09 | 2022-08-09 | 中国联合网络通信集团有限公司 | 一种数据流传输方法、装置、网络设备及存储介质 |
CN115277572A (zh) * | 2022-07-29 | 2022-11-01 | 山东大学 | 一种多源点多汇点网络的拥塞控制方法及系统 |
CN115277572B (zh) * | 2022-07-29 | 2023-10-13 | 山东大学 | 一种多源点多汇点网络的拥塞控制方法及系统 |
CN116192777A (zh) * | 2022-12-30 | 2023-05-30 | 中国联合网络通信集团有限公司 | 路径学习方法、装置及存储介质 |
CN116192777B (zh) * | 2022-12-30 | 2024-06-04 | 中国联合网络通信集团有限公司 | 路径学习方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101656674B (zh) | 2011-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101656674B (zh) | 拥塞控制方法及网络节点 | |
US7047316B2 (en) | Link state routing techniques | |
Abdelkader et al. | A performance comparison of delay-tolerant network routing protocols | |
CN112953830B (zh) | 时间敏感网络中流量帧的路由规划调度方法及装置 | |
CN111245722B (zh) | 一种基于遗传算法的sdn数据中心网络流转发方法 | |
Jain et al. | Enhanced fuzzy logic‐based spray and wait routing protocol for delay tolerant networks | |
CN107454019B (zh) | 软件定义网络动态带宽分配方法、装置、设备及存储介质 | |
Rashid et al. | Reactive weight based buffer management policy for DTN routing protocols | |
US20030231588A1 (en) | Method and apparatus for multicast and unicast scheduling | |
Wang et al. | Presto: Towards efficient online virtual network embedding in virtualized cloud data centers | |
CN115529316B (zh) | 一种基于云计算中心网络架构的微服务部署方法 | |
US20110122791A1 (en) | Technique for communication between a plurality of nodes | |
CN101958847A (zh) | 一种分布式qos路由的选择方法 | |
Rai et al. | Loop-free backpressure routing using link-reversal algorithms | |
Parsa et al. | QoS-aware routing and traffic management in multi-flow opportunistic routing | |
Liebeherr et al. | Rate allocation and buffer management for differentiated services | |
Chang et al. | CROP: Community-relevance-based opportunistic routing in delay tolerant networks | |
CN109474464B (zh) | 一种基于OpenNF机制的快速网络更新方法 | |
CN115277572B (zh) | 一种多源点多汇点网络的拥塞控制方法及系统 | |
CN107682259A (zh) | 寻路方法及装置 | |
JP2002281066A (ja) | キュー割り当てシステムおよびパケット交換機のキュー割り当て方法 | |
CN112615798A (zh) | 一种基于大象流预约的带宽分配方法和设备 | |
US5941948A (en) | Admission controller for network access | |
CN113079102A (zh) | 一种大象流多分级调度方法及装置、设备、存储介质 | |
CN116506351B (zh) | MPLS-VPN Qos路由选择方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111012 Termination date: 20180923 |
|
CF01 | Termination of patent right due to non-payment of annual fee |