【网络】RED和WRED是什么和区别|ECN
目录
WRED(Weighted Random Early Detection)
一、简略
RED与WRED用途--避免TCP 全局同步现象
- RED与WRED 是为避免TCP 全局同步现象的机制。(全局同步现象见后文)
- RED 和WRED 通过随机丢弃报文避免了TCP 的全局同步现象。
RED(Random Early Detection)
RED(Random Early Detection/随机早期检测)
RED 类算法中,为每个(缓存)队列都设定上限和下限,对队列中的报文进行如下处理:
• 当队列的长度小于下限时,不丢弃报文;
• 当队列的长度超过上限时,丢弃所有到来的报文;
• 当队列的长度在上限和下限之间时,开始随机丢弃到来的报文。队列越长,丢弃概率越高,但有一个最大丢弃概率。
缺点:直接采用(当前)队列的长度和上限、下限比较并进行丢弃,将会对突发性的数据流造成不公正的待遇,不利于数据流的传输。
WRED(Weighted Random Early Detection)
平均值:
WRED 采用(一段时间内)平均队列和设置的队列上限、下限比较来确定丢弃的概率。(间隔时间段内)队列平均长度既反映了队列的变化趋势,又对队列长度的突发变化不敏感,避免了对突发性数据流的不公正待遇。
为不同优先级分别设置阈值:
当队列机制采用 WFQ 时:
可以为不同优先级的报文设定计算队列平均长度时的指数、上限、下限、丢弃概率,从而对不同优先级的报文提供不同的丢弃特性。
如为流量大的流设置长的队列、为流量小的流设置短的队列。
看英文理解更透彻:
二、详细
原文摘自:《H3C S6820 系列以太网交换机 ACL 和QoS 配置指导》
6.1 拥塞避免简介
过度的拥塞会对网络资源造成极大危害,必须采取某种措施加以解除。拥塞避免是一种流量控制机
制,它通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞产生或有加剧的趋势时主动
丢弃报文,通过调整网络的流量来避免网络过载。
设备在丢弃报文时,需要与源端的流量控制动作(比如 TCP 流量控制)相配合,调整网络的流量
到一个合理的负载状态。丢包策略和源端的流量控制相结合,可以使网络的吞吐量和利用效率最大
化,并且使报文丢弃和延迟最小化。
6.1.1 传统的丢包策略--容易造成全局同步现象
传统的丢包策略采用尾部丢弃(Tail-Drop)的方法。当队列的长度达到最大值后,所有新到来的报文都将被丢弃。这种丢弃策略会引发 TCP 全局同步现象:当队列同时丢弃多个TCP 连接的报文时,将造成多个TCP连接同时进入拥塞避免和慢启动状态以降低并调整流量,而后又会在某个时间同时出现流量高峰。如此反复,使网络流量忽大忽小,网络不停震荡。
6.1.2 RED与WRED
为避免TCP 全局同步现象,可使用RED 或WRED。
RED 和WRED 通过随机丢弃报文避免了TCP 的全局同步现象,使得当某个TCP 连接的报文被丢
弃、开始减速发送的时候,其他的TCP 连接仍然有较高的发送速度。这样,无论什么时候,总有
TCP 连接在进行较快的发送,提高了线路带宽的利用率。
RED
在 RED 类算法中,为每个队列都设定上限和下限,对队列中的报文进行如下处理:
• 当队列的长度小于下限时,不丢弃报文;
• 当队列的长度超过上限时,丢弃所有到来的报文;
• 当队列的长度在上限和下限之间时,开始随机丢弃到来的报文。队列越长,丢弃概率越高,
但有一个最大丢弃概率。
直接采用队列的长度和上限、下限比较并进行丢弃,将会对突发性的数据流造成不公正的待遇,不
利于数据流的传输。
WRED
WRED 采用平均队列和设置的队列上限、下限比较来确定丢弃的概率。
队列平均长度既反映了队列的变化趋势,又对队列长度的突发变化不敏感,避免了对突发性数据流
的不公正待遇。
当队列机制采用 WFQ 时,可以为不同优先级的报文设定计算队列平均长度时的指数、上限、下限、丢弃概率,从而对不同优先级的报文提供不同的丢弃特性。
6.1.3 WRED和队列机制的关系
WRED 和队列机制的关系如下图所示。
当 WRED 和WFQ 配合使用时,可以实现基于流的WRED。在进行分类的时候,不同的流有自己的队列,对于流量小的流,由于其队列长度总是比较小,所以丢弃的概率将比较小。而流量大的流将会有较大的队列长度,从而丢弃较多的报文,保护了流量较小的流的利益。
6.1.4 拥塞通知--ECN
WRED 采用的丢弃报文的动作虽然缓解了拥塞对网络的影响,但从[源头]到[被丢弃位置]之间报文所消耗的网络资源已经被浪费了。
因此,在拥塞发生时,及时通知发送端主动降低发送速率或减小报文窗口大小,便可以更高效的利用网络资源。
因此RFC 2481 定义了一种端到端的拥塞通知机制,这就是ECN 功能,ECN功能见博客相关文章。
mellonx ECN设置:https://community.mellanox.com/s/article/understanding-mlx5-linux-counters-and-status-parameters