网络协议论文:无线网中协定的算法优化透析
旧的数据包
这情现象相对来说少一些,发生类似这种情况的主要是因为TCP发送
端出现了超时计数器出现了超时,这时就会重新传输超时的数据包,
这种基站会收到序号小于基站缓存中缓存的最大序号的数据包信息。
这种情况是因为TCP在发送端超时而重传的数据包也会被转发到相对
应的TCP接收终端。
ack算法流程
下面是Snoop对接收到的确认数据包时所处理流程,图1表示了ack()算法流程图:Snoop是属于代理接收到的ACK,ACK分为三种情况:第
一种是新的ACK、第二种是旧的且是不重复的ACK、第三种是旧的且重
复的ACK。Snoop在代理时对他们进行不同的情况进行处理。
(1)新ACK
这是属于正常的情况,Snoop代理对于ACK已经所确认的数据包会从
缓存中删除掉,而且又要重新开始计算无线网络端到端的传输时延值。此时的ACK会被传送给TCP的发送终端。
(2)旧的ACK而且不是重复的ACK
类似这种情况相对来说会少一些。Snoop代理会丢弃这个ACK。
(3)旧的ACK并且是重复的ACK
这种情况是代表了TCP在接收端并且没有收到这个ACK时所确认的下
一个需要的数据包。假如这个ACK所确认的下一个数据包是没有直接
被data()标记为拥塞的数据包时,那么就会知道这个数据包是在无线
网络的传输中被丢失的。当持续重复地确认数据包数大于或等于3时,Snoop代理就会马上重新传输这个数据包。假如被标记为拥塞数据包时则会发送到相对应的接收端。
现有Snoop协义算法的缺点
虽然现有Snoop算法可以提升系统的吞吐量,但是有很多缺点,具体
缺点如下:
(1)TCP的发送端存有拥塞控制不及时
因为Snoop代理存有过滤一些重复的确认数据包功能,因此,使得
TCP发送端不能通过接收到三个重复的确认数据包进行拥塞控制。这样TCP的发送端只允许通过超时计数器的超时行为方可以作相对应的拥塞控制处理,这样就会使得TCP在发送端出现网络拥塞时无法进行及时
的拥塞控制,从而导致网络性能出现更差的现象。
(2)TCP存有交叉层问题
因为无线链路出现了错误从而导致了相对应数据包丢失的现象,此时Snoop代理就会在本地重新传输已经丢失掉的数据包。通常在这种情况下,TCP在发送端的超时计数器出现超时之前,部分重传数据还没有完成,TCP的发送端就会认为网络已经出现了拥塞现象,此时就会进行相对应的拥塞控制处理,将开始慢慢启动阈值并将其设置为拥塞时的一半,将相对应的发送窗口设置为1,使得相关的发送进入慢启动的阶段。TCP盲目地降低了网络数据传输速度,这样就导致了链路的利用率出现降低状况,从而使得整个系统的吞吐量出现了下降,此时丢失的数据
包在传输层以及链路层将会同时被重传,这样就会浪费了有限的带宽
资源。
Snoop协议中算法的改进措施
鉴于Snoop拥塞控制机制存有一些缺点,下面我们根据实际情况提出
了针对Snoop算法的优化方案Snoop_BE,这个优化方案可以使其在
TCP发送端增加带宽估计算法。与旧的Snoop算法相比可以体现了TCP
在发送端增加带宽估计算法可以很好地动态设置发送窗口以及慢启动
的阈值,可以使相关的发送端避免盲目地减少拥塞窗口,并且更好地
优化了Snoop算法,也可以对网络的拥塞情况做出更快的反应。
本文中所使用的带宽估计算法是属于TCPWestwood算法。TCPWestwood算法所采用的带宽估计算法可以为发送端通过观察接收端来返回相对应的确认数据包时间的间隔来估算到终端链路上的能够使用的带宽。通过确认ACK的时间间隔和其相对应的数据包大小来估算瓶颈链路时能够使用的带宽。发送端在kt时刻所接收到接收端的确认数据包,就会清楚已确认数据包所确认后的数据是否已经被接收端成功地接收,k1t是属于上一个确认数据包接收端的时间,kd是属于所确认的数据量,所以这样可以简单的通过公式(2-1)来算出相对应的网络带宽kB:因为网络拥塞是发生在整个网络中的数据包流量出现了超过链路的容量的时候,因此我们可以使用最简单的公式得到的是一个在较短时间内的带宽值,同时如果当接收端出现延迟确认数据包时,对估算后的平均值可能影响较大,因此带宽估算法的选择上需要十分慎重。TCPWestwood所使用的带宽估算法的公式如(2-2)所示:与一般的拥塞控制算法相比,TCPWestwood最基本的拥塞窗口动态调整算法在慢慢启动阶段以及拥塞避免阶段都没有完全改变。这个算法思想是这样的:当网络发生拥塞时,也就是接收到三个重复的ACK或者是计数器存有超时现象时,TCPWestwood将会试图选择一个慢启动阈值或者拥塞窗口来有效地利用网络带宽。TCPWestwood可以避免将发送端的无线信道因偶然的错误而出现丢包而误以为是网络拥塞出现征兆,从而减少一些不必要的窗口,也使得其在整个无线网络中更加有效。
Snoop的优化算法Snoop_BE其具体改进方法是这样的:在Snoop代理模块里面取消重复ACK过滤功能,将已经接收到重复的ACK发送到接收方这一端。而作Snoop代理模块依然需要保留对ACK的重复计数功能,当Snoop代理模块收到三个重复的ACK时就需要进行本地数据包的重复传输,其它相关功能保持不变。在发送端,当接收到三个重复的ACK或者是超时计数器超时,就需要进行改进的拥塞控制;如果接收到三个重复的ACK时,那么发送端就需要根据当时的带宽估计值来进行设置相对应的慢启动阈值以及拥塞窗口的处理,但是不会重新传输已经丢失掉的数据包;接到三个重复ACK时,此时就需要设置当前可用带宽值为BWE,端到端的最小时延为RTTmin,数据包值的大小为