您的位置:首页 > 理论基础 > 计算机网络

SCTP与TCP的功能对比及应用分析

2010-06-26 16:37 246 查看
(重庆移动通信有限责任公司 重庆 400041)

  摘 要 本文讨论了IP网中新一代传输协议——流控制传输协议(SCTP)的特性及应用,并对SCTP和TCP的功能和应用进行分析比较,可以给协议的使用者在选择使用何种协议时提供参考意见。

  关键词 流控制传输协议 关联 多宿主机 协议安全

1 流控制传输协议(SCTP)发展简介

  随着IP网向多业务网发展,尤其是目前IP电话、IP视频会议等业务的发展,在IP网中传送信令信息成为必然。目前IP网中信令消息的交换通常是使用TCP或UDP完成,但是这两个协议都不能满足电信运营网中信令承载的要求。

  为适应IP网成为电信运营核心网的发展趋势,IETF 的信令传输工作组(SIGTRAN)一直在研究和制定IP网新一代的传输协议,并在IETF RFC 2960中定义了流控制传输协议(SCTP,Stream Control Transmission Protocol)。SCTP是面向连接的可靠传送协议,它向上层应用提供了下列服务:

  · 应用数据的无错误无重复的可靠传输;

  · 根据检测到的MTU长度进行数据包分段处理,避免IP层的分段;

  · 在多个流间的用户消息有序递交,及单用户消息按到达顺序递交的选项;

  · 通过支持关联的多宿主机特性,实现网络级容错。

  SCTP是为传输信令业务流而制定的,它本身所具有的、优于TCP的一些先进协议机制,如选择性重传、无序递交和支持多种网络特性等,使得SCTP能够在一定程度上满足高性能传输的需求。而且,SCTP采用了类同TCP的流量控制机制,不存在类似基于UDP的实时媒体流对TCP性能造成的劣化干扰问题和公平性问题。因此,SCTP将有可能取代TCP,成为下一代IP网上面向连接的可靠传送层协议。

2 TCP的不足

  TCP是目前Internet上应用最广泛的面向连接的传送层协议,它为通信的两端提供了可靠的数据传输,而且提供了流量控制和拥塞控制功能。由于原来IP网提供的是“尽力而为(best-effort)”的服务,因此TCP存在许多不足之处:

  · TCP是面向字节流的。这意味着消息的描述必须由应用来完成,而且要在消息结束时显示通知TCP以迫使其立即发送相应的数据。

  · 许多应用只需要信令信息的部分有序,例如属于同一呼叫或同一会话的消息就是这样。而TCP只提供严格的数据按序传输,这会导致不必要的队头拥塞并使消息的传输时延增大。

  · TCP连接直接由一对传送层地址(IP地址和端口号)识别,无法提供对多宿主机的透明支持。

  · 典型的TCP实现不允许高层应用设定协议控制参数。但是一些应用可能会需要调节传送层协议的属性以满足其要求,例如某些应用有较高的时延要求,而另一些则只要求较高的可靠性。

3 连接与关联

  TCP中的连接是指两个TCP端点通过“三次握手”过程建立的由一对传送层地址(IP地址和端口号)识别的传送通道。

  在SCTP中, TCP中的连接被引申为关联(associ-
ation)。一个关联的两个SCTP端点都向对方提供一个SCTP端口号和一个IP地址列表,这样每个关联都由两个SCTP端口号和两个IP地址列表来识别。在一个关联内的拥塞控制机制与TCP连接的拥塞控制机制类似。

  一个关联是由多个单向的流组成的。各个流之间相对独立,可以单独发送数据而不受其他流的影响,也可以共同实现用户数据的有序递交。流的建立和拆除过程相对独立、简单。而关联的建立过程相对而言就比较复杂,是个“四次握手”过程,而且其中要用到“cookie”的概念。所谓“cookie”实际就是一个含有端点初始信息和加密信息的数据块,它在关联建立时被通信的两端处理并交换。

4 SCTP的多宿主机特性及应用

  SCTP支持传送层的多宿主机服务。当网络发生故障时,多宿主机服务可以增强网络的健壮性(robustness)。在某些应用场合,这个特性非常重要。SCTP对多宿主机服务的支持要求关联的一端或两端在不同的网络接口上分配有多个IP地址。

  一般来说,要在通信的两端实现真正的故障弹性恢复,每个端点都需要有一个以上的IP网络接口,以支持多宿主机服务。在这种情况下,路径使用的数量就是所有端点的网络接口的最小数,此时端点要正确选择自己的源地址才能获得最佳路径。但是,如果端点总是使用同一个源地址,那么端点就同样会出现单点故障。因为当端点选择一个源地址时,它总是选择数据包的源地址来对应网络接口的IP地址,而在网络接口上数据包将受到绑定地址的限制。换句话说,由于绑定地址的限制,端点永远都不能选择不属于该SCTP关联的源地址,同时对端端点也必须认可该SCTP关联使用的任何一个源地址。

  当端点在一个多宿主机上时,如果关联的两端绑定有多个地址,SCTP关联的可用性将大大增强。利用多宿主机这个特性可以在两个SCTP端点间建立冗余的路径,这对那些一直寻求在网络的传送层次就能提供容错机制的应用特别有用。要在SCTP的两个端点间建立冗余路径,要求两个端点的设备都必须有多个接口,并分配多个地址,而且必须配置好路由。

  因此,通过“多宿主机”特性,SCTP提供了较TCP强大得多的路径状态监控功能。SCTP可以监测远端地址的可达性,当远端地址不可达时,它能通过使用备用地址替换主用地址实现故障的自动恢复,而且这一过程不需要上层协议的干预。也就是说,“多宿主机”特性可以使一个关联可以在多个传输路径间选择和切换,从而提高了网络级容错的能力。

