(合同范本)SIGTRAN协议简介_第1页
(合同范本)SIGTRAN协议简介_第2页
(合同范本)SIGTRAN协议简介_第3页
(合同范本)SIGTRAN协议简介_第4页
(合同范本)SIGTRAN协议简介_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SIGTRAN 协议简介协议简介 编者:李卫峰 审核:谢传俊 中兴通讯固网交换用服部中兴通讯固网交换用服部 修改记录修改记录 文档 编号 版本号 拟制人/ 修改人 审核人 拟制/修改 日期 更改理由 主要更改内容 (写要点即可) 无V1.00李卫峰谢传俊2008-3-2108 年专题文档光盘编写初稿生成 目目 录录 第第 1 章章 SIGTRAN 简介简介.1 1.1 SIGTRAN 的出现.1 1.2 SIGTRAN 的标准化进程.1 1.3 SIGTRAN 协议栈的结构.1 1.3.1 SIGTRAN 协议栈的结构 .1 1.3.2 SIGTRAN 协议在网络中的位置.3 第第 2 章章

2、SCTP 协议介绍协议介绍.4 2.1 SCTP 的引入.4 2.2 SCTP 相对于 TCP 的几个不同.4 2.2.1 与 TCP 相比,SCTP 的优点 .4 2.2.2 SCTP 与 TCP 的功能对比及应用分析.5 2.2.3 SCTP 继承了 TCP 的以下成熟技术 .6 2.2.4 拆分与重组.6 2.2.5 SCTP 的多地址连接技术.7 2.2.6 SCTP 的流控技术 .7 2.2.7 TCP 与 SCTP 的安性比较.7 2.3 SCTP 相关术语.8 2.3.1 传输地址和 IP 地址.9 2.3.2 主机和端点.9 2.3.3 偶联和流.9 2.3.4 TSN 和 S

3、SN TSN.9 2.3.5 CWND(拥塞窗口).9 2.4 SCTP 功能介绍.10 2.4.1 功能概述.10 2.4.2 SCTP 的结构.10 2.4.3 SCTP 功能 .11 2.5 SCTP 消息.13 2.5.1 消息结构.13 2.5.2 消息类型.18 2.5.3 数据块格式.19 2.6 SCTP 基本信令流程.27 2.6.1 偶联的建立程序.27 2.6.2 数据的传递程序.32 4 / 93 2.6.3 拥塞控制程序.39 2.6.4 故障管理程序.43 2.6.5 偶联关闭程序.47 2.6.6 SCTP 的状态转移图.49 2.6.7 SCTP 程序示例.52

4、 2.6.8 SCTP 数据传输及时序图.58 第第 3 章章 M3UA 协议介绍协议介绍 .62 3.1 M3UA 协议概述.62 3.1.1 M3UA 概念.62 3.2 M3UA 相关术语.64 3.3 M3UA 功能介绍.66 3.3.1 支持传送 MTP3-用户消息.66 3.3.2 本地管理功能.66 3.3.3 与 MTP3 网络管理功能的互通.66 3.3.4 支持 SGP 和 ASP 间 SCTP 偶联的管理 .67 3.3.5 支持到多个 SGP 连接的管理.67 3.4 M3UA 消息.68 3.4.1 M3UA 消息格式.68 3.4.2 公共消息头.68 3.4.3

5、数据(DATA).73 3.4.4 SS7 号信令网管理(SSNM )消息.75 3.4.5 M3UA 选路关键字管理(RKM)消息.80 3.4.6 应用业务维护(ASPTM)消息.81 3.4.7 管理消息(MGMT) .82 3.4.8 传输消息.85 3.5 M3UA 基本信令流程.85 3.5.1 建立 SGP 和 ASP 间的偶联建立流程 .85 3.5.2 AS 和 ASP 之间状态转换关系.88 第第 1 章章 SIGTRAN 简介简介 摘要:摘要: 本章介绍了 SIGTRAN 协议的发展历史,协议模型、以及应用范围。 1.1 SIGTRAN 的出现的出现 窄带电路交换网络(S

6、CN)提供业务的可靠性、高质量性已得到用户的认可,由于 IP 网络还 存在一些尚未解决的问题,未来一段时期以内相当一部分业务将还会在 SCN 上提供,为了实现 SCN 与 IP 网的业务互通,用于支持 SCN 的 No.7 信令网就需要与 IP 进行互通。 信令网关设备主要用于 SCN 与 IP 网络的互通,实现 SCN 的信令在 IP 网上的传送。 SIGTRAN 有效解决了电信网信令在 IP 网中高可靠性,高实时性传输的问题,保证 SCN 的信令 (主要是七号信令)在 IP 网络中的可靠传输。 SIGTRAN 协议体系主要由两个部件组成:信令适配层和信令传送层,底层是标准的 IP 协议 承

7、载。 信令传送层采用的是 IETF 制定的流控制传输协议(SCTP) ;信令适配层根据应用的不同目前 主要有:M3UA,M2UA,M2PA,SUA,IUA 和 V5UA 等。 1.2 SIGTRAN 的标准化进程的标准化进程 SIGTRAN 的标准制定工作主要由国际互联网标准制定组织 IETF 负责,从 1999 年开始, IETF 的多个工作组陆续在 RFC2719,2960,3331,3332 等系列标准中完成了 SIGTRAN 协议整体 构架及相关标准的制定工作。 在国内,信息产业部业已制定相关标准,包括No.7 信令与 IP 互通的技术要求 、 流控制传 送协议(SCTP)规范 、 消

