一种卫星通信系统中的传输协议的增强方法转让专利

申请号 : CN201210067952.6

文献号 : CN102664867B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙力娟卜亚莉肖甫王汝传叶晓国邹志强刘林峰郭剑李鹏

申请人 : 南京邮电大学

摘要 :

卫星网络的传输控制协议是一种在卫星网络传输层中进行数据传输的控制方法,用来在网络中进行传输的流量控制和差错控制,实现数据的高效传输,属于计算机网络和卫星信道传输技术领域,本发明具有如下特征:在已有的TCPW算法的基础上进行改进,实现了一种适合大时延高误码率卫星网络的TCPW-BC算法。该算法主要针对拥塞控制中的拥塞避免进行改进,在TCPW带宽估计算法的基础上,它采用基于二分增长的窗口控制算法,用二分比较增长来逼近最佳发送窗口,而且将窗口的适应性调整从丢包后进行改为每RTT进行一次,提高了网络利用率。本发明用在高误码率大时延的卫星网络中,可以实现数据的高效传输。

权利要求 :

1.一种卫星通信系统中的传输协议的增强方法,其特征在于该方法的具体流程如下:步骤1.根据三次握手的方式建立连接:源端向地面基站发出TCP连接请求,依次通过卫星链路目的端地面基站,把发送请求送到目的端;目的端收到后返回一个确认报文给目的端地面基站,通过卫星链路送到源端地面基站,源端会接收确认报文;源端生成一个确认报文发送到地面基站,同样通过卫星链路到达目的端地面基站,最后目的端收到确认报文,完成整个连接过程;

步骤2.传输数据

步骤2.1慢启动,当TCP连接建立,拥塞窗口被初始化为1个报文段,启用慢开始算法,拥塞窗口呈指数增加,从1迅速增加到慢启动门限,慢启动阶段的发送窗口的增长速率与数据往返时间RTT呈反比关系;

步骤2.2二分比较增长拥塞窗口,当拥塞窗口cwnd大于慢启动门限ssthresh时,采用二分增长的方法来快速搜索该阶段的最佳发送窗口;

(1)在拥塞避免阶段,当链路没有发生拥塞时,定义目标函数bw_rttnor(sk)来返回客户端最终获得的窗口值;在目标函数中,全局变量snd_cwnd_vw通过以下公式获得中间窗口变量值:snd_cwnd_vw=β*(BWE*RTT)/PacketSize;

这个窗口公式是TCPW原始窗口算法的基础上修改而来,β是增长因子,为一个常数值,用来更精确的模拟估测可用带宽所带来的窗口变化,在卫星网络环境下,取经验值3~

5能体现性能的优化;BWE是当前利用ACK流动态测出来的估计可用带宽,RTT是上一个分组在链路上的往返时间,随着分组而动态变化,而不是链路的最小往返时延,PacketSize是指分组大小,为了更好的适应网络状况短时间内稳定的性能,使得窗口的不会突发性的跳变,采用了二分增长方式:bw_rttnor(sk)=(snd_cwnd+snd_cwnd_vw)/2;

通过这种方式,返回得到的窗口bw_rttnor(sk)为估算的窗口snd_cwnd_vw和上一个RTT窗口的中值,如果bw_rttnor(sk)大于当前的拥塞窗口,则客户端目标窗口snd_cwnd取估算所得的窗口bw_rttnor(sk),反之,则客户端目标窗口snd_cwnd递增一个窗口值大小;

(2)在获得链路状态的情况下,当拥塞发生时,即客户端收到三个重复的ACK包或者发生超时重传时,利用公式Cwnd=(BWE*RTTmin)/PacketSize计算Cwnd和ssthresh,RTTmin是测得的最小RTT值,理想情况下等于中间队列长度为零时测得的值;

a)若发生超时,那么就重传期望的数据包,BWE为TCPW算法估计可用带宽,令ssthresh=(BWE*RTTmin)/PacketSize);

Cwnd=1;

If(ssthresh<2)ssthreshresh=2;

然后重新回到慢启动阶段,继续传输接下来的数据包;

b)若收到三个重复的ACK,表示数据包丢失,进入快速重传阶段,令

ssthresh=(BWE*RTTmin)/PacketSize);

