王路,胡月梅,刘立祥,胡晓惠
(1. 中国科学院 软件研究所,北京 100190;2. 中国科学院 研究生院,北京 100049)
卫星网络[1]面临着长延迟、动态拓扑、链路误码率高等挑战。早在1976年,Gitman[2]发现在地面无线网络中使用跳到跳重传方式能够比端到端重传方式获得更短的传输延迟和更高的带宽利用率。近些年,出现了许多利用跳到跳机制保证无线传感器网络数据可靠性的传输协议,如 PSFQ[3]、OSDRMP[4]等。PSFQ (pump slowly, fetch quickly)协议中间节点参与数据分组的检测和恢复,通过跳到跳的方式保证数据可靠交换。OSDRMP协议使用延迟的前向乱序重传请求恢复丢失数据。文献[5]对PSFQ进行改进,扩大传感器节点缓存空间,使传感器节点能够同时传输多个数据分组。文献[6]提出一种跳到跳传输控制协议协议体系,通过跳到跳确认信息保证数据可靠传输。DTSN[7]引入 ACK和NACK机制,保证数据可靠传输,并将数据缓存在中间节点,每个存储丢失数据的节点均能够重传恢复丢失数据,提高丢失数据的恢复效率。
目前,互联网使用的传统传输控制协议TCP[8,9]认为数据丢失即表示发生拥塞,需要减小发送窗口,这种拥塞检测机制将链路误码造成的数据丢失错误地解释为网络发生拥塞,所以不适用于链路误码率较高的无线传输环境,并且TCP采用的拥塞避免、快速恢复等拥塞窗口调节方式在高带宽网络环境下很难达到高利用率。为解决TCP拥塞控制算法遇到的问题,已经提出许多拥塞控制方法,如AQM/ECN[10]、XCP[11]、VCP[12]、MLCP[13]、BMCC[14]等。这些拥塞控制机制由网络中间节点将网络负载情况通过端到端确认信息传递给发送端,发送端根据接收信息调整发送速率。AQM/ECN通过在IP分组头中加入2bit,用于标识网络状态,成功地降低了网络分组丢失率及队列长度,但是窗口调节等方面与传统TCP几乎相同,在高带宽情况下很难实现高带宽利用率。为能够达到带宽的高利用率,XCP提出每个路由节点计算自身平均流速率并将该速率发送给发送端,发送端根据网络中节点反馈信息调节发送速率。这种方式将拥塞控制交给整个网络进行,发送端接收到精确的网络内部信息后,调整数据发送速率达到很好的网络性能。但是 XCP需要在数据中加入较多比特传递中间节点信息,增加了控制信息对网络资源的占用。VCP通过分析AQM/ ECN和XCP,提出中间节点计算负载并对负载分级,在ECN原有2bit的基础上增加1bit传递负载信息。还有一些研究[15,16]将跳到跳思想引入拥塞控制,相邻节点通过交换存储空间、路由表等信息,降低网络状态反馈时延,邻居节点快速调整发送速率,避免网络拥塞,减少数据丢失量。
为满足卫星网络需求,空间数据系统咨询委员会(CCSDS, consultative committee for space data systems)制定了针对星际网络的传输层协议标准SCPS-TP协议[17]。SCPS-TP协议针对星间链路特点对数据丢失原因进行分类,并引入TCP Vegas[18]拥塞控制机制及SNACK确认机制。
拓扑不断变化的卫星网络往返时延抖动较大,导致无法准确测量往返时延。传统的超时重传依赖于往返时延测量的准确,造成不必要的数据重传。快速重传方式主要针对单个数据分组丢失设计,无法有效恢复成段丢失数据,同时快速重传方式也不能适用于长延迟网络,原因是源端可能需要等待很长时间才能收到3个重复的ACK。所以传统的数据重传方式不适用于卫星网络。快速、高效的跳到跳反馈有效地减少了高误码率带来的负面影响,非常适用于卫星网络环境。但是目前跳到跳可靠传输机制主要针对地面无线网络设计,使用较为单一确认机制,并没有考虑卫星网络长延迟、动态拓扑导致数据成段丢失,以及由于卫星移动、链路失效等原因造成数据无法通过跳到跳重传恢复的情况。拥塞控制方面,显示负载反馈拥塞控制算法能够有效提高网络带宽资源利用率,但是这些机制均是建立在传统的端到端可靠控制基础上,这种端到端拥塞控制机制在长延迟、动态拓扑、误码率较高的卫星网络中,由于端到端之间的长延迟导致反馈到源端的信息可能已经过期,无法反应网络当前真实情况;而且在卫星链路高误码率情况下,反馈信息可能在传输过程中已经丢失。传统的端到端拥塞控制机制产生的另外一个问题是由于端到端往返延迟的不同,造成各个数据流分配网络带宽资源的不公平。目前,采用跳到跳机制的拥塞控制算法,能够加快网络信息的反馈,但是主要为地面无线网络设计,节点负载信息在相邻节点间传输,相邻节点能够快速调节发送速率,但是源端对网络中邻居节点间的反馈信息反应较为迟钝,不适用于长延迟、拓扑动态变化的卫星网络。为解决上述问题,本文提出一种基于跳到跳信息的适用于卫星网络的传输控制协议TPSN(transmission control protocol for satellite networks)。
为增强数据传输的可靠性,提高发送端对网络状态反应灵敏度,TPSN协议使用跳到跳异步确认机制,快速恢复成段丢失数据。在此基础上,使用端到端的基于检测窗口的选择性否定确认机制(SNACK),重传通过跳到跳机制无法恢复的数据,保证卫星网络中数据传输的高可靠性。为了能够避免网络拥塞,提高网络资源利用率,保证不同数据流间的公平性,TPSN协议周期性地计算卫星链路负载情况,并在跳到跳基础上,采用一种快速、灵活的传递方式,将负载状态信息传递至源端,源端根据负载情况调节发送速率。
协议处理流程如图1所示。源端A向目的A'发送数据,中间卫星iN接收到数据后发送跳到跳确认消息,卫星1iN-接收到跳到跳确认信息后重传丢失数据;负载信息借助于跳到跳机制反馈到源端A,源端A接收到网络负载信息后调整数据发送速率;目的端 A'接收到数据后按照协议规定发送端到端SNACK信息,源端A接收到端到端SNACK信息后调整滑动窗口,并重传丢失数据。TPSN协议主要工作在传输层和网络层,其中端到端可靠性保证机制工作在传输层,跳到跳可靠性保证机制工作在网络层,拥塞控制机制工作在传输层和网络层,2层借助于跨层思想交互有用信息,共同保证数据可靠传输、避免网络拥塞,提高网络资源利用率。
图1 协议处理原理
2.1.1 跳到跳异步确认重传机制
卫星网络中,链路的高误码率、链路的频繁切换经常导致数据丢失,而且这种网络环境下,链路错误会不断累积。假设数据分组长度为Lbyte,误码率为p,数据分组通过一跳成功传输的可能性为,数据分组通过n跳成功传输的可能性迅速减少为,所以随着数据传输路径经过卫星跳数增加即传输延迟加长,数据成功到达率呈指数衰减。跳到跳确认方式,能够快速重传丢失数据,避免错误累积。同时中间卫星参与可靠性保障,使数据分组的恢复重传不需要等待2个端节点间的往返时间,中间卫星即可快速恢复重传丢失数据。定义N为数据传输链路上卫星个数。假设一次重传即能够恢复丢失数据,使用端到端数据确认重传机制,丢失数据成功传输时间,当中间卫星参与数据重传,丢失数据成功传输时间,其中,M为数据传输过程中数据丢失次数, Ti是数据跳到跳传输时延, Tj是丢失数据跳到跳传输延迟。由于M<N,所以数据确认与重传过程,如图2所示。综上论述可以得到的结论是跳到跳机制非常适用于误码率高、链路频繁切换、端到端延迟长的卫星网络。
图2 跳到跳数据确认
为能够快速恢复成段丢失数据,减少跳到跳确认对网络资源占用,确认信息采用异步跳到跳累积确认方式。累积确认能够防止确认信息丢失,减少确认信息对网络带宽占用。为能够恢复成段丢失数据,确认信息包括标识数据接收情况的窗口位图。窗口位图由一系列比特组成,每个比特代表一个数据分组接收情况,当比特设置为1代表数据已正确接收,比特设置为0代表数据未能正确接收。由于采用跳到跳确认,丢失数据恢复频率快,窗口位图取值可以较小,此处窗口位图设置为8bit。单跳卫星间维护本地数据编号。确认信息包括卫星地址、本地数据编号及 8bit窗口位图。本地数据编号与8bit窗口位图组合表明本地数据编号之前所有数据分组,包括数据本身及本地数据编号之后8个数据分组的接收情况。如(A, 18, 01101111),表示卫星A已正确接收本地编号为 18之前所有数据分组,包括18号数据分组,以及20、21、23、24、25、26号数据分组,本地编号为 19、22的数据丢失。这种确认方式适用于高误码率情况下数据成段丢失情况,而且每个确认信息与传统累积确认信息相比仅增加8bit,网络负载较小。接收卫星接收到数据后,填充窗口位图,发送确认信息。跳到跳确认信息主要作为网络中其他数据的附加信息传输,如路由信息、网络管理信息等。虽然中间卫星在接收到跳到跳确认消息前需要将数据缓存在存储介质中,但由于单跳往返时延(RTT)较小,收到确认信息后缓存数据能够立即被释放,因此数据发送队列不会由于需要等待跳到跳确认信息而不断增长。
跳到跳异步确认重传机制采用2种数据重传方式。第一种方式与传统超时重传相似,虽然传统超时重传方式不适用于卫星网络中端到端的超时重传,但是由于相邻卫星之间链路状态较为单一,所以可以用于跳到跳的数据重传控制。卫星通过跳到跳往返时延设置数据重传时钟,卫星重传超时数据。这种数据重传方式数据恢复时间较长,针对这个问题,TPSN协议提出第二种数据重传方式,由于2个相邻卫星间链路状态较为单一,且跳到跳确认采用异步方式发送,TPSN协议认为接收到包含乱序信息的跳到跳确认信息即表明有数据分组丢失,当发送卫星第一次接收到数据乱序信息后,立即重传数据,当第二次或者更多次收到相同数据乱序信息时,为避免不必要的数据重传,将根据链路分组丢失率判定是否重传数据。
假设 ()Ot是发送卫星时刻t的数据发送速率,不包括重传数据; ( )It d+ 是接收卫星时刻td+ 的数据接收速率,不包括重复数据;d是数据单向传输时延是数据分组平均长度;pδ是时间间隔。为能够恢复丢失数据分组,并且避免重复重传数据,数据重传时间间隔RTΔ应满足如下公式:
根据上述分析,发送方第二次或者更多次接收到同一数据乱序信息时,如果则重传乱序数据,其中,ΔN为上次重传开始到目前为止发送端发送数据分组数量,不包括重传数据。
2.1.2 基于检测窗口的选择否定应答
某些时间段内,对于拓扑结构不断变化的卫星网络,2个端节点之间可能并不存在传输路径,此时中间卫星如果发生故障,数据可能无法通过中间卫星进行恢复。为保证数据传输的可靠性,引入端到端确认机制,并根据链路切换及高误码率特性,端节点确认信息采用选择否定确认(SNACK)信息,告知源端目前已经接收到数据信息以及需要重传数据信息,如图3所示。SNACK采用累积确认方式,确认信息长度为64bit,第一个32bit表示接收方希望接收到下一段数据编号 Nrcv_nxt,第二个32bit是 Nrcv_nxt-1开始向前32个数据段接收情况,格式如图 4所示。每个SNACK数据每次可以确认 32段到数据接收情况。如(58,252.15.192.240),此处后32bit使用类似于IP每8bit计数方式,能够表示26号到57号数据分组接收情况,其中有 3个缺口,长度分别为 6、6和 4,与26号数据偏移量分别为6、18和28。
图3 端到端数据确认
图4 SNACK格式
由于卫星网络端到端的长延迟以及动态拓扑导致较大端到端延迟抖动,数据往返时延(RTT)无法精确计算,所以源端不再设置超时重传时钟,端到端的数据重传由SNACK控制完成。为保证源端及时重传恢复跳到跳无法恢复的丢失数据,减少端确认信息对反向链路资源的占用,适应带宽不对称链路特性,目的端在2种情况下发送端节点间确认信息:1)发现数据分组乱序;2)周期性发送端节点确认信息,目的是更新滑动窗口,并释放已正确接收数据占用的资源。
方式 1 如果目的端每收到一个数据分组即检测是否乱序,并发送确认信息,由于网络数据突发特性,即短时间内发送大量数据,一旦发生数据丢失,会在短时间内产生大量端节点间确认信息,这些确认信息可能指向同一范围内的丢失数据,结果不仅产生大量冗余确认信息,而且发送端会不断重传未确认数据。为减小卫星负担,卫星并不是每收到一个数据分组即检测数据是否乱序。TPSN设置数据乱序检测窗口 wchk_wnd,只有接收数据量达到窗口值时,接收卫星才检测数据是否乱序。采用固定窗口值的方式能够缓解每个数据分组都检测引起的压力,但是并不能解决由于数据分组丢失造成的重复确认信息及冗余数据分组重传。因此TPSN采用动态窗口值,变化方式采用乘性增、乘性减。根据 2.1.1节分析,当链路分组丢失率为 plost_rate情况下,发送端平均每发送个数据分组即重传数据才可能保证数据可靠传输,所以检测窗口 wchk_wnd初始值设置为当检测到数据乱序时,为防止多次传输同一乱序数据信息,检测窗口值翻倍,减慢数据检测速率。当数据顺序到达,则检测窗口值 wchk_wnd乘性减为原先值的0.9倍,并保证不低于初始值,加快数据检测速率。发送端重传数据时间间隔同2.1.1节。
上述过程中,由于卫星网络动态拓扑特性,目的端需要正确判断乱序是由于数据分组丢失,而不是路径改变引起。目的端通过数据分组的生存时间TTL字段判断数据分组乱序原因是数据分组丢失,而不是路径改变。目的端接收顺序到达数据后读取分组头TTL字段,并存储在 T TLin-order中。如果后续接收到乱序数据的TTL字段等于或者小于 T TLin-order:
目的端认为接收乱序数据的原因是传输路径发生改变。如果接收到的TTL不满足式(2),即数据经过更长路径传输,则目的端认为数据丢失[19]。
方式 2 当数据一直顺序接收时,按照方式 1不会发送端节点间确认信息,这时候需要周期性发送端节点间确认信息,目的是及时通报源端数据接收情况,更新滑动窗口,并释放已经正确接收数据占用的缓存。为及时调节滑动窗口,发送时间间隔由源端与目的端间的往返时间RTT和链路分组丢失率决定。假设 pavg为平均数据分组长度,plost_rate为链路分组丢失率,Rrate为接收方平均接收数据速率,不包括重复数据,则确认信息发送时间间隔为
2.2.1 链路负载计算
近期一些研究[12,13]中利用负载因子改进拥塞控制算法,但是只考虑了单路径传输情况,即一个节点只有一个下一跳,负载计算不适用于节点存在多条路径情况。TPSN对节点队列进行管理,发送到不同下一跳节点的数据存放在不同链路队列中,节点负载计算针对链路进行,每条链路都有对应的负载。如果负载计算针对节点进行,可能由于节点各链路带宽不一致导致节点负载判断失效。如图 5所示,路径1带宽为30Mbit/s和20Mbit/s,路径2带宽为200Mbit/s,通过路径1及路径2数据流量均为30Mbit/s,容易判断路径1负载重,路径2负载轻。如果按照文献[12, 13]中的计算方法计算节点负载,则无法作出正确判断。
图5 负载计算
中间节点每隔时间tρ计算节点链路负载ρl。参考文献[12, 13],ρl计算公式为
其中,与文献[12, 13]对λl和q˜l定义不同,此处λl指tρ时间内进入节点从该链路传输的数据总量; q˜l是在这段时间内该链路的队列长度平均值,以字节为单位;kq是系数;γl是链路的目标使用率,取值接近于1; Cl是链路数据发送能力[12]。为了能够更加充分地利用节点存储空间,令 kq=0.8。平均队列长度计算时间间隔取值为 tρ/ 20。
节点间通过使用发送窗口控制数据发送量,所以计算负载的时间间隔tρ应该由单跳节点间往返时延决定。由于网络数据具有突发性,因此tρ取值应比节点间往返时间稍大才能反应网络中数据流量情况,同时应该避免存储数据队列较长后才进行负载计算、通告工作。此处,其中D是往返时延的平均方差。
2.2.2 拥塞窗口的调节
TPSN根据网络节点传递给发送方的负载情况调节拥塞窗口,窗口变化采用乘性增、线性增、对数增、乘性减方式进行调节。
当瓶颈节点链路传回负载低于80%时,说明网络空闲,发送方窗口采用乘性增长方式快速增长。
乘性增:
当瓶颈节点传回负载大于80%时,系统已经处于高利用率,发送方通过线性增、对数增、乘性减使窗口保持在较稳定状态,确保资源的高利用率。当负载大于80%,低于95%时,拥塞窗口采用线性增长方式调节;当负载大于95%,低于100%时,拥塞窗口减慢增长,采用对数增方式调节;当负载大于100%时,发送方采用乘性减方式调整拥塞窗口。
线性增:
对数增:
乘性减:
其中,α取值为1,增长方式与TCP相同[8]。窗口乘性增长率δ由网络剩余资源决定,网络剩余资源可以表示为1-ρl,其中ρl是当前链路负载情况,则
其中,k是常量。源端接收到的负载并不是ρl的真实值,而是它的编码,负载编码见2.2.3节表1,而且负载信息借助于跳到跳确认机制在延迟较短的节点之间传递,对异常情况反映迅速,所以并不需要过于保守的窗口增长率[12]。当 k ≤ 1 /2时,TPSN协议能够达到稳定状态,证明详见第3节性能分析,所以常量k=0.5,ρl=0.80,窗口增长率δ=0.125。由于加入[95%,100%)负载范围,此处β=0.95,目的是使源端采用对数增、乘性减方式调节窗口,使得发送速率保持稳定,并且充分利用网络资源。
TPSN协议将链路负载分为4个级别,与文献[12]相比,通过增加[95%,100%)负载范围使得在高利用率情况下窗口变化更加平缓,配合上对数增和乘性减,能够更长时间维持窗口稳定,保证网络资源利用率最大化。
2.2.3 动态快速负载传递
传递负载lρ真实值会占用较多网络带宽,为减少负载信息对网络资源占用,网络中传递的并不是负载真实值,而是采用分级编码方式处理后的负载,如表1所示。
表1 负载编码
卫星网络中使用传统负载传递方式会造成反馈信息获取不及时,发送方不能及时调整发送策略,传统负载传递时间其中, Ti是单跳传输延迟,N是传输路径上节点个数,如图6(a)所示。为能够实现数据传输路径上的链路负载信息快速传送至发送端,负载随着节点间确认信息捎带传递,基于跳到跳机制的负载反馈时间为 2 T1,其中 T1是源端与第一跳节点间链路延迟,如图6(b)实线部分所示。负载反馈时间与单跳往返时间有关,与端到端延迟无关。显然,极大地减小链路信息反馈时延。中间节点在收到负载信息后会将自身的链路负载情况与接收到的负载进行比较,将较大负载值写入数据捎带至上一跳,传递至源端节点的负载表示该路径上瓶颈链路的负载,发送端根据接收到负载信息调整拥塞窗口。同时跳到跳负载信息传递方式没有传统端到端方式需要端到端往返延迟的收敛过程,原因是一旦有数据传输就会有负载传递,即使是新加入数据流同样能够获取最新的链路负载信息。
将负载信息捎带于不断传递给发送端的数据中,发送端不仅可以更快掌握数据传输路径网络状况,同时避免了传统端到端拥塞控制由于两端节点往返时延不同产生的网络资源分配不公平现象。如图6(a)所示,传统负载反馈信息均是由目的端发出,中间节点不更新负载信息,随着两端节点往返时延增大,负载反馈信息到达频率减小,造成两端节点距离远的应用网络资源占用率低,需要在发送端根据往返时间等信息对参数进行调整,才能保证各个应用间的公平性。借助于跳到跳机制传递负载信息,最新负载反馈信息不断在各节点间传送,发送端接收负载信息频率与两端节点往返时延无关,只与单跳节点间往返时延相关,当单跳节点间往返时延差别较小,不会产生由于端节点间往返时延不同造成的不公平现象,证明详见第3节性能分析。
图6 负载传递
文献[12]中提出一种简单的协议稳定性分析数据模型。如图7所示,TPSN协议模型中间节点根据t-RTTone_hop时刻发送数据计算链路负载ρl,并将负载传回发送端,发送端在t时刻根据接收到的负载调整发送窗口。根据 TPSN特点对文献[12]中数据流分析模型进行调整:
其中,wconi(t)是数据流i的拥塞窗口,δ(ρl)、α和分别是乘性增、线性增和对数增系数。协议正常运行状态下,窗口值大于1,,所以,式(9)可以简化为
图7 TPSN模型
为了能够真实地模拟卫星网络环境,验证协议性能,使用事件驱动的OMNeT++网络仿真软件建立卫星网络仿真验证系统,真实模拟卫星网络运行过程中网络环境变化,对协议进行性能验证与分析。
4.1.1 网络模型
卫星网络拓扑采用铱星星座,主要参数如表 2所示。卫星经过极区时,星际链路会关闭。反向缝之间不存在星际链路。
4.1.2 节点模型
节点模型主要包括2类,一类是卫星节点模型,另一类是地面节点模型。主要包括3个功能模块,第1个是轨道链路模拟功能模块,第2个是传输控制协议功能模块,第3个是路由协议功能模块。
表2 卫星网络拓扑主要参数
轨道链路模拟功能实现卫星运动轨道以及卫星链路模拟。传输控制协议功能模块分别实现了本文提出的传输控制协议 TPSN、CCSDS制定的SCPS-TP协议、TCP协议以及VCP协议。路由协议功能模块实现参考文献[20, 21]中提出的基于地理位置信息的分布式路由算法。
4.1.3 仿真参数设置
每条链路带宽设置为20Mbit/s,数据发送时间间隔满足Poisson分布,数据分组长度为1KB。每条链路均维护一条先进先出队列,队列长度为200KB。数据通信均是由地面站发起,通过卫星网络传输信息到目的地面站。当卫星高度为 780km时,卫星轨道周期为1h40min,2h仿真时间能够反应整个网络变化过程对协议的影响,所以除特殊说明,仿真时间持续2h。由于仿真实验在卫星拓扑结构中运行,端到端往返时延由实际运行状态决定,所以通过设置不同端节点距离调整端节点间延迟。仿真过程中,2个端节点间经过卫星个数随着运行时间推进会不断发生变化。
4.2.1 窗口增长及链路利用率
首先,考虑协议对网络资源的利用。如图8所示,纵坐标为各时刻窗口值与目的端接收缓存比值,仿真时间持续120s,图中显示前50s窗口变化过程。各种情况下,TPSN拥塞窗口初始阶段快速上升,稳定后不因为距离、链路误码率等因素发生变化。对于 TCP,由于节点移动导致两端节点间RTT发生变化,发送的数据可能因为距离增大导致确认信息反馈时延增加,造成TCP错误认为数据超时,重传未确认数据、降低拥塞窗口,TCP规定在重传数据确认到达之前不可以更新RTT[22],使得后续发送的数据分组仍然使用未更新的RTO,导致后续发送数据即使完全正常传输,由于RTT未能及时更新,TCP可能仍然错误认为数据需要超时重传。当链路误码率增高后,情况更加恶劣,除了超时影响之外,还有数据分组丢失,导致TCP一直处于慢启动阶段,对网络资源利用率很低。TCP在初始阶段拥塞窗口会增长,但是当窗口增长到一定值后窗口开始下降,链路利用率降低。说明TCP不适用于高带宽、拓扑结构经常发生变化的卫星网络。SCPS-TP采用TCP-Vegas拥塞控制方式,这种方式虽然不会将链路切换或链路误码导致的数据丢失误判为链路拥塞,但是非常依赖于RTT的测量以及2个边界值的选取;数据确认采用SNACK方式,随着两端节点距离增加,RTT增大、链路误码率提升,SNACK反馈频率会降低,并且反馈信息可能丢失,导致拥塞窗口增长缓慢,数据发送量减少。针对上述问题,TPSN借助于跳到跳机制保证窗口的及时更新。VCP需要等待端到端负载信息才会对窗口进行调整,而且乘性增参数设置为0.062 5,取值非常保守,在长延时情况下窗口增长非常缓慢。链路资源利用率计算公式:其中,tinterval为采样时间间隔, Nacked是时间tinterval内被确认数据分组数量, pavg是数据分组平均长度,lrate是链路数据发送速率。
如图9所示,对于 SCPS-TP当链路误码率为10-5时,由于拥塞窗口上升非常缓慢,链路利用率低。随着误码率的降低,链路利用率立即恢复到很高水平。在链路误码率较低、端节点距离较短时,由于数据分组丢失较少及端节点延迟较小,VCP和TPSN协议利用率基本相同。但是SCPS-TP和VCP都存在相同问题,发送端均需要等待接收端确认信息,所以当距离增大到10 000km,由于往返时间加大,确认信息反馈缓慢,利用率会下降。对于SCPS-TP和VCP,随着误码率上升,由于仅使用端确认保证机制,数据更容易丢失,利用率同样下降。TPSN协议利用跳到跳确认机制使负载信息传递不再受端节点间距离的影响,能够一直保持很高的链路利用率。
4.2.2 公平性及队列稳定性
图8 拥塞窗口变化
图9 利用率对比
传统端到端的拥塞控制机制中往返时延RTT小的应用由于反馈迅速,首先抢占网络资源,造成各种应用业务间网络资源分配不公平。针对这种情况已经有很多协议对其进行专门处理,主要处理方式是通过加入参量减少由于RTT不同对窗口调整的影响。TPSN协议负载反馈无需等待目的端反馈信息,中间节点即将负载信息反馈至发送端,窗口变化频率由单跳之间往返时间决定,与两端节点距离无关,所以不需要参数处理即能够保证各应用数据流之间的公平性。公平性验证的各节点拓扑如图10所示,每加入一个新的目的节点,源节点分别为目的节点建立新的数据流。各目的节点与源端距离变化范围是1 000km到10 000km。随着具有不同端到端距离的数据流加入,各协议公平性变化如图11所示。参考文献[23],公平性计算公式为
其中,N是数据流总数,ix是第i个数据流发送数据量。
图10 公平性测试拓扑
图11 公平性
由图 11可以看出,随着与目的节点距离不同的数据流数量增加,TCP和SCPS-TP公平性下降很快。VCP对RTT不同造成的不公平现象进行处理,公平性一直保持很好,仅略低于TPSN协议,但是随着数据流个数增加和端节点间延迟增大,TPSN协议公平性优势逐渐体现出来,同时 VCP公平性处理与TPSN协议相比较复杂,增加了节点处理负担,而TPSN协议从设计上保证各种不同RTT应用数据流的公平性,节点无需额外地处理开销就能够保证不同RTT节点间的公平性。
通过节点队列变化情况说明协议在不同环境下的稳定性。队列长度取值是数据传输路径上传输队列长度,仿真中队列采样时间间隔为 0.1s,图12中绘制的是传输路径上最长的队列长度,随着端节点距离增大队列长度略有增长,但是基本稳定在15KB到20KB之间。这是因为TPSN协议通过使用拥塞控制以及灵活的确认机制,使TPSN协议节点发送队列长度一直处于平稳且较低水平。
图12 TPSN协议队列变化
4.2.3 有效传输率
本文通过计算数据有效传输率验证TPSN协议对网络资源的有效利用,有效传输率计算公式为
其中, Erate表示有效传输率, drcv表示接收方成功接收数据量,不包括重复数据, dretrans表示重传数据量。此处测试方法是发送方数据发送时间间隔为0.1s,当接收方接收到1 000个数据分组时,统计发送方重传数据分组个数,通过式(13)计算有效传输率。
由于VCP[12]没有数据可靠性保证部分的描述,此处的比较对象是TPSN协议、TCP和SCPS-TP。
图13 数据有效传输率
图13 中横坐标表示发送方与接收方之间距离,单位是km,纵坐标表示按照式(12)计算得到的有效传输率。由于TPSN协议采用跳到跳的确认方式,使各种丢失的数据在中间节点即能够重传恢复,减少源端对数据的重传,距离、误码率因素不会影响TPSN协议对网络资源的有效使用,而TCP由于并不针对长延迟、高误码率、拓扑不断变化的无线网络设计。如图13(a)和图13(b)所示,链路误码率处于 1 0-7和 1 0-6时,TCP有效传输率基本维持在50%的较低水平,原因是卫星网络环境下数据需要通过多跳移动节点转发,传输路径状态频繁的变化,造成RTT的频繁变化,导致TCP错误的超时和重传,降低了链路的利用率;随着误码率上升,网络资源有效利用率基本保持不变,如图 13(c)所示。当误码率较低时,如图13(a)和图13(b)所示,SCPS-TP与TPSN协议数据有效传输率基本相同。但是由于 SCPS-TP仅采用端节点间确认重传方式,所以当链路误码率增加到 1 0-5,端节点距离增加到9 000km以上后,如图13(c)所示,数据丢失量增大,发送端重传数据量增大,数据有效传输率略有降低。
本文提出了一种基于跳到跳信息的适用于卫星网络的传输控制协议TPSN,该协议针对卫星网络高误码率、长延迟、拓扑变化、资源有限等特点设计了跳到跳累积确认机制,能够快速恢复成段丢失数据。为能够及时恢复跳到跳确认无法恢复的丢失数据,减少控制信息对反向链路带宽占用,设计了基于检测窗口的选择否定应答机制。
针对卫星网络环境可能出现的拥塞情况,本文在跳到跳机制的基础上,设计了一种基于应用数据流的拥塞控制机制。这种方式能够使发送方快速掌握传输路径上实时状态,做出及时、正确的窗口调整,在长延迟、高误码率、拓扑经常变化的无线环境下能够充分利用网络资源。
本文中跳到跳确认信息处于网络层,如何更好地与路由协议合作,更加充分利用网络资源是今后研究工作的重点。
[1] FARSEROTU J, PRASAD R. A survey of future broadband multimedia satellite systems, issues and trends[J]. IEEE Communications Magazine, 2000, 38(6): 128-133.
[2] GITMAN I. Comparison of hop-by-hop and end-to-end acknowledgement schemes in computer communication networks[J]. IEEE Transactions on Communication, 1976, 24(11): 1258-1262.
[3] WAN C Y, CAMPBELL A T, KRISHNAMURTHY L. Pump-slowly,fetch-quickly (PSFQ): a reliable transport protocol for sensor networks[J]. IEEE Journal on Selected Areas in Communication, 2005,23(4): 862-872.
[4] DATTA D, KUNDU S. Reliable and efficient data transfer in wireless sensor networks via out-of-sequence forwarding and delayed request for missing packets[A]. Proceedings of the International Conference on Information Technology[C]. Las Vegas, NV, IEEE Computer Society, 2007. 128-133.
[5] PARAMASIVAN B, KRISHNAN R S. An enhanced reliability scheme for wireless sensor networks using PSFQ[A]. International Symposium on Ad Hoc and Ubiquitous Computing[C]. Surathkal,2006. 106-111.
[6] HEIMLICHER S, BAUMANN R, MAY M, et al. The transport layer revisited[A]. Proceedings of 2nd IEEE International Conference on Communication Systems, Software and Middleware[C]. Bangalore,2007.
[7] FRANCISCO R, ANTONIO G, PAULO R P, et al. Performance evaluation of DTSN in wireless sensor networks[A]. Proceedings of the 4th EuroNGI Workshop on Wireless and Mobility[C]. Barcelona,Spain, 2008.
[8] JACOBSON V. Congestion avoidance and control[A]. Proceedings of SIGCOMM[C]. Stanford, CA, USA, 1988.
[9] POSTEL J. Transmission Control Protocol[S]. RFC 793, 1981.
[10] ATHURALIYA S, LI V, LOW S. REM: active queue management[J].IEEE Network, 2001, 15(3): 48-53.
[11] KATABI D, HANDLEY M, ROHRS C. Congestion control for high bandwidth-delay product networks[A]. Proceedings of ACM SIGCOMM[C]. Pittsburgh, PA, 2002.
[12] XIA Y, SUBRAMANIAN L, STOICA I. One more bit is enough[J]. IEEE/ACM Transactions on Networking, 2008, 16(6):1281-1294.
[13] QAZI A, ZNATI T. On the design of load factor based congestion control protocols for next-generation networks[A]. IEEE INFOCOM[C].Phoenix, AZ, 2008.
[14] QAZI A, ZNATI T, ANDREW L L H. Congestion control using efficient explicit feedback[A]. IEEE INFOCOM[C]. Rio de Janeiro,2009.
[15] DANIEL S. Hop-by-Hop Transport Control for Multi-hop Wireless Networks[D]. England: Brigham Young University, 2007.
[16] YUNG Y, SANJAY S. Hop-by-hop control over wireless multi-hop networks[J]. IEEE/ACM Transactions on Networking, 2007, 15(1):133-144.
[17] Recommendation for space data system standards: SCPS-TP[EB/OL].http://public.ccsds.org/publications/archive, 2006.
[18] GRIECO L A, MASCOLO S. Performance evaluation and comparison of Westwood+, New Reno, and Vegas TCP congestion control[J].ACM SIGCOMM Computer Communication Review, 2004, 34(2):25-38.
[19] TARIK T, DAISUKE M, ABBAS J, et al. Explicit load balancing technique for NGEO satellite IP networks with on-board processing capabilities[J]. IEEE/ACM Transactions on Networking, 2009, 17(1):281-291.
[20] EKICI E, LAN F A, MICHEAL D B. A distributed routing algorithm for datagram traffic in LEO satellite networks[J]. IEEE/ACM Transactions on Networking, 2001, 9(2): 137-147.
[21] SVIGEL J A, MOHORCIC M, KANDUS G. Routing in ISL networks considering empirical IP traffic[J]. IEEE Journal on Selected Areas in Communications, 2004, 22(2): 261-272.
[22] KARN C P. Improving round-trip time estimates in reliable transport protocols[J]. ACM SIGCOMM Computer Communication Review,1995, 25(1): 66-74.
[23] CHIU D, JAIN R. Analysis of the increase and decrease algorithms for congestion avoidance in computer networks[J]. Computer Networks and ISDN Systems, 1989, 17(1): 1-14.