您好,欢迎访问三七文档
课件制作人:谢希仁几种拥塞控制方法1.慢开始和拥塞避免发送方维持一个叫做拥塞窗口cwnd(congestionwindow)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如再考虑到接收方的接收能力,则发送窗口还可能小于拥塞窗口。发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。课件制作人:谢希仁慢开始算法的原理在主机刚刚开始发送报文段时可先设置拥塞窗口cwnd=1,即设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口加1,即增加一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。发送方接收方发送M1确认M1发送M2~M3确认M2~M3发送M4~M7确认M4~M7cwnd=1cwnd=2cwnd=4发送M8~M15cwnd=8…tt发送方每收到一个对新报文段的确认(重传的不算在内)就使cwnd加1。轮次1轮次2轮次3课件制作人:谢希仁传输轮次(transmissionround)使用慢开始算法后,每经过一个传输轮次,拥塞窗口cwnd就加倍。一个传输轮次所经历的时间其实就是往返时间RTT。“传输轮次”更加强调:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。例如,拥塞窗口cwnd=4,这时的往返时间RTT就是发送方连续发送4个报文段,并收到这4个报文段的确认,总共经历的时间。课件制作人:谢希仁设置慢开始门限状态变量ssthresh慢开始门限ssthresh的用法如下:当cwndssthresh时,使用慢开始算法。当cwndssthresh时,停止使用慢开始算法而改用拥塞避免算法。当cwnd=ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法。拥塞避免算法的思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,使拥塞窗口cwnd按线性规律缓慢增长。课件制作人:谢希仁当网络出现拥塞时无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。2216慢开始和拥塞避免算法的实现举例当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为16个报文段,即ssthresh=16。“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例在执行慢开始算法时,拥塞窗口cwnd的初始值为1,发送第一个报文段M0。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例发送端每收到一个确认,就把cwnd加1。于是发送端可以接着发送M1和M2两个报文段。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例接收端共发回两个确认。发送端每收到一个对新报文段的确认,就把发送端的cwnd加1。现在cwnd从2增大到4,并可接着发送后面的4个报文段。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例发送端每收到一个对新报文段的确认,就把发送端的拥塞窗口加1,因此拥塞窗口cwnd随着传输轮次按指数规律增长。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次慢开始和拥塞避免算法的实现举例当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”传输轮次2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例假定拥塞窗口的数值增长到24时,网络出现超时,表明网络拥塞了。传输轮次2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法。传输轮次2216“乘法减小”24681012141618200048122024拥塞窗口cwnd新的ssthresh值网络拥塞指数规律增长ssthresh的初始值慢开始慢开始慢开始拥塞避免“加法增大”拥塞避免“加法增大”慢开始和拥塞避免算法的实现举例当cwnd=12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个MSS的大小。传输轮次课件制作人:谢希仁乘法减小(multiplicativedecrease)“乘法减小“是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前的拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。课件制作人:谢希仁加法增大(additiveincrease)“加法增大”是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。课件制作人:谢希仁必须强调指出“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。课件制作人:谢希仁2.快重传和快恢复快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。快重传举例发送方接收方发送M1确认M1t确认M2发送M2发送M3发送M4?发送M5发送M6重复确认M2重复确认M2重复确认M2t发送M7收到三个连续的对M2的重复确认立即重传M3丢失课件制作人:谢希仁快恢复算法(1)当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限ssthresh减半。但接下去不执行慢开始算法。(2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口cwnd现在不设置为1,而是设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。课件制作人:谢希仁24从连续收到三个重复的确认转入拥塞避免2468101214161820220048121620传输轮次拥塞窗口cwnd收到3个重复的确认执行快重传算法慢开始“乘法减小”拥塞避免“加法增大”TCPReno版本TCPTahoe版本(已废弃不用)ssthresh的初始值拥塞避免“加法增大”新的ssthresh值慢开始快恢复课件制作人:谢希仁发送窗口的上限值发送方的发送窗口的上限值应当取为接收方窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,即应按以下公式确定:发送窗口的上限值Min[rwnd,cwnd](5-8)当rwndcwnd时,是接收方的接收能力限制发送窗口的最大值。当cwndrwnd时,则是网络的拥塞限制发送窗口的最大值。课件制作人:谢希仁5-9TCP的运输连接管理1.运输连接的三个阶段运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。连接建立过程中要解决以下三个问题:要使每一方能够确知对方的存在。要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。课件制作人:谢希仁客户服务器方式TCP连接的建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。用三次握手建立TCP连接CLOSEDCLOSED主动打开被动打开AB客户服务器5.9.1TCP的连接建立A的TCP向B发出连接请求报文段,其首部中的同步位SYN=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x。用三次握手建立TCP连接CLOSEDCLOSED主动打开被动打开AB客户服务器5.9.1TCP的连接建立•B的TCP收到连接请求报文段后,如同意,则发回确认。•B在确认报文段中应使SYN=1,使ACK=1,其确认号ack=x1,自己选择的序号seq=y。CLOSEDCLOSED主动打开被动打开AB客户服务器•A收到此报文段后向B给出确认,其ACK=1,确认号ack=y1。•A的TCP通知上层应用进程,连接已经建立。CLOSEDCLOSED数据传送主动打开被动打开AB客户服务器•B的TCP收到主机A的确认后,也通知其上层应用进程:TCP连接已经建立。SYN-SENTESTAB-LISHEDSYN-RCVDLISTENESTAB-LISHED用三次握手建立TCP连接的各状态CLOSEDCLOSED数据传送主动打开被动打开AB客户服务器5.9.1TCP的连接建立CLOSED主动关闭数据传送ESTAB-LISHEDESTAB-LISHEDAB客户服务器CLOSED5.9.2TCP的连接释放•数据传输结束后,通信的双方都可释放连接。现在A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。•A把连接释放报文段首部的FIN=1,其序号seq=u,等待B的
本文标题:拥塞控制方法.
链接地址:https://www.777doc.com/doc-2374950 .html