If(ssthresh<2)ssthreshresh=2;

重传丢失的数据包,不需等到定时器超时,接下来进入步骤2.2(1)二分增长探测窗口阶段,而不是慢启动阶段;

步骤3拆除连接

客户端发送连接结束数据包,等待对方的应答,当服务器端收到连接结束TCP数据包后,返回连接拆除确认应答数据包,拆除此次连接,进入到监听状态,发送端接收到拆除应答后,拆除连接。

说明书 :

一种卫星通信系统中的传输协议的增强方法

技术领域

[0001] 本发明属于计算机网络和卫星信道传输技术领域,涉及一种应用于卫星通信系统中TCPWESTWOOD协议的增强方法。主要用于解决卫星通信中TCPWESTWOOD拥塞控制机制的传输低效率的问题。

背景技术

[0002] 卫星网络是未来Internet的重要组成部分,随着卫星组网技术的发展,卫星网络逐渐成为Internet的承载网络,同时各种新的业务需求又提出了新的要求,卫星通信以覆盖面积广、通信费用与距离无关、不受地面自然灾害影响等固有的优点,因此卫星通信很好的适应了当前迅猛发展的Internet业务的需要。在应急抗灾通信保障中,卫星网络更是发挥着不可替代的作用,研究适应卫星网特点的传输协议具有重要的意义。
[0003] 传统的地面网传输协议TCP并不适合卫星网络的特点。同时卫星网络中的网络拥塞控制是一个复杂控制系统,拥塞控制算法的分布性、复杂性使得拥塞控制算法的设计具有极高的难度。目前,适用于卫星网络的传输层协议已成为世界各国的研究热点。TCP-Westwood(TCPW)由UCLA大学High Performance Internet Lab实验室提出的一种主要针对高误码率无线网络、卫星网络等网络的端到端的拥塞控制算法。TCPW针对无线网络的特点对传统TCP的拥塞控制协议进行了改进。它提出了一种较为精确的带宽估计算法,通过观测到达的ACK及其间隔时间,确定网络的可用带宽。
[0004] TCPW针对无线网络错误率高的特性设计了有效的应对方法。在分组丢失时,用估算的可用带宽计算新的窗口和慢启动门限,能够有效地应对无线网络误码率高的特点,使其性能得到了大幅度提高,特别是在随机丢失环境中表现突出。
[0005] 相对于地面网络,卫星网络具有延时长、带宽延时乘积大、误码率高、轨间链路延时持续变化、链路不对称等特点,TCPW虽然能较好地处理高误码率的影响,但对长时延的影响考虑不足,在时延较大的环境中表现不稳定。在无线网络环境下,随着延时的增长,TCPW的性能下降的较快;TCPW中拥塞避免阶段仍然采用Reno的加性增加乘性降低(AIMD)的窗口增加机制(盲目的增加窗口),即指数递增(慢启动阶段)和线性递增(拥塞避免阶段)的特点,在达到了勘探剩余可利用带宽的目的及与Reno机制保持友好性、公平性的效果的同时,也带来了负面影响。盲目地增加窗口容易快速地造成网络的再次拥塞,加大了网络地拥塞频率,降低了网络利用率。这两个个弱点阻碍了TCPW在卫星网络上的运用。

发明内容