8、息传递部分第三纪用户适配(M3UA)协议规范等,给不同设备厂 商之间实现互联互通提供了依据。 1.3 SIGTRAN 协议栈的结构协议栈的结构 1.3.1 SIGTRAN 协议栈的结构协议栈的结构 SIGTRAN(Signaling Transport,信令传输协议)协议栈支持通过 IP 网络传输传统电路交换 网 SCN(Switched Circuit Network ,电路交换网)信令。该协议栈支持 SCN 信令协议分层模型 定义中的层间标准原语接口,从而保证已有的 SCN 信令应用可以未经修改地使用,同时利用标准 2 / 93 的 IP 传输协议作为传输底层,通过增加自身的功能来满足 S

9、CN 信令的特殊传输要求。 SIGTRAN 协议栈担负信令网关和媒体网关控制器间的通信,有两个主要功能:适配和传输。 与此对应,SIGTRAN 协议栈包含两层协议:传输协议和适配协议,前者就是 SCTP/IP,后者如 M3UA(适配 MTP3 用户) 、IUA(适配 Q.921 用户)等。SIGTRAN 协议模型如图 1.3-1 所示。 图 1.3-1 SIGTRAN 协议栈模型 1 传输层: 协议使用流控制传输协议 SCTP,在 IP 网上提供可靠的消息传输。 2 用户适配层: 用户适配层由多个适配模块所组成,它们分别为上层的 SS7 信令的各个模块提供原有的 层间原语接口,并将上层信令协议

10、封装在 SCTP 上传输。 3 M3UA:MTP3 用户适配层。 4 M2UA:MTP2 用户适配层,该协议允许信令网关向对等的 IP SP 传送 MTP3 消息,对 No.7 信令网和 IP 网提供无缝的网关互通功能。 5 IUA:ISDN Q.921 用户适配层。 6 M2PA:MTP2 对等适配层,该协议允许信令网关向对等的 IP SP 传送 MTP3 消息,并 提供 MTP 信令网网关功能。 7 V5UA:V5 用户适配层 ,完成 V5.2 信令数据在媒体网关和软交换设备 SS 之间的传送。 8 SUA:SCCP 用户适配层,适配传送 SCCP 的用户消息给 IP 数据库,提供 SCC

11、P 的网关 互通功能。 9 SCTP :流控制传输协议,它运行于提供不可靠传递的分组网络上,是为在 IP 网上传输 3 / 93 PSTN 信令消息而设计的。 10 IP:互联网协议 MAC:媒体接入控制。 SIGTRAN 协议只是实现 SCN 信令的在 IP 网的适配与传输,不处理用户层信令消息。为保 证信令可靠传输,引入了 SCTP 作为传输层协议。 1.3.2 SIGTRAN 协议在网络中的位置协议在网络中的位置 Sigtran 协议在网络中的位置,位于信令网关 SG 与 MGC 或 SS 之间。 图 1.3-2 SIGTRAN 协议在网络中的位置 第第 2 章章 SCTP 协议介绍协议

12、介绍 摘要:摘要: 本章深入的讲解 SCTP 协议的特性,讲解 SCTP 协议所涉及到的术语,应用范围,SCTP 信 令流程,消息类型,消息结构。 2.1 SCTP 的引入的引入 随着 IP 网向多业务网发展,尤其是目前 IP 电话、IP 视频会议等业务的发展,在 IP 网中传送 信令信息成为必然。目前 IP 网中信令消息的交换通常是使用 TCP 或 UDP 完成,但是这两个协议 都不能满足电信运营网中信令承载的要求。为适应 IP 网成为电信运营核心网的发展趋势,IETF 的信令传输工作组一直在研究和制定 IP 网新一代的传输协议,并在 IETF RFC 2960 中定义了流控 制传输协议。

13、SCTP(流控制传输协议,Stream Control Transmission Protocol ) ,是为在 IP 网上传输 PSTN 信 令消息而设计的。 2.2 SCTP 相对于相对于 TCP 的几个不同的几个不同 2.2.1 与与 TCP 相比,相比,SCTP 的优点的优点 1 一个 TCP 则只能支持一个流,一个 SCTP 连接(Association)同时可以支持多个流 (stream),每个流是逻辑上的数据块(DATA Chunk)的通道。这样,当一个流被阻塞时, 还有其它的可用。各个流对数据的传输相互独立,互不干扰;流内可以实现严格的按序 传输或无序传输,这样减小了传输时延,

14、可避免某些大数据对其他数据的阻塞,并有很 好的灵活性和适应性。 2 TCP 是基于 bit 流,上层用户需要自己加入标记区分各个消息,SCTP 则是基于用户消息 流,提供可靠的流传输,每一个流序列号都对应一条用户消息。流内的单位是用户消息, 应用层不必自己为用户消息进行分割标识,因而 SCTP 有更高的传输效率。 3 TCP 一般是单地址连接的。SCTP 的连接可以是多宿主连接的,而这是 SCTP 和 TCP 之 间的最大区别。SCTP 一个连接内对多个传输地址的支持,以及对不同传输地址之间路 径的管理,使之具有更好的可靠性,可方便应用于多穴主机的数据传输。 4 进行 SCTP 建立连接时,双