5 TCP与SCTP的安全比较

  1. TCP的安全问题

  一些TCP应用被公认会受到DoS攻击。例如,攻击者可以通过发送大量的连接建立请求(TCP-SYN数据包)来攻击目的地,有可能来自伪装的IP地址。被攻击主机将不停地发送SYN-ACK数据包来回复,并进入SYN-received状态,甚至SYN队列将被挤满(例如,等待建立的连接数会达到一个极限),而且它将拒绝新的连接建立请求。

  另外,伪装连接是对TCP的另一个潜在威胁。通过猜测有效的序列号,攻击者将可能伪装成一个合法连接。但是,通过使用一个安全的Hashsum算法,对目前SYN-cookie进行伪装的攻击的可能性只有1/224。例如当使用SYS-cookie时,要成功作为一个伪装的连接时,攻击者将不得不发送224个数据包。

  2. SCTP的安全机制

  SCTP在设计时就充分考虑了TCP的不足。为防止攻击者发送伪装的SCTP数据包到现有的连接中,SCTP的两端都使用一个称为“认证标记”的32bit数据来确保数据包真正属于现有的连接。因此,除了合并属于一个连接的源端口和目的端口的地址外,一个有效的SCTP数据包还必须有一个正确的标记。

  跟TCP不同的是,SCTP要求在连接建立时必须使用“cookie”。对服务器来说,必须交换3个信息包(INIT、INIT-ACK、COOKIE-ECHO),才能建立一个完整的新连接。“cookie”是个长度可变的,包含所有和在服务器端初始化TCB的相关数据,加上使用HMAC来确保它的安全。HMAC是在cookie中用来计算的,是一个保密、服务器所拥有的key。引入这种机制的目的在于增强协议的安全性,防止DoS攻击和伪装等潜在的攻击。

  同使用SYN-cookie的TCP相比较,SCTP被攻击者伪装的可能性大大降低。因为,攻击者不得不去猜测包含在cookie中的HMAC值。可能性小于2128。

  值得注意的是,SCTP仅仅试图来增强网络的可用性,它没有包含任何直接和用户信息认证、完整性和保密功能的协议机制,因为这些特性主要取决于IPSec协议和应用层协议的安全特性。

6 SCTP与TCP的功能及应用比较

  由于SCTP也是一个面向连接的协议,可提供所有TCP能够提供的传送层服务。因此,现有的许多Internet应用将面临选择使用TCP或SCTP,来满足他们对传送层服务的需求。需要注意的是,对处理成本比较敏感的应用,在使用SCTP或TCP得到的服务是不一样的,SCTP可以为应用提供一个单独定制的流传输,而TCP为应用提供的是一对地址。

  当然,SCTP还具有一些TCP所不具备的功能,这样,在某些应用场合,选择SCTP实现传送层服务将是更好的选择。SCTP在一个连接中可以支持多个独立用户信息流的发送。正确使用该功能,可以有效减少所谓的“head-of-line-blocking”问题带来的影响,在TCP中出现该问题,主要是因为数据包的发送有严格的顺序控制。因此,对那些需要在一个连接中同时支持多个逻辑上独立的信息流传送的应用,SCTP就特别有用。
  SCTP保留有应用信息的边界。当应用数据不是连续的字节流,而是要接收端单独处理大块的数据包时,该功能就非常有用。相反,TCP在提供可靠数据流传送的同时,并不能指出应用中包含的大块数据包。

  SCTP支持没有指明应用类别的用户信息的传送,而且能够保证数据的可靠传送。对那些需要发送没有顺序的可靠信息流的应用,或者喜欢使用自身的信息排序机制的应用,SCTP的这个功能就特别有用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、SCTP基本概念 