[0006] 技术问题:依据上述所述由于TCPW中拥塞避免机制采用加性增加乘性降低(AIMD)的窗口增加机制和卫星链路长时延引起的卫星链路上传输性能下降,本发明提供了一种卫星通信系统中TCPW协议拥塞控制机制修改方法,在TCPW带宽估计算法的基础上,它采用基于二分增长的窗口控制算法,将窗口的适应性调整从丢包后进行改为每RTT进行一次,解决了由于长时延等因素产生的对卫星信号链路的性能影响,并且可以通过控制增长因子达到最佳卫星信号链路性能的目的。
[0007] 技术方案:将拥塞窗口控制看成一个搜索问题:系统通过实时带宽预测来估算下一个RTT(链路往返时间)的窗口大小,取估算出来得窗口和当前RTT时间拥塞窗口的中点,若中点窗口大小比当前拥塞窗口还小,则告知下一个RTT合适的拥塞窗口的大小为在当前RTT窗口数量上增加一个窗口,即采取原始增长方式。反之,则告知下一个RTT时间合适的拥塞窗口的大小为中点窗口大小。
[0008] 本发明所提出来的基于二分搜索比较增长的控制算法是基于实时的带宽预测控制算法。其原理为:TCPW针对ACK流直接估算可用带宽,利用每一个实时RTT并引入一个增长因子来调节估算窗口,结合当前窗口和下一个RTT估算窗口,通过二分增长比较方式来替代TCPW在拥塞避免阶段采用的盲目线性递增的机制,使得当测得的可用带宽大于当前拥塞窗口所利用的带宽时,扩大拥塞窗口大小。因为通常在一段时间内,网络状况呈现稳定,即不会突然变化,则通过这种拥塞控制方式,可以使控制所得的窗口不断逼近实时网络估算所得窗口大小,增强网络传输性能。
[0009] 一、体系结构
[0010] TCPW基本的拥塞窗口动态调整算法在慢启动阶段和拥塞避免阶段都与Reno相同,拥塞控制机制为加性增加乘性降低(AIMD)的窗口增加机制。不同在于当拥塞发生时用带宽估计值(BWE)来调整拥塞窗口和慢启动门限值。
[0011] TCPW利用ACK流直接估算可用带宽,其中使用最广泛的动态带宽估算系统如下,其带宽估计的采样尺寸如图1所示。
[0012] 指数滤波器(exponential filter)
[0013] 滤波器权值(filter gain)
[0014] 取样(sample)
[0015] 其中dk是第k个ACK所响应的数据量,tk是第k个ACK的到达时间,BEk是tk时刻的带宽估计值,1/τ是滤波器的截止频率,Δtk=tk-tk-1。通过此估算系统可得到精确度比较高的带宽。TCPW的带宽估算算法采用了适时变化的滤波器权值αk,提高了带宽估计的稳定性。
[0016] TCPW算法原理如图2所示。TCPWestwood算法在传输过程中采用AIAD(Additive Increase adaptive Decrease,加性增加适度减小)拥塞控制机制。对于每一个TCP连接包括接收窗口rwnd(receive window),拥塞窗口cwnd(congestion window)以及慢启动门限ssthresh,其中接收窗口是接收端的流量控制,而拥塞窗口则是源于发送端的流量控制。一般都认为拥塞窗口大于接收窗口,即网络的拥塞限制发送窗口的大小。根据拥塞窗口增长的模式不同,整个TCP连接可以划分为慢启动和拥塞避免两个阶段。
[0017] 1.在慢启动阶段,启用慢开始算法。先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用指数增加的方法逐渐增大发送端的拥塞窗口cwnd,这样从1迅速增加到慢启动门限ssthresh,使分组注入到网络的效率更加合理。
[0018] 2.在拥塞避免阶段,使用拥塞避免算法,使发送端的拥塞窗口cwnd每经过一个往返时延RTT就增加一个MSS的大小。这样拥塞窗口cwnd按线性规律缓慢增长,比慢开始在拥塞窗口增长速率慢得多。
[0019] 3.(1)网络发生拥塞时,发送端连续收到三个重复ACK确认信号则认为对应分组丢失。发送端不等重传定时器超时就启动快速重传机制,重传该分组。令[0020] ssthresh=(BWE*RTTmin)/PacketSize);
[0021] If(ssthresh<2)ssthreshre sh=2;
[0022] 重传丢失的数据包,不需等到定时器超时,接下来进入第2步二分增长探测窗口阶段,而不是慢启动阶段。
[0023] (2)若发生timeout超时,那么就重传期望的数据包。BWE为TCPW算法估计可用带宽,ssthresh不是cwnd/2。令
[0024] ssthresh=(BWE*RTTmin)/PacketSize);
[0025] cwnd=1;
[0026] If(ssthresh<2)ssthreshre sh=2;
[0027] 然后重新回到慢启动阶段,继续传输接下来的数据包。其避免了拥塞窗口重新从1开始所导致的长时间慢启动阶段。
[0028] TCPW算法仍然采用Reno的标准窗口增加机制,这种机制没有考虑网络的实际可用带宽,比较盲目。本发明提出的TCPW-BC算法是在现有TCP Westwood算法基础上改进的方法,主要是对在拥塞避免阶段使用的拥塞避免算法进行修改,使之能够较好的应用于卫星网络中,提高了传输性能。图3给出了TCPW-BC算法的传输控制原理图。其改进实现方法如下:
[0029] 在拥塞避免阶段,当链路正常没有发生拥塞时,定义目标函数bw_rttnor(sk)来返回客户端最终获得的目标窗口值。在目标函数中,全局变量snd_cwnd_vw通过以下公式获得中间窗口变量值:
[0030] snd_cwnd_vw=β*(BWE*RTT)/PacketSize;
[0031] 这个窗口公式是TCPW原始窗口算法的基础上修改而来。β是增长因子,为一个常数值,用来更精确的模拟估测可用带宽所带来的窗口变化。BWE是当前利用ACK流动态测出来的估计可用带宽。RTT是上一个分组在链路上的往返时间,随着分组而动态变化,而不是链路的最小往返时延。PacketSize是指分组大小。snd_cwnd_vw是通过估测带宽而来的窗口值,为了更好的适应网络状况短时间内稳定的性能,使得窗口的不会突发性的跳变,采用了二分增长方式:
[0032] bw_rttnor(sk)=(snd_cwnd+snd_cwnd_vw)/2;
[0033] 通过这种方式,返回得到的窗口bw_rttnor(sk)为估算的窗口snd_cwnd_vw和上一个RTT窗口的中值。最终目标窗口通过比较得到:如果返回的窗口bw_rttnor(sk)大于当前的拥塞窗口,则客户端目标窗口snd_cwnd取估算所得的窗口bw_rttnor(sk)。反之,则客户端目标窗口snd_cwnd递增至一个窗口值大小。
[0034] 二、方法流程
[0035] 在发送端采用基于二分比较增长的拥塞控制算法TCPW-BC,地面终端用户之间通过卫星链路建立连接,系统开始运行的具体步骤为:
[0036] 步骤1建立连接
[0037] 根据三次握手的方式建立连接:源端向地面基站发出TCP连接请求,依次通过卫星链路目的端地面基站,把发送请求送到目的端;目的端收到后返回一个确认报文给目的端地面基站,通过卫星链路送到源端地面基站,源端会接收确认报文;源端生成一个确认报文发送到地面基站,同样通过卫星链路到达目的端地面基站,最后目的端收到确认报文,完成整个连接过程。
[0038] 步骤2传输数据
[0039] 步骤2.1慢启动(Slow-start)阶段
[0040] 连接进入慢启动阶段,发送端使用慢开始算法:先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。发送方发送报文段后等待确认。当收到该确认信号ACK时,拥塞窗口从1增加到2,即发送两个报文段。当收到这两个报文段的ACK确认时,拥塞窗口就增加为4。拥塞窗口从1迅速增加到慢启动门限,拥塞窗口cwnd这样呈指数增加的方法,使分组注入到网络更加合理。慢启动阶段的发送窗口的增长速率与数据往返时间(RTT)呈反比关系,即RTT越长,发送速率增长越慢。
[0041] 步骤2.2拥塞避免阶段
[0042] 随着cwnd不断增长,当cwnd大于ssthresh时,客户端进入拥塞避免阶段,采用二分比较增长的方法来快速搜索该阶段的最佳发送窗口,而不是TCPW算法中原有的线性增长。
[0043] (1)在拥塞避免阶段,当链路没有发生拥塞时,定义目标函数bw_rttnor(sk)来返回客户端最终获得的窗口值。在目标函数中,全局变量snd_cwnd_vw通过以下公式获得中间窗口变量值:
[0044] snd_cwnd_vw=β*(BWE*RTT)/PacketSize;
[0045] BWE是当前利用ACK流动态测出来的估计可用带宽。β是增长因子,为一个常数值,用来更精确的模拟估测可用带宽所带来的窗口变化。在卫星网络环境下,取经验值3~5能体现性能的优化。RTT是上一个分组在链路上的往返时间,随着分组而动态变化,而不是链路的最小往返时延。PacketSize是指分组大小。snd_cwnd_vw是通过估测带宽而来的窗口值,为了更好的适应网络状况短时间内稳定的性能,使得窗口的不会突发性跳变,采用了二分增长方式:
[0046] bw_rttnor(sk)=(snd_cwnd+snd_cwnd_vw)/2;
[0047] 返回得到的窗口bw_rttnor(sk)为估算的窗口snd_cwnd_vw和上一个RTT窗口的中值。最终客户端目标窗口通过下面的比较得到:
[0048]
[0049] 如果返回的窗口bw_rttnor(sk)大于当前的拥塞窗口,则客户端目标窗口snd_cwnd取估算所得的窗口bw_rttnor(sk)。反之,则客户端目标窗口snd_cwnd递增至一个窗口值大小。
[0050] (2)在获得链路状态的情况下,拥塞时当客户端收到三个重复的ACK包,利用公式Cwnd=(BWE*RTTmin)/PacketSize计算cwnd和ssthresh。在链路发生拥塞时,通过估测的可用带宽来调整当前的拥塞窗口和拥塞门限。RTTmin是测得的最小RTT值,理想情况下等于中间队列长度为零时测得的值。
[0051] a)若发生timeout超时重传,那么就重传期望的数据包。BWE为TCPW算法估计可用带宽,ssthresh不是cwnd/2。令
[0052] ssthresh=(BWE*RTTmin)/PacketSize);
[0053] cwnd=1;
[0054] If(ssthresh<2)ssthreshre sh=2;
[0055] 然后重新回到慢启动阶段,继续传输接下来的数据包。
[0056] b)若收到三个重复的ACK,表示数据包丢失,进入快速重传阶段。令[0057] ssthresh=(BWE*RTTmin)/PacketSize);
[0058] If(ssthresh<2)ssthreshre sh=2;
[0059] 重传丢失的数据包,不需等到定时器超时,接下来进入步骤2.2(1)二分增长比较窗口阶段,而不是慢启动阶段。
[0060] 步骤三拆除连接
[0061] 发送端发送连接结束数据包,等待对方的应答,当接收端收到连接结束TCP数据包后,返回连接拆除确认应答数据包,拆除此次连接,进入到监听状态,发送端接收到拆除应答后,拆除连接。
[0062] 有益效果:本发明提出了一种卫星通信系统基于二分比较增长的拥塞控制方法,主要用于卫星通信数据传输中,以提高传输数据的效率和减小网络延迟。
[0063] TCPW-BC在TCPW带宽估计算法的基础上,引入增长因子β让下一个RTT窗口折射的带宽逼近当前估测可用带宽。通过二分增长的窗口控制算法可以使得对可用带宽的估测变得更加有效,在当前窗口和引入增长因子的放大窗口间差距非常大时,实现用稳步平缓的增长代替突发性增长,同样也利于网络的稳定。
[0064] 因此,本发明的有益效果主要包括将窗口的适应性调整从丢包后进行改为每RTT进行一次,解决了由于长时延等因素产生的对卫星信号链路的性能影响,并且通过控制增长因子达到提高卫星信号链路传输吞吐量等性能的目的。

