Random Early Detection(RED)早期检测随即丢弃 拥塞避免机制,首先我们要说的是尾丢弃的问题,简单的尾丢弃有故在的弱点的,比如会引起TCP的同步,一些TCP session被饿死,导致高时延以及没有区别的丢弃。所以在拥塞管理(软件队列机制)之前引入了拥塞避免 引入拥塞避免我们又要从TCP说起,网络中应用最多的就是TCP连接了(当然现在UDP也很多) 对UDP来说当包被丢弃时,不会有任何响应,因为UDP没有任何机制去检测包被丢弃了 而TCP在意识到包被丢弃后会降速。这里用到了sequence和ACK这两位。TCP接收者端没有收到包或者没有收到任何ACK,发送者认为报文是丢失了,更重要的是,发送者也会降低发送数据的速度 TCP发送者在包被丢弃之后会减低发送速率。通过丢弃一定数量的包,拥塞避免工具会让TCP连接降速,从而避免拥塞,所以拥塞避免机制是一种主动的拥塞管理,而队列机制是一种被动的拥塞管理,TCP用两个不同的窗口机制来决定可以发送的数据大小:通告窗口大小(接收者)和拥塞窗口CWND(抓包可见)。 拥塞窗口机制带来的问题是TCP的慢启动,不同的TCP session在不同时间开始,TCP的窗口大小持续增长,导致慢启动(TCP数据按照指数级增长所有的session到达同一高度-速率),
如果到达一定速率,导致拥塞,不能接受的是这种丢弃发生在同一时间,TCP session在同一时间重启动,这称之为TCP的同步。可以把TCP的同步理解为所有人同一时间在上午九点钟上班,下午五点钟下班会导致交通在这两个时段拥塞 所以我们的结论是利用TCP在丢包之后会降速的机制避免TCP的同步(可以理解为错时上下班) 早期随机检测是一种在队列满之前的一种丢弃机制;RED随着增长而丢弃报文;RED导致以下结果:TCP降到和出接口带宽等同的速率,平均队列size更小(远远小于软件队列的最大队列深度,不致于发生尾丢弃);IP优先级低的更容易被丢弃 |