首页 > 编程知识 正文

域间路由协议有哪些,tcp使用什么进行流量控制

时间:2023-05-04 08:54:33 阅读:32134 作者:3693

TCP的流控制所谓流控制,是指发送端的发送速率不太快,以便接收端来得及。 通过利用滑动窗口rwnd机构,能够容易地在TCP连接上实现对发送端的业务控制。

TCP的窗口单位是字节,而不是消息段。 发送方的发送窗口不能超过来自接收方的接收窗口的值。

TCP滑动窗口如图所示,说明了利用可变窗口大小的流量控制。 假设主机a向主机b发送数据。 双方确定的窗口值为400。 此外,如果各消息段为100字节长,序列号的初始值为seq=1,则图中箭头上的大写ACK指示开头的字被识别为ACK,小写ACK指示确定字段的值。

接收侧的主机b进行了3次流量控制。 第一次将窗口设置为rwind=300,第二次减少为rwind=100,最后减少为rwind=0。 也就是说,不允许发送方重新发送数据。 这样,发送方暂时停止发送的状态持续到主机b重新发出新的窗口值为止。

如果假设b刚向a发送了零窗口消息段,b的接收缓存中就出现存储区域。 因此,b向a发送了rwind=400的段,但该段在传输中丢失了。 a继续等待b发来的非零窗口的通知,b也继续等待a发来的数据。 这样就死锁了。 为了解决此死锁状态,TCP为每个连接设置持续计时器。 TCP连接的对方收到对方的零窗口通知后,启动持续计时器,持续计时器经过设定的时间后,发送零窗口探测消息块(仅具有1字节的数据),对方将该探测消息块

TCP段发送定时的选择TCP段发送定时主要有以下的选择路径。

1 ) TCP保持等于最大段长度MSS的变量,并且在缓存中存储的数据达到MSS字节时将其组装成TCP段并发送。

2 )指定发送方APP应用请求发送消息的分段(即TCP支持的推送操作)。

3 )在发送方的定时器期限到来后,将当前现有的缓存数据放入报文段中发送。

TCP的拥塞控制1 .拥塞控制原理

在某个时间,如果对网络中某个资源的需求超过了该资源可以提供的可用部分,网络的性能就会发生变化。 这称为拥塞。 网络拥塞是由许多因素引起的,单纯提高节点处理器的速度或扩大节点缓存的存储空间都无法解决拥塞问题。 拥塞问题通常是指整个系统的各个部分不一致,只有各个部分平衡后才能解决问题。

2 .拥塞控制和流量控制的区别

拥塞控制是指防止网络中注入过多的数据,从而防止网络中的路由器和链路过载。 拥塞控制的前提是网络能够承受现有的网络负载。 拥塞问题是一个全局问题,它涉及所有主机、所有路由器和与网络传输性能下降相关的所有因素。 流量控制多指点对点通信量的控制,是端到端的问题。 流量控制是控制发送方发送数据的速度,以便接收方接收数据。

3 .拥塞控制设计

拥塞控制是一个动态问题,因此很难设计。 在许多情况下,拥塞控制机制本身导致网络性能恶化和死锁。 从控制理论的角度看拥塞控制这一问题,可以分为开环控制和闭环控制两种方法。 开环控制是指在设计网络时,事先考虑所有有关拥塞发生的因素,使系统一旦运行,就不能中途修改。

闭环控制基于反馈环路的概念,包括以下措施:

1 )监控网络系统,检测拥塞发生在何时何地。

2 )将发生拥堵的信息转发到可采取行动的地方。

3 )协调网络系统行动,解决出现的问题。

4 .拥塞控制方法

在因特网推荐标准RFC2581中,定义了进行拥塞控制的4个算法:慢启动、拥塞避免、高速重发、高速响应、高速响应。

我们假设以下情况。

1 )数据单向传输,另一个方向只传输确认。

2 )由于发送窗口的大小由网络拥塞决定,因此接收方始终具有足够的缓存区域。

慢启动和拥塞避免发送端维持拥塞窗口cwnd(congestion window)的状态变量。 拥塞窗口的大小根据网络拥塞的程度而动态变化。 发送方使其发送窗口等于拥塞窗口,并且考虑到接收方的接收能力,发送方有可能小于拥塞窗口。 发送侧控制拥塞窗口的原则是,只要网络不产生拥塞,就稍微增大拥塞窗口来发送更多的分组。 但是,只要网络拥塞,就稍微减少拥塞窗口以减少注入到网络的分组数。