附图说明

[0065] 图1TCPW带宽估计(BE)取样尺寸。
[0066] 图2TCPW算法慢启动和拥塞避免原理示意图。
[0067] 图3TCP-BC算法的具体流程图。
[0068] 图4是实施本发明的一个示范实例,卫星通信系统主要单元的方框图。

具体实施方式

[0069] 假定有如下应用实例:开发一个卫星网络传输系统,由空间卫星、通信地面基站、源端和目的端三个部分组成,主要单元的方框图如图4所示。
[0070] (1)空间卫星
[0071] 空间卫星是无线电通信中继站的人造地球卫星,其中通信卫星反射或转发无线电信号,实现卫星通信地球站之间的通信。
[0072] (2)通信地面基站
[0073] 地面基站连接网络通信系统中的地面网络和卫星网络两个部分。在链路中,地面基站是微波无线电收、发射台(站),用户通过它们接入卫星线路,进行通信。
[0074] (3)终端用户
[0075] 进行通信的双方,由此终端用户进行通信的发起连接和终止连接。采用卫星网络连接分裂模型进行连接,把TCP-BC协议安装到地面基站。
[0076] 具体实施方案:
[0077] (1)开发人员根据需求创建实现数据传输的卫星网络,生成各个节点;
[0078] (2)开发人员把数据的传输分解成由网络的各个功能层分别来完成;
[0079] (3)开发人员根据卫星网络特点设计传输层的传输控制协议的算法;
[0080] (4)开发人员把传输控制协议具体算法在传输系统的各个节点中实现。
[0081] 本发明的特点是其可以在开放源代码的Linux操作系统中实现,在开放源代码的NS2网络仿真软件中仿真验证,具体方法流程如下:
[0082] 步骤1.建立连接
[0083] 卫星网络中采用分裂连接模型,在地面基站采用基于二分比较增长的拥塞控制算法TCPW-BC。地面终端用户之间通过卫星链路建立连接:源端向地面基站发出TCP连接请求,依次通过卫星链路和目的端地面基站,把发送请求送到目的端;目的端接收后返回一个确认报文到目的端地面基站,通过卫星链路送到源端地面基站,源端接收确认报文;源端生成一个确认报文发送到地面基站,同样通过卫星链路到达目的端地面基站,最后目的端收到确认报文,完成整个连接过程。
[0084] 步骤2.传输数据
[0085] 步骤2.1慢启动阶段
[0086] 在慢启动阶段,随着cwnd逐渐增加,增长到大于拥塞门限ssthresh时,传输进入拥塞避免阶段。
[0087] 步骤2.2拥塞避免阶段
[0088] (1)随着cwnd不断增长,当发送端传输进入拥塞避免阶段,采用二分比较增长的方法来快速搜索该阶段的最佳发送窗口。定义目标函数bw_rttnor(sk)来返回客户端最终获得的窗口值。在目标函数中,全局变量snd_cwnd_vw通过以下公式获得中间窗口变量值:
[0089] snd_cwnd_vw=β*(BWE*RTT)/PacketSize;
[0090] BWE是当前利用ACK流动态测出来的估计可用带宽。β是增长因子,为一个常数值,用来更精确的模拟估测可用带宽所带来的窗口变化。在卫星网络环境下,取经验值3~5能体现性能的优化。RTT是上一个分组在链路上的往返时间,随着分组而动态变化。
PacketSize是指分组大小。snd_cwnd_vw是通过估测带宽而来的窗口值,为了更好的适应网络状况短时间内稳定的性能,使得窗口的不会突发性的跳变,采用了二分增长方式:
[0091] bw_rttnor(sk)=(snd_cwnd+snd_cwnd_vw)/2;
[0092] 通过这种方式,返回得到的窗口bw_rttnor(sk)为估算的窗口snd_cwnd_vw和上一个RTT窗口的中值。如果bw_rttnor(sk)大于当前的拥塞窗口,则客户端目标窗口snd_cwnd取估算所得的窗口bw_rttnor(sk)。反之,则客户端目标窗口snd_cwnd递增至一个窗口值大小。
[0093] (2)在获得链路状态的情况下,当拥塞发生时,即客户端收到三个重复的ACK包时,利用TCPW窗口算法公式Cwnd=(BWE*RTTmin)/PacketSize计算cwnd和ssthresh。
[0094] a)若发生timeout超时,那么就重传期望的数据包。BWE为TCPW算法估计可用带宽。令
[0095] ssthresh=(BWE*RTTmin)/PacketSize);
[0096] cwnd=1;
[0097] If(ssthresh<2)ssthreshre sh=2;
[0098] 然后重新回到慢启动阶段,继续传输接下来的数据包。
[0099] b)若收到三个重复的ACK,表示数据包丢失,进入快速重传阶段。令[0100] ssthresh=(BWE*RTTmin)/PacketSize);
[0101] If(ssthresh<2)ssthreshre sh=2;
[0102] 重传丢失的数据包,不需等到定时器超时,接下来进入步骤2.2(1)二分增长探测窗口阶段,而不是慢启动阶段。
[0103] 步骤三拆除连接
[0104] 客户端发送连接结束数据包,等待对方的应答,当服务器端收到连接结束TCP数据包后,返回连接拆除确认应答数据包,拆除此次连接,进入到监听状态,发送端接收到拆除应答后,拆除连接。在分裂连接中,地面和卫星网络的各个子连接分别以上述方式拆除连接,最后整个连接拆除。