谈一谈SCTP协议
作者:互联网
在EPC体系结构中,eNodeB和MME之间的S1接口的传输层是使用的是流控制协议SCTP协议。SCTP是一种可靠的面向连接的传输层协议,跟TCP协议很相似。SCTP能够实现拥塞和流量控制、差错控制、数据的丢弃和复制并且支持选择重传机制,进行可靠的信令数据传送的协议。下面我们谈一谈SCTP协议。
什么是信令
这里简单说一下信令,后面很多都带信令两个字。其实很简单,就是终端和终端、终端和网络之间传递的一种消息。说白了就是通信两端,在一端进行状态转移的时候,需要发送信息来通知另一端来做状态同步。然后顺便捎带一些配置信息和控制信息等。信令主要是用来通信连接的两侧做状态同步使用。
对于信令必须具有可靠传送和顺序传送的特点,同时信令数据报文会比较短小,在不同信令报文之间需要明确的分界。
IP传输协议我们常见的主要包含TCP、UDP协议。但是在设计上,由于出发点不同,TCP和UDP都不合适进行信令的传送。
下面我们说说为什么TCP、UDP不合适做信令的传送。
TCP存在哪些问题
我们都知道TCP是面向传输的协议,支持可靠的数据传输、严格的数据发送顺序。上面我们说了TCP、UDP、SCTP在设计上有所不同。有哪些不同呢?
- TCP协议的设计目的是面向比特流的传送,不关心传送的数据内容和形式。只是
把传送内容比作二进制的数据流。由于信令的比较短小,在话务量的比较大的时候,会产生消息的粘包情况。而信令之间需要严格的分界,为了支持粘包情况下的信令解析。就需要为信令增加必要的分界信息。 - 在进行信令传输的时候,虽然TCP针对同一用户一呼叫的信令需要保证信息的消息发送的序列,但是针对多个呼叫的信令消息则无需保证前后次序。我们都知道TCP基于滑动窗口的可靠传送保证机制会在窗口中检测到数据传送错误时,重传全部窗口中的数据,而不能区分数据窗口中所包含的信令数据报是否都需要重新传送。在这种情况下,数据发送的顺序有可能会导致队头拥塞,即不需要重传的信令也可能被重传。导致信令处理延时。
- TCP使用三次握手的机制完成连接的建立,防止SYN攻击的能力差。
TCP仅支持点到点的连接,难在支持部署于多机系统之上的应用。在电信信令系统一般采用多机集群的方式进行信令处理的,已保证信令的处理效率。TCP单点连接方式难以满足电信核心网的信令的处理需求。
UDP协议存在哪些问题
我们都知道UDP是面向无连接的数据包协议,不支持可靠、顺序的数据报传送,信令的应用需要自行设计信令的数据报的分段、重组、顺序传送保证,可靠传送保证机制等等。增加了信令的设计复杂度。
对于UDP本身实时性较好,但是无拥塞、流量控制机制。
SCTP具有哪些特点
针对TCP和UDP的缺点,SCTP有针对性的根据信令的传送特点设计协议处理机制。在IP协议栈中,SCTP与TCP、UDP处于相同位置。
与TCP、UDP相比,SCTP具有以下特点:
- 支持无差错无重复数据的传送。
支持一个主机使用多个IP地址,同时多个主机的多个IP地址。 - 支持基于网络MTU大小进行数据的拆分与重组。
- 支持多流特性,支持流内消息的有序的消息发送,支持流间消息的并行处理,从而避免队头拥塞。
- 支持面向消息的数据发送,维护消息边界。支持小信令的组合传送以提高传送效率。还支持大信令的拆分与重组,以避免超过网络MTU大小。
- 避免SYN攻击
为了实现预定的信令传送能力,SCTP协议进行了如下的定义。
SCTP端点(Endpoint)
SCTP数据报协议的发送、接收者。SCTP端点是一个逻辑概念,每一个SCTP端点可以绑定多个IP地址作为其传送地址,用于SCTP数据报的收发。
SCTP端点绑定的IP地址组中的每一个IP地址都必须是唯一的,不能重复。SCTP端点所绑定的多个IP地址必须使用相同的端口,即SCTP端点具有唯一的端口。
SCTP偶联(Association)
SCTP偶联是SCTP端点之间连接关系。偶联可以使用SCTP端点的传送层地址唯一标识。两个SCTP端点之间同时只能有一个偶联。这意味着在两个端点之间虽然可以绑定多个IP地址,但是同时只能有一个活动的IP地址用于数据传送。
SCTP流(Stream)
SCTP流用于描述SCTP偶联中由一个SCTP端点到另一个端点的单向逻辑通道,这个通道将用于在偶联之间提供消息的有序传送。
SCTP偶联中可以建立多条流,流间消息不需要关心顺序,从而可以避免队头拥塞。
SCTP通路(Path)
代表SCTP分组由SCTP偶联的一个端点传送至另一个端点特定绑定传送地址的途径。
SCTP通路是一个数据传送目标路由的抽象。当发送SCTP数据报的时候,默认设置的发送端传送地址和接收地址被称为SCTP默认通路。
基于通路的设定,端点之间的数据报可以使用不同的目标传送地址,以避免特定IP地址的失效而造成的偶联失败。
SCTP分组(Packet)
SCTP消息在网络上的基本传送单位,SCTP单元(Chunk)则是SCTP分组中的一个单位。SCTP分组用于将信令数据包承载在网络上,并进行信令数据报的有效验证。
SCTP单元则用于信令的定界、分析与重组,并基于SCTP单元完成数据单元证实、重发与预防拥塞。
总结
基于SCTP的信令传送结构,SCTP的基本功能划分为以下部分:
- SCTP的偶联的建立与释放
- SCTP流内消息的顺序递交;
- SCTP用户数据的分段(Chunk)
- SCTP单元的证实和预防拥塞 SCTP分组的捆绑
- SCTP分组的有效性验证
- SCTP通路管理
参考:RFC4166、RFC4960
欢迎关注微信公众号【程序猿编码】,欢迎添加本人微信号(17865354792)交流学习。
标签:协议,UDP,谈一谈,信令,TCP,传送,端点,SCTP 来源: https://blog.csdn.net/chen1415886044/article/details/118882121