在前一章讨论的各种队列都不能避免拥塞的出现,一旦数据源发送数据过快,超过了路由器转发速度,队列就被填满,此时路由器只能把使用尾部丢弃(tail drop)的方法应对数据拥塞,就是把队列最后的数据丢弃。
拥塞避免(Congestion Avoidance)技术监控网络流量负载,力求在网络瓶颈处避免数据拥塞。在多种拥塞避免的方法中,最常用的是随机早期检测(Random Early Detection, RED),这种方法最适合于高速网络。拥塞的避免是通过丢弃数据包而获得的,但不同与尾部丢弃方法的是RED随机丢弃队列中的数据。在RED的算法基础上有产生了加权随机早期检测(WRED),WRED根据DSCP或IP优先级值丢弃数据包,主要用在网络核心路由器上。
6.1 随机早期检测随机早期检测是在上世纪九十年代初提出来的,它是一种以响应(responsive)方式而不是以反应(reactive)方式解决网络拥塞的方法。这种方法的前提是运行在传输层上的协议对丢包比较敏感,并且当丢包时可以暂时降低发送数据的速率。例如,TCP协议,它对丢包就非常敏感,并能对丢包做出及时的响应,即降低发送数据的速率。由于TCP协议被广泛应用,因此,RED是网络上广泛应用的、有效的拥塞避免方法。相反,对于那些对丢包不敏感的协议,RED则是毫无用处的。
RED的目标是控制队列的平均长度,达到这个目标的方法是用丢包的手段指示发送数据的主机什么时候它应该降低发送数据的速率。
RED不像尾部丢弃方法那样集中丢弃数据,从时间上看,它分散了丢弃数据包的工作,而是在队列长度达到一定范围时随机地丢弃一些数据。这个队列长度范围是人为定义的。
6.2 丢弃机率数据包被丢弃的机率也就是被丢弃的可能性(Drop Probability)由3个参数决定:队列平均长度的最小阈值(minimum threshold),最大阈值(maximum threshold)和计算丢弃机率的抽样基数(mark probability denominator)。
当队列的平均长度大于最小阈值时,RED开始丢弃数据包,随着队列平均长度增加,丢弃数据包的速度也随之线性增加。
当队列平均长度达到最大阈值时,抽样基数决定了有多少数据包应该被丢弃。例如,如果抽样基数是512,意味着每512个数据包中有一个数据包被丢弃。
当队列的平均长度超过最大阈值时,所有队尾数据都被丢弃。
图 6-1描述了数据包丢弃的可能性。
最小阈值应该设置得足够大,只有这样才能有效利用链路带宽。因为最小阈值设置得太低就会丢弃过多的数据,使链路不能满负荷使用。最小阈值和最大阈值的差值也应该设置得足够大,如果设置得比较小,一次丢弃的数据包会很多,会引起TCP全局同步(global synchronization)问题,即许多使用TCP协议发送数据的主机同时降低发送速率。
加权随机早期检测加权随机早期检测(Weighted RED, WRED)把RED算法与IP优先级相结合,可为较高优先级的数据提供优先服务。当接口出现拥塞时,WRED选择丢弃较低优先级的数据,这样可以为不同服务类别的数据提供具有区分的性能特征。IP优先级越低的数据,丢弃的可能性越大。
在使用时,如果设置WRED忽略IP优先级,那么它产生的结果就是RED。如果接口上启用了RSVP,WRED不会丢弃RSVP的数据,而是选择丢弃其他数据。
WRED具有统计流量的特性,能够识别哪些是大流量数据。它更倾向于丢弃大流量的数据。因此,产生大流量数据源的发送速率更容易被降低,这样能够快速缓解或消除拥塞。
由于WRED把非IP数据的优先级看做0,所以非IP数据比IP数据丢弃的可能性大。
平均队列长度路由器计算平均队列长度的公式是:
平均队列长度=(前次平均队列长度 × (1 - 1/2n)) + (当前队列长度 × 1/2n)
n代表权重,用户可以自定义。
n值越大,队列长度变化越慢,WRED进程启动得慢,停止得也慢。也就是说当队列长度已经降到最小阈值以下时,WRED仍然在丢包,但这种缓慢变化的队列长度平均值能容许一定的数据突发。如果n值太大,WRED就会失去作用。
n值越小,平均队列长度越接近于当前队列长度。平均队列长度会随着流量而波动。而WRED进程启动得快,停止得也快。一旦队列长度降到最小阈值以下,丢包立即停止。如果n值太小,WRED会对临时突发数据产生过度反应,造成不必要的数据丢弃。
当数据包到达时,会
(1)计算平均队列长度;
(2)如果平均队列长度小于最小阈值,数据包被放入队列;
(3)如果平均队列长度在最小阈值和最大阈值之间,数据包可能被放入队列,也可能被丢弃,这取决于该类型数据的丢弃可能性;
(4)如果平均队列长度大于最大阈值,数据包被丢弃。基于流的WRED
基于流的WRED(Flow-based WRED)是WRED的一个特性。从丢弃数据包角度来说,这种特性使WRED更公平地对待所有数据流。
在没有使用基于流的WRED对数据分类之前,数据流有以下3类。
非自适应数据流(nonadaptive flow),这种数据流不响应拥塞。
稳固数据流(robust flow),这种数据流具有稳定的速率,并响应拥塞。缓存内(队列内)存储了大量的数据包。
脆弱数据流(fragile flow),这种数据流也能识别拥塞,并对拥塞做出响应,但数据流很小,缓存中(队列中)只有很少的数据包。
从丢弃数据角度来讲,在这3种数据流中,脆弱数据流受到了不公正的对待,因为在拥塞发生时,即便是只有很少数据包的队列也有可能丢弃其中的数据包,而且丢弃的速率与其他队列(队列中有大量数据)中的数据丢弃速率一样。
为了公平对待所有数据流,基于流的WRED提供了以下特性:
保证响应数据包丢弃的数据流不受不响应数据包丢弃的数据流的影响;
禁止单个数据流独占接口的缓存空间。
基于数据流的WRED依靠以下2种措施弥补丢弃数据包的不公平性:
根据目标地址、源地址和端口号把流量分成不同的数据流;
维护活跃数据流的状态,活跃数据流即队列中有数据的数据流。
基于流的WRED利用分类和流状态信息保证每个流不能够多占出口缓存资源。如果某个流独占了缓存,它就重重地惩罚该数据流。
为保证公平,基于流的WRED维护着活跃数据流的数量,并为每个流分配可用的缓存空间。为了允许突发,基于流的WRED会为每个流扩展一定量的缓存空间,这个扩展因子(factor)对所有流都是相同的。如果数据流使用的扩展缓存空间超出了给定值,该流的数据被丢弃的可能性就会增大。
遵从区分服务的WRED
遵从区分服务的WRED(DiffServ Compliant WRED)扩展了WRED的功能,使其能够支持AF PHB。这个特性使得用户可以定义WRED根据DSCP值丢弃数据包。这样,用户可以定义哪些DSCP值的数据丢弃的可能性大,哪些DSCP值的数据丢弃的可能性小。
遵从区分服务的WRED特性可以在接口上使用,也可以在VC上使用,还可以和CBWFQ
6.7 配置WRED
6.7.1 在物理接口上启用WRED
(1)在物理接口上启用WRED的命令,如下所示。
Router(config-if)# random-detect
系统默认使用的权重值是9,抽样基数(mark probability denominatior)是10。
默认的最大阈值根据接口缓存空间大小和转发速度来决定。每个IP优先级默认的最小阈值也不同,prec=0的最小阈值等于最大阈值的一半,prec=1 的最小阈值是最大阈值的二分之一后面的第一个偶数,其他优先级的最小阈值顺序使用后面的偶数。
例如,如果最大阈值是40,prec=0的最小阈值是20,prec=1的最小阈值是22,prec=2的最小阈值勤是24,依次类推。
例6-1:在接口上启用WRED。
Router(config)#interface Serial5/0
Router(config-if)#ip address 200.200.14.250 255.255.255.252
Router(config-if)#random-detect
例6-2:检查WRED。
Router# show queueing
Current random-detect configuration:
Serial5/0
Queueing strategy:random early detection (WRED)
Exp-weight-constant:9 (1/512)
Mean queue depth:28
Class Random Tail Minimum Maximum Mark
drop drop threshold threshold probability
0 330 0 20 40 1/10
1 267 0 22 40 1/10
2 217 0 24 40 1/10
3 156 0 26 40 1/10
4 61 0 28 40 1/10
5 6 0 30 40 1/10
6 0 0 32 40 1/10
7 0 0 34 40 1/10
rsvp 0 0 36 40 1/10
输出显示优先级别越高的数据,被丢弃的数据越少,这说明优先级别越高,丢弃的可能性越低。最小阈值是按照偶数顺序使用的。
例6-3:更改权重。
Router(config-if)# random-detect exponential-weighting-constant exponent
Exponent——权重指数。
例6-4:更改阈值及抽样基数。
Router(config-if)# random-detect precedence precedence min-threshold max-threshold mark-prob-denominator
Precedence——IP优先级值。
Min-threshold——最小阈值。
Max-threshold——最大阈值。
Mark-prob-denominator——抽样基数。
(4)如果希望使用RED而不使用WRED,使用该命令把所有优先级的参数配置成相同的即可。
例6-5:
interface FastEthernet1/0/0
random-detect precedence 0 100 218 10
random-detect precedence 1 100 218 10
random-detect precedence 2 100 218 10
random-detect precedence 3 100 218 10
random-detect precedence 4 100 218 10
random-detect precedence 5 100 218 10
random-detect precedence 6 100 218 10
random-detect precedence 7 100 218 10
提示:默认WRED参数值已经是最佳值,建议不要更改,除非你非常清楚更改的值比默认值更适合你的应用。
6.7.2 在VC接口上启用WRED
在虚拟接口上,如ATM的VC接口上,启用WRED需要2个命令,分2步完成。如果物理接口和VC上都启用了WRED,VC上的WRED参数会覆盖物理接口上的WRED参数。
(1)定义WRED参数。
Router(config)#random-detect-group group-name
Router(cfg-red-grp)# precedence prec-value min-threshold max-threshold [mark-probability-denominator]
Group-name——WRED参数集的名称。
Prec-value——IP优先级值。
Min-threshold ——最小阈值。
Max-threshold——最大阈值。
mark-probability-denominator——抽样基数。
例如:
Router(config)#random-detect-group sample
Router(cfg-red-grp)#precedence 0 32 256 100
Router(cfg-red-grp)#precedence 1 64 256 100
Router(cfg-red-grp)#precedence 2 96 256 100
Router(cfg-red-grp)#precedence 3 128 256 100
Router(cfg-red-grp)#precedence 4 160 256 100
Router(cfg-red-grp)#precedence 5 192 256 100
Router(cfg-red-grp)#precedence 6 224 256 100
Router(cfg-red-grp)#precedence 7 256 256 100
(2)在VC接口上应用WRED参数集。
Router(config-atm-vc)# random-detect [attach group-name ]
Group-name——WRED参数集的名称。如果没有关联(attach)任何group,接口使用系统默认值。
例如:
Router(config-subif-vc)# random-detect attach sample
6.7.3 配置基于流的WRED
(1)启用基于流的WRED。
Router(config-if)# random-detect flow
(2)定义扩展因子。
Router(config-if)# random-detect flow average-depth-factor scaling-factor
scaling-factor——扩展因子。默认值是4。
(3)定义最大活跃流数量。
Router(config-if)# random-detect flow count number
Number——活跃流数量值。默认值是256。
例6-6:在接口上启用基于流的WRED,并设置扩展因子为8,活跃流数量为300。
interface Serial1
random-detect
random-detect flow
random-detect flow average-depth-factor 8
random-detect flow count 300
6.7.4 启用遵从区分服务的WRED
1.在物理接口上启用遵从区分服务的WRED
Router(config-if)# random-detect dscp-based
Router(config-if)# random-detect dscp dscpvalue min-threshold max-threshold [mark-probability-denominator]
Dscp-based——根据DSCP值丢弃数据包。默认使用的是precedence-based。
Dscp-value——DSCP值。
Min-threshold——最小阈值。
Max-threshold——最大阈值。
mark-probability-denominator——抽样基数。
系统默认地使用prec-based。另外,系统默认使用的权重值是9,抽样基数(mark probability denominatior)是10。
例6-7:在接口serial0/0上启用遵从区分服务的WRED,并设置DSCP=8的队列最小阈值为24,最大阈值为40。
Router(config-if)# interface se0/0
Router(config-if)# random-detect dscp-based
Router(config-if)# random-detect dscp 8 24 40
2.在VC接口上启用遵从区分服务的WRED
(1)启用遵从区分服务的WRED并为DSCP值定义阈值。
Router(config)#random-detect-group group-name dscp-based
Router(cfg-red-grp)#dscp dscp-value min-threshold max-threshold [mark-probability-denominator]
Dscp-based——根据DSCP值丢弃数据包。默认使用的是precedence-based。
Group-name——WRED参数集的名称。
Dscp-value——DSCP值。
Min-threshold——最小阈值。
Max-threshold——最大阈值。
mark-probability-denominator——抽样基数。
(2)在VC接口上应用WRED参数集。
Router(config-atm-vc)# random-detect attach group-name
Group-name——WRED参数集的名称。
例6-8:设置一个名字为example的WRED参数集,并把DSCP=9的最小阈值设为20,最大阈值设为50。
Router(config)# random-detect-group example dscp-based
Router(cfg-red-grp)# dscp 9 20 50
Router(config-subif-vc)# random-detect attach example
3.在CBWFQ上启用WRED
(1)命令语法如下所示。
Router(config)# policy-map policy-map
Router(config-pmap)# class class-map-name
Router(config-pmap-c)#bandwidth { kbps | percent percent-value}
Router(config-pmap-c)# random-detect [dscp-based | prec-based | cos-based]
Router(config-pmap-c)# random-detect {dscp dscp-value | precedence prec-value | cos cos-value } min-threshold max-threshold [mark-probability-denominator]
Dscp-based——根据DSCP值丢弃数据包。
prec-based——根据precedence值丢弃数据包。
cos-based——根据COS值丢弃数据包。
Dscp-value——DSCP值。
Prec-value——IP优先级值。
cos-value——COS值。
Min-threshold——最小阈值。
Max-threshold——最大阈值。
mark-probability-denominator——抽样基数。
例6-9:启用基于DSCP的WRED,并定义在class c1中,dscp=8的数据的最小阈值为24,最大阈值为40。
Router(config)# class-map c1
Router(config-cmap)# match access-group 101
Router(config-cmap)#exit
Router(config)# policy-map p1
Router(config-pmap)# class c1
Router(config-pmap-c)# bandwidth 48
Router(config-pmap-c)# random-detect dscp-based
Router(config-pmap-c)# random-detect dscp 8 24 40
Router(config-pmap-c)#exit
Router(config-pmap)#exit
Router(config)#interface s0/0
Router(config-if)# service-policy output p1
提示:dscp-based 和prec-based 不能同时使用,它们是互斥的。
(2)例6-10:下面是CBWFQ使用WRED的一个案例。在路由器的f0/0接口(数据入口)对数据进行分类和标记,在f0/1接口(数据出口)使用WRED。
ip access-list extended app-Critical
permit tcp 172.16.10.0 0.0.0.255 any eq 1521
ip access-list extended app-High
permit tcp 172.16.10.0 0.0.0.255 any eq 1810
ip access-list extended app-Middle
permit tcp 172.16.10.0 0.0.0.255 any eq 2481
ip access-list extended app-Low
permit tcp 172.16.10.0 0.0.0.255 any eq 7778
Class-map voice
Match rtp protocol audio
Class-map app-Critical
Match access-group name app-Critical
Class-map app-High
Match access-group name app-High
Class-map app-Middle
Match access-group name app-Middle
Class-map app-Low
Match access-group name app-Low
Policy-map input_mark
Class voice
Set ip dscp ef
Class app-Critical
Set ip dscp af41
Class app-High
Set ip dscp af31
Class app-Middle
Set ip dscp af21
Class app-Low
Set ip dscp af11
Interface FastEthernet 0/0
Service-policy input input_mark
Class-map voice-data
Match ip dscp ef
Class-map app-Critical-data
Match ip dscp af41
Class-map app-High-data
Match ip dscp af31
Class-map app-Middle-data
Match ip dscp af21
Class-map app-Low-data
Match ip dscp af11
Policy-map QoS-with-WRED
Class voice-data
Priority percent 10
Class app-Critical-data
Bandwidth remaining percent 35
random-detect dscp-based
random-detect dscp af41 200 400
Class app-High-data
Bandwidth remaining percent 30
random-detect dscp-based
random-detect dscp af31 150 300
Class app-Middle-data
Bandwidth remaining percent 20
random-detect dscp-based
random-detect dscp af21 100 200
Class app-Low-data
Bandwidth remaining percent 15
random-detect dscp-based
random-detect dscp af31 50 100
Class class-default
Fair-queue
Interface FastEthernet 0/1
Service-policy output QoS-with-WRED
最多可以定义6个class,也就是说有6个服务等级。
提示:random-detect命令不能和priority命令一起使用,因为语音数据是基于UDP的。
(3)例6-11策略嵌套的示例。把vlan101中的数据分为3个级别,即gold、silver和default。给gold级别的数据分配vlan101所使用带宽的30%,给silver级别的数据分配vlan101所使用带宽的20%,两个队列都启用了基于DSCP的WRED。
Switch(config)# class-map gold
Switch(config-cmap)# match ip dscp af11 af12
Switch(config-cmap)# exit
Switch(config)# class-map silver
Switch(config-cmap)# match ip dscp af21 af22
Switch(config-cmap)# exit
Switch(config)# class-map vlan101
Switch(config-cmap)# match vlan 101
Switch(config-cmap)# exit
Switch(config)# policy-map child-policy
Switch(config-pmap)# class gold
Switch(config-pmap-c)# bandwidth percent 30
Switch(config-pmap-c)# random-detect dscp-based
Switch(config-pmap-c)# random-detect dscp af11 30 40 10
Switch(config-pmap-c)# random-detect dscp af12 25 40 10
Switch(config-pmap-c)# exit
Switch(config-pmap)# class silver
Switch(config-pmap-c)# bandwidth percent 20
Switch(config-pmap-c)# random-detect dscp-based
Switch(config-pmap-c)# random-detect dscp af21 28 35 10
Switch(config-pmap-c)# random-detect dscp af22 26 35 10
Switch(config-pmap-c)# exit
Switch(config-pmap)# exit
Switch(config)# policy-map parent
Switch(config-pmap)# class vlan101
Switch(config-pmap-c)# bandwidth percent 30
Switch(config-pmap-c)# service-policy child-policy
Switch(config-pmap-c)# exit
Switch(config-pmap)# exit
Switch(config)# interface gigabitethernet1/1/1
Switch(config-if)# service-policy output parent
(4)下面是启用了遵从区分服务模式的WRED后,接口上报告的统计信息示例。
Router# show policy interface Serial6/3
Serial6/3
Service-policy output: test
Class-map: c1 (match-any)
0 packets, 0 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: protocol ip
0 packets, 0 bytes
5 minute rate 0 bps
Weighted Fair Queueing
Output Queue: Conversation 265
Bandwidth 20 (%)
Bandwidth 308 (kbps)
(pkts matched/bytes matched) 0/0
(depth/total drops/no-buffer drops) 0/0/0
exponential weight: 9
mean queue depth: 0
dscp Transmitted Random drop Tail drop Minimum Maximum Mark
pkts/bytes pkts/bytes pkts/bytes thresh thresh prob
af11 0/0 0/0 0/0 32 40 1/10
af12 0/0 0/0 0/0 28 40 1/10
af13 0/0 0/0 0/0 24 40 1/10
af21 0/0 0/0 0/0 32 40 1/10
af22 0/0 0/0 0/0 28 40 1/10
af23 0/0 0/0 0/0 24 40 1/10
af31 0/0 0/0 0/0 32 40 1/10
af32 0/0 0/0 0/0 28 40 1/10
af33 0/0 0/0 0/0 24 40 1/10
af41 0/0 0/0 0/0 32 40 1/10
af42 0/0 0/0 0/0 28 40 1/10
af43 0/0 0/0 0/0 24 40 1/10
cs1 0/0 0/0 0/0 22 40 1/10
cs2 0/0 0/0 0/0 24 40 1/10
cs3 0/0 0/0 0/0 26 40 1/10
cs4 0/0 0/0 0/0 28 40 1/10
cs5 0/0 0/0 0/0 30 40 1/10
cs6 0/0 0/0 0/0 32 40 1/10
cs7 0/0 0/0 0/0 34 40 1/10
ef 0/0 0/0 0/0 36 40 1/10
rsvp 0/0 0/0 0/0 36 40 1/10
default 0/0 0/0 0/0 20 40 1/10
“mean queue depth”——表示平均队列长度。
“Transmitted pkts/bytes”——表示转发的数据包数/字节数。
“Random drop pkts/bytes”——表示随机丢弃的数据包数/字节数。
“Tail drop pkts/bytes”——表示尾部丢弃的数据包数/字节数。
“Minimum thresh”——表示最小阈值。这里显示的是系统默认值。
“Maximum thresh”——表示最大阈值。这里显示的是系统默认值。
“Mark prob”——表示抽样基数。这里显示的是系统默认值。
6.8 明确拥塞通知与WRED
6.8.1 原理概述
WRED早期检测拥塞产生的可能性,并提前随机地丢弃一些数据包,以期达到避免拥塞的产生的目的。WRED的工作方式非常适用于那些对丢包产生响应的协议,如TCP协议。然而,这种算法不适合那种对延迟和丢包敏感的应用,如交互应用、TELNET、音频数据和视频数据等。明确拥塞通知(Explicit Congestion Notification, ECN)是WRED特性的扩展,它可以解决上述问题。
WRED基于平均队列长度超出某个阈值的原则来丢弃数据包,并以此指示拥塞的产生。而ECN并不这样,当平均队列长度超过某个阈值时,ECN只是标记数据包,而不是丢弃数据包。它会用这个标记作为网络发生拥塞的信号,通知接收端终端主机(endpoint)网络上产生了拥塞,接收端主机在接收到拥塞通知信息后的下一个数据包后,通知发送端降低传送速率来缓解拥塞。
根据RFC3168的建议,ECN使用TOS字节的最后2比特(第6、第7比特)表示。称第6比特为可传送ECN(ECN-Capable Transport, ECT)比特,称第7比特为拥塞产生(Congestion Experienced, CE)比特。ECT比特和CE比特可以组成以下4种组合。
◆ 00——由发送方设置,表示终端不支持ECN特性。
◆ 01——由发送方设置,表示终端是具有识别ECN功能的主机。
◆ 10——由发送方设置,表示终端是具有识别ECN功能的主机。
◆ 11——由路由器设置,表示产生了拥塞。
路由器识别01和10组合的含义是相同的,发送端可以随意使用。
当ECN特性启用后,数据包到达队列后的处理将会有以下两种情况。
◆ 如果队列中数据包的数量小于最小阈值,数据包被转发。这种情况如同只启用了WRED没有启用ECN特性一样。
◆ 如果队列中的数据包数量在最小阈值和最大阈值之间,那么:
① 如果数据包的ECN字段表明终端主机是识别ECN的,而且WRED又认为该数据包应该被丢弃,那么把ECT和CE比特设置为1,并转发该数据包。
② 如果数据包的ECN字段表明两端主机都不识别ECN,那么由WRED决定是否丢弃该数据包。这种情况如同没有启用ECN特性一样。
③ 如果数据包的ECN字段表明网络正经历拥塞,那么ECN字段不做任何修改而转发该数据包。
◆ 如果队列中的数据包数量超过了最大阈值,该数据包被丢弃。
6.8.2 配置ECN
(1)ECN只能使用MQC配置,命令如下所示。
Router(config)# policy-map policy-map
Router(config-pmap)# class class-map-name
Router(config-pmap-c)#bandwidth { kbps | percent percent-value}
Router(config-pmap-c)# random-detect
Router(config-pmap-c)# random-detect ecn
例6-12:在class3的队列上启用ECN特性。
Router(config)# policy-map policy-ecn
Router(config-pmap)# class class3
Router(config-pmap)# bandwidth per 70
Router(config-pmap-c)# random-detect
Router(config-pmap-c)# random-detect ecn
(2)使用如下命令检查ECN,
Router# show policy-map interface Serial4/1
Serial4/1
Service-policy output:policy_ecn
Class-map:prec1 (match-all)
1000 packets, 125000 bytes
30 second offered rate 14000 bps, drop rate 5000 bps
Match:ip precedence 1
Weighted Fair Queueing
Output Queue:Conversation 42
Bandwidth 20 (%)
Bandwidth 100 (kbps)
(pkts matched/bytes matched) 989/123625
(depth/total drops/no-buffer drops) 0/455/0
exponential weight:9
explicit congestion notification
mean queue depth:0
class Transmitted Random drop Tail drop Minimum Maximum Mark
pkts/bytes pkts/bytes pkts/bytes thresh thresh prob
0 0/0 0/0 0/0 20 40 1/10
1 545/68125 0/0 0/0 22 40 1/10
2 0/0 0/0 0/0 24 40 1/10
3 0/0 0/0 0/0 26 40 1/10
4 0/0 0/0 0/0 28 40 1/10
5 0/0 0/0 0/0 30 40 1/10
6 0/0 0/0 0/0 32 40 1/10
7 0/0 0/0 0/0 34 40 1/10
rsvp 0/0 0/0 0/0 36 40 1/10
class ECN Mark
pkts/bytes
0 0/0
1 43/5375
2 0/0
3 0/0
4 0/0
5 0/0
6 0/0
7 0/0
rsvp 0/0
“ECN mark pkts/bytes”表示ECN标记的数据包数/字节数。
6.9 本章小结
本章介绍了避免拥塞产生的技术——随机早期检测技术(RED)和加权随机早期检测技术(WRED)。本章还重点讨论了WRED的原理和实现WRED的配置命令。RED技术的工作原理是为队列设置最小阈值、最大阈值及丢弃可能性。随着队列的逐步增长,当平均队列长度在最小阈值和最大阈值之间时,会随机地丢弃一些数据,这样可避免队列溢出。WRED会根据IP优先级、DSCP值选择丢弃数据包,优先级越低的数据被丢弃的可能性越大,这样保证了高优先级数据优先发送的原则。本章最后介绍了ECN技术,它适合于那些识别ECN的主机。与WRED不同的是,它不丢弃在最小阈值和最大阈值之间应该被丢弃的数据,而只是标记这些数据。因为终端能够识别ECN拥塞标记,所以终端仍然能够响应拥塞的产生而降低发送速率,最终达到消除拥塞的目的。