流控制传输协议(SCTP),SCTP的结构和内容是什么?
随着IP网向多业务网的发展,尤其是近年来VoIP的发展,在IP网中传递信令消息成为必然。而在IP网中不能提供类似MTP3和ATM这种高质量的传输业务,于是ITU-T提出了SSCOP的改进版本—多链路和无连接环境中的SSCOP(SSCOPMCE),用于在基于IP的网络中传输信令消息。但是,SSCOPMCE较之SSCOP只是附加定义了与IP和UDP的适配接口,并未针对IP网相对ATM网高得多的丢失率和时延等特性,在流量控制和差错控制机制方面做出什么改变。因而,SSCOPMCE实际上只能在有一定传输质量保证的内部或专用IP网上使用 其他一些研究机构则提出了新的IP网络上用于传输信令的协议,如可靠信令传输协议RSTP。
IETF的信令传输工作组(SIGTRAN)则正在定义和完善另一种传输信令消息的机制,这就是刚刚成为IETFRFC的流控制传输协议(SCTP)。该协议使得信令消息在一个基于IP的公共分组交换网上完成交换,流量控制和差错控制被端到端地执行,有效性的提高则通过使用一簇“应用服务器过程”(Application Processes)和“多宿节点”Multi-homed nodes得以实现。这样,利用SCTP,用户平面和控制平面上的业务流都能在单一的IP网上传输。
一、流控制传输协议(SCTP)概述
目前IP网中的信令消息交换通常是使用UDP或TCP来完成。但这两者都不能完全满足电信网中信令承载的要求。
UDP是基于消息的,提供快速的无连接业务。这使其适合于传输时延敏感的信令消息。但是,UDP本身仅提供不可靠的数据报业务。而差错控制,包括消息顺序、消息重复检测和丢失消息重传等,只能由上层应用来完成。
TCP虽然提供了差错和流量控制,但对于传输信令消息来说,却存在着诸多缺陷:
TCP是面向字节流的。这意味着消息的描述必需由应用来完成,而且要在消息结束时显式通知TCP以迫使其立即发送相应的字节数据;
许多应用只需要信令消息的部分有序,例如属于同一呼叫或同一会话的消息就是这样。而TCP只提供严格的数据按序传输,这会导致不必要的队头阻塞并使消息的传输时延增大;
TCP连接直接由一对传输地址(IP地址和端口号)识别,从而无法提供对多宿主机的透明支持;
典型的TCP实现不允许高层应用设定协议控制参数。但是一些应用可能会需要调节传输协议的属性以满足其特定要求,例如某些信令协议有较高的时延要求,而另一些信令协议则只要求较高的可靠性。 而SCTP和发展了UDP和TCP两种协议的长处。它一方面增强了UDP业务并提供数据报的可靠传输;另一方面,SCTP的协议行为类似于TCP并试图克服TCP的某些局限。正如IETF RFC2960中定义的:SCTP是可靠数据报传输协议,它运行于提供不可靠传递的分组网络上,如IP网。它向用户提供下列服务:
用户数据无错误无重复的确认传输;根据检测到的MTU长度进行用户数据分段处理,避免IP层的分段;在多个流(stream)间的用户消息有序递交,及单独用户消息按到达顺序递交的选项;可选的多个用户消息至SCTP数据报的复用;通过支持一个关联的一方或双方节点的多宿特性,实现网络级容错。 SCTP的设计目标包括恰当的拥塞避免特性以及对泛洪和伪装攻击的抵抗力。
流控制传输协议SCTP名称中的“流”(stream)是指本协议能够处理每个关联中的若干个用户数据报流,并且为每个流中的用户数据报提供有序传送。流子层的存在使得其他流中数据丢失造成的队头阻塞情况得以避免。
用户数据无错误无重复的确认传输通过分组序列间隙报告和选择性重发来实现。SCTP采用了与TCP基本类同的流量控制和拥塞控制算法,引用了慢启动机制。只是在数据分组的确认和重传机制上,明确将选择性确认作为标准的一部分,规范了选择性重传和快速恢复机制。
1.协议结构
RFC2960将SCTP协议分解为功能性独立的模块,并模型化了与操作系统功能的接口(例如定时器)。这种分解对于协议实现时的结构化程序开发很有好处。
一个SCTP系统实例包含下述模块:
(1)消息验证和分发,验证SCTP数据报并识别其相应的关联。
(2)路径管理,监视一个关联对端的不同传输地址的可达性。
(3)复用/解复用,复用/解复用一个关联的若干个数据和控制数据块到/从一个SCTP数据报中,该数据报是在一个IP分组中被传输的。
(4)窗口和流量控制,实现类似TCP的流控和拥塞避免机制。
(5)SCTP控制,用于控制关联的状态
(6)可靠传输,缓冲存储发出的消息直到其被关联对端确认接受,并在必要时发起重传。
(7)接收控制,监视所有的到达消息,生成所需的确认控制数据块。
(8)流引擎,实现各个流的用户数据报顺序提交,并在必要时完成对过长用户数据报的分段和重装。
2.SCTP关联
与TCP类似,SCTP也是面向连接的。但是,SCTP中的关联概念要比TCP中的连接概念含义更广。一个关联的两个SCTP端点都向对方提供一个SCTP端口号和一个I[地址列表,这样每个关联都由两个SCTP端口号和两个IP地址列表来识别。在一个关联内的拥塞控制机制与TCP的拥塞控制机制类似。
一个“关联”Association是由多个单向的“流”(Stream)组成的。各个流之间相对独立,可以单独发送数据而不受其它流的影响,也可以共同实现用户数据的有序递交。流的建立和拆除过程相对独立、简单。而关联的建立过程相对而言就比较复杂,是个“四次握手”过程,而且其中要用到cookie的概念。所谓cookie实际就是一个含有端点初始信息和加密信息的数据块,在关联建立时被涉及的双方处理并交换。引入这种机制的目的在于增强协议的安全性,防止拒绝服务(Denial of Service)和伪装等潜在的攻击。
3.故障管理
SCTP提供了较TCP强大得多的路径状态监控功能。其引入的“多宿主机”概念,使得一个连接可以在多个传输路径间选择和切换,提高了网络级容错的能力。SCTP定义了Heartbeat消息。当某路径空闲时,就会有相应的Heartbeat消息生成并发送到对端,而对端必须立即发回相应的确认消息。这种机制被用来精确测量回路时延RTT,而且可以随时监视链路的可用情况并保持链路的激活状态。Heartbeat消息的发送间隔可以根据用户的需求而灵活改变。
此外,数据报重发的数目在两个级别上被进行统计。路径级,或者说流级的重发次数统计用于确定此路径是否处于非激活状态。而关联级的统计用于判定某个远端端点的可达性。
SCTP的应用
1.IP网上七号信令传输的总体框架
IETF提出的IP网上传输七号信令的总体框架在RFC2719中进行了描述。SCTP在信令传输方面的主要应用是在信令网关(SG)和媒体网关控制器(MGC)之间传输ISUP消息。SG是位于SS7网络和IP网络之间的网关,它处理所有的MTP相关的任务,但不包括SS7用户部分。这个用户部分(典型的是ISUP)位于MGC内部,MGC和SG通信并通过IP网来控制媒体网关(MG)。一个MGC可以与多个SG关联在一起,已达到冗余和可能的负载分担的目的。在这种框架之下,从基于MTP的网络来看,SG可以被看作是信令传输点(STP),而MGC可以被看作是信令端点(SEP)。通过使用SG,MGC可以与MTP网络中的SEP互相透明地进行通信。利用基于IP的信令传输,使得建立无MTP协议栈的业务控制点(SCP)成为可能。这样,ISUP消息就可以在SG和SCP之间传输。
2.应用服务器簇
虽然SCTP是试图克服TCP的某些局限并作为通用传输协议来设计的,但用于IP网上的信令消息传输是SIGTRAN工作组内开发SCTP的一个主要动力。仅利用多宿节点主机和SCTP的相应特性,还不足以满足SS7网络苛刻的可靠性要求,因为它必须避免单节点失效。因而SIGTRAN组中讨论的上层协议(ULP)要使用“应用服务器过程(ASP)”簇的概念。这个簇被称为“应用服务器(AS)”,ULP提供功能实体来管理这些簇,也就是说,有控制消息可以使得某个ASP中止或者激活等。值得指出的是,有可能在不同的主机上运行一个AS的多个ASP。此外,还可能实现一个AS的多个ASP之间的负载分担。在上面提到的互通结构中,一个AS对应于一个MGC。通过在不同主机上的运行这个AS的多个ASP,就可以得到一个分布式的MGC。
3.SCTP的上层协议适配层
适配层的定义使得可利用基于IP的信令传输协议而不影响上层接口。例如,要将ISUP消息在IP网络上传输,ISUP本身不必作任何改动。为了传输SCCP和ISUP消息,MTP第三层(MTP3)和SS7用户部分之间的原语必须被传输。除M3UA之外,用于MTP2的适配层M2UA、ISUP的适配层IUA和SCCP的适配层SUA也已被定义。M2UA提供MTP2和MTP3之间原语的传输,IUA和SUA分别使ISUP和SCCP用户消息能够直接被SCTP承载传输。
答:SCTP即流控制传输协议,它是一个基于IP网的新的端到端传输控制协议,它最根本的目的是在IP网的基础上传输源于传统PSTN网上的信令数据,通过在无连接的IP网络上传送PSTN信令消息,从而可以在IP网上提供可靠的数据传输,它是一种新型的IP传送协议,与TCP、UDP处于同一层