然后让不同类别的报文进入不同的队列。
对于不匹配任何类别的报文,报文被送入默认队列,按WFQ进行处理,即,按照流的方式进行处理。
HbmVN777sL
在调度出队的时候,每个队列被分配了一定的带宽,调度器按照每个队列分配到的带宽对报文出队发送。
0号队列是优先队列,一个或多个类的报文可以被设定进入优先队列,并为不同类别的报文设定可占用的带宽。
当优先队列中有报文的时候,调度器总是发送优先队列中的报文。
直到优先队列中没有报文时,才调度其他的队列中的报文。
V7l4jRB8Hs
进入优先队列的报文在接口没有发生拥塞的时候<所有队列中都没有报文时),所有属于优先队列的报文都可以被发送。
在接口发生拥塞的时候<队列中有报文时),进入优先队列的报文被限速。
超出规定流量的报文将被丢弃。
这样,在接口不发生拥塞的情况下,可以使属于优先队列的报文能获得空闲的带宽,在接口拥塞的情况下,又可以保证属于优先队列的报文不会占用超出规定的带宽,保护了其他报文的应得带宽。
另外,由于只要优先队列中有报文,调度器就会发送优先队列中的报文,所以优先队列中的报文被发送的延迟最多是接口发送一个报文的时间,无论是延迟还是延迟抖动,优先队列都可以将之降低为最低限度。
这为对延迟敏感的应用如VoIP业务提供了良好的服务质量保证。
83lcPA59W9
图6中1到N1的队列为各类报文的队列。
每类报文占一个队列。
在调度器调度报文出队的时候,按用户为各类报文设定的带宽将报文出队发送。
属于1到N1号队列的报文可以被确保得到用户设定的带宽。
当接口中某些类别的报文没有时,属于1到N1号队列的报文还可以公平地得到空闲的带宽,和时分复用系统相比,大大提高了线路的利用率。
同时,在接口拥塞的时候,仍然能保证各类报文得到用户设定的最小带宽。
mZkklkzaaP
当报文不匹配用户设定的所有类别时,报文被送入默认队列。
默认队列在逻辑上可看作是一个队列,但实际上是个WFQ队列,所有进入默认队列的报文再按流进行分类。
AVktR43bpw
CBWFQ最多允许将报文分为64类<其中包括默认类)。
所以,N1的最大值为63。
默认队列的个数N2可以由用户设定。
对于默认队列和1到N1的队列,用户可以设定队列的最大长度。
当队列的长度达到队列的最大长度时,默认采用尾丢弃的策略。
但用户还可以选择用加权随机早期检测加权随机早期检测的丢弃策略请参见后面加权随机早期检测WRED的描述。
ORjBnOwcEd
但对于优先队列,由于在接口拥塞的时候流量限制开始起作用,所以用户不必设置队列的长度<也就没有了尾丢弃)。
另外,由于优先队列中的报文一般是语音报文2MiJTy0dTT
拥塞管理技术的对比
为了更好的利用拥塞管理技术,现对各种队列技术做一比较。
优点
缺点
FIFO
1、不需要配置,易于使用。
2、处理简单,处理延迟小。
1、所有报文同等对待,报文到来的次序决定了报文可占用的带宽、报文的延迟、报文的丢失。
2、对不配合的数据源<如UDP报文发送)无约束力,不配合的数据源会造成配合的数据源<如TCP报文发送)带宽受损失。
3、对时间敏感的实时应用<如VoIP)的延迟得不到保证。
PQ
可对不同业务的数据提供绝对的优先,对时间敏感的实时应用<如VoIP)的延迟可以得到保证。
对优先业务的报文的带宽占用可以绝对优先。
1、需配置,处理速度慢。
2、如果不对高优先级的报文的带宽加限制,会造成低优先级的报文得不到带宽。
CQ
1、可对不同业务的报文按带宽比例分配带宽。
2、当没有某些类别的报文时,能自动增加现存类别的报文可占的带宽。
需配置,处理速度慢
WFQ
1、配置容易。
2、可以保护配合<交互)的数据源<如TCP报文发送)的带宽。
3、可以使延迟的抖动减小。
4、可以减小数据量小的交互式应用的延迟。
5、可以为不同优先级的流分配不同的带宽。
6、当流的数目减少时,能自动增加现存流可占的带宽。
处理速度比FIFO要慢。
但比PQ、CQ要快。
CBWFQ
1、对报文进行分类,为每类报文提供确保带宽。
2、可为部分报文提供快速转发服务3、当各类数据流的确保带宽的总和小于接口的带宽时,能自动增加各类流的带宽,从而充分利用线路的带宽。
4、为默认类的报文提供WFQ服务。
5、可以为非优先类的报文提供WRED的丢弃策略。
处理速度比FIFO要慢
拥塞避免
由于内存资源的有限,传统的处理方法是,当队列的长度达到规定的最大长度时,所有到来的报文都被丢弃。
对于TCP报文,由于大量的报文被丢弃,将造成TCP超时,从而引发TCP的慢启动和拥塞避免机制,使TCP减少报文的发送。
当队列同时丢弃多个TCP连接的报文时,将造成多个TCP连接同时进入慢启动和拥塞避免,称之为:
TCP全局同步。
这样多个TCP连接发向队列的报文将同时减少,使得发向队列的报文的量不及线路发送的速度,减少了线路带宽的利用。
并且,发向队列的报文的流量总是忽大忽小。
使线路的上的流量总在极少和饱满之间波动。
gIiSpiue7A
为了避免这种情况的发生,队列可以采用加权随机早期检测(WRED与RED区别是引入IP优选权,区别丢弃策略>用户可以设定队列的低限和高限。
当队列的长度小于低限时,不丢弃队列。
当队列的长度在低限和高限之间时,WRED开始随机丢弃报文。
并且,队列的长度越长,丢弃的概率越高。
当队列的长度大于高限时,丢弃所有的报文。
uEh0U1Yfmh
由于WRED随机地丢弃报文,将避免使多个TCP连接同时降低发送速度,从而避免了TCP的全局同步现象。
当某个TCP连接的报文被丢弃,开始减速发送的时候,其他的TCP连接仍然有较高的发送速度。
这样,无论什么时候,总有TCP连接在进行较快的发送,提高了线路带宽的利用率。
IAg9qLsgBX
直接采用队列的长度和低限、高限比较并进行丢弃(这是设置队列门限的绝对长度>,将会对突发性的数据流造成不公正的待遇,不利于数据流的传输。
所以,在和低限、高限比较并进行丢弃时,采用队列的平均长度(这是设置队列门限与平均长度比较的相对值>。
队列的平均长度是队列长度被低通滤波后的结果。
它既反映了队列的变化趋势,又对队列长度的突发变化不敏感。
避免了对突发性的数据流造成不公正的待遇。
WwghWvVhPE
当WRED和WFQ配合使用时,还可以实现基于流的WRED。
这是因为,在进行分类的时候,不同的流有自己的队列,对于流量小的流,由于其队列长度总是比较小,所以丢弃的概率将比较小。
而流量大的流将会有较大的队列长度,从而丢弃较多的报文,保护了流量较小的流的利益。
asfpsfpi4k
即使WRED和其他的队列机制配合使用,对于流量小的流,由于其报文的个数较少,所以从统计概率来说,被丢弃的概率也会较小。
也可以保护流量较小的流的利益。
ooeyYZTjj1
流量监管和流量整形
流量监管通常的用法是使用CAR来限制某类报文的流量,如限制HTTP报文不能占用超过50%的网络带宽。
BkeGuInkxI
流量整形这通常使用缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下,再均匀的发送这些被缓冲的报文。
PgdO0sRlMo
1.约定访问速度对于ISP来说,对用户送入网络中的流量进行控制是十分必要的。
对于企业网,对某些应用的流量进行控制也是一个有力的控制网络状况的工具。
网络管理者可以使用约定访问速度<以后简称CAR)来对流量进行控制。
3cdXwckm15
CAR利用令牌桶CAR处理过程示意图
图7是CAR的处理过程,首先报文被分类,如果报文是某类报文,规定了流量特性,则进入令牌桶中进行处理。
如果令牌桶中有足够的令牌可以用来发送报文,则报文可以通过,可以被继续发送下去。
如果令牌桶中的令牌不满足报文的发送条件,则报文被丢弃。
这样,就可以对某类报文的流量进行控制。
h8c52WOngM
令牌桶按用户设定的速度向桶中放置令牌,并且,令牌桶有用户设定的容量,当桶中令