慢启动算法的思想是,在第一个TCP成功地建立连接之后,将大量的分组传输到网络,从而使得网络中的路由器的缓存容量耗尽,容易发生拥塞。 因此,新建立的连接不能从一开始就大量发送数据包,只能根据网络情况逐步增加每次发送的数据量,避免上述现象。 更具体地,对于新连接,cwnd被初始化为一个最大消息段(MSS )大小,发送方以拥塞窗口大小开始发送数据,其中每当确认一个消息段时cwnd最多增加到1MSS大小。 用这种方法逐步增大拥塞窗口CWND。

这里,以慢启动算法的例子来示出分组个数的拥塞窗口大小,其中实时拥塞窗口大小以字节为单位。 下图:

为了

防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。ssthresh的用法如下:

当cwnd<ssthresh时,使用慢开始算法。
当cwnd>ssthresh时,改用拥塞避免算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法任意。

拥塞避免算法思路:让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口按线性规律缓慢增长。

无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为无法判定,所以都当做拥塞来处理),就把慢开始门限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。

如下图:

乘法减小和加法增大

乘法减小:是指不论在慢开始阶段还是拥塞避免阶段,只要出现超时,就把慢开始门限减半,即设置为当前的拥塞窗口的一半(于此同时,执行慢开始算法)。当网络出现频繁拥塞时,ssthresh值就下降的很快,以大大减小注入到网络中的分组数。

加法增大:是指执行拥塞避免算法后是拥塞窗口缓慢增大,以防止网络过早出现拥塞。

快重传和快恢复

一条TCP连接有时会因等待重传计时器的超时而空闲较长的时间,慢开始和拥塞避免无法很好的解决这类问题,因此提出了快重传和快恢复的拥塞控制方法。快重传算法并非取消了重传机制,只是在某些情况下更早的重传丢失的报文段(如果当发送端接收到三个重复的确认ACK时,则断定分组丢失,立即重传丢失的报文段,而不必等待重传计时器超时)。

快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。如下图:

快重传配合使用的还有快恢复算法,有以下两个要点:
①当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半。但是接下去并不执行慢开始算法。
②考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh减半后的大小,然后执行拥塞避免算法。如下图:

在采用快恢复算法时,慢开始算法只是在TCP连接建立时和网络出现超时时才使用。
接受窗口又称为通知窗口。因此从接收方对发送方的流量控制角度考虑,发送方的发送窗口一定不能超过对方给出的接受窗口的RWND。
也就是说:发送窗口的上限等于Min[rwnd,cwnd]。

随机早期检测RED

以上的拥塞避免算法并没有和网络层联系起来,实际上网络层的策略对拥塞避免算法影响最大的就是路由器的丢弃策略。在简单的情况下路由器通常按照先进先出的策略处理到来的分组。当路由器的缓存装不下分组的时候就丢弃到来的分组,这叫做尾部丢弃策略。这样就会导致分组丢失,发送方认为网络产生拥塞。更为严重的是网络中存在很多的TCP连接,这些连接中的报文段通常是复用路由路径。若发生路由器的尾部丢弃,可能影响到很多条TCP连接,结果就是这许多的TCP连接在同一时间进入慢开始状态。这在术语中称为全局同步。全局同步会使得网络的通信量突然下降很多,而在网络恢复正常之后,其通信量又突然增大很多。

为避免发生网路中的全局同步现象,路由器采用随机早期检测(RED:randomearly detection)。该算法要点如下:

使路由器的队列维持两个参数,即队列长队最小门限min和最大门限max,每当一个分组到达的时候,RED就计算平均队列长度。然后分情况对待到来的分组:
①平均队列长度小于最小门限——把新到达的分组放入队列排队。
②平均队列长度在最小门限与最大门限之间——则按照某一概率将分组丢弃。
③平均队列长度大于最大门限——丢弃新到达的分组。

RED不是等到已经发生拥塞后才把所有队列尾部的分组全部丢弃,而是在检测到网络拥塞的早期征兆时(即路由器的平均队列长度超过一定门限值时),以概率p随机丢弃分组,让拥塞控制只在个别的TCP连接上执行,因而避免全局性的拥塞控制。

RED的关键就是选择三个参数最小门限、最大门限、丢弃概率和计算平均队列长度。最小门线必须足够大,以保证路由器的输出链路有较高的利用率。而最大门限和最小门限只差也应该足够大,是的在一个TCP往返时间RTT中队列的正常增长仍在最大门限之内。经验证明:使最大门限等于最小门限的二倍是合适的。

平均队列长度采用加权平均的方法计算平均队列长度,这和往返时间(RTT)的计算策略是一样的。

转载自文章TCP流量控制和拥塞控制

参考文章如何理性的调整「rwnd」和「cwnd」的大小

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。