6 拥塞避免技术

  在前一章讨论的各种队列都不能避免拥塞的出现,一旦数据源发送数据过快,超过了路由器转发速度,队列就被填满,此时路由器只能把使用尾部丢弃(tail drop)的方法应对数据拥塞,就是把队列最后的数据丢弃。

   拥塞避免(Congestion Avoidance)技术监控网络流量负载,力求在网络瓶颈处避免数据拥塞。在多种拥塞避免的方法中,最常用的是随机早期检测(Random Early Detection, RED),这种方法最适合于高速网络。拥塞的避免是通过丢弃数据包而获得的,但不同与尾部丢弃方法的是RED随机丢弃队列中的数据。在RED的算法基础上有产生了加权随机早期检测(WRED),WRED根据DSCPIP优先级值丢弃数据包,主要用在网络核心路由器上。

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。如果接口上启用了RSVPWRED不会丢弃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

基于流的WREDFlow-based WRED)是WRED的一个特性。从丢弃数据包角度来说,这种特性使WRED更公平地对待所有数据流。

在没有使用基于流的WRED对数据分类之前,数据流有以下3类。

        非自适应数据流(nonadaptive flow),这种数据流不响应拥塞。

        稳固数据流(robust flow),这种数据流具有稳定的速率,并响应拥塞。缓存内(队列内)存储了大量的数据包。

        脆弱数据流(fragile flow),这种数据流也能识别拥塞,并对拥塞做出响应,但数据流很小,缓存中(队列中)只有很少的数据包。

从丢弃数据角度来讲,在这3种数据流中,脆弱数据流受到了不公正的对待,因为在拥塞发生时,即便是只有很少数据包的队列也有可能丢弃其中的数据包,而且丢弃的速率与其他队列(队列中有大量数据)中的数据丢弃速率一样。

为了公平对待所有数据流,基于流的WRED提供了以下特性:

        保证响应数据包丢弃的数据流不受不响应数据包丢弃的数据流的影响;

        禁止单个数据流独占接口的缓存空间。

基于数据流的WRED依靠以下2种措施弥补丢弃数据包的不公平性:

        根据目标地址、源地址和端口号把流量分成不同的数据流;

        维护活跃数据流的状态,活跃数据流即队列中有数据的数据流。

基于流的WRED利用分类和流状态信息保证每个流不能够多占出口缓存资源。如果某个流独占了缓存,它就重重地惩罚该数据流。

为保证公平,基于流的WRED维护着活跃数据流的数量,并为每个流分配可用的缓存空间。为了允许突发,基于流的WRED会为每个流扩展一定量的缓存空间,这个扩展因子(factor)对所有流都是相同的。如果数据流使用的扩展缓存空间超出了给定值,该流的数据被丢弃的可能性就会增大。


遵从区分服务的WRED

遵从区分服务的WREDDiffServ 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 的最小阈值是最大阈值的二分之一后面的第一个偶数,其他优先级的最小阈值顺序使用后面的偶数。

例如,如果最大阈值是40prec=0的最小阈值是20prec=1的最小阈值是22prec=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

在虚拟接口上,如ATMVC接口上,启用WRED需要2个命令,分2步完成。如果物理接口和VC上都启用了WREDVC上的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:设置一个名字为exampleWRED参数集,并把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:启用基于DSCPWRED,并定义在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

最多可以定义6class,也就是说有6个服务等级。

提示:random-detect命令不能和priority命令一起使用,因为语音数据是基于UDP的。

3)例6-11策略嵌套的示例。把vlan101中的数据分为3个级别,即goldsilverdefault。给gold级别的数据分配vlan101所使用带宽的30%,给silver级别的数据分配vlan101所使用带宽的20%,两个队列都启用了基于DSCPWRED

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比特为可传送ECNECN-Capable Transport, ECT)比特,称第7比特为拥塞产生(Congestion Experienced, CE)比特。ECT比特和CE比特可以组成以下4种组合。

00——由发送方设置,表示终端不支持ECN特性。

01——由发送方设置,表示终端是具有识别ECN功能的主机。

10——由发送方设置,表示终端是具有识别ECN功能的主机。

11——由路由器设置,表示产生了拥塞。

路由器识别0110组合的含义是相同的,发送端可以随意使用。

ECN特性启用后,数据包到达队列后的处理将会有以下两种情况。

如果队列中数据包的数量小于最小阈值,数据包被转发。这种情况如同只启用了WRED没有启用ECN特性一样。

如果队列中的数据包数量在最小阈值和最大阈值之间,那么:

如果数据包的ECN字段表明终端主机是识别ECN的,而且WRED又认为该数据包应该被丢弃,那么把ECTCE比特设置为1,并转发该数据包。

如果数据包的ECN字段表明两端主机都不识别ECN,那么由WRED决定是否丢弃该数据包。这种情况如同没有启用ECN特性一样。

如果数据包的ECN字段表明网络正经历拥塞,那么ECN字段不做任何修改而转发该数据包。

如果队列中的数据包数量超过了最大阈值,该数据包被丢弃。

6.8.2 配置ECN

1ECN只能使用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拥塞标记,所以终端仍然能够响应拥塞的产生而降低发送速率,最终达到消除拥塞的目的。


10-07 12:28