QoS mechanisms-congestion avoidance(拥塞避免)

默认使用尾丢弃来管理拥塞接口
在这里插入图片描述在这里插入图片描述当路由器接口输出队列已满时,接口发生拥塞:
后续传入的数据包将被尾丢弃;
被丢弃的数据包可能会导致重要应用程序的性能下降;
尾丢弃有着显著的缺点。
尾丢弃的局限性limitations
应该避尾丢弃,因为它包含明显的缺陷:
TCP synchronization TCP同步,会导致重传,导致滑动窗口号减小
TCP starvation TCP饿死
No differentiated drop 无差异的丢弃
TCP synchronization
TCP同步解释(摘自百度)
TCP同步是指在一段时间内网络处于网络利用率(Network Utilization)很低的使用状态,降低了整体吞吐量(throughput)的现象。
随着网络的普及,信息交流与信息共享成为人们日常生活中必不可少的一部分。而网络中信息(数据包)的不断增长,必然引起网络拥塞。于是,拥塞避免显得尤为重要,现在Internet上使用得比较广泛的拥塞避免机制是丢尾(DropTail):当队列的长度达到规定的最大长度时,所有到来的报文都被丢弃。这种丢弃策略会引发tcp 全局同步(global synchronization)现象——由于Internet上数据(Traffic)的突发本质,到达路由器的数据包也往往是突发的。如果队列是满的或者几乎是满的,就会导致在短时间内连续大量地丢封包。而TCP流具有自适应特性(Adaptiveness),来源端发现数据包丢失就急剧地减小发送窗口(congestion window,cwnd),数据包到达速率就会迅速下降,于是网络拥塞得以解除。但来源端得知网络不再拥塞后又开始增加发送速度,最终又造成网络拥塞,而且这种现象常常会周而复始地进行下去,从而在一段时间内网络处于网络利用率(Network Utilization)很低的使用状态,降低了整体吞吐量(throughput),这就是所谓地"TCP全局同步"现象。

在这里插入图片描述多个TCP会话在不同的时间启动。
TCP窗口大小增加。
尾丢弃会导致多个会话的多个包同时被丢弃。
TCP会话同时重启(同步)。

TCP delay延迟,jitter抖动 and starvation饿死
在这里插入图片描述
在这里插入图片描述高缓冲区使用(长队列)会导致延迟,比如开始发送优先级是3的流量,中间隔了其他的数据包,这样就会产生很大的延迟;
变量缓冲区使用导致抖动(延时差),与同步一致,会产生链路抖动;
更多的激进流会导致其他流出现饿死现象;
无差异化的丢弃

RED(random early detection)随机早期检测
如果可以防止队列拥塞,则可以避免尾丢弃:
RED 就是在队列满之前,进行随机丢弃数据包的机制
RED 当平均队列长度增加时,丢弃率也随着增加
RED result:
放慢TCP的会话,发送数据包的速率接近出口带宽速率
减小平均队列(比最大队列大小要少得多)
通过随机丢弃,能够避免大量TCP会话同步

RED profiles
在这里插入图片描述RED模式
RED有三个模式:
no drop:如果平均值小于最小队列阈值,则到达的包将排队。
random drop:如果平均值介于该类型流量的最小队列阈值和该接口的最大阈值之间,则根据该类型流量的数据包丢弃概率,分组将被丢弃或排队。
full drop(tail drop):如果平均队列大小大于最大阈值,则丢包。
随机丢弃应该防止拥塞,防止尾丢弃。

使用RED之前的流量
在这里插入图片描述TCP同步可以防止平均链路利用率接近链路带宽
尾丢弃会导致TCP会话进入缓慢启动

使用RED之后的TCP 流量
在这里插入图片描述平均链路利用率更接近链路带宽
随机下降会导致TCP会话减少窗口大小

WRED weighted random early detection
基于权重随机早期检测
WRED可以使用多个不同的RED母版;
每个母版被以下三者确认:
1.最小阈值 2.最大阈值 3.最大丢弃概率
WRED母版会话是基于以下两者:
IP precedence
DSCP
class-based WRED
当与CBWFQ结合配置的时候,可以使用基于类的WRED;
在WRED中使用CBWFQ可以实现DiffServ安全转发PHB。
基于类的WRED配置与独立的WRED相同。
在这里插入图片描述在这里插入图片描述WRED母版可以手动设置;
WRED有8个基于precedence默认值,有64个基于DSCP的默认值。

由以下图可以,ip precedence有8个默认的值,0-7,数值越大,最小阈值越大,也就是说同样到达的前提下,优先丢弃数值小的数据包。
在这里插入图片描述基于DSCP的WRED
在这里插入图片描述

