卫星网络中的TCP协议分析
2013-12-23新华通讯社李京生
新华通讯社 李京生
一、引言
TCP协议是一个面向连接的传输协议,它是在低时延、低误码网络条件下制定的一系列传输协议。由于TCP是基于不可靠的IP服务来提供可靠的数据传输,因此,TCP必须采用端对端的流量控制、拥塞控制和差错控制机制来保证服务的可靠性。
TCP协议使用滑动窗口协议来实现流量控制;使用慢启动、拥塞避免、快速重传和快速恢复算法来完成拥塞控制;使用确认信息包、定时器和重传机制来实现差错控制。这使得传统的TCP协议(TCP-Reno)在高延时带宽积的网络中(特别是卫星网络中)的性能会下降很多,主要是因为卫星链路的大带宽延时积、差错率和链路的不对称性。
在TCP-Reno机制中,数据传输先经过指数增长的慢启动过程,达到门限后进入拥塞避免算法,出错后进入快速重传和快速恢复机制。
二、卫星网络中TCP协议的问题
静止轨道卫星链路往返的时延一般是250ms×2+50ms(地面网处理时延)。当传输带宽为1Mb/s时,采用每报文确认,慢启动过程需要3.91秒;而采用延迟确认机制,慢启动过程需要6.29秒。所以,大多数TCP应用都处在慢启动过程中,从而大大限制了网络的有效使用。
延时积是链路中的最大有效带宽与链路往返时间(RTT)的乘积,它是发送端在接收到确认信息之前所能发送的最大数据量。标准TCP的窗口最大值是64KB(16bit),而静止轨道卫星链路往返时间为550ms。理论上,其最高传输速率为64KB÷0.55s=116.36KB/s。1Mb/s卫星链路的延时积是1Mb/s×0.55s÷8=68.75KB。为了充分利用带宽,必须在接收到确认信息之前发送足够多的数据到网络中,这就需要扩大TCP连接的窗口。
卫星链路的差错增加,丢失的数据包就要重传。TCP协议假设数据丢失是由于阻塞引起的,这样会降低传输速率,链路利用率下降了。反向链路的确认包丢失,会让已经接收到的数据包重传。另外,卫星链路的差错具有突发性,而快速重传和快速恢复算法不能处理单个窗口内的多个错误,阻塞避免机制也会限制传输窗口的增长。由于卫星链路需要更大的窗口尺寸,突发错误的影响就更大了。
卫星链路的报文段和确认包传输的路径不同,如果是非对称信道,确认包的阻塞和丢失有突发性。这样发送数据流会有突发性,拥塞窗口的增长速度减慢,快速恢复算法的效率也降低了。
三、对卫星链路TCP算法的改进
为了TCP协议能更好地在卫星链路上传输,有必要对TCP协议进行改进,主要是缩短慢启动过程的时间和提高最大可用速率。
1. 缩短慢启动过程的时间
主要包括以下方法:
(1)加大初始窗口。这允许发送端在第一个往返时间内发送更多的报文包,收到更多的确认信号,这样拥塞窗口增加更快。
(2)采用字节计数。这时拥塞窗口的增加数量是由每个确认所覆盖的先前末确认的字节数目来决定的。这种算法需要改变TCP协议栈,由于拥塞窗口增长过快,所以不能用于共享网络。
(3)选择性确认。接收端告诉发送端所有接收成功的数据段序列号,发送端只重发那些丢失的数据段。这种算法对卫星链路中的TCP性能有很大改进。
(4)拥塞报告。在网络拥塞时,拥塞报告机制会通知终端节点,让其减小传输速率,如果报文丢失而没有拥塞指示,则报文丢失就是由链路差错造成的,发送端无须降低其传输速率。这种方法要IP支持拥塞报告域,所以所有路由器都需要改进。
(5)TCP Vegas用设定传输速率来实现拥塞控制。计算出测量速率与期望速率的比值(期望速率=传输窗口/基本往返时间),尽量让测量速率接近期望速率,TCP Vegas在达到平衡状态后不再改变传输窗口大小。但是,在不对称的信道中,测出的往返时间大多是由反向链路上的拥塞产生的,因此,TCP Vegas在非对称链路中工作性能并不好。
还可以使用虚报文段来探查网络资源,用未确认的数据段当虚报文段,以提高传输效率。
另外,卫星传输协议STP是针对卫星链路设计的一种可靠的、面向字节流的数据传输协议。STP使用否定确认而不是TCP中采用的肯定确认,只有接收端要求重传的报文才会被重传。
通常对卫星链路中TCP的改进都是以上技术的综合使用,例如空间通信协议标准-传输协议(SCPSTP)。该标准对TCP协议进行了改进,并保持了与IP协议的完整互操作性。它主要包括:时标和窗口缩放(RFC1323)、往返程时间的测量(RFC1323)、序号重叠保护(RFC1323)、选择性否定确认(RFC1106)、包头压缩(RFC1144)、低丢失拥塞控制(Vegas)或可选的无拥塞控制、差错响应。
2. 提高最大可用速率
主要包括以下方法:
在端到端的解决方案中,互联网工程小组已经把TCP协议中确认窗口由16位改为30位,最大接收窗口由65535B增加到1073.7MB。这样,在往返时延为600ms的卫星链路中,连接的最大数据传输速率由106.7KB/s升到1.79GB/s。
在基于代理网关站的解决办法中,为每个TCP连接增加一个缓存,将没有得到接收端确认的数据包存在代理网关站的缓存中,由代理网关站给数据发送端送出确认收到的信息。这种做法对每个连接大约需要200KB到500KB的缓存,同时网关站的数据处理能力也要很强。
四、结束语
总之,随着卫星技术的不断发展,带宽不断增加,卫星交换技术也在不断优化。对于其应用的业务也需要综合考虑,针对不同应用,所使用的通信协议也可以不同。双向交互的协议已经不是可靠数据传输必备的条件,单向传输协议在IP层的应用越来越多。通过前向纠错、授权认证和定速播发等技术,单向传输有了越来越多的应用方式。通信链路协议层的单向传输,在应用层双向交互做为补充,有卫星应用上有很好的发展前景。