15、方均可声明若干 IP 地址(IPv4,Ipv6 或主机名)通知对方本 端所有的地址。若当前路径失效,则协议可切换到另一个地址,而不需要重新建立连接, SCTP 可以自动探测所有路径,当此路径恢复时,SCTP 只须把它标记为“可用”即可, 5 / 93 避免了代价高昂的断开连接/重建连接的过程。 5 SCTP 同样有确认/超时重发机制,但它的选择性确认 SACK 较之 TCP 的单纯的累计确认 具有更高的重发效率。 6 TCP 容易受到恶意攻击,SCTP 增加了防止恶意攻击的措施,SCTP 建立连接时采用 COOKIE 机制、数据传输过程中采用的标签鉴别以及四次握手机制,使其能够有效的防止 恶意

16、攻击,具有更好的安全性。如 Verification Tag、State Cookie、Four-Way Handshake 等。 2.2.2 SCTP 与与 TCP 的功能对比及应用分析的功能对比及应用分析 1 连接与关联 TCP 中的连接是指两个 TCP 端点通过“三次握手”过程建立的由一对传送层地址(IP 地 址和端口号)识别的传送通道。在 SCTP 中, TCP 中的连接被引申为关联。一个关联的两 个 SCTP 端点都向对方提供一个 SCTP 端口号和一个 IP 地址列表,这样每个关联都由两 个 SCTP 端口号和两个 IP 地址列表来识别。在一个关联内的拥塞控制机制与 TCP 连接的

17、 拥塞控制机制类似。一个关联是由多个单向的流组成的。各个流之间相对独立,可以单 独发送数据而不受其他流的影响,也可以共同实现用户数据的有序递交。流的建立和拆 除过程相对独立、简单。而关联的建立过程相对而言就比较复杂,是个“四次握手”过 程,而且其中要用到“cookie 攠的概念。所谓“cookie”实际就是一个含有端点初始信息 和加密信息的数据块,它在关联建立时被通信的两端处理并交换。 2 SCTP 的多宿主机特性及应用 SCTP 支持传送层的多宿主机服务。当网络发生故障时,多宿主机服务可以增强网络的健 壮性。在某些应用场合,这个特性非常重要。SCTP 对多宿主机服务的支持要求关联的一 端或两

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

19、一个源地址。 当端点在一个多宿主机上时,如果关联的两端绑定有多个地址,SCTP 关联的可用性将大 大增强。利用多宿主机这个特性可以在两个 SCTP 端点间建立冗余的路径,这对那些一 直寻求在网络的传送层次就能提供容错机制的应用特别有用。要在 SCTP 的两个端点间 建立冗余路径,要求两个端点的设备都必须有多个接口,并分配多个地址,而且必须配 置好路由。因此,通过“多宿主机”特性,SCTP 提供了较 TCP 强大得多的路径状态监 控功能。SCTP 可以监测远端地址的可达性,当远端地址不可达时,它能通过使用备用地 6 / 93 址替换主用地址实现故障的自动恢复,而且这一过程不需要上层协议的干预。也

20、就是说, “多宿主机”特性可以使一个关联可以在多个传输路径间选择和切换,从而提高了网络 级容错的能力。 2.2.3 SCTP 继承了继承了 TCP 的以下成熟技术的以下成熟技术 流控技术(滑窗技术) 动态 RTO 计算 拥塞控制技术:(慢启动,拥塞避免,快速重传,快速恢复等等) 2.2.4 拆分与重组拆分与重组 图 2.2-1 拆分与重组 B=1, E=0:用户消息的第一个分段 B=0, E=0:用户消息的中间分段 B=0, E=1:用户消息的最后的分段 B=1, E=1:未分段的用户消息 用户消息的所有分段共用一个流序列号 7 / 93 2.2.5 SCTP 的多地址连接技术的多地址连接技术

21、 图 2.2-2 多地址连接技术 2.2.6 SCTP 的流控技术的流控技术 图 2.2-3 流控技术 2.2.7 TCP 与与 SCTP 的安性比较的安性比较 1 TCP 的安全问题 一些 TCP 应用被公认会受到 DoS 攻击。例如,攻击者可以通过发送大量的连接建立请 求(TCP-SYN 数据包)来攻击目的地,有可能来自伪装的 IP 地址。被攻击主机将不停 地发送 SYN-ACK 数据包来回复,并进入 SYN-received 状态,甚至 SYN 队列将被挤满 (例如,等待建立的连接数会达到一个极限) ,而且它将拒绝新的连接建立请求。另外, 伪装连接是对 TCP 的另一个潜在威胁。通过猜测

22、有效的序列号,攻击者将可能伪装成一 个合法连接。但是,通过使用一个安全的 Hashsum 算法,对目前 SYN-cookie 进行伪装 的攻击的可能性只有 1/224。例如当使用 SYS-cookie 时,要成功作为一个伪装的连接时, 攻击者将不得不发送 224 个数据包。 2 SCTP 的安全机制 SCTP 在设计时就充分考虑了 TCP 的不足。为防止攻击者发送伪装的 SCTP 数据包到现 有的连接中,SCTP 的两端都使用一个称为“认证标记”的 32bit 数据来确保数据包真正 属于现有的连接。因此,除了合并属于一个连接的源端口和目的端口的地址外,一个有 8 / 93 效的 SCTP 数据

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