1.多宿性 
多宿是指一个SCTP 端点可以通过多个IP地址到达,这样两个SCTP端点在建立了偶联后,数据可以通过不同的物理通路进行传送。 
ATM 交换机偶联的两个端点A和B各自绑定两块不同的IP地址的接口卡,通过卫星电路和ATM两种方式连接。其中一个地址被置为首选,另一个则作为可选,当首选通路出现错误时可以通过可选通路继续进行数据传输而不会导致传输中断,直到首选通路恢复。上层应用可以显式声明使用可选通路,丢包重传也可以在可选通路上进行。 
2.多流性 
SCTP通过数据传输和数据递交相互独立来实现多流特性。每个DATA数据块在协议中使用两套顺序号:传送顺序号TSN和流顺序号SSN。当一个用户消息被分段后,必须在该消息的每个分段中带有相同的SSN,这样才能从一个流中分辨出不同的消息。当用户消息被分段到各个DATA块中,接收方就要使用TSN对消息进行消息重组,即被分段的用户消息的各段必须使用连续的TSN。SCTP允许数据接收端确定TSN是否出现间隔,以及在间隔后收到的消息是否属于同一个被影响的流中。如果TSN出现间隔,SSN也出现相应的间隔,则收到的消息就在被影响的流中,否则SSN不会出现相应间隔。接收方可以继续在未受影响的流中传送消息,仅缓冲被影响的流直到被重传,各流相互独立,解决了在TCP单流中容易出现的队头阻塞现象。 
3.阻塞控制机制 
SCTP阻塞控制同样是基于速率自适应窗口的机制,通过重传的方式提供可靠的数据传输。SCTP和TCP的阻塞控制机制有几点不同: 
(1)SCTP采用与TCP相似的基于SACK间隔报告的快速重传机制,但SCTP没有一个显式快速恢复阶段,借助SACK块SCTP自动进入快速恢复。 
(2)SCTP强制使用SACK,在TCP中SACK的使用是可选的。在遇到单个数据窗口发生连续丢包时,SCTP更为健壮,避免了耗时的慢启动阶段,节省了带宽,同时提高了吞吐量。 
(3)SCTP在慢启动或阻塞避免时,阻塞窗口大小随着确认字节增加,而TCP中则是随着接收到的确认字段增加。SCTP改善了在长传输延迟的环境下(如卫星链路)的传输性能。 
(4)SCTP 在阻塞避免时,阻塞窗口只有在整个窗口被充分利用才增加其大小。此外,如果SCTP端点保持一个低的发送速率,而没有充分利用阻塞窗口,这时网络不会产生丢包指示,阻塞窗口不断增大,此时发送端突然发送一个超过阻塞窗口的突发数据流,结果会造成网络更加阻塞。 
(5)SCTP规定发送端收到4个重复确认后开始快速重传,而在TCP中是3个。 

 

4.安全机制 
传输协议可用于传输像计费或信令消息这样的敏感信息,SCTP中提出了服务的可用性和消息的完整性两个目标。 
对服务的可用性而言,常见的威胁是拒绝服务,根源就在于目标主机为每个未决的连接在内存中保留了大量无用的状态信息,最终耗尽系统资源。SCTP采用“四次握手”的连接建立方式和COOKIE机制消除了SYN攻击的威胁,解决了为未决的连接保留状态信息的问题。服务器端只有在收到COOKIE ECHO消息后才从关闭状态进入建立状态,此前的关闭状态不为客户端的请求保留任何状态信息。Cookie放在INIT ACK和COOKIE ECHO消息中在端点间传送,服务器能够从COOKIE ECHO中提取出建立正常偶联要求的所有信息。Cookie机制设立的主要用意是将状态信息存储在客户端或者网络上, 而非服务器内存中,它的使用将服务器资源预留的时间推迟到了Cookie带回完整的鉴别信息后。这是一种简单有效的防御DoS攻击的方法。 
如果攻击的目的是信息的完整性和机密性,那么SCTP载荷将是攻击的目标。SCTP用IPSec(IP Security)或传输层安全(Transport Layer Security,TLS)来保护载荷。 

三、问题与挑战 

作为一种相对新型的协议,SCTP仍然面临着许多问题要解决,下面简单介绍一下: 
(1)No.7信令传输有严格的可靠性需求,但至今没有大规模利用SCTP协议在IP网上传输No.7消息的可信的结果报告,仍有许多的仿真和实验工作要做。 
(2)SCTP假定所有的数据丢失都是由阻塞引起的,而且RTT也在逐渐慢速变化。 
(3)不中断数据传输即能动态增删地址对一些关键应用或移动环境很有益,但需要增加新的块定义和参数类型,目前正处于IETF草案阶段,而且又引入了额外的风险:流量重定向攻击。 
四、结束语 
虽然SCTP最初是作为一种为了在IP网络上传输信令消息而设计的,但它与生俱来的新特性使越来越多的人认为SCTP将会是一种新型通用传输协议,甚至可能会替代现有的TCP协议成为下一代网络主要的传输协议。 
目前,SCTP已被3GPP采纳,许多设备厂商都已经完成了各自的协议和互通测试,但大规模应用的仿真工作仍在进行,SCTP在无线互联网下的应用及性能评估也在进一步研究中。 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息