3 运输层(三)
来源:互联网 发布:网络卖衣服 编辑:程序博客网 时间:2024/06/07 02:01
6 拥塞控制原理
在实践中,丢包一般是当网络变得拥塞时由于路由器缓存溢出而引起的。分组重传作为网络拥塞的征兆,但是却无法处理导致网络拥塞的原因。因为有大多的源想以过高的速率发送数据。为了处理网络拥塞,需要一些机制在面临网络拥塞时抑制发送方。
6.1 拥塞原因及代价
每连接的吞吐量(per-connection throughput):接收方每秒接收的字节数。
1)当分组的到达速率接近链路容量时,分组经历巨大的排队时延。
2)发送方必须执行重传以补偿因为缓存溢出而丢弃的分组。
3)发送方在遇到大时延时所进行的不必要的重传会引起路由器利用链路带宽来转发不必要的分组副本。
4)由于拥塞而丢弃分组的另一种代价:当一个分组沿一条路径被丢弃时,每个上游路由器用于转发分组到丢弃该分组而使用的传输容量最终被浪费掉了。
6.2 拥塞控制方法
根据网络层是否为运输层拥塞控制提供显示帮助开划分:
1)端到端拥塞控制:网络层没有为运输层拥塞控制提供显示支持。TCP必须通过端到端的方法解决拥塞控制,因为IP层不会向端系统提供有关网络拥塞的反馈信息。TCP报文段的丢失(通过超时或3次冗余确认而得知)被认为是网络拥塞的一个迹象。
2)网络辅助的拥塞控制:网络层构件(即路由器)向发送方提供有关于网络中拥塞状态的显示反馈信息。这一般有两种形式,如下图:
6.3 网络辅助的拥塞控制:ATM ABR拥塞控制
ATM ABR中的拥塞控制算法,即一种采用网络辅助方法解决拥塞控制的协议。ATM基本上采用一种面向虚电路(VC)的方法来处理分组交换。ABR被设计为一种弹性数据传输服务,该服务方式使人联想起TCP。当网络轻载时,ABR服务会充分利用空闲可用带宽;当网络拥塞时,ABR服务会将其传输速率抑制为某些预先确定的最小传输速率。
7 TCP拥塞控制
TCP为运行在不同主机上的两个进程之间提供了可靠传输服务和拥塞控制机制。TCP使用端到端拥塞控制(让每一个发送方根据所感受到的网络拥塞程度来限制其能向连接发送流量的速率。)而不是使用网络辅助的拥塞控制,因为IP层不向端系统提供显示的网络拥塞反馈。
本节主要解决3个问题:
1)一个TCP发送方如何限制它向其连接发送流量速率?
2)一个TCP发送方如何感知从它到目的地之间的路径上存在拥塞?
3)当发送方感知到端到端的拥塞时,采用何种算法来改变其发送速率?
TCP连接的每一端包含:①一个接收缓存②一个发送缓存③几个变量(LastByteRead,rwnd等)。另外,运行在发送方的TCP拥塞控制机制跟踪一个额外的变量:拥塞窗口(congestion window,cwmd)。
特别是,在一个发送方中未被确认的数据量不会超过cwmd和rwnd中的最小值。即LastByteSent – LastByteAcked ≤ min{cwnd, rwnd}
TCP发送方如何确定它们的发送速率,即使得网络不会拥塞,于此同时又能充分利用所有可能可用的带宽?
1)一个丢失的报文段意为着拥塞,因此,当丢失报文段时应当降低TCP发送方的速率。
2)一个确认报文段指示该网络正在向接收方交付发送方的报文段,因此,当对先前未确认报文段的确认达到时,能够增加发送方的速率。
3)带宽探测:TCP调节其传输速率的策略是增加其速率以响应达到的ACK,减小其速率以响应丢包事件。
TCP拥塞控制算法(TCP congestion control algorithm):①慢启动;②拥塞控制;③快速恢复。慢启动和拥塞避免是TCP的强制部分,两者的差异在于对收到的ACK做出反应时增加cwnd长度的方式。慢启动比拥塞避免能更快地增加cwnd的长度。快速恢复是推荐部分,对TCP发送方式非必须的。
7.1 慢启动
当一条TCP连接开始,cwnd值通常初始置为一个MSS较小值。这使得初始发送速率为MSS/RTT。在慢启动(slow-start)状态,cwnd的值以1个MSS开始并且每当传输的报文段首次被确认就增加一个MSS。
何时结束慢启动阶段的指数增长呢?①如果存在一个由超时指示的丢包事件,TCP发送方将cwnd设置为1并重新开始慢启动过程。它还将第二个状态变量的值ssthresh(慢启动阈值)设置为cwnd/2,即当检测到拥塞时将ssthresh置为拥塞窗口值的一半。②当检测到拥塞时ssthresh设为cwnd的一半,当到达或超过ssthresh的值时,结束慢启动并且TCP转移到拥塞避免模式。③如果检测到3个冗余ACK,这时TCP执行一种快速重传并进入快速恢复状态。
特点:指数增长。
7.2 拥塞避免
每个RTT只将cwnd的值增加一个MSS:对于TCP发送方无论何时到达一个新的确认,就将cwnd增加一个MSS(MSS/cwnd)字节。
例如,如果MSS是1460字节,并且cwnd是14 600字节,则在一个RTT内发送10个报文段。每个到达ACK增加1/10MSS的拥塞窗口长度,因此在收到对所有10个报文段的确认后,拥塞窗口的值将增加了一个MSS。
当出现超时时,TCP的拥塞避免与慢启动阶段一样。
当出现丢包时,网络继续从发送方向接收方交付报文段,当接收到3个冗余ACK时,将ssthresh的值置为cwnd的一半,同时将cwnd的值减半加上3个MSS。
7.3 快速恢复
1)对收到的每个用冗余ACK,cwnd值增加一个MSS。
2)当对丢失报文段的一个ACK到达时,TCP在降低cwnd进入拥塞避免状态。
3)如果出现超时事件,执行如同慢启动和拥塞避免中相同的动作后,迁移到慢启动状态。
下图延时了Reno版TCP与Tahoe版TCP的拥塞控制窗口的演化情况。
7.4 TCP拥塞控制
TCP拥塞控制常被称为加性增、乘性减(Additove-Increase,Multiplicative-Decrease,AIMD)拥塞控制方式:假定丢包由3个冗余的ACK而不是超时指示,TCP的拥塞控制是:每个RTT内cwnd线性增加1MSS,然后出现3个冗余ACK事件时cwnd减半(乘性减)。
7.5 TCP吞吐量宏观描述
TCP连接的吞吐量:即平均速率。在一个往返间隔内,TCP发送数据的速率是拥塞窗口(w字节)与当期RTT的函数(TCP发送速率大约是w/RTT)。
一条连接的平均吞吐量 = 0.75*W / RTT
- 3 运输层(三)
- 三运输层(一)运输层概述
- 《计算机网络 3》 运输层
- 《计算机网络 3》 运输层
- 9.运输层(3)---TCP
- 3 运输层(一)
- 3 运输层(二)
- 运输层
- 运输层
- 运输层
- 运输层
- 运输层
- 运输层
- 运输层
- 运输层
- 运输层
- 运输层
- 运输层
- 使用threejs实现3D全景漫游
- 自适应神经网络控制
- 用友致远OA麦枫破解版的前世今生
- NSTimer
- 新手教学——asp.net的数据库信息读取
- 3 运输层(三)
- http请求状态码详解
- 35 个 Java 代码性能优化总结
- 贪心算法总结
- MyBatis Generator: Project does not exist问题解决
- 【牛客网】直通bat-面试算法精品课_第2章 排序 2.2 冒泡排序练习题(JAVA版)
- 哈哈日语 日语入门之元音
- Oracle归档模式下恢复-数据库完全恢复方法2
- Oracle 新用户创建两个表空间