24、,攻击者不得不去猜测包含在 cookie 中的 HMAC 值。可能性小于 2128。值得注意的是,SCTP 仅仅试图来增强网络的 可用性,它没有包含任何直接和用户信息认证、完整性和保密功能的协议机制,因为这 些特性主要取决于 IPSec 协议和应用层协议的安全特性。通过上述机制,可以有效地防 止诸如 SYN_FLOODING 等方式的攻击。 3 SCTP 与 TCP 的功能及应用比较 由于 SCTP 也是一个面向连接的协议,可提供所有 TCP 能够提供的传送层服务。因此, 现有的许多 Internet 应用将面临选择使用 TCP 或 SCTP,来满足他们对传送层服务的需求。 需要注意的是,对处

25、理成本比较敏感的应用,在使用 SCTP 或 TCP 得到的服务是不一样 的,SCTP 可以为应用提供一个单独定制的流传输,而 TCP 为应用提供的是一对地址。 当然,SCTP 还具有一些 TCP 所不具备的功能,这样,在某些应用场合,选择 SCTP 实 现传送层服务将是更好的选择。SCTP 在一个连接中可以支持多个独立用户信息流的发送。 正确使用该功能,可以有效减少所谓的“head-of-line-blocking 问题带来的影响,在 TCP 中出现该问题,主要是因为数据包的发送有严格的顺序控制。因此,对那些需要在一个 连接中同时支持多个逻辑上独立的信息流传送的应用,SCTP 就特别有用。SC

26、TP 保留有 应用信息的边界。当应用数据不是连续的字节流,而是要接收端单独处理大块的数据包 时,该功能就非常有用。相反,TCP 在提供可靠数据流传送的同时,并不能指出应用中 包含的大块数据包。SCTP 支持没有指明应用类别的用户信息的传送,而且能够保证数据 的可靠传送。对那些需要发送没有顺序的可靠信息流的应用,或者喜欢使用自身的信息 排序机制的应用,SCTP 的这个功能就特别有用。 2.3 SCTP 相关术语相关术语 SCTP B SCTP A IP/SCTP-port IP/SCTP-port SCTP SCTP ( ) 图 2.3-1 SCTP 连接示意图 9 / 93 2.3.1 传输地

27、址和传输地址和 IP 地址地址 SCTP 传输地址就是一个 IP 地址加一个 SCTP 端口号。SCTP 端口号就是 SCTP 用来识 别同一地址上的用户,和 TCP 端口号是一个概念。比如 IP 地址 10.66.100.2 和 SCTP 端口号 5505 标识了一个传输地址,而 10.66.100.14 和 2905 则标识了另外一个传输地址,同样, 10.66.100.14 和端口号 2905 也标识了一个不同的传输地址。 2.3.2 主机和端点主机和端点 主机(Host) 就是一台计算机,配有一个或多个 IP 地址, 是一个典型的物理实体。 端点(End Point)是 SCTP 的基

28、本逻辑概念,是数据报的逻辑发送者和接收者,是一个典 型的逻辑实体。 SCTP 协议规定两个端点之间能且仅能建立一条偶联(这一点不同与 TCP),但一个主机上可 以有很多端点。 2.3.3 偶联和流偶联和流 偶联(Association) 就是两个 SCTP 端点通过 SCTP 协议规定的 4 次握手机制建立起来 的进行数据传递的逻辑联系或者说通道。 流(Stream)是 SCTP 协议的一个特色术语。严格地说, “流”就是一条 SCTP 偶联中,从一 个端点到另一个端点的单向逻辑通道。希望顺序传递的数据必须在一个流里面传输。 一个偶联中可以包含多个流。 2.3.4 TSN 和和 SSN TSN

