电子工程学院网络工程教研室 唐云 单洪
摘 要:因特网的应用中广泛地使用着TCP/IP协议,如简单电子邮件协议(SMTP)、超文本传输协议(HTTP)、文件传输协议(FTP)等。TCP协议在有线网络中工作得是很好的,但是在卫星通信中却不能很好的利用它的带宽。传输的长延时、接收窗口的大小、网络中的拥塞等都成为卫星通信中的突出问题,为此本文提出了卫星通信中对TCP协议进行改进的方法。
1 引言
TCPIP是目前进行网络数据传输时使用的主要协议族。该协议族中,TCP和IP是核心,同时还包括一些其它协议。TCP和IP协议分别控制着数据在互联网上的传输和路由选择。IP是一个为广域网设计的无连接网络层协议,它被设计为网间互联协议,IP数据报可在几乎任何链路层协议上的网关(或路由器)间传递。从本质上说,IP无非是指导网络上的数据包从发方计算机送达收方计算机,而TCP则负责确保数据在设备之间进行端到端的可靠交付。从这个意义上说,卫星链路对TCPIP数据传输的影响主要体现在TCP层。
2.TCP协议概述
TCP协议主要是通过积极的确认机制来传送数据。每一个数据段都包含了一个序号用来确定数据段在传输中的位置,这个序号由每个数据段的第一个字节在传送中的相对位置决定。比如,假设一个TCP发端将发送一批数据,每段大小为100字节,若第一段的序号定为X,则第二段的序号将为X+100,以后各段依次类推(为了介绍方便,本文将不用标准的8比特数字来表示段的序号,而直接采用一般的数字)。接收端在收到数据后便可依据这些序号来重组数据,恢复成完整的信号。此外,收端在每收到一个数据段后便会向发端发一个确认信号ACK这个确认信号包含了下一个需接收数据段的序号。
TCP是一个滑动窗口协议。这种滑动窗口协议使发端可连续地发送一定数量的数据。发送数据时,当发端收到了收端的确认信号(ACK)后,窗口便相应地向后滑动,以便能传送更多的数据段。每一个TCP段(数据段或是ACK)在其首部都许诺了一个窗口值,它的大小收到的数据段发送确认应答。
由收端确定,是来自收端的流量控制,它限定了发端滑动窗口的最大值。标准的TCP所能许诺的最大窗口是65535字节,因为在它的TCP头中只有16个比特用来定量窗口大小。
TCP应用了一系列的拥塞控制算法来解决拥塞问题。由于网络的容量有限,如果TCP发端传输数据速率过高,那么网络中的路由器就会来不及处理这些数据段,数据段便拥塞在路由器处,若这些路由器又没有缓冲能力或缓冲能力有限,便会造成拥塞在路由器处数据段的丢失。当很多条通路都以高的速率向网络中注入数据时,若没有解决拥塞的办法,大量注入网络中的数据就会拥塞在路由器附近,导致数据丢失,不能到达目的地,从而引起发端不断地重发,这样就造成越来越多的数据注入到网络,却得不到正确的处理,网络拥塞进一步恶化。TCP的拥塞控制协议主要有四种,慢启动、拥塞避免、快速重发和快速恢复。下面简单地介绍一下这些算法。
2.1启动和拥塞避免
通过运行慢速启动和拥塞避免算法,TCP能在不产生路由拥塞的前提下提高数据传输速率。TCP发端采用一个可变的拥塞窗口(发端的滑动窗口),窗口大小不超过收端的通知窗口,TCP不允许向网络中注入多于窗口大小的未经确认的数据。
慢速启动通过增加发端窗口大小逐渐地增加数据注入量,当连接建立时或是网络中检测到拥塞时,此算法初始化拥塞窗口为一个数据段大小,每收到一个来自收端的确认后,拥塞窗口大小便增加一个段值的大小,这样传输速率便逐渐增加。当窗口值达到慢速启动门限或是拥塞再一次被检测到时,慢速启动便停止工作。在连接建立时慢速启动门限被初始化为收端通知窗口值的大小。对于任何一个数据段,一旦超过了TCP的重发时间(RTO),TCP便重发这个数据段,并认为网络发生了拥塞,这时慢速启动的门限降为拥塞窗口值的一半,拥塞窗口值置为一个段值大小,慢速启动算法开始工作,直到再次超过新的慢速门限或是再次检测到拥塞为止。
拥塞避免在慢速启动工作完后开始生效。在这个过程中,拥塞窗口(Cwind)的大小以十分缓慢的速度增长,每收到一个确认应答(ACK)窗口值便增加1Cwind(除非它的大小已经超过了收端通知窗口的大小),每一个往返时延(RTT)大约增加一个段值大小。
2.2快速重发和快速恢复
通过快速重发和快速恢复机制,TCP能比依靠重发时间(RTO)检测方法更有效地检测并恢复丢失的数据。RTO等于(往返时延)RTT加上一些变量,如果发端在重发时间内未收到确认应答,便重发数据段,如果TCP的计时器间隔不大于RTO的话,这种体制运行得是很好的,若大于则难于引发这个重发机制(如在许多有线网络中,RTT小于500ms,而BSD Unix操作系统计时器的时间间隔为500ms)。
快速重发在重发时间前重发数据段。当数据段没有按顺序到达收端时,TCP便发送复制的ACK,收端若收到3个这样的复制ACK,TCP便认为数据已经丢失并重发相应的数据段,并且,TCP判定此时发生了网络拥塞并且降低发送速率。当运行快速重发机制重发数据段时,快速恢复算法也开始启动。拥塞窗口值降为以前的一半大小,慢速启动门限也被设置为此值。发端每收到一个确认应答便认为对应的数据段收端已收到,而不在网络中,鉴于此,TCP判定网络还能容纳更多的数据段,于是拥塞窗口增加一个数据段值大小,发送速率因此得到提高,如果收到了一个不是复制的ACK,TCP便减去这些因快速恢复增加的值(即回到慢速启动门限值),随后,开始提到的拥塞避免算法开始运行。
3.卫星通信中使用TCP存在的问题
TCP是TCPIP中的用于可靠数据传输的传输控制协议,TCP要求反馈以确认数据接收成功。卫星信道的一些固有特性(如较大延迟、较高比特差错率和带宽不对称等)对通过卫星链路进行 TCPIP传输有一定的负面影响, 如过长的TCP超时和重传引起较大的带宽浪费,此外还要考虑卫星环境下的一些TCP特性,如窗口较小,往返定时器不精确,以及启动窗口等问题。但其影响主要体现在通信流量(拥塞)控制和协议带宽效率这两方面,因此卫星通信中的TIPIP传输研究也应主要集中在这两方面。
3.1 拥塞避免
假定一条信道的拥塞窗口为128个数据段大小,当检测到拥塞时降为64个数据段大小,若用拥塞避免算法,每一往返时间(RTT)大约增加一个数据段大小,将需要5.12秒达到128个数据段大小,这对带宽的利用是很低效的。
3.2 慢速启动
TCP 为完成对数据的确认使用了滑动窗口机制,为避免拥塞采用了称为“慢启动”的策略。发方对丢失或损坏数据的重发,要求保留数据副本直至收到数据确认(ACK)。为避免大量可能丢失的数据副本占用大量存储器并浪费带宽,TCP采用了一个滑动窗口机制来限制传输中的数据数量。随着确认的返回,TCP在前移窗口的同时,发送不断增加的数据。一旦窗口被占满,发方必须停止传输数据直至更多的确认帧到达。
虽然TCP能发现数据没有送达,但重新发送会进一步加剧信道的拥塞,从而进一步导致数据丢失。为避免网络因拥塞而瘫痪,TCP只能降低传输速率以对数据丢失做出反应。但是从算法上讲, TCP每次进行新的连接都必须从最低的传输速率启动,TCP用返回的ACK来指示提高速率,这是一个较慢的线性增加的过程。这就是所说的“慢启动”,即发送窗口依每次往返时间递增,以提高传输速率和网络吞吐量。
据测量,NASA(美国国家宇航局)ACTS卫星的往返时延(RTT)是560ms,陆地网络中,从俄亥俄大学到加利福尼亚大学的往返时延是80ms,通过下面的公式:
慢速启动时间=(RTT)×1og2(W) W为最大窗口
假定窗口大小分别为512字节和128字节,我们可知在卫星网络中需要很长的时间(3.92秒)来达到峰值传输速率,陆地网络中需要560ms,显然对于卫星网络来说带宽利用率是很低的。
3.3 信道吞吐量
对于卫星TCPIP数据传输,由于延迟时间过长,正常TCP中滑动窗口的大小限制了卫星链路的最高吞吐量;同样,由于ACK从卫星网络中返回得十分缓慢,TCP达到全速时需要一个较长的提速时间,即使对于一个较小的数据连接也是如此。
许多可调整的参数可用于增强TCP的性能,包括数据段、定时器和窗口的大小。TCP实现中含有大量拥塞避免算法,如慢启动、选择重传和选择确认,它通常能改进像Internet这样的共享网络的性能。但在许多拥塞控制算法,特别是慢启动中,当中等数量数据正在一个具有较大带宽延迟特性的链路上传输时,会产生端到端通信的低效带宽利用问题。对此需要有相应的解决办法。
这里我们假定信道最大吞吐量为1.536MbitS,使用最大的接收窗口65535字节,RTT为560ms,它的最大吞吐量=64K×8560=0.94MbitS,可知没有完全应用卫星的信道带宽。
4.卫星网络中TCP效率的改善
1.基于卫星信关站采用特殊的方法来提高TCP效率
TCP协议采用的是端到端控制方式。将拥塞控制放在拥塞发生的卫星信关站会取得更好的效果。严格说,在信关站采取的策略不属于TCP协议。由于信关站对拥塞控制具有直接性,因此对网络传输具有比较好的改进效果,主要的方法包括:
(1)随机及早监测
当信关站缓存区长度超过门限时,数据就会按照一定的概率丢失,这是信关站及早地通知发端降低发送速率,以免过多地向网络中注入数据。
(2)明确拥塞指示
信关站向源端发出明确的拥塞指示,源端据此指示减少拥塞窗口和慢启动门限。
(3)TCP欺骗法
在确认信息尚未到达时,信关站作为虚拟的目的节点向源端发送确认信息使得源端可以继续发送下一数据包,同时信关站又作为虚拟的源端向真正的目的端发送数据,这样对源端可以减少确认信息的往返时延,从而提高源端的发送速率。这种方法仅适用于链路质量非常好的网络,对链路质量差、网络和安全性要求高的业务都不适用。
(4)延时确认
延时确认是当网络拥塞时信关站通过对返回的确认信号进行延时,源端在收不到确认信号时就会减小发送速率,以此减缓拥塞的发生。此方法在拥塞不严重时效果明显,但在拥塞严重时效果不很明显。
2.我们可以采用多条TCP连接,从而更加充分地利用信道带宽。慢启动时每次发送N个数据段,其效率大于仅发送一个数据段,同样在拥塞避免时也能更快地实现。
3.加大初始化窗口
针对初始化窗口为1,在信道连接时信道利用太低的缘故可适量的加大初始化窗口。
初始窗口=min4×MSS,max(2×MSS,4380)
其中:MSS代表收发双方允许的最大数据包长。按照这种方法,在慢启动算法中所需要的最大接收窗口恢复时间可以缩短为:
慢速启动时间=RTTlog2Wa - Rlog2Wi
其中:Wa为最大允许接收窗口,Wi为初始窗口。
4.选择性确认
在数据传送过程中接收方不需要对发送方的每个数据段都进行确认,在确认信息中告知发送方已经正确接收到的数据包,发送方只需重发出错包,这就避免了不必要的数据重传。
TCP接下来的一个主要缺点是它易受多个丢失的影响,造成失去其″自计数″属性和超时。在长延迟网络中,阻止不必要的窗口减小并仅重发受损丢失分组,有助于提高带宽利用率,如ITU-T为卫星制定的SSCOP协议。这类协议称为选择性确认(TCP SACK),对TCP协议提出了明显的改进。TCP SACK是一个数据发现算法,其中接收方能够有选择地示意哪个数据块(数据段)没有收到。这允许接收方仅精确地重传这些遗漏的分组,从而有效地减少了不必要的重传。
研究表明TCP SACK适合于具有中等丢失率(低于窗口大小的50%)的长延迟网络环境以及对于线路丢失率较严重的网络,在SACK基础上改进的前向ACK 建议比较适合。前向ACK进一步地结合了拥塞控制以及数据发现算法,尽管对于高噪声卫星环境还有待进一步研究,但前向ACK有望提供较高的性能增益。
5.慢速启动门限评估
当TCP运用多条连接进行数据传送时便容易引起数据的丢失,如果我们能在数据丢失前终止慢速启动就可以避免这种数据丢失了。根据公式:
窗口大小=(bandwidth)×(RTT)
在知道了往返时间(RTT)后,只要能评估出可使用的带宽,窗口大小便可确定了,这时就可以决定慢速启动算法在什么时候将停止。
6.快速重传和快速恢复
增大初始窗口虽然使得窗口恢复时间缩短了,但是并没有改变慢启动算法和拥塞避免算法结合的拥塞控制机制。将快速重传和快速恢复配合使用,就是为改进拥塞避免和慢速启动算法而提出的。当源端收到3个相同的确认信息时就判定发生拥塞,立即进行重发,同时将窗口减半,慢启动门限设置为减小后的窗口大小,拥塞控制窗口比慢启动门限大3。当源端收到一个新的确认信息后,将拥塞窗口的大小设置为慢启动门限,同时转入拥塞避免。快速重传和快速恢复可以避免单纯利用超时重发引起的系统性能下降。
5.结论
本文对卫星通信的TCP协议进行了详细的讨论,并对TCP体制中存在的问题和一些解决方法进行了分析。这些应用型的结论将能更加好的利用卫星通信的信道带宽,高效地提供网络服务,但这些结论只是在原有的基础上的改进,并不是十分完美,如快速重传和快速恢复协议在拥塞恢复后发送速率的增长呈线性增加,还有些算法只是针对特定的情况有效,这些都需要进一步地研究与改进。
----《通信世界报》
|