解决方案
拥塞避免是指通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载的一种流控机制;
原理简述
其本质为丢弃报文:如果拥塞加剧,主动丢弃未进入队列的报文
特性特征
WIP
应用场景
各地用户有可能向同一台服务器上传数据,因此用户与服务器之间的通信会经过广域网,由于广域网带宽小于局域网的带宽,位于广域网和局域网之间的边缘设备将可能发生拥塞,此时可以通过配置拥塞避免,主动丢弃优先级较低的报文(比如数据报文等),减少网络的拥塞,保证高优先级业务正常运行;
丢弃策略
尾丢弃 (Tail Drop)
由于每个队列长度有限,当某一队列已经被装满时,传统的处理方法会将后续向该队列发送的报文全部丢弃,直至拥塞解除,这种处理方式称为尾丢弃(Tail Drop)
当队列的长度达到最大值后,所有新入队列的报文(缓存在队列尾部)都将被丢弃,这将导致:
1)TCP 全局同步现象:其主要原因在于 Tail-Drop 的无差别丢弃,导致所有 TCP 连接同时受到影响;
2)无差别丢弃:尾丢弃无法对流量进行区分,很可能导致大量非关键数据被转发,而大量关键数据被丢弃;
早期随机检测(RED)
为避免 TCP 全局同步现象,出现了 RED(Random Early Detection)技术。RED,随机地丢弃数据报文,让多个 TCP 连接不同时降低发送速度,从而避免了 TCP 的全局同步现象。使 TCP 速率及网络流量都趋于稳定;
RED 为每个队列的长度都设定了阈值门限,并规定:
1)当队列的长度小于低门限时,不丢弃报文;
2)当队列长度在高门限和低门限之间时,开始随机丢弃新到来的报文,且队列越长,丢弃概率越大。方法是为每个到来的报文赋予一个随机数,并用该随机数与当前队列的丢弃概率比较,如果大于丢弃概率则报文被丢弃。队列越长,报文被丢弃的概率越高;
3)当队列长度超过高门限时,丢弃所有新到来的报文,即尾丢弃
仍可能出现 TCP 全局同步现象(RED 也无法对流量进行区分),但链路利用率已大大增加;
加权随机先期检测(WRED)
基于 RED 技术,设备实现了 WRED(Weighted Random Early Detection),通过对不同优先级数据包或队列设置相应的丢弃策略,以实现对不同流量进行区分丢弃;
流队列支持基于 DSCP 或 IP 优先级进行 WRED 丢弃。每一种优先级都可以独立设置报文丢包的上下门限及丢包率,报文到达下限时,开始丢包,随着门限的增高,丢包率不断增加,最高丢包率不超过设置的丢包率,直至到达高门限,报文全部丢弃,这样按照一定的丢弃概率主动丢弃队列中的报文,从而一定的程度上避免拥塞问题;
例如:
IP Precedence=0 的流量低门限为 20,高门限为 40
IP Precedence=2 的流量低门限为 35,高门限为 40,相对于 IPP=0 的流量晚丢
优点:打乱 TCP 滑动窗口的调整时间,避免 TCP 全局同步现象;基于权重,实现了不同流量的区分丢弃
针对 WRED 丢弃优先级,其中 Color 用于实现同一个队列内部,当队列发生拥塞时报文丢弃顺序;
丢弃概率曲线:
WRED 低门限百分比建议从 50%开始取值,根据不同颜色的丢弃优先级逐级调整。一般推荐绿色报文设置的丢弃概率比较小,高、低门限值比较大;黄色报文次之;红色报文设置的丢弃概率最大,高、低门限值最小。
这样,在网络趋近拥塞时,红色报文由于设置的低门限值比较小,丢弃概率比较大,红色报文最先开始被丢弃;随着队列的长度逐渐增长,最后才开始丢弃绿色报文。如果队列长度达到相应颜色的最大门限,这种颜色的报文开始实行尾丢弃;