前言:
如今朋友们对“拥塞控制四种算法工作原理”可能比较看重,姐妹们都想要剖析一些“拥塞控制四种算法工作原理”的相关内容。那么小编同时在网摘上汇集了一些关于“拥塞控制四种算法工作原理””的相关资讯,希望各位老铁们能喜欢,姐妹们快快来学习一下吧!在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,吞吐量将随着负荷的增大而下降,这种情况就叫拥塞。
网络拥塞是一个非常复杂的问题不能够仅仅通过增加一些资源就能够解决,因为你解决的仅仅是一部分的问题,实际上要考虑的是整体的网络。
拥塞控制是防止过多的数据注入到网络中使网络中的路由器或链路不致过载。拥塞控制的前提是网络不能够承受现有的网络负荷。是一个全局性的过程,涉及到所有的主机、路由器,以及降低网络传输性能的因素。TCP连接的端点只要迟迟不能收到对方的确认消息,就猜想网络中发生了拥塞,但是无法知道拥塞发生在何处。
流量控制指的是对点到点通信量的控制,涉及到我们之前谈到的窗口值rwnd的问题,是通过窗口值来进行调控的。所要做的就是抑制发送端发送数据的速率使接收端来得及接收。
进行拥塞控制需要付出代价。首先要获得网络内部流量分布的信息,还要在节点之间交换信息和各种命令以便选择控制的策略和实施控制,这样就产生了额外开销。
理想的网络拥塞控制在吞吐量饱和前网络吞吐量等于提供的负载,当提供的负载超过某一限度时,由于网络资源有限,负载中的一部分就会损失掉。网络的吞吐量仍然能够保持最大值。但是对于实际的网络来说,随着这提供的负载的增大,网络的吞吐量的增长速率逐渐减小。(在未达到饱和时就有一部分分组已经被丢弃 )这也说明了当网络的吞吐量明显的小于理想的吞吐量的时候网络就已经进入了轻度拥塞状态。当负载达到某一数值时,网络的吞吐量随着提供的负载的增大而下降,此时网络进入拥塞状态,此时如果负载进一步增大,那么网络的吞吐量就会下降到0,形成死锁。
从控制理论的角度看待拥塞控制这个问题可以分为开环控制和闭环控制两种方法。
开环控制:设计网络的时候就考虑到所有发生拥塞的因素,当系统运行起来之后不再中途进行改正。
闭环控制:基于反馈环路的概念
(1)监测网络系统以便监测拥塞发生在何时何处。
(2)把拥塞信息传导可以采取行动的地方。
(3)调整网络系统的允许以解决出现的问题
指标:时延、重传分组数、平均队列长、缺少缓存而被丢弃的分组百分比
传递拥塞通知要在分组中加上拥塞字段。采用时机不能过于频繁或过于迟缓,因此是非常困难的。
TCP的拥塞控制方法
TCP的拥塞控制算法有四种:慢开始、拥塞避免、快重传、快恢复。
(1)慢开始和拥塞避免:基于窗口的拥塞控制。发送方维持一个拥塞窗口cwnd的状态变量。拥塞窗口的大小取决于网络的拥塞程度。动态地发生变化。发送方让自己的发送窗口等于拥塞窗口。
发送方:只要网络没有出现拥塞,拥塞窗口就可以继续增大,以便将更多的分组发出去,提高网络的利用率。只要网络中出现或可能出现用拥塞,就必须减小拥塞窗口。
只要发送方没有按时收到应当到达的确认报文(超时)。就可以猜想网络可能发生了拥塞。
慢开始算法的工作原理:当用报文段的个数作为窗口大小的单位时,一开始发送方设置cwnd=1,发送M1,接收方收到之后发回确认。此时cwnd从1增大到2。发送方发送M2、M3两个报文。接收方收到之后发回对M2和M3的确认。发送方每收到一个确认就使cwnd+1。(TCP实际运行中发送方只要收到一个确认就立刻使cwnd+1)由此可见cwnd是呈2的指数倍增长的。每经过一个传输轮次,拥塞窗口就会加倍。一个传输轮次的时间就是往返时间。这个往返时间主要强调所允许发送的报文连续发出,已经收到了对最后一个字节的确认。
RTT=收到最后一个确认的时间-开始发送的时间
慢开始的实际含义不是慢,而是通过一开始使cwnd=1开始。来防止网络出现拥塞。
为了防止cwnd增长过大引起网络拥塞,需设置一个慢开始门限。
TCP连接进行初始化时,把cwnd置为1。协商的慢开始门限ssthresh=16。开始的时候cwnd指数增长,当增长到16的时候开始执行拥塞避免算法,按线性规律增长。(此时并不是完全避免了拥塞,而是通过缓慢的增加拥塞窗口cwnd,使网络中出现拥塞的概率变小)。
当网络中出现超时的时候,发送方判断为网络拥塞,调整门限值为当前的拥塞窗口cwnd值除以2。同时设置拥塞窗口cwnd为1,进入下一个慢开始阶段。此时仍然以指数增长,但当增长到门限值的时候(因为我们之前说过cwnd是在接收的时候每接收一个报文就进行增长的)它就会以线性的形式增长。(也就是说如果我们这里的门限值不是2的倍数,那么它下一个发送的还是这个门限值,不会是2的倍数。)
由于个别报文段在网络中会丢失,会导致发送方收不到确认,产生超时,就会导致发送方错误的启用慢开始算法,为了避免这种错误,采用了快重传的算法,接收方是立即发送确认,即使是收到了失序的报文段也要进行确认。通过序号的机制来保证识别出哪一个报文丢失了。
如果发送方连续收到对同一个报文的3个重复确认(3——ACK加上开始的一次确认一共是4次的确认)那么发送方就会知道接收方产生了失序,会立即进行重传(快重传)。
当发送方知道丢失的是个别的报文段之后,就执行快恢复算法,调整门限值ssthresh=cwnd/2。同时设置拥塞窗口等于当前的门限值。所以此时是直接执行拥塞避免算法。
标签: #拥塞控制四种算法工作原理 #拥塞算法主要包括