配置CB—WRED
在这里插入图片描述
在这里插入图片描述在服务策略配置模式中选择的类中启用基于IP precedence的WRED;
使用默认的服务配置文件;
命令可用于接口,每vc(与随机检测组),或类级(服务策略)。
基于precedence的WRED是默认模式,random-detect后跟DSCP才说启用DSCP模式的WRED;
WRED将非ip流量视为优先级为0。
在这里插入图片描述改变基于IP precedence的WRED母版的值,最小,最大阈值,丢弃可能性。这里的包丢弃最大可能性的数值为倒数,也就是丢弃概率为1/10,配置成10即可。
1/Mark-prob-denominator(倒数)
非加权RED是通过对所有优先值使用相同的WRED配置文件来实现的。
改变WRED对突发事件的敏感性(EWC值)
使用EWC计算平均队列大小,默认为9
在这里插入图片描述WRED使用平均队列大小来确定当前的WRED模式(无drop、随机drop、完全drop)
在这里插入图片描述以CB-WRED为例,使用IP优先级的CBWFQ举例
Class mission-critical is marked with IP precedence values 3 and 4 (3 is high-drop, 4 is low-drop) and should get 30% of interface bandwidth.
Class bulk is marked with IP precedence values 1 and 2 (1 is high-drop, 2 is low drop) and should get 20% of interface bandwidth.
All other traffic should be per-flow fair-queued.
配置

class-map match-all bulk
 match ip precedence 1  2 
class-map match-all mission-critical
 match ip precedence 3  4 
!         
!         
policy-map policy1
 class mission-critical
    bandwidth percent 30
     random-detect
     random-detect precedence 3 26 40 10
     random-detect precedence 4 26 40 10
 class bulk
    bandwidth percent 20
     random-detect
     random-detect precedence 1 22 36 10
     random-detect precedence 2 24 36 10
 class class-default
    fair-queue
     random-detect
!         

配置基于DSCP的CB-WRED
在这里插入图片描述在这里插入图片描述以CB-WRED为例,使用DSCP的CBWFQ举例
Class mission-critical is marked using DSCP AF2 and should get 30% of interface bandwidth
Class bulk is marked using DSCP AF1 and should get 20% of interface bandwidth
All other traffic should be per-flow fair-queued
配置

class-map match-all bulk
 match ip dscp cs1  af11  af12  af13 
class-map match-all mission-critical
 match ip dscp cs2  af21  af22  af23 
!         
!         
policy-map policy1
 class mission-critical
    bandwidth percent 30
     random-detect dscp-based
     random-detect dscp 16 24 40 10
     random-detect dscp 18 32 40 10
     random-detect dscp 20 28 40 10
     random-detect dscp 22 24 40 10
 class bulk
    bandwidth percent 20
     random-detect dscp-based
     random-detect dscp 8 22 36 10
     random-detect dscp 10 32 36 10
     random-detect dscp 12 28 36 10
     random-detect dscp 14 24 36 10
 class class-default
    fair-queue
     random-detect dscp-based

查看
在这里插入图片描述Explicit Congestion Notification 显示拥塞通知
ECN显示拥塞通知
TCP拥塞控制不适合那些对时延敏感数据包的应用程序;当平均队列长度超过特定阈值时,ECN是标记数据包并不是丢弃数据包。
路由器和终端主机可以使用ECN标记作为一个信号,即在网络拥塞,以较慢的速度发送数据包。
ECN Field Defined ECN的字段定义
在这里插入图片描述ECN与WRED联系
ECN 是对WRED的扩展.
WRED的拥塞,是当平均队列长度超过一个特定的阈值。
如果数据包在队列中的数量低于最小阈值时,数据包被发送。
如果数据包在队列中的数量高于最大阈值时,数据包被尾丢弃
如果数据包在队列中的数字为最小和最大阈值之间,三种情形之一可能会发生:
终端主机支持ECN,(ECT=1,CE=0 或者ECT=0,CE=1)并且是基于WRED,则该数据包的丢弃率将下降:
将数据包的ECT 和CE 位置为1 ,数据包被发送. 这是因为ECN被启用,数据包被标记代替了被丢弃;
终端主机不支持ECN:数据包的ECT 和CE 位置为0
该数据包可以根据WRED的丢弃概率被丢弃。这是当WRED上没有启用ECN的路由器上,收到的数据包受到相同的待遇 ;
网络出现拥塞:
如果数据包的ECT=1,CE=1,则数据包被传递。
配置

router(config)# policy-map MyPolicy 
router(config-pmap)# class bulk 
router(config-pmap-c)# bandwidth percent 20 
router(config-pmap-c)# random-detect 
router(config-pmap-c)# random-detect ecn

开启ECN。
无论WRED是基于IP优先级还是基于DSCP值,都可以使用ECN。
ECN必须通过MQC配置。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值