赞
踩
网络层没有为运输层拥塞控制提供显式支持。即使网络中存在拥塞,端系统也必须通过对网络行为的观察来推断。
路由器向发送方提供关于网络中拥塞状态的显示反馈信息。
TCP必须使用端到端拥塞控制而不是使用网络辅助的拥塞控制,因为IP层不向端系统提供显示的网络拥塞反馈。
TCP所采用的方法是让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率。如果一个TCP发送方感知从它到目的地之间的路径上没什么拥塞,则TCP发送方增加其发送速率,如果发送方感知沿着该路径有拥塞,则发送发就会降低其发送速率。
TCP连接的每一个端都是由一个接收缓存、一个发送缓存和几个变量组成。运行在发送方的TCP拥塞控制机制跟踪一个额外的变量,即拥塞窗口(congestion window)。拥塞窗口表示为cwnd,它对一个TCP发送方能向网络中发送流量的速率进行了限制。特别是,在一个发送方中未被确认的数据量不会超过cwnd与rwnd中的最小值,即
LastByteSent - LastByteAcked ≤ min {cwnd,rwnd}
为了关注拥塞控制(与流量控制形成对比),我们后面假设TCP接收缓存足够大,以至于可以忽略接收窗口的限制;因此在发送方中未被确认的数据量仅受限于cwnd。我们还假设发送方总要有数据要发送,即在拥塞窗口中的所有报文段要被发送。
上面的约束限制了发送方中未被确认的数据量,因此间接地限制了发送发的发送速率。因此,在每个往返时间(RTT)的起始点,上面的限制条件运行发送方向该连接发送cwnd个字节的数据,在该RTT结束时发送方接收对数据的确认报文。因此,该发送方的发送速率大概时cwnd/RTT字节/秒,通过调节cwnd的值,发送方因此能够调整它向连接发送数据的速率。
我们将TCP发送方的丢包事件定义为:要么出现超时,要么收到来自接收方的3个冗余ACK。当出现过度的拥塞时,在沿着这条路径上的一台或多台路由器的缓存会溢出,引起一个数据报(包含一个TCP报文段)被丢弃。丢弃的数据报接着会引起发送方的丢包事件(要么超时或收到3个冗余ACK),发送方就认为在发送方到接收方的路径上出现了拥塞的指示。
1.一个丢失的报文段意味着拥塞,因此当丢失报文段时应当降低TCP发送方的速率。对于给定的报文段,一个超时时间或四个确认(一个初始ACK和其后的三个冗余ACK)被解释为跟随该四个ACK的报文段的丢包事件的一种隐含指示。从拥塞控制的观点看,该问题是TCP发送方应当如何减小它的拥塞窗口长度,即减小其发送速率,以应对这种推测的丢包事件。
2.一个确认报文段指示该网络正在向接收方交付发送方的报文段,因此,当对先前未确认报文段的确认到达时,能够增加发送方的速率。确认的到达被认为时一切顺利的隐含指示,即报文段正从发送方成功地交付给接收方,因此该网络不拥塞。拥塞窗口长度因此能够增加。
3.带宽探测。给定ACK指示源到目的的路径无拥塞,而丢包事件指示路径拥塞,TCP调节其传输速率的策略就是增加速率以响应到达的ACK,除非出现丢包事件,此时才减小传输速率。因此,为探测拥塞开始出现的速率,TCP发送方增加它的传输速率,从该速率后退,进而再次开始探测,看看拥塞开始速率是否发生了变化。
注意网络中没有明确的拥塞状态信令,即ACK和丢包事件从当了隐式信号,并且每个TCP发送方根据异步于其他TCP发送方的本地信息而行动。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。