基于探测机制的卫星链路拥塞控制算法研究
2012-12-29熊晓将
熊晓将
(中国空间技术研究院,北京 100094)
1 引言
传输控制协议(Transfer Control Protocol,TCP)是目前应用广泛的互连网传输协议。传统的TCP协议包含4 个拥塞控制算法:慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)、快速恢复(Fast Recovery)。这4个拥塞控制算法相互关联,合称为TCP-Reno算法,在Allman等人所著的TCP 标准协议备忘录RFC2581中有详细的描述[1]。
在选择卫星链路的标准传输协议时,TCP是首选的传输层协议,但试验和理论研究表明,如果把有线环境的端到端数据传输TCP 协议直接用到卫星链路中,则在长时延、高误码、间歇性中断等因素的影响下,其拥塞控制机制将不能正常工作,使网络的带宽利用率低下,网络的吞吐量下降,严重制约了数据传输的效率和能力。
国内外在卫星链路的拥塞控制机制和算法方面已做了很多研究,提出了很多改进卫星链路上TCP拥塞控制协议性能的方案。文献[2-5]针对卫星链路对TCP 性能的影响,提出了TCP 分片、快速启动、显式拥塞通告、链路错误通告、分离误码和拥塞等方法,提高卫星链路上的TCP 性能。Internet工程任务组(IETF)在1997年成立了工作组,专门研究卫星信道上的TCP/IP性能,如文献[6]中建议增大TCP 初始窗口尺寸。NASA 的格林(Glenn)研究中心、路易斯(Lewis)研究中心、法国信息与自动化研究所(INRIA)、俄亥俄州立大学(Ohio)等单位也在从事卫星链路上TCP性能的研究,并通过实验提出了一些改进卫星链路上TCP 性能的技术措施[7-8]。国内也有一些大学和研究机构展开了提高卫星网上TCP拥塞控制性能方面的研究[9-10]。
本文介绍了一种基于探测机制的拥塞控制算法,通过发送低优先级且不携带有用信息的哑元来探测网络资源的可用性,改进了原有的慢启动及快速算法,并形成了新的突然启动和迅速恢复算法,经仿真验证,能够有效提高TCP连接的初始阶段以及链路出错条件下的吞吐量。可为提高卫星链路TCP协议的性能提供参考。
2 基于探测机制的拥塞控制算法
2.1 算法的引入
基于探测机制[11]的拥塞控制算法,目的是保证与TCP协议兼容性良好的情况下,提高卫星网络TCP的吞吐量性能,特别是链路误码率高的情况下的吞吐量。该算法针对卫星链路长时延、高误码的特点,设计了一种高效的TCP 拥塞控制机制,如图1所示,4个核心算法分别为突然启动、拥塞避免、快速重传和迅速恢复。其中,突然启动和迅速恢复算法就是在传统的慢启动和快速恢复基础上的改进。
改进算法的设计思想,在于它使用一种低优先级且不包含任何有用数据的报文段(即哑元)来探测网络的拥塞情况。使用哑元的目的主要是用于探测端到端连接网络资源的可用性,哑元应答的顺利标志着网络情况良好,网络正存在着未被使用的资源,发送方可以增大拥塞窗口;而一旦发生网络拥塞,低优先级IP 包携带的哑元将被首先丢弃。由于哑元不含任何有用的数据,其丢弃率不但可以反映网络拥塞情况,而且丢弃的哑元不需要被重传。
图1 基于探测机制的拥塞控制流程Fig.1 Congestion control flow based on detection mechanism
2.2 突然启动算法
为了避免长时延卫星链路慢启动造成的吞吐量低的问题,在一个新连接的开始采用了新的突然启动算法。突然启动算法将会持续一个往返时间(Rround-trip Time,RTT),随即发送端将进入拥塞避免阶段,其基本思路如下。
在连接的开始阶段,拥塞窗口(congestion window,cwnd)的大小Scwnd及变量w被分别初始化设置为1和0,并且在发送完第1个数据段后,它每隔时间α(α=tRTT/Srwnd)就发送1个哑元(tRTT表示往返的时间,Srwnd代表接收窗口(receive window,rwnd)的大小,也是拥塞窗口的最大值)。这样,在第一个RTT 内发送了一个数据段和Srwnd-1个哑元。哑元到达接收端后,如果网络中有未使用的资源,那么它们的确认信号(acknowledgement,ACK)将会到达发送端。突然启动结束时,发送端会收到这些ACK 信号并开始执行拥塞避免算法。因此,由于w=0,一旦收到哑元的ACK,发送端将增加拥塞窗口。在一个RTT 之后,拥塞窗口会迅速增长,从连接建立的开始,突然启动比传统的慢启动达到接收窗口大小的时间要快,仅需要2个RTT的时间。需要注意的是,发送端在连接建立的初始阶段必须能够估计RTT,即在3 次握手阶段获得RTT 的值。
2.3 迅速恢复算法
迅速恢复算法替代传统快速恢复算法的目的,主要是解决由于链路错误导致卫星链路吞吐量性能下降的问题。
新的迅速恢复算法,将保留传统快速恢复算法对所有丢包均是由于网络拥塞引起的假设,因为TCP 层不知道引起网络拥塞的确切原因,即到底是网络拥塞还是链路错误。
设置以下几个变量:
(1)a表示允许发送端发送的哑元数量,a>0时,允许发送哑元;
(2)Nseg表示未被确认的数据报文,为能否发送新数据的判据,即Scwnd大于Nseg时,允许发送新的数据;
(3)w:作为Scwnd是否增长的判据,即若w=0,则Scwnd增加一个报文大小;若w>0,则w的值递减1,而Scwnd的值保持不变。通过w的调节可以达到与传统TCP的友好与兼容;
(4)tretr:为丢失的数据报文重传的时刻,令其等于当前的时刻t;
(5)tRTO:表示数据包从发送到失效的时间间隔。
迅速恢复阶段的过程如下:
(1)发送端每收到一个数据报的ACK 信号,将Scwnd增加一个报文段大小,并检测是否可以发送新的数据;
(2)若Scwnd大于未确认数据报文Nseg,则发送新数据报文;
(3)如果不能发送新数据,即Scwnd小于或等于未确认数据报文Nseg,则发送端检测a的值,若a>0,发送端发送两个哑元并将a的值减2;
(4)若收到了哑元的ACK,只有w=0时Scwnd增加,否则Scwnd保持不变而将w的值减1;
(5)当丢失的报文被确认后,Scwnd减小到发现发现丢包之前的大小,a被置0,迅速恢复算法结束,开始执行拥塞避免算法;
(6)如果在t≥(tretr+tRTO)时刻,发送端仍处于迅速恢复阶段,在tRTO时间之内重传数据报和哑元的ACK 都未曾收到,这表明网络发生了严重的拥塞,应立即终止迅速恢复,开始执行突然启动。
如果网络未发生拥塞,丢包只是由于发生了链路错误,那么所有的哑元都会到达接收端,发送端会收到所有哑元的应答ACK。先到的Scwnd/2个哑元的ACK 将使得变量w减小至0,且拥塞窗口并不增加,而随后到达的其余Scwnd/2个哑元的ACK 会将拥塞窗口增加恢复到Scwnd。结果在很短的时间内,Scwnd就恢复到检测到丢包时的大小。
如果丢包真的是由于发生了拥塞,那么发生拥塞的路由器在每个RTT 时间内能处理Scwnd个数据段。因而,网络只能容纳Scwnd/2个具有高优先级的数据包,以及在迅速恢复阶段中发送的哑元中一半,即Scwnd/2个哑元。收到哑元的ACK 后,变量w将会更新并减小至0,而拥塞窗口此时并不会增加,即在网络发生拥塞时,迅速恢复算法与传统的快速恢复算法的表现相同。
3 仿真验证
3.1 仿真模型的建立
仿真选用OPNET Technologies 公司的OPNET Modeler网络仿真平台软件。
图2为简化的OPNET 仿真网络模型,仿真环境为同步卫星系统。在简化的模拟场景中,用路由器代表地面站网关,通过对数据速率、传输延迟和误码率的设置模拟卫星链路环境,以减小实现的复杂性。由于迅速恢复算法主要解决的是链路出错时吞吐量性能下降的问题,因而构造了出现链路差错时的网络模型。
图2 出现链路差错时仿真的网络模型Fig.2 Simulation network model in the condition of link errors
仿真使用的是文件传输协议(File Transfer Protocol,FTP)业务类型,参数设置见表1。
表1 仿真参数设置Table 1 Simulation parameter
3.2 仿真内容及结果分析
对基于探测机制的拥塞控制算法的仿真验证分为以下两种情形:
(1)网络正常情况下对突然启动算法的性能验证;
(2)链路出现差错的情况下对迅速恢复算法的性能验证。
为了验证算法的性能,仿真的内容包括接收确认ACK 及吞吐量的比较。
图3为网络正常的情况下,对突然启动算法的性能验证。
图3 网络正常时启动算法的ACK 比较Fig.3 ACK Comparison of start algorithm when network in order
由图3仿真结果可知:在网络正常的情况下,在新连接建立的起始阶段,由于卫星链路长时延的影响,传统TCP-Reno慢启动算法直接应用于卫星链路,性能要比在地面网络应用的效果差;若在卫星链路中采用突然启动算法,由于采用了探测机制,突然启动比慢启动达到rwnd窗口大小的时间要快,这也表明了在卫星链路连接建立的起始阶段,突然启动又比慢启动传送数据的速度要快得多。
图4为链路出现差错的情况下对迅速恢复算法的性能验证,仿真时假设在107s出现一个报文丢弃。
图4 链路出错时恢复算法的吞吐量比较Fig.4 Throughput comparison of recovery algorithm in the condition of link errors
由图4 可知:在链路出现差错的情况下,传统TCP-Reno快速恢复算法直接应用于卫星链路,性能比在地面网络应用的效果差;通过哑元的发送与确认,对网络容量进行了有效探测,迅速恢复算法在拥塞避免阶段的窗口明显增加,因而迅速恢复算法的吞吐量在卫星链路中应用的性能又要优于传统的TCP-Reno快速恢复算法。
4 结束语
卫星链路长时延、高误码的特点使得TCP的数据传输性能下降,本文基于探测机制的拥塞控制改进算法,采用对网络资源的探测机制,可以有效解决卫星链路慢启动以及链路错误造成的吞吐量低的问题。仿真结果表明,该算法可提高和改善卫星链路中TCP 的吞吐量,不涉及中间节点的改造,并与传统的TCP协议兼容。
(References)
[1]Allman M.TCP congestion control[S/OL].[2012-02-21].http://datatracker.ietf.org/doc/rfc2581
[2]Balakrishnan H.A comparison of mechanisms for improving TCP performance over wireless links[R].New York:IEEE,1997
[3]Pamanabhan V N,Katz R.TCP fast start:a technique for speeding up web transfer[R].New York:IEEE,1998
[4]Floyd S.TCP and explicit congestion notification[R/OL].[2012-03-11].http://citeseerx.ist.psu.edu
[5]Durst R C,Miller G J,Travis E J.TCP extensions for space communications[R/OL].[2010-04-11].http://citeseerx.ist.psu.edu
[6]Allman M,Floyd S,Partridge C.Increasing TCP’s initial window[S/OL].[2009-11-12].http://datatracker.ietf.org/doc/rfc2414
[7]Lakshman T V,Madhow U.The performance of TCP/IP for networks with high bandwidth delay products and random loss[R].New Yok:IEEE,1997:336-350
[8]Alman M.Improving TCP performance over satellite channels[D].Ohio:Ohio University,1997:27-35
[9]刘春霞.卫星网传输层拥塞控制协议研究[D].哈尔滨:哈尔滨工程大学,2001
Liu Chunxia.Research on congestion control protocol of transmission layer in satellite network[D].Harbin:Harbin Engineering University,2001(in Chinese)
[10]罗万明,林闯,阎保平.TCP/IP 拥塞控制研究[J].计算机学报,2001,24(1):1-18
Luo Wanming,Lin Ge,Yan Baoping.Research on TCP/IP congestion control[J].Computer Transaction,2001,24(1):1-18(in Chinese)
[11]Akyildiz I F,Morabito G,Palazzo S.Research issues for transport protocols in satellite IP networks[R].New York:IEEE,2001:44-48