SIGTRAN协议原理及应用.doc_第1页
SIGTRAN协议原理及应用.doc_第2页
SIGTRAN协议原理及应用.doc_第3页
SIGTRAN协议原理及应用.doc_第4页
SIGTRAN协议原理及应用.doc_第5页
免费预览已结束,剩余111页可下载查看

下载本文档

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

文档简介

NGN_SP003_C1 SIGTRAN协议原理与应用课程目标:l 掌握SIGTRAN协议的定义、作用。l 掌握SCTP协议原理l 掌握M3UA协议原理l 掌握SIGTRAN协议在ZXSS10系统中的应用5目 录第1章 SIGTRAN简介11.1 SIGTRAN的引入11.2 SIGTRAN的标准化进程21.3 SIGTRAN协议栈的结构31.3.1 SIGTRAN协议栈的结构41.3.2 SIGTRAN协议中的协议51.3.3 SIGTRAN 协议在网络中的位置6第2章 SCTP协议介绍72.1 协议概述72.1.1 SCTP 的引入72.1.2 SCTP继承了TCP的以下成熟技术82.1.3 拆分与重组92.1.4 与TCP相比,SCTP的优点:102.1.5 SCTP与TCP的功能对比及应用分析112.1.6 SCTP的多地址连接技术122.1.7 SCTP的流控技术132.1.8 TCP与SCTP的安性比较142.2 SCTP 相关术语152.2.1 传输地址和IP 地址162.2.2 主机和端点162.2.3 偶联和流162.2.4 TSN 和SSN TSN162.2.5 CWND:拥塞窗口172.3 SCTP 功能介绍172.3.1 功能概述172.3.2 SCTP 的结构172.3.3 SCTP 功能182.4 SCTP 消息202.4.1 消息结构202.4.2 消息类型262.4.3 数据块格式272.5 SCTP 基本信令流程362.5.1 偶联的建立程序362.5.2 数据的传递程序422.5.3 拥塞控制程序502.5.4 故障管理程序552.5.5 偶联关闭程序602.5.6 SCTP的状态转移图632.5.7 SCTP程序示例662.5.8 SCTP数据传输及时序图72第3章 M3UA协议介绍773.1 M3UA协议概述773.1.1 M3UA 概念773.2 M3UA 相关术语793.3 M3UA功能介绍813.3.1 支持传送MTP3-用户消息813.3.2 本地管理功能813.3.3 与MTP3 网络管理功能的互通823.3.4 支持SGP 和ASP 间SCTP 偶联的管理823.3.5 支持到多个SGP 连接的管理823.4 M3UA消息833.4.1 M3UA 消息格式833.4.2 公共消息头843.4.3 数据(DATA)893.4.4 SS7 号信令网管理(SSNM )消息913.4.5 M3UA 选路关键字管理(RKM)消息973.4.6 应用业务维护(ASPTM)消息973.4.7 管理消息(MGMT)993.4.8 传输消息1023.5 M3UA基本信令流程1023.5.1 建立SGP 和ASP 间的偶联建立流程1023.5.2 AS和ASP之间状态转换关系105第4章 SIGTRAN在ZXSS10中的应用1094.1 SIGTRAN在ZXSS10系统中的实现1094.2 异地容灾环境中ASP的状态迁移110107第3章 M3UA协议介绍第1章 SIGTRAN简介& 知识点l 本章介绍了SIGTRAN协议的发展历史,协议模型、以及应用范围。1.1 SIGTRAN的引入窄带电路交换网络(SCN)提供业务的可靠性、高质量性已得到用户的认可,由于IP网络还存在一些尚未解决的问题,未来一段时期以内相当一部分业务将还会在SCN上提供,为了实现SCN与IP网的业务互通,用于支持SCN的No.7信令网就需要与IP进行互通。信令网关设备主要用于SCN与IP网络的互通,实现SCN的信令在IP网上的传送。1.2 SIGTRAN的标准化进程SIGTRAN的标准制定工作主要由国际互联网标准制定组织IETF负责,从1999年开始,IETF的多个工作组陆续在RFC2719,2960,3331,3332等系列标准中完成了SIGTRAN协议整体构架及相关标准的制定工作。在国内,信息产业部业已制定相关标准,包括No.7信令与IP互通的技术要求、流控制传送协议(SCTP)规范、消息传递部分第三纪用户适配(M3UA)协议规范等,给不同设备厂商之间实现互联互通提供了依据。1.3 SIGTRAN协议栈的结构1.3.1 SIGTRAN协议栈的结构SIGTRAN(Signaling Transport, 信令传输协议)协议栈支持通过IP 网络传输传统电路交换网SCN(Switched Circuit Network ,电路交换网)信令。该协议栈支持SCN 信令协议分层模型定义中的层间标准原语接口,从而保证已有的SCN 信令应用可以未经修改地使用,同时利用标准的IP 传输协议作为传输底层,通过增加自身的功能来满足SCN 信令的特殊传输要求。SIGTRAN 协议栈担负信令网关和媒体网关控制器间的通信,有两个主要功能:适配和传输。与此对应,SIGTRAN 协议栈包含两层协议:传输协议和适配协议,前者就是SCTP/IP,后者如M3UA(适配MTP3 用户)、IUA(适配Q.921 用户)等。1.3.2 SIGTRAN协议中的协议传输层:协议使用流控制传输协议SCTP,在IP网上提供可靠的消息传输。用户适配层:用户适配层由多个适配模块所组成,它们分别为上层的SS7信令的各个模块提供原有的层间原语接口,并将上层信令协议封装在SCTP上传输。M3UA:MTP3 用户适配层。M2UA:MTP2 用户适配层,该协议允许信令网关向对等的IP SP传送MTP3消息,对No.7信令网和IP网提供无缝的网关互通功能。IUA:ISDN Q.921 用户适配层。M2PA:MTP2 对等适配层,该协议允许信令网关向对等的IP SP传送MTP3消息,并提供MTP信令网网关功能。V5UA:V5 用户适配层 ,完成V5.2信令数据在媒体网关和软交换设备SS之间的传送。SUA:SCCP 用户适配层,适配传送SCCP的用户消息给IP数据库,提供SCCP的网关互通功能。SCTP :流控制传输协议,它运行于提供不可靠传递的分组网络上,是为在IP网上传输PSTN信令消息而设计的。IP:互联网协议 MAC:媒体接入控制。SIGTRAN 协议只是实现SCN 信令的在IP 网的适配与传输,不处理用户层信令消息。为保证信令可靠传输,引入了SCTP 作为传输层协议。1.3.3 SIGTRAN 协议在网络中的位置Sigtran协议在网络中的位置,位于信令网关SG与MGC或SS之间。第2章 SCTP协议介绍& 知识点l 本章深入的讲解SCTP协议的特性,讲解SCTP协议所涉及到的术语,应用范围,SCTP信令流程,消息类型,消息结构。2.1 协议概述2.1.1 SCTP 的引入随着IP网向多业务网发展,尤其是目前IP电话、IP视频会议等业务的发展,在IP网中传送信令信息成为必然。目前IP网中信令消息的交换通常是使用TCP或UDP完成,但是这两个协议都不能满足电信运营网中信令承载的要求。为适应IP网成为电信运营核心网的发展趋势,IETF 的信令传输工作组一直在研究和制定IP网新一代的传输协议,并在IETF RFC 2960中定义了流控制传输协议。SCTP(流控制传输协议,,Stream Control Transmission Protocol ),是为在IP网上传输PSTN信令消息而设计的。2.1.2 SCTP继承了TCP的以下成熟技术流控技术(滑窗技术)动态RTO计算拥塞控制技术:( 慢启动,拥塞避免,快速重传,快速恢复等等 )2.1.3 拆分与重组B=1, E=0 : 用户消息的第一个分段B=0, E=0 : 用户消息的中间分段B=0, E=1 : 用户消息的最后的分段B=1, E=1 : 未分段的用户消息用户消息 的所有分段共用一个流序列号2.1.4 与TCP相比,SCTP的优点:1 一个TCP则只能支持一个流,一个SCTP连接(Association)同时可以支持多个流(stream),每个流是逻辑上的数据块(DATA Chunk)的通道。这样,当一个流被阻塞时,还有其它的可用。各个流对数据的传输相互独立,互不干扰;流内可以实现严格的按序传输或无序传输,这样减小了传输时延,可避免某些大数据对其他数据的阻塞,并有很好的灵活性和适应性。2 TCP是基于bit流,上层用户需要自己加入标记区分各个消息,SCTP则是基于用户消息流,提供可靠的流传输,每一个流序列号都对应一条用户消息。流内的单位是用户消息,应用层不必自己为用户消息进行分割标识,因而SCTP有更高的传输效率。3TCP一般是单地址连接的。SCTP的连接可以是多宿主连接的,而这是SCTP和TCP之间的最大区别。SCTP一个连接内对多个传输地址的支持,以及对不同传输地址之间路径的管理,使之具有更好的可靠性,可方便应用于多穴主机的数据传输。4进行SCTP建立连接时,双方均可声明若干IP地址(IPv4,Ipv6或主机名)通知对方本端所有的地址。若当前路径失效,则协议可切换到另一个地址,而不需要重新建立连接,SCTP可以自动探测所有路径,当此路径恢复时,SCTP只须把它标记为“可用”即可,避免了代价高昂的断开连接/重建连接的过程。5 SCTP同样有确认/超时重发机制,但它的选择性确认SACK较之TCP的单纯的累计确认具有更高的重发效率。6 TCP容易受到恶意攻击,SCTP增加了防止恶意攻击的措施,SCTP建立连接时采用COOKIE机制、数据传输过程中采用的标签鉴别以及四次握手机制,使其能够有效的防止恶意攻击,具有更好的安全性。如Verification Tag、State Cookie、Four-Way Handshake等.2.1.5 SCTP与TCP的功能对比及应用分析1连接与关联TCP中的连接是指两个TCP端点通过“三次握手”过程建立的由一对传送层地址(IP地址和端口号)识别的传送通道。在SCTP中, TCP中的连接被引申为关联。一个关联的两个SCTP端点都向对方提供一个SCTP端口号和一个IP地址列表,这样每个关联都由两个SCTP端口号和两个IP地址列表来识别。在一个关联内的拥塞控制机制与TCP连接的拥塞控制机制类似。一个关联是由多个单向的流组成的。各个流之间相对独立,可以单独发送数据而不受其他流的影响,也可以共同实现用户数据的有序递交。流的建立和拆除过程相对独立、简单。而关联的建立过程相对而言就比较复杂,是个“四次握手”过程,而且其中要用到“cookie攠的概念。所谓“cookie”实际就是一个含有端点初始信息和加密信息的数据块,它在关联建立时被通信的两端处理并交换。2SCTP的多宿主机特性及应用SCTP支持传送层的多宿主机服务。当网络发生故障时,多宿主机服务可以增强网络的健壮性。在某些应用场合,这个特性非常重要。SCTP对多宿主机服务的支持要求关联的一端或两端在不同的网络接口上分配有多个IP地址。一般来说,要在通信的两端实现真正的故障弹性恢复,每个端点都需要有一个以上的IP网络接口,以支持多宿主机服务。在这种情况下,路径使用的数量就是所有端点的网络接口的最小数,此时端点要正确选择自己的源地址才能获得最佳路径。但是,如果端点总是使用同一个源地址,那么端点就同样会出现单点故障。因为当端点选择一个源地址时,它总是选择数据包的源地址来对应网络接口的IP地址,而在网络接口上数据包将受到绑定地址的限制。换句话说,由于绑定地址的限制,端点永远都不能选择不属于该SCTP关联的源地址,同时对端端点也必须认可该SCTP关联使用的任何一个源地址。当端点在一个多宿主机上时,如果关联的两端绑定有多个地址,SCTP关联的可用性将大大增强。利用多宿主机这个特性可以在两个SCTP端点间建立冗余的路径,这对那些一直寻求在网络的传送层次就能提供容错机制的应用特别有用。要在SCTP的两个端点间建立冗余路径,要求两个端点的设备都必须有多个接口,并分配多个地址,而且必须配置好路由。因此,通过“多宿主机”特性,SCTP提供了较TCP强大得多的路径状态监控功能。SCTP可以监测远端地址的可达性,当远端地址不可达时,它能通过使用备用地址替换主用地址实现故障的自动恢复,而且这一过程不需要上层协议的干预。也就是说,“多宿主机”特性可以使一个关联可以在多个传输路径间选择和切换,从而提高了网络级容错的能力。2.1.6 SCTP的多地址连接技术2.1.7 SCTP的流控技术2.1.8 TCP与SCTP的安性比较1TCP的安全问题一些TCP应用被公认会受到DoS攻击。例如,攻击者可以通过发送大量的连接建立请求(TCP-SYN数据包)来攻击目的地,有可能来自伪装的IP地址。被攻击主机将不停地发送SYN-ACK数据包来回复,并进入SYN-received状态,甚至SYN队列将被挤满(例如,等待建立的连接数会达到一个极限),而且它将拒绝新的连接建立请求。另外,伪装连接是对TCP的另一个潜在威胁。通过猜测有效的序列号,攻击者将可能伪装成一个合法连接。但是,通过使用一个安全的Hashsum算法,对目前SYN-cookie进行伪装的攻击的可能性只有1/224。例如当使用SYS-cookie时,要成功作为一个伪装的连接时,攻击者将不得不发送224个数据包。2SCTP的安全机制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协议和应用层协议的安全特性。通过上述机制,可以有效地防止诸如SYN_FLOODING等方式的攻击。3SCTP与TCP的功能及应用比较由于SCTP也是一个面向连接的协议,可提供所有TCP能够提供的传送层服务。因此,现有的许多Internet应用将面临选择使用TCP或SCTP,来满足他们对传送层服务的需求。需要注意的是,对处理成本比较敏感的应用,在使用SCTP或TCP得到的服务是不一样的,SCTP可以为应用提供一个单独定制的流传输,而TCP为应用提供的是一对地址。当然,SCTP还具有一些TCP所不具备的功能,这样,在某些应用场合,选择SCTP实现传送层服务将是更好的选择。SCTP在一个连接中可以支持多个独立用户信息流的发送。正确使用该功能,可以有效减少所谓的“head-of-line-blocking问题带来的影响,在TCP中出现该问题,主要是因为数据包的发送有严格的顺序控制。因此,对那些需要在一个连接中同时支持多个逻辑上独立的信息流传送的应用,SCTP就特别有用。SCTP保留有应用信息的边界。当应用数据不是连续的字节流,而是要接收端单独处理大块的数据包时,该功能就非常有用。相反,TCP在提供可靠数据流传送的同时,并不能指出应用中包含的大块数据包。SCTP支持没有指明应用类别的用户信息的传送,而且能够保证数据的可靠传送。对那些需要发送没有顺序的可靠信息流的应用,或者喜欢使用自身的信息排序机制的应用,SCTP的这个功能就特别有用。2.2 SCTP 相关术语2.2.1 传输地址和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.2.2 主机和端点“主机”(Host) 就是一台计算机,配有一个或多个IP 地址, 是一个典型的物理实体。“端点”(End Point)是SCTP 的基本逻辑概念,是数据报的逻辑发送者和接收者,是一个典型的逻辑实体。SCTP 协议规定两个端点之间能且仅能建立一条偶联(这一点不同与TCP),但一个主机上可以有很多端点。2.2.3 偶联和流“偶联”(Association) 就是两个SCTP 端点通过SCTP 协议规定的4 次握手机制建立起来的进行数据传递的逻辑联系或者说通道。“流”(Stream)是SCTP 协议的一个特色术语。严格地说,“流”就是一条SCTP 偶联中,从一个端点到另一个端点的单向逻辑通道。希望顺序传递的数据必须在一个流里面传输。一个偶联中可以包含多个流。2.2.4 TSN 和SSN TSNTSN(Transmission Sequence Number):传输顺序号。在SCTP 一个偶联的一端为本端发送的每个数据块顺序分配一个基于初始TSN 的32 位顺序号,以便对端收到时进行确认。TSN 是基于偶联维护的。SSN(Stream Sequence Number) 流顺序号,在SCTP 一个偶联的每个流内,为本端在这个流中发送的每个数据块顺序分配一个16 位顺序号,以便保证流内的顺序传递。SSN 是基于流维护的。TSN 和SSN 的分配是相互独立的2.2.5 CWND:拥塞窗口SCTP 也是一个滑动窗口协议,拥塞窗口是针对每个目的地址维护的,它会根据网络状况调节。当目的地址的发送未证实消息长度超过其CWND 时,端点将停止向这个地址发送数据。RWND:接收窗口。RWND 用来描述一个偶联对端的接收缓冲区大小。偶联建立过程中,双方会交换彼此的初始RWND。RWND 会根据数据发送、证实的情况即时地变化。RWND 的大小限制了SCTP 可以发送的数据的大小。当RWND 等于0 时,SCTP 还可以发送一个数据报,以便通过证实消息得知对方缓冲区的变化,直到达到CWND 的限制。2.3 SCTP 功能介绍2.3.1 功能概述信令传送中应用的SCTP 协议主要用来在无连接的网络上传送PSTN 信令消息,该协议可以用来在IP 网上提供可靠的数据传送协议。SCTP 具有如下功能:在确认方式下,无差错、无重复地传送用户数据;根据通路的MTU 的限制,进行用户数据的分段;在多个流上保证用户消息的顺序递交;将多个用户的消息复用到一个SCTP 的数据块中;利用SCTP 偶联的机制(在偶联的一端或两端提供多归属的机制)来提供网络级的保证;SCTP 的设计中还包含了避免拥塞的功能和避免遭受泛播和匿名的攻击。2.3.2 SCTP 的结构SCTP 位于SCTP 用户应用和无连接网络业务层之间,这种无连接的网络可以是IP 网络或者其他的网络。本标准规定的SCTP 协议主要是运行在IP 网络上的。SCTP 协议通过在两个SCTP 端点间的建立的偶联,来为两个SCTP 用户之间提供可靠的消息传送业务。SCTP 实际上是一个面向连接的协议,但SCTP 偶联的概念要比TCP 的连接具有更广的概念,SCTP 协议提供了在两个SCTP 端点间的一组传送地址之间建立偶联的方法,通过这些建立好的偶联,SCTP 端点可以发送SCTP 分组。一个SCTP 偶联可以包含用多个可能的起/源目的地地址的组合,这些组合包含在每个端点的传送地址列表中。下图 给出了SCTP 偶联在IP 网络协议中的示意:图 2.31 SCTP 偶联的示意2.3.3 SCTP 功能SCTP 的功能主要包括连接的启动与关闭、流内顺序传递、用户数据分片、证实和消除拥塞、消息块捆绑、报文验证和路径管理等。2.3.3.1 偶联的启动和关闭SCTP 是面向偶联的传输协议,通常情况下,数据只有在建立了偶联的两个端点间才能进行传递(SCTP 允许偶联建立过程中的特定步骤传递数据)。因此偶联建立和关闭是SCTP 提供其他服务的前提。1连接由SCTP用户发出的请求而发起。2可以应SCTP用户的请求慢关闭激活的连接和紧急关闭。3检测到故障时也会紧急关闭连接。2.3.3.2 各流内顺序传递SCTP 提供数据报的顺序传递,顺序传递的数据报必需放在一个“流”中传递。流是顺序传递的基石。1SCTP用户在连接建立时可以指定在连接内打开流的数目,这个数目要和远端进行协商。2用户数据报具体的流联系在一起(SEND和RECEIVE原语)。在SCTP内部为SCTP用户递交的每个用户数据报分配一个流顺序号,在接收端,SCTP确保在给定的流内把数据报顺序地传递到SCTP用户。3当一个流内因乱序或数据报丢失进行数据报等待时,其它流内的数据报可以顺序传递给SCTP用户而不受影响。2.3.3.3 用户数据分片SCTP 通过对传送路径上最大PMTU 的检测,实现在SCTP 层,将超大用户数据分片打包,避免在IP 层的多次分片,重组,可以减少路由器上IP 层负担。1在发送端,SCTP可以对大的用户数据报进行分片以确保SCTP数据报传递到低层时适合路径MTU。2在接收端,SCTP将分片重组为完整的用户数据报,然后传递给SCTP用户。2.3.3.4 证实和避免拥塞证实和重传是协议保证传输可靠性的不二法门,SCTP 也一样。证实机制是SCTP 保证传输可靠性的基石。拥塞避免沿袭了TCP 的窗口机制,进行合适的流控。1SCTP在将数据(数据分片或未分片的用户数据报)发送给底层之前顺序地为之分配一个发送顺序号(TSN)。2TSN和SSN(流顺序号)是相互独立的,TSN用于保证传输的可靠性,SSN用于保证流内消息的顺序传递。3TSN和SSN在功能上使可靠传递和顺序传递分开。接收端证实所有收到的TSNs,即使其中有些尚未收到。4包重发功能负责TSN的证实,还负责拥塞消除。2.3.3.5 块绑定如果很短的用户数据被带上很大一个SCTP 消息头传递效率很低,可以将几个用户数据绑定在一个SCTP 报文里面传输,以提高带宽的利用率。1 SCTP消息包由消息头和一个/多个信息块组成,信息块可以是用户数据,也可以是SCTP控制信息。2SCTP用户能够可选地使用捆绑功能,决定是否将多个用户数据报捆绑在一个SCTP消息包中。3为提高效率,拥塞/重发时,捆绑功能可能仍被执行,即使用户已经禁止捆绑。2.3.3.6 报文验证报文验证是SCTP 提供无差错传输的基石。SCTP 通过对用户数据使用ADLER-32 算法,计算出一个32 位的校验和,带在数据报中,在接收端进行同样的运算,通过检查校验和是否相等来验证用户数据是否遭到破坏。1SCTP消息包的通用包头包含一个验证标签和一个可选的32位检查和。验证标签值由每端在连接建立过程中选择产生。2收到的消息包中如果没有期望的验证标签值,接收端将丢弃这个消息包,以阻止攻击和失效的SCTP消息包。3如果检查和无效,则丢弃消息包,因为数据已经被破坏。2.3.3.7 路径管理通过心跳,累计重传次数,SCTP 将目的地址,端点的可达性好好的管理了起来。1SCTP路径管理功能基于SCTP用户的指定和当前符合条件目的地址集合中各地址可达性的情况来为每个输出的用户数据报选择目的传输地址。2路径管理功能在业务流不能充分提供信息时通过心跳功能监视路径的可达性。如果远端传输地址可达性变化,SCTP要向用户进行通报。3路径管理功能在连接建立阶段负责向远端报告本端符合条件的传输地址集合,并把回应的远端传输地址报告给SCTP用户。4连接建立后,连接的两端都要指定一个首选路径,用于SCTP消息包的正常发送。5接收端的路径管理功能负责验证消息包所属的连接是否存在,为消息包后续处理做准备。2.4 SCTP 消息2.4.1 消息结构SCTP 分组由公共的分组头和若干数据块组成,每个数据块中既可以包含控制信息,也可以包含用户数据。除了INIT,INIT ACK,和SHUTDOWN COMPLETE 数据块外,其他类型的多个数据块可以捆绑在一个SCTP 分组中,当然必须要满足偶联对MTU的要求。当然这些数据块也可以不与其它数据块(CHUNK)捆绑在一个分组中。如果一个用户消息不能放在一个SCTP 分组中,则这个消息可以被分成若干个数据块。SCTP 分组的格式如下图所示:图 2.41 SCTP 分组的格式2.4.1.1 SCTP 公共分组头(Common Header)字段的格式SCTP 公共分组头字段的格式如下图所示:图 2.42 SCTP 公共分组头的格式SCTP 公共分组头的各字段含义如下所述:起源端口号(16比特的无符号整数):该端口号用来识别SCTP 发送方的端口号码,接收方使用起源端口号和起源IP 地址,以及目的地端口号和可能的目的地IP 地址来识别属于某个偶联的分组。目的端口号(16比特的无符号整数):该SCTP 端口号用来确定分组的去向。接收方主机将利用该端口号把SCTP 分组解复用到正确的接收端点或应用。验证标签(32比特的无符号整数):接收到分组的接收方使用验证标签来判别发送方的这个SCTP 分组的有效性。在发送方该验证标签必须设置为在偶联启动阶段中从对端点收到的启动标签中的值。/ 注意以下情况除外:包含INIT 数据块的分组中验证标签必须为0,携带INIT 块的SCTP 的分组中不能包含其他数据块;在包含SHUTDOWN-COMPLETE 数据块且设置了T 比特的分组中,验证标签必须要从包含SHUTDOWN-ACK数据块的分组中复制;在包含ABORT 数据块的分组中,验证标签必须要从触发这个ABORT 发送的分组中复制;校验码(32 比特的无符号整数):该字段用来传送SCTP 分组的校验码。2.4.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 COMPLETE。其中DATA Chunk包含了有效的用户消息,其它用于控制目的。每种Chunk都是T-L-V格式,包含四部分内容:类型、 标志、 长度和值(如图所示)。图 2.43 SCTP 分组中数据块字段的格式SCTP 分组的数据块字段中各字段含义如下所述:数据块类型(8 比特无符号整数):该字段用来在数据块中内容字段的信息类型,该参数的取值范围为0254,255 留作今后的扩展。数据块类型字段的编码分配如下:类型编码含义0 净荷数据(DATA)1 启动(INIT)2 启动证实(INIT ACK)3 选择证实(SACK)4 Heartbeat 请求(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 190 IETF预留191 IETF定义的数据块扩展192 to 254 IETF预留255 IETF定义的数据块扩展如果收到不识别的Chunk类型,需要根据类型中最高两个bit位的指示采取不同的处理策略,这是IEEE为了满足厂商自定义Chunk而设计的。00- 直接丢弃这个包;01- 丢弃这个包,并在返回的ERROR 或INIT ACK Chunk中报错Unrecognized Parameter Type;10- 跳过无法识别的Chunk,继续处理下一个Chunk;11- 跳过无法识别的Chunk,继续处理下一个Chunk,同时并在返回的ERROR Chunk中报错Unrecognized Parameter Type.原因为不识别的参数类型。 注意ECNE 和CWR数据块类型预留给“明确拥塞通知”备用。数据块标志位:8 比特。这些比特的使用根据数据块类型的取值,除非特殊规定,否则这个字段设置为0,并在接收方忽略。数据块长度(16比特的无符号整数):该值用来表示包含数据块类型字段、数据块标志位字段、数据块长度字段和取值字段在内的字节数。因此如果数据块取值部分的长度为0,则该长度字段应设置为4。数据块长度字段计算填充字节。数据块内容:可变长度。数据块内容字段包含在该数据块中传送的真正的信息,该字段的使用和格式取决于数据块类型。各种Chunk中DATA和SACK用于用户数据的封装和确认,其它用于连接的建立、拆除和其他管理信息。数据Chunk的结构如下: 注意数据块的总长度(包括类型、长度和取值字段)必须是4 字节的整数倍,如果该长度不是4 字节的整数倍,则发送方应当向数据块中填充全0 的字节,这些填充的字节不计入数据块长度字段。发送方填充的字节数应不超过3 个字节,在接收方忽略所有的填充字节。参数中的填充字段则作为数据块长度进行计算。2.4.1.3 任选/可变长参数的格式SCTP 控制数据块的内容取值包含了特定数据块类型所要求的字段,即随后是一个或多个参数。这些包含在一个数据块中的任选/可变长参数都是按照参数类型、参数长度和参数取值的方式定义的,其格式如图6 所示。图 2.44 任选/可变长参数格式数据块的参数类型(16 比特无符号整数):参数类型字段用来识别参数的类型,取值范围可以从0 到65534。65535 预留给IETF进行扩展数据块的参数长度(16 比特无符号整数):参数长度字段包含参数类型、参数长度和参数取值字段在内所有字段的字节数。因此一个参数的取值字段为0,则该长度字段应设置为4。参数长度字段不计算填充字节。数据块的参数值:可变长度,参数取值字段包含在该参数中传送的实际信息。 注意参数的总长度(包括类型、长度和取值字段)必须是4 字节的整数倍,如果该长度不是4字节的整数倍,则发送方应当向数据块中填充全0 的字节,这些填充的字节不计入参数长度字段。发送方填充的字节数应不超过3 个字节,接收方忽略所有的填充字节。采用这种方式编码,可以使用参数类型字段中高两位的比特指示当端点收到不识别参数类型时所要采取的特定动作。00:表示停止处理该分组并舍弃该分组,不处理分组中任何随后的数据块;01:表示停止处理该分组并舍弃该分组,不处理分组中任何随后的数据块,并在ERROR或INIT ACK的“不识别的参数类型”字段中报告不识别的参数类型;10:跳过该参数并继续处理;11:跳过该参数并继续处理,在ERROR 或INIT ACK的“不识别的参数类型”字段中报告不识别的参数类型。根据Chunk类型的不同标志字段有不同的定义。目前,只有DATA、ABORT、SHUTDOWN COMPLETE的标志字段有意义。2.4.1.4 控制Chunk参数详细说明:控制类的Chunk可能包含各种参数,用来传递控制命令和信息。每种Chunk都是T-L-V格式,包含三部分内容:类型、 长度和值(如图所示)。参数类型(8bits)参数长度(16bits)参数 Value(不定长)图 2.45 控制CHUNK的格式类型字段表明参数的类型,它的取值范围为0-65534,但目前只定义很少一部分。如果收到的Chunk中包含无法识别的参数类型,需要根据类型中最高两个bit位的指示采取不同的处理策略,这是IEEE为了满足厂商自定义参数而设计的。00-直接丢弃这个包;01-丢弃这个包,并在返回的ERROR 或INIT ACK Chunk中报错Unrecognized Parameter Type;10- 跳过无法识别的Chunk,继续处理下一个Chunk;11- 跳过无法识别的Chunk,继续处理下一个Chunk,并在返回的ERROR 或INIT ACK Chunk中报错Unrecognized Parameter Type;长度字段指示本参数的有效长度(类型+长度+值)的大小,以Byte为单位。为了校验计算,每个参数的所占的长度必须是4BYTES的整数倍,否则,必须加0补足(不计入长度且接收方不进行处理)。2.4.2 消息类型SCTP 消息封装在用户数据字段,下表列出了主要的消息类型。表 2.41 SCTP 消息名称说明DATA (净数据) 传输的用户数据块。INIT 用于发起两个端点之间的SCTP 连接。INIT ACK 用来确认SCTP 连接的发起消息(INIT )。SACK 该数据块送至对端,以确认收到DATA 块,并且通知对端DATA 的接收顺序间隙。HEARTBEAT 端点发送该数据块至对端,以检测当前连接中定义的某一目的地址的可达性。HEARTBEAT ACK 响应HEARTBEAT 消息。ABORT 关闭连接。SHUTDOWN 连接中的一个端点对其连接发起一个GRACEFUL 关闭。SHUTDOWN ACK 响应SHUTDOWN 消息,关闭程序完成时发出。ERROR 通知对端,SCTP 连接发生某种错误。COOKIE ECHO 仅用于连接发起过程,它由连接的发起者发送至对端以完成发起程序。COOKIE ACK 相应COOKIE ECHO 消息SHUTDOWN COMPLETE 用于关闭程序完成时对SHUTDOWN ACK 消息进行确认2.4.3 数据块格式本节定义了SCTP 协议使用的所有数据块的格式。2.4.3.1 DATA 图 2.46 DATA数据块格式(1)类型Type = 0,表明本Chunk是DATA Chunk(2)U bit指示该DATA所携带的用户消息是否有序,若U =1,表示这个数据块是一个无次序的DATA块,并且没有流序列号SSN分配给这个DATA块。如果一个无次序的用户消息被分片,这个消息每个分片所在的DATA Chunk必须都有U=1。(3)B bit、E bit:这两位与SSN、TSN一起使用可提供用户消息分片与重组的信息。一个未分段用户消息应该将B和E同时设置为1。B和E同时被设置成0,表示一个多个分段用户消息的中间的分段:B=1E=0分段用户消息的第一个分段B=0E=0分段用户消息的中间分段B=1E=0分段用户消息的最后一个分段B=1E=1未分段用户消息(4)发送序号(TSN)用于表示发送端点的发送顺序,一个连接内的所有发出的DATA Chunk统一编号,该字段在接收端用于确定是否有消息丢失,还用于分片的重组。(5)流标识SI一个连接内同时可以使用多个流进行传送,该字段指出本DATA Chunk属于哪一个流。(6)流序号(Stream Sequence Number,SSN)表示本Chunk所携带的用户消息在流中的位置,主要用于当用户消息需要被有序投递时。如果一个用户消息被SCTP分片传输,各个分片消息中流序列号相同。(7)有效载荷协议标识该值是由上层应用指定,传给对方的SCTP上层应用的标识。SCTP并不使用这个标识。该标识的含义由上层应用定义。当Chunk被分片时,每个分片中应包含同样的标识。User Data用户消息数据不能为空。2.4.3.2 INIT该数据块用来启动两个SCTP 端点间的一个偶联。图 2.47 INIT数据块格式INIT chunk是建立SCTP连接时发出的第一个chunk,该chunk 不能与任何其它 chunk共存于一个Packet中。INIT chunk中向对方通告建立连接时需要对方知道的己方所有情况。必要参数:Initial Tag: 该标记由本端产生(不可为0)发给对端,对端接收后需要将该标记放在每个发来的SCTP报文中。该标记用于检查收到SCTP报文的合法性。接收窗口:与TCP的接收窗口概念相同,代表本端点为此连接准备的接收报文缓存的大小(BYTE为单位)。期望输出流数目OS:表示本端点期望创建的发送消息流的数目。最大输入流数目MIS:表示本端点最多可接收的消息流的数目。对方端点会根据自己的OS、MIS决定双方实际使用的输出流数目和输入流数目公式: actual_OS=min(local_OS, peer_MIS) actual_IS=min(local_MIS, peer_OS)初始TSN:发往对方DATA chunk 的TSN的初始值可选参数:IPv4地址:由于SCTP支持多宿主连接,因此需要将自己的多个有效可连接的IP地址通知对方进行连接。IPv6地址:作用同上。一个端点有可能同时存在IPv4地址 和IPv6地址,即SCTP端点支持同时处于IPV4和IPV6网络。Cookie保存:用于建议对端增加状态Cookie的生命期的增量。主机名:若存在主机名,则chunk中不能包含其他的IPV4地址和IPV6地址,否则会被忽略。接收端收到主机名后,根据DNS可以获得对端的IP地址序列。注:不能存在多个主机名,表示主机名的字符数组要以null结束。支持的地址类型:通知对方自己所支持的所有地址类型(IPv4=5 、 IPv6=6、 Hostname=11)2.4.3.3 启动证实(INIT ACK)数据块的格式图 2.48(INIT ACK)数据块的格式INIT ACK是对INIT的响应,该chunk 不能与任何其它 chunk共存于一个Packet中。INIT ACK中向对方通告建立连接时需要对方知道的己方所有情况,并根据临时TCB生成State Cookie,把它作为参数传给对端。INIT ACK参数基本上与INIT相同 ,其作用是INIT的接收端将自己连接参数发给INIT的发送者,完成信息的交换。如图所示,另外,增加了下面两个特殊参数:STATE Cookie:将本次连接的状态及参数(临时TCB)按照一定的加密算法生成(MAC),发给对方,由对方收到后将该Cookie 放在 COOKIE ECHO chunk中发回,利用其中包含的信息进行连接建立。可选参数Unrecognized Parameters:INIT chunk 中不可识别参数的拷贝。2.4.3.4 选择证实(SACK)数据块的格式SACK是对DATA chunk的应答,该chunk指示目前接收对方发来chunk的情况。SACK所包含的信息比TCP中的ACK详尽:报文格式如图:图 2.49(SACK)数据块的格式在SACK中通知了数据发送端已收到的DATA chunk、未收到的DATA chunk和重复收到的DATA chunk次数。重复的chunk纪录了自从上个SACK发出之后所有收到的重复的DATA chunk列表。若某个chunk共收到三次,则在重复chunk列表中会出现两次该chunk的TSN。若收到的chunk不连续,那么会有Gap Ack Block在报文中出现,Gap Ack Block起始偏移到结束偏移之间的chunk是目前收到的,相邻Gap Ack Block之间的间隙则是目前尚未收到的chunk。Gap Ack Block的起始偏移和结束偏移的数值都是相对于连续chunk最后序号(Cumulative TSN Ack)的偏移值。2.4.3.5 HEARTBEAT一个端点可以发送HEARTBEAT chunk到它的对等端点来探测定义在当前连接中的特定目的传输地址的可达性。参数Heartbeat Information是一个可变长度的只有发送者理解的不透明的数据结构(一般包含发送者的当前时间和发送的目的地地址)图 2.410HEARTBEAT chunk数据块格式数据块标志(8比特):在发送方设置为全0,并在接收方忽略。HEARTBEAT 长度(16 比特):设置为数据块长度的字节数,包括数据块头和HEARTBEAT信息字段。HEARTBEAT 数据块包含如下参数:HEARTBEAT 信息:可变长度,当该HEARTBEAT 数据块发送到目的地传送地址时,发送方特定的HEARTBEAT 信息字段通常包括关于发送方当前的时间信息。2.4.3.6 Hea

温馨提示

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

评论

0/150

提交评论