□ 北京大学电子学系 金野 项海格
TCP/IP协议的概念产生于70年代,并在80年代得到了迅速的完善和发展。在90年代,TCP/IP协议已毫无争议地确立了在数据通信协议中的主导地位。至今,TCP/IP协议已经是数据通信标准的代名词,是唯一可以通达世界范围内Internet联接的通信协议,也是任何数据用户终端最先支持的协议标准。随着网络通信容量的不断增加和计算机信息处理能力的不断提高,TCP/IP协议正在成为“唯一”
的选择,所谓“Everything Over IP”。卫星通信是数据通信网络的重要形式,传统上是作为“通信子网”,即只支持网络层以下的功能,是数据包传输的透明通道。为更有效地提供数据传输业务,减少与其他网络协议的接口转换,TCP/IP在卫星通信网中的应用已受到关注。
我们将讨论TCP/IP协议在卫星通信网中应用产生的问题和相应的解决办法,我们也认为TCP/IP协议在卫星通信网中的应用是完全可行的,通过对一些TCP/IP协议工作模式和参数的调整,能实现卫星通信网对TCP/IP协议和其他基于TCP/IP协议的数据传输业务的高效、可靠的支持。
一、TCP/IP协议
首先对TCP/IP的定义和主要功能作一个简要的总结。描述数据通信协议的最通用和清晰的方式是参照OSI七层协议的标准。图1是TCP/IP协议结构与OSI七层协议结构的相关定位。如图1中所述,TCP/IP协议是一个包含了主要的网络层功能,全部传输层功能和一部分会话层功能的协议栈(stack);它向下依靠低层的介质访问层、数据链路层和物理层协议提供的点对点数据包传输能力;它向上通过标准的服务接口(socket)向上层应用协议提供端到端的数据块传输业务,这一数据块传输可以是面向联接的可靠传输(TCP),也可以是面向报文的非可靠传输(UDP)。TCP也完成会话层的一部分功能,支持端到端连接的建立、维持和拆除。总之,TCP/IP协议遮掩了不同类型网络间数据转接的细节和不同数据终端设备的系统软硬件的差异。
利用OSI中对各层协议的定义,可以较简明的说明TCP/IP的主要功能:(1)IP层协议,它实现网络层的寻址、路由和转接功能,将数据报文从源数据设备转发到目的设备,只面对独立报文,不面向联接,它支持报文的分解与重组,不保证报文传输的可靠和报文间的先后次序;(2)TCP层协议,它实现源数据设备和目的数据设备间的可靠的数据块传送,支持数据拆、打包(PAD)、差错控制(检错纠错)、顺序控制、流量与拥塞控制等。
卫星通信主要是传送数据的通信子网,而不是产生数据源的业务子网。卫星通信网的主要功能是支持网络层以下各层的数据包传送业务,与IP层协议直接相关并可以支持IP层协议形成端到端连接。但由此形成的端到端联接的延迟、速率、误码率等信道特性会对终端设备上的TCP协议产生实质性影响,是TCP协议在卫星通信网中应用必须考虑的问题。
二、TCP/IP协议在卫星网中的应用
由于卫星通信是经过天上卫星转发器这一固有的特点,卫星通信网基本上有两种网络结构:星状网和网状网。这样的网络结构相对于地面的数据网络来说要简单的多,因此,路由选择、拥塞控制、多路径传输冲突等网络层协议控制的主要功能在卫星网中都没有真正的体现,而这些正是IP协议的强项,所以很少有卫星通信网使用复杂的IP协议来实现网络层功能。
正如IP over ATM,IP over Frame Relay等IP应用环境一样,卫星通信网支持IP协议的最简单方式也是IP
over SatNet。这里,SatNet是卫星网内部网络层以下各层数据传输协议组成的协议栈,通常会有一个能完成卫星网内数据包目的寻址和路由转接的网络层。在一些使用DAMA等频道资源复用技术的卫星网中,还需要有一个动态分配资源的介质访问层(MAC)。这两部分统一称为Net/MAC层,建立于其下层提供的数据链路层服务之上。
这样一种IP over SatNet的模式可以用图2的协议层状图来描述。
在很多情况下,如在一个网格状卫星网中,卫星链路的建立便确定了数据链路的唯一路程,既没有寻址路由的要求,也不需要资源配置。这时可以取消图2中的Net/MAC层。这时IP是“透明”地经过卫星网,没有额外的协议开销。这种情形似乎对TCP/IP协议在卫星网中的应用的必要性提出了挑战。但这种网络形态在卫星网的拓扑结构和数据业务都非常简单,仅限于在严格的“通信子网”的情形下才成立。随着卫星网功能的增强,这一简单的网络形式已不再适用。例如,网络管理已成为卫星通信网的必要组成部分。从功能上看,网络管理子系统属于上层应用软件,即Application。它依赖于下层的通信协议提供的数据传输服务。现在最为通用的网管协议是SNMP(Simple
Network Management Protocol),而SNMP是建立在UDP提供服务的基础上的,在不直接支持IP协议的“透明”网络结构中,类似SNMP的数据传输协议和使用这些协议的上层业务都无法实现,根本限制了卫星网的功能与服务。仅凭这一点,就足以说明在卫星数据通信网中支持TCP/IP协议的意义。TCP/IP协议正是依靠其广泛的软件支持而压倒其他可能在“技术上更好”的通信协议而成为Internet的标准。
支持TCP/IP协议的卫星通信网协议层状结构如图3所示,各网络节点都支持IP协议。
三、卫星通信网对TCP协议控制的影响
支持IP只是在卫星网中实现了IP数据包的非可靠传输,差错和流量控制这些保障通信质量和效能的协议控制,都是由两端数据终端上的TCP协议来实现的。相对于各种类型的地面网,卫星网的突出特点就是大的传播延迟,一跳的延迟达到0.25秒。这不是说卫星网没有其他的特点,卫星发射、接收、调制解调等都有着鲜明的特点,只不过这些特点都在物理层和数据链路层,对上层的IP和TCP协议没有影响(层状协议优点的体现)。TCP所见的是一条端到端的逻辑通路,由传播延迟、误码率、信道速率等参数所定义。对同步卫星通信网,这些数值的典型值有:传播延迟Td
= 0.25s / 跳;误码率Er = 10-4 ~ 10-7 信道速率R = 2.4 Kbit/s ~ 4Mbit/s。TCP的差错和流量控制是一个相当复杂的问题,这里只讨论其基本的机制和参数。
TCP采用窗口发送、逐帧应答、超时重发的方式实现差错和流量控制。TCP基本模式具体采用以下机制。
1.发送窗口控制。发送窗口可以编程设定,但更主要的是依靠TCP协议本身调节。TCP协议可通过在数据帧和应答帧中加入时间标签的方式来测定环路的双向传播延迟RTTM(Round
Trip Time Measurement),并进而根据信道速率确定窗口长度。对最大发送字节数的另一个限制是接收方的数据缓存长度,在TCP基本模式中这个值是64Kbytes。
2.纠错重发。采用Go-back-to-N的重发方式,即从收方应答中发现错误的帧,重发这一帧直到发送窗口中已发送的最后一帧。
3.慢启动与拥塞控制。在TCP协议的正常使用环境,尤其在有可靠的数据链路层差错控制的条件下,一个或多个IP包的超时丢失意味着网络发生拥塞,网络中的IP转接节点开始丢弃IP包。在这种情况下,继续按原窗口发送会造成进一步的阻塞。TCP协议此时会把发送窗口缩小到1个IP包,并在接到成功应答后逐次(每次递乘以2)增大窗口到原有的设定值,即所谓慢启动与拥塞控制。
影响TCP差错与流量控制的最重要参数,是端到端逻辑信道的归一化传播延迟a=信道传播延迟/数据包传输延迟
即a=Td /Tf =(D/E)/(L/R),其中, D:收发两端间传输介质长度,E:电波在介质中的传播速率,L:数据包比特长度,R:信道比特速率。
通过卫星通信网的端到端传播延迟是卫星网内传播延迟与地面网传播延迟之和,在多数情况下以卫星信道传播延迟为主,即Td≈0.25s,所以a=R/4L
。其中,L由TCP协议决定。对TCP基本模式,长度在40 bytes到1024 bytes之间。设卫星信道速率为端到端的有效速率(卫星信道速率通常低于地面网信道,是速率瓶颈),对应于500
bit ~ 10000 bit的包长,2.4kbit/s ~ 4Mbit/s的速率,可知a的范围:a=0.06~2000。
窗口发送方式下,为避免发送窗口不必要的限制发送数据流,最多可发送IP包数的窗口值Wp应高于(1+2a),即Wp≥0.12~4001。在TCP协议中,发送窗口单位不是最多可发送数据包数,而是最大可发送字节数Wb。显然,这个数值不能高于收方的接收缓存长度,对TCP的基本模式而言,这个值是64Kbytes。
依照前面的数据,卫星通信网发送窗口字节数:Wb=Wp×L/8=R/16,Bytes对4Mbit/s速率而言:Wb=250Kbytes>>64Kbytes。这表明TCP的基本模式在高速卫星网中直接应用会出现发送窗口限流,将发送效率降到仅约25%,因此有必要对TCP参数加以调整。
如上所述,在使用不限流发送窗口时,最多已发送而未应答的数据包可以多达数百甚至数千;在误码率10-6的较好情况下,1个1024
bytes长度数据包的误包率可达1/10。这时Go-back-to-N重发机制根本无法工作,必须使用选择重发(Selective-resending),即只重发收方指明出错的数据包。同时,这样大的发送窗口也会直接影响到慢启动和拥塞控制。TCP基本模式的这两种控制此时需要很长的时间使窗口回复到正常值,会极大的降低发送效率。此时TCP协议可使用比1更大的初值和比×2更大的步进方式来提高传输效率。
综上所述,卫星通信网的长传播延迟在较高信道速率下会造成TCP协议传输效率下降。由于TCP协议是在两端实行控制,卫星网对这一调整无能为力。而TCP协议的一些扩展模式提供了适应于这一信道条件的机制和参数。
四、TCP协议的扩展
下表1所示的TCP报头定义中,在20bytes长度的既定报头外,允许40 bytes的选择报头。这一选择项为TCP协议的扩展留下了空间。
在TCP建立端到端联接时,要经过SYN/ACK握手才能实现同步。TCP协议扩展可在这一握手过程中在选择报头段添加选择项参数,通过参数握手定义不同于基本模式的扩展参数。这些扩展参数只对本次TCP联接有效。
TCP扩展协议RFC1323、RFC2018、RFC2581和RFC2001支持的协议扩展直接解决了TCP在卫星网中的应用所遇到的问题。
RFC1323针对延迟大、速率高的网络,即所谓的“Long-and-fast Network”。通过前述的扩展参数握手,收方可以响应发方请求,在本次联接中将接收缓存区调整到大于64k
bytes,一般取2n·64k bytes。这样允许发方使用更大的发送窗口,提高传输效率;RFC2018定义了Selective-Resending的选择重发模式,使TCP在大发送窗口和较高误码率的情况下也可以高效工作,适用于卫星网的应用。应注意现今并非所有的TCP协议版本都支持这个扩展;RFC2581和RFC2001定义通过参数握手可使用不同于基本模式的慢启动和拥塞控制参数,使用户在卫星网中使用TCP协议时可以根据实际情况选择合适的参数。
这些TCP协议的扩展有效地解决了在卫星网中支持TCP/IP协议所遇到的问题,显示了TCP/IP协议作为最受广泛支持的协议标准的适应性和灵活性,使得TCP/IP协议在卫星网中的应用更为有效。而且这些扩展是由两端的TCP协议来实现的,没有增加卫星网通信协议的负担。但由于同样的原因,卫星网的开发设计者也较难于针对特定用户业务对卫星网络协议的要求做出反应。由此,TCP/IP协议是完全可以应用于卫星通信网中并得到较高的传输效率。使用TCP/IP协议也使卫星通信网具有最广泛支持的开放协议平台,可以方便的采用主流软硬件开发成果,降低费用,增加数据业务种类。可以说,采用TCP/IP协议将是卫星通信网协议体制的主流方向。
摘自《通信世界》