29、 TSN(Transmission Sequence Number):传输顺序号。在 SCTP 一个偶联的一端为本端发送 的每个数据块顺序分配一个基于初始 TSN 的 32 位顺序号,以便对端收到时进行确认。TSN 是 基于偶联维护的。 SSN(Stream Sequence Number):流顺序号,在 SCTP 一个偶联的每个流内,为本端在 这个流中发送的每个数据块顺序分配一个 16 位顺序号,以便保证流内的顺序传递。SSN 是基于 流维护的。 TSN 和 SSN 的分配是相互独立的 2.3.5 CWND(拥塞窗口(拥塞窗口) SCTP 也是一个滑动窗口协议,拥塞窗口是针对每个目的地址维护

30、的,它会根据网络状况调 节。当目的地址的发送未证实消息长度超过其 CWND 时,端点将停止向这个地址发送数据。 RWND:接收窗口。RWND 用来描述一个偶联对端的接收缓冲区大小。偶联建立过程中,双 方会交换彼此的初始 RWND。RWND 会根据数据发送、证实的情况即时地变化。RWND 的大小 限制了 SCTP 可以发送的数据的大小。当 RWND 等于 0 时,SCTP 还可以发送一个数据报, 10 / 93 以便通过证实消息得知对方缓冲区的变化,直到达到 CWND 的限制。 2.4 SCTP 功能介绍功能介绍 2.4.1 功能概述功能概述 信令传送中应用的 SCTP 协议主要用来在无连接的网

31、络上传送 PSTN 信令消息,该协议可以 用来在 IP 网上提供可靠的数据传送协议。SCTP 具有如下功能: 在确认方式下,无差错、无重复地传送用户数据; 根据通路的 MTU 的限制,进行用户数据的分段; 在多个流上保证用户消息的顺序递交; 将多个用户的消息复用到一个 SCTP 的数据块中; 利用 SCTP 偶联的机制(在偶联的一端或两端提供多归属的机制)来提供网络级的保证; SCTP 的设计中还包含了避免拥塞的功能和避免遭受泛播和匿名的攻击。 2.4.2 SCTP 的结构的结构 SCTP 位于 SCTP 用户应用和无连接网络业务层之间,这种无连接的网络可以是 IP 网络或者 其他的网络。本标

32、准规定的 SCTP 协议主要是运行在 IP 网络上的。SCTP 协议通过在两个 SCTP 端点间的建立的偶联,来为两个 SCTP 用户之间提供可靠的消息传送业务。 SCTP 实际上是一个面向连接的协议,但 SCTP 偶联的概念要比 TCP 的连接具有更广的概念, SCTP 协议提供了在两个 SCTP 端点间的一组传送地址之间建立偶联的方法,通过这些建立好的 偶联,SCTP 端点可以发送 SCTP 分组。一个 SCTP 偶联可以包含用多个可能的起/源目的地地址 的组合,这些组合包含在每个端点的传送地址列表中。 下图给出了 SCTP 偶联在 IP 网络协议中的示意: 11 / 93 图 2.4-1

33、 SCTP 偶联的示意 2.4.3 SCTP 功能功能 SCTP 的功能主要包括连接的启动与关闭、流内顺序传递、用户数据分片、证实和消除拥塞、 消息块捆绑、报文验证和路径管理等。 2.4.3.1 偶联的启动和关闭偶联的启动和关闭 SCTP 是面向偶联的传输协议,通常情况下,数据只有在建立了偶联的两个端点间才能进行 传递(SCTP 允许偶联建立过程中的特定步骤传递数据) 。因此偶联建立和关闭是 SCTP 提供其 他服务的前提。 1 连接由 SCTP 用户发出的请求而发起。 2 可以应 SCTP 用户的请求慢关闭激活的连接和紧急关闭。 3 检测到故障时也会紧急关闭连接。各流内顺序传递各流内顺序传递

34、 SCTP 提供数据报的顺序传递,顺序传递的数据报必需放在一个“流”中传递。流是顺序传递 的基石。 1 SCTP 用户在连接建立时可以指定在连接内打开流的数目,这个数目要和远端进行协商。 2 用户数据报具体的流联系在一起(SEND 和 RECEIVE 原语) 。在 SCTP 内部为 SCTP 用 户递交的每个用户数据报分配一个流顺序号,在接收端,SCTP 确保在给定的流内把数 据报顺序地传递到 SCTP 用户。 3 当一个流内因乱序或数据报丢失进行数据报等待时,其它流内的数据报可以顺序传递给 SCTP 用户而不受影响。用户数据分片用户数据分片 SCTP 通过对传送路径上最大 PMTU 的检测,

35、实现在 SCTP 层,将超大用户数据分片打包, 避免在 IP 层的多次分片,重组,可以减少路由器上 IP 层负担。 12 / 93 1 在发送端,SCTP 可以对大的用户数据报进行分片以确保 SCTP 数据报传递到低层时适 合路径 MTU。 2 在接收端,SCTP 将分片重组为完整的用户数据报,然后传递给 SCTP 用户。证实和避免拥证实和避免拥 塞塞 证实和重传是协议保证传输可靠性的不二法门,SCTP 也一样。证实机制是 SCTP 保证传输 可靠性的基石。拥塞避免沿袭了 TCP 的窗口机制,进行合适的流控。 1 SCTP 在将数据(数据分片或未分片的用户数据报)发送给底层之前顺序地为之分配一

36、 个发送顺序号(TSN) 。 2 TSN 和 SSN(流顺序号)是相互独立的,TSN 用于保证传输的可靠性,SSN 用于保证流 内消息的顺序传递。 3 TSN 和 SSN 在功能上使可靠传递和顺序传递分开。接收端证实所有收到的 TSNs,即使 其中有些尚未收到。 4 包重发功能负责 TSN 的证实,还负责拥塞消除。块绑定块绑定 如果很短的用户数据被带上很大一个 SCTP 消息头传递效率很低,可以将几个用户数据绑定 在一个 SCTP 报文里面传输,以提高带宽的利用率。 1 SCTP 消息包由消息头和一个/多个信息块组成,信息块可以是用户数据,也可以是 SCTP 控制信息。 2 SCTP 用户能够

37、可选地使用捆绑功能,决定是否将多个用户数据报捆绑在一个 SCTP 消 息包中。 3 为提高效率,拥塞/重发时,捆绑功能可能仍被执行,即使用户已经禁止捆绑。报文验证报文验证 报文验证是 SCTP 提供无差错传输的基石。SCTP 通过对用户数据使用 ADLER-32 算法, 计算出一个 32 位的校验和,带在数据报中,在接收端进行同样的运算,通过检查校验和是否相 等来验证用户数据是否遭到破坏。 1 SCTP 消息包的通用包头包含一个验证标签和一个可选的 32 位检查和。验证标签值由每 端在连接建立过程中选择产生。 2 收到的消息包中如果没有期望的验证标签值,接收端将丢弃这个消息包,以阻止攻击和 失

38、效的 SCTP 消息包。 3 如果检查和无效,则丢弃消息包,因为数据已经被破坏。路径管理路径管理 通过心跳,累计重传次数,SCTP 将目的地址,端点的可达性好好的管理了起来。 1 SCTP 路径管理功能基于 SCTP 用户的指定和当前符合条件目的地址集合中各地址可达 性的情况来为每个输出的用户数据报选择目的传输地址。 2 路径管理功能在业务流不能充分提供信息时通过心跳功能监视路径的可达性。如果远端 13 / 93 传输地址可达性变化,SCTP 要向用户进行通报。 3 路径管理功能在连接建立阶段负责向远端报告本端符合条件的传输地址集合,并把回应 的远端传输地址报告给 SCTP 用户。 4 连接建

39、立后,连接的两端都要指定一个首选路径,用于 SCTP 消息包的正常发送。 5 接收端的路径管理功能负责验证消息包所属的连接是否存在,为消息包后续处理做准备。 SCTP 消息消息 2.5.1 消息结构消息结构 SCTP 分组由公共的分组头和若干数据块组成,每个数据块中既可以包含控制信息,也可以 包含用户数据。除了 INIT,INIT ACK,和 SHUTDOWN COMPLETE 数据块外,其他类型的多个 数据块可以捆绑在一个 SCTP 分组中,当然必须要满足偶联对 MTU 的要求。当然这些数据块也 可以不与其它数据块(CHUNK)捆绑在一个分组中。如果一个用户消息不能放在一个 SCTP 分组

40、中,则这个消息可以被分成若干个数据块。 SCTP 分组的格式如下图所示: 图 2.5-1 SCTP 分组的格式 2.5.1.1 SCTP 公共分组头(公共分组头(Common Header)字段的格式)字段的格式 SCTP 公共分组头字段的格式如下图所示: 14 / 93 图 2.5-2 SCTP 公共分组头的格式 SCTP 公共分组头的各字段含义如下所述: 起源端口号(16 比特的无符号整数):该端口号用来识别 SCTP 发送方的端口号码,接收方 使用起源端口号和起源 IP 地址,以及目的地端口号和可能的目的地 IP 地址来识别属于某个偶联 的分组。 目的端口号(16 比特的无符号整数):该

41、 SCTP 端口号用来确定分组的去向。接收方主机将 利用该端口号把 SCTP 分组解复用到正确的接收端点或应用。 验证标签(32 比特的无符号整数):接收到分组的接收方使用验证标签来判别发送方的这个 SCTP 分组的有效性。在发送方该验证标签必须设置为在偶联启动阶段中从对端点收到的启动标 签中的值。 注意: 以下情况除外:包含 INIT 数据块的分组中验证标签必须为 0,携带 INIT 块的 SCTP 的分组中不能 包含其他数据块;在包含 SHUTDOWN-COMPLETE 数据块且设置了 T 比特的分组中,验证标签必 须要从包含 SHUTDOWN-ACK 数据块的分组中复制;在包含 ABOR

42、T 数据块的分组中,验证标签 必须要从触发这个 ABORT 发送的分组中复制。 校验码(32 比特的无符号整数):该字段用来传送 SCTP 分组的校验码。 2.5.1.2 数据块(数据块(CHUNK)字段的格式)字段的格式 SCTP 数据块(Chunk)包含上层发来的用户数据或 SCTP 连接的控制信息, 共有 13 种类型的 SCTP 数据块 Chunk:DATA、INIT、INITACK、SACK、HEARTBEAT、HEARTBEAT ACK、ABORT、SHUTDOWN、SHUTDOWN ACK、ERROR、COOKIE ECHO、COOKIE ACK、SHUTDOWN COMPLET

43、E。其中 DATA Chunk 包含了有效的用户消息,其它用于控制目的。 每种 Chunk 都是 T-L-V 格式,包含四部分内容:类型、标志、长度和值(如图所示) 。 图 2.5-3 SCTP 分组中数据块字段的格式 SCTP 分组的数据块字段中各字段含义如下所述: 15 / 93 数据块类型(8 比特无符号整数):该字段用来在数据块中内容字段的信息类型,该参数的 取值范围为 0254,255 留作今后的扩展。 数据块类型字段的编码分配如下: 类型编码含义: 0 净荷数据(DATA) 1 启动(INIT) 2 启动证实(INIT ACK) 3 选择证实(SACK) 4 Heartbeat 请

44、求(HEARTBEAT) 5 Heartbeat 证实(HEARTBEAT ACK) 6 中止(ABORT) 7 关闭(SHUTDOWN) 8 关闭证实(SHUTDOWN ACK) 9 操作差错(ERROR) 10 状态 Cookie (COOKIE ECHO) 11 Cookie 证实(COOKIE ACK) 12 为明确拥塞通知响应(ECNE)预留 13 为降低拥塞窗口(CWR)预留 14 关闭完成(SHUTDOWN COMPLETE) 15 to 62 IETF 预留 63 IETF 定义的数据块扩展 64 to 126 IETF 预留 127 IETF 定义的数据块扩展 128 to

45、190 IETF 预留 191 IETF 定义的数据块扩展 192 to 254 IETF 预留 255 IETF 定义的数据块扩展 如果收到不识别的 Chunk 类型,需要根据类型中最高两个 bit 位的指示采取不同的处理策略, 这是 IEEE 为了满足厂商自定义 Chunk 而设计的。 16 / 93 00 直接丢弃这个包; 01 丢弃这个包,并在返回的 ERROR 或 INIT ACK Chunk 中报错Unrecognized Parameter Type; 10 跳过无法识别的 Chunk,继续处理下一个 Chunk; 11 跳过无法识别的 Chunk,继续处理下一个 Chunk,同

46、时并在返回的 ERROR Chunk 中报错Unrecognized Parameter Type.原因为不识别的参数类型。 注意: ECNE 和 CWR 数据块类型预留给“明确拥塞通知”备用。 数据块标志位:8 比特。这些比特的使用根据数据块类型的取值,除非特殊规定,否则这个 字段设置为 0,并在接收方忽略。 数据块长度(16 比特的无符号整数):该值用来表示包含数据块类型字段、数据块标志位字 段、数据块长度字段和取值字段在内的字节数。因此如果数据块取值部分的长度为 0,则该长度 字段应设置为 4。数据块长度字段计算填充字节。 数据块内容:可变长度。数据块内容字段包含在该数据块中传送的真正的

47、信息,该字段的使 用和格式取决于数据块类型。 各种 Chunk 中 DATA 和 SACK 用于用户数据的封装和确认,其它用于连接的建立、拆除和其 他管理信息。数据 Chunk 的结构如下: 注意: 数据块的总长度(包括类型、长度和取值字段)必须是 4 字节的整数倍,如果该长度不是 4 字节的 整数倍,则发送方应当向数据块中填充全 0 的字节,这些填充的字节不计入数据块长度字段。发送 方填充的字节数应不超过 3 个字节,在接收方忽略所有的填充字节。参数中的填充字段则作为数据 块长度进行计算。 2.5.1.3 任选任选/可变长参数的格式可变长参数的格式 SCTP 控制数据块的内容取值包含了特定数

48、据块类型所要求的字段,即随后是一个或多个参 数。这些包含在一个数据块中的任选/可变长参数都是按照参数类型、参数长度和参数取值的方式 定义的,其格式如图 6 所示。 17 / 93 图 2.5-4 任选/可变长参数格式 数据块的参数类型(16 比特无符号整数):参数类型字段用来识别参数的类型,取值范围可 以从 0 到 65534。65535 预留给 IETF 进行扩展 数据块的参数长度(16 比特无符号整数):参数长度字段包含参数类型、参数长度和参数取 值字段在内所有字段的字节数。因此一个参数的取值字段为 0,则该长度字段应设置为 4。参数长 度字段不计算填充字节。 数据块的参数值:可变长度,参

49、数取值字段包含在该参数中传送的实际信息。 注意: 参数的总长度(包括类型、长度和取值字段)必须是 4 字节的整数倍,如果该长度不是 4 字节的整数 倍,则发送方应当向数据块中填充全 0 的字节,这些填充的字节不计入参数长度字段。发送方填充 的字节数应不超过 3 个字节,接收方忽略所有的填充字节。 采用这种方式编码,可以使用参数类型字段中高两位的比特指示当端点收到不识别参数类型 时所要采取的特定动作。 00:表示停止处理该分组并舍弃该分组,不处理分组中任何随后的数据块; 01:表示停止处理该分组并舍弃该分组,不处理分组中任何随后的数据块,并在 ERROR 或 INIT ACK 的“不识别的参数类

50、型”字段中报告不识别的参数类型; 10:跳过该参数并继续处理; 11:跳过该参数并继续处理,在 ERROR 或 INIT ACK 的“不识别的参数类型”字段中 报告不识别的参数类型。 根据 Chunk 类型的不同标志字段有不同的定义。目前,只有 DATA、ABORT、SHUTDOWN COMPLETE 的标志字段有意义。 2.5.1.4 控制控制 Chunk 参数详细说明:参数详细说明: 控制类的 Chunk 可能包含各种参数,用来传递控制命令和信息。每种 Chunk 都是 T-L-V 格式, 包含三部分内容:类型、 长度和值(如图所示) 。 18 / 93 图 2.5-5 控制 CHUNK

51、的格式 类型字段表明参数的类型,它的取值范围为 0-65534,但目前只定义很少一部分。如果收到的 Chunk 中包含无法识别的参数类型,需要根据类型中最高两个 bit 位的指示采取不同的处理策略, 这是 IEEE 为了满足厂商自定义参数而设计的。 00-直接丢弃这个包; 01-丢弃这个包,并在返回的 ERROR 或 INIT ACK Chunk 中报错Unrecognized Parameter Type; 10- 跳过无法识别的 Chunk,继续处理下一个 Chunk; 11- 跳过无法识别的 Chunk,继续处理下一个 Chunk,并在返回的 ERROR 或 INIT ACK Chunk

52、 中报错Unrecognized Parameter Type; 长度字段指示本参数的有效长度(类型+长度+值)的大小,以 Byte 为单位。为了校验计算,每 个参数的所占的长度必须是 4BYTES 的整数倍,否则,必须加 0 补足(不计入长度且接收方不进 行处理) 。 2.5.2 消息类型消息类型 SCTP 消息封装在用户数据字段,下表列出了主要的消息类型。 表 2.5-1 SCTP 消息 名称说明 DATA (净数据) 传输的用户数据块。 INIT 用于发起两个端点之间的 SCTP 连接。 INIT ACK 用来确认 SCTP 连接的发起消息(INIT ) 。 SACK 该数据块送至对端,

53、以确认收到 DATA 块,并 且通知对端 DATA 的接收顺序间隙。 HEARTBEAT 端点发送该数据块至对端,以检测当前连接中 定义的某一目的地址的可达性。 HEARTBEAT ACK 响应 HEARTBEAT 消息。 ABORT 关闭连接。 SHUTDOWN 连接中的一个端点对其连接发起一个 19 / 93 GRACEFUL 关闭。 SHUTDOWN ACK 响应 SHUTDOWN 消息,关闭程序完成时发出。 ERROR 通知对端,SCTP 连接发生某种错误。 COOKIE ECHO 仅用于连接发起过程,它由连接的发起者发送 至对端以完成发起程序。 COOKIE ACK 相应 COOKI

54、E ECHO 消息 SHUTDOWN COMPLETE 用于关闭程序完成时对 SHUTDOWN ACK 消 息进行确认 2.5.3 数据块格式数据块格式 本节定义了 SCTP 协议使用的所有数据块的格式。 2.5.3.1 DATA 图 2.5-6 DATA 数据块格式 1 类型 Type = 0,表明本 Chunk 是 DATA Chunk 2 U bit 指示该 DATA 所携带的用户消息是否有序,若 U =1,表示这个数据块是一个无次序的 DATA 块,并且没有流序列号 SSN 分配给这个 DATA 块。如果一个无次序的用户消息被 分片,这个消息每个分片所在的 DATA Chunk 必须都

55、有 U=1。 3 B bit、E bit: 这两位与 SSN、TSN 一起使用可提供用户消息分片与重组的信息。 一个未分段用户消息应该将 B 和 E 同时设置为 1。B 和 E 同时被设置成 0,表示一个多 个分段用户消息的中间的分段: 20 / 93 B=1 E=0分段用户消息的第一个分段 B=0 E=0分段用户消息的中间分段 B=1 E=0分段用户消息的最后一个分段 B=1 E=1未分段用户消息 4 发送序号(TSN) 用于表示发送端点的发送顺序,一个连接内的所有发出的 DATA Chunk 统一编号,该字 段在接收端用于确定是否有消息丢失,还用于分片的重组。 5 流标识 SI 一个连接内

56、同时可以使用多个流进行传送,该字段指出本 DATA Chunk 属于哪一个流。 6 流序号(Stream Sequence Number,SSN) 表示本 Chunk 所携带的用户消息在流中的位置,主要用于当用户消息需要被有序投递时。 如果一个用户消息被 SCTP 分片传输,各个分片消息中流序列号相同。 7 有效载荷协议标识 该值是由上层应用指定,传给对方的 SCTP 上层应用的标识。SCTP 并不使用这个标识。 该标识的含义由上层应用定义。当 Chunk 被分片时,每个分片中应包含同样的标识。 User Data 用户消息数据不能为空。 2.5.3.2 INIT 该数据块用来启动两个 SCT

57、P 端点间的一个偶联。 图 2.5-7 INIT 数据块格式 INIT chunk 是建立 SCTP 连接时发出的第一个 chunk,该 chunk 不能与任何其它 chunk 共存 21 / 93 于一个 Packet 中。INIT chunk 中向对方通告建立连接时需要对方知道的己方所有情况。 必要参数:必要参数: 1 Initial Tag: 该标记由本端产生(不可为 0)发给对端,对端接收后需要将该标记放在每 个发来的 SCTP 报文中。该标记用于检查收到 SCTP 报文的合法性。 2 接收窗口:与 TCP 的接收窗口概念相同,代表本端点为此连接准备的接收报文缓存的大 小(BYTE 为

58、单位) 。 3 期望输出流数目 OS:表示本端点期望创建的发送消息流的数目。 4 最大输入流数目 MIS:表示本端点最多可接收的消息流的数目。 对方端点会根据自己的 OS、MIS 决定双方实际使用的输出流数目和输入流数目 公式:actual_OS=min(local_OS, peer_MIS) actual_IS=min(local_MIS, peer_OS) 5 初始 TSN:发往对方 DATA chunk 的 TSN 的初始值 可选参数可选参数: 1 IPv4 地址:由于 SCTP 支持多宿主连接,因此需要将自己的多个有效可连接的 IP 地址通 知对方进行连接。 2 IPv6 地址:作用同

59、上。一个端点有可能同时存在 IPv4 地址 和 IPv6 地址,即 SCTP 端点 支持同时处于 IPV4 和 IPV6 网络。 3 Cookie 保存:用于建议对端增加状态 Cookie 的生命期的增量。 4 主机名:若存在主机名,则 chunk 中不能包含其他的 IPV4 地址和 IPV6 地址,否则会被 忽略。接收端收到主机名后,根据 DNS 可以获得对端的 IP 地址序列。 注意: 不能存在多个主机名,表示主机名的字符数组要以 null 结束。 支持的地址类型:通知对方自己所支持的所有地址类型(IPv4=5 、 IPv6=6、 Hostname=11) 。 22 / 93 2.5.3.

60、3 启动证实(启动证实(INIT ACK)数据块的格式)数据块的格式 图 2.5-8(INIT ACK)数据块的格式 INIT ACK 是对 INIT 的响应,该 chunk 不能与任何其它 chunk 共存于一个 Packet 中。INIT ACK 中向对方通告建立连接时需要对方知道的己方所有情况,并根据临时 TCB 生成 State Cookie, 把它作为参数传给对端。 INIT ACK 参数基本上与 INIT 相同 ,其作用是 INIT 的接收端将自己连接参数发给 INIT 的发 送者,完成信息的交换。如图所示,另外,增加了下面两个特殊参数: STATE Cookie:将本次连接的状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论