2024年4月21日发(作者:淳于觅荷)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 目 录
目 录
4 SCTP协议....................................................................................................................................4-1
4.1 概述..............................................................................................................................................................4-2
4.2 SCTP相关术语............................................................................................................................................4-2
4.3 SCTP功能....................................................................................................................................................4-5
4.3.1 偶联的建立和关闭.............................................................................................................................4-6
4.3.2 流内消息顺序递交.............................................................................................................................4-6
4.3.3 用户数据分段.....................................................................................................................................4-7
4.3.4 证实和避免拥塞.................................................................................................................................4-7
4.3.5 消息块绑定........................................................................................................................................4-7
4.3.6 分组的有效性.....................................................................................................................................4-7
4.3.7 通路管理............................................................................................................................................4-7
4.4 SCTP原语....................................................................................................................................................4-8
4.4.1 SCTP用户向SCTP发送的请求原语................................................................................................4-8
4.4.2 SCTP向SCTP用户发送的通知原语..............................................................................................4-10
4.5 SCTP协议消息..........................................................................................................................................4-12
4.5.1 消息结构..........................................................................................................................................4-12
4.5.2 SCTP数据块的格式.........................................................................................................................4-16
4.5.3 SCTP端点维护的参数和建议值.....................................................................................................4-31
4.6 SCTP基本信令流程..................................................................................................................................4-34
4.6.1 偶联的建立和发送流程...................................................................................................................4-34
4.6.2 偶联关闭流程...................................................................................................................................4-37
文档版本 02 (2007-04-10) 华为技术有限公司
i
插图目录
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
插图目录
图4-1 SCTP双归属...........................................................................................................................................4-3
图4-2 确定通路选择方式的数据配置.............................................................................................................4-4
图4-3 SCTP功能示意图...................................................................................................................................4-6
图4-4 SCTP分组结构.....................................................................................................................................4-12
图4-5 任选/可变长参数格式.........................................................................................................................4-15
图4-6 DATA数据块格式................................................................................................................................4-17
图4-7 INIT数据块格式..................................................................................................................................4-19
图4-8 INIT ACK数据块格式.........................................................................................................................4-21
图4-9 SACK数据块格式................................................................................................................................4-23
图4-10 HEARTBEAT数据块格式..................................................................................................................4-24
图4-11 HEARTBEAT信息参数格式..............................................................................................................4-25
图4-12 HEARTBEAT ACK数据块格式........................................................................................................4-25
图4-13 ABORT数据块格式...........................................................................................................................4-26
图4-14 SHUTDOWN数据块格式..................................................................................................................4-27
图4-15 SHUTDOWN ACK数据块格式.........................................................................................................4-27
图4-16 ERROR数据块格式...........................................................................................................................4-28
图4-17 差错原因参数的格式.........................................................................................................................4-28
图4-18 COOKIE EHCO数据块的格式..........................................................................................................4-30
图4-19 COOKIE ACK数据块格式................................................................................................................4-31
图4-20 SHUTDOWN COMPLETE数据块的格式........................................................................................4-31
图4-21 偶联建立过程消息交互图.................................................................................................................4-35
图4-22 偶联正常关闭消息交互图.................................................................................................................4-38
ii
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 表格目录
表格目录
表4-1 SCTP请求原语.......................................................................................................................................4-8
表4-2 SCTP通知原语.....................................................................................................................................4-10
表4-3 SCTP数据块消息类型.........................................................................................................................4-13
表4-4 接收端点不能识别块类型时,块类型最高2bit含义.......................................................................4-14
表4-5 接收端点不能识别块参数类型时,参数类型最高2bit含义...........................................................4-16
表4-6 BE比特的取值含义.............................................................................................................................4-17
表4-7 原因特定信息与原因编码对应关系...................................................................................................4-28
表4-8 对应每个SCTP实例所需的参数.......................................................................................................4-32
表4-9 对应每个偶联SCTP端点所需的参数...............................................................................................4-32
表4-10 对应每个传送地址所需的参数.........................................................................................................4-33
文档版本 02 (2007-04-10) 华为技术有限公司
iii
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
4
关于本章
本章描述内容如下表所示。
标题
4.1 概述
4.2 SCTP相关术语
4.3 SCTP功能
4.4 SCTP原语
4.5 SCTP协议消息
4.6 SCTP基本信令流程
内容
概述SCTP协议制定的背景
介绍SCTP的相关术语。
介绍SCTP的功能。
介绍SCTP的原语。
SCTP协议
介绍SCTP的协议消息结构、数据块格式等。
介绍SCTP的基本信令流程。
文档版本 02 (2007-04-10) 华为技术有限公司
4-1
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
4.1 概述
在流控制传输协议SCTP(Stream Control Transmission Protocol)制定以前,在IP网上
传输七号信令使用的是UDP和TCP协议。UDP是一种无连接的传输协议,无法满足七
号信令对传输质量的要求。TCP协议是一种有连接的传输协议,可以信令的可靠传输,
但是TCP协议具有行头阻塞、实时性差、支持多归属比较困难、易受拒绝服务攻击(Dos)
的缺陷。因此IETF(Internet Engineering Task Force)RFC2960制定了面向连接的基于
分组的可靠传输协议SCTP协议。SCTP对TCP的缺陷进行了完善,使得信令传输具有
更高的可靠性,SCTP的设计包括适当的拥塞控制、防止泛滥和伪装攻击、更优的实时
性能和多归属性支持,因此,SCTP成为SIGTRAN协议族中的传输协议。
SCTP被视为一个传输层协议,它的上层为SCTP用户应用,下层作为分组网络。在
SIGTRAN协议的应用中,SCTP上层用户是SCN信令的适配模块(如M2UA、M3UA),
下层是IP网。
4.2 SCTP相关术语
传送地址
传送地址由IP地址、传输层协议类型和传输层端口号定义。由于SCTP在IP上传输,
所以一个SCTP传送地址由一个IP地址加一个SCTP端口号决定。SCTP端口号就是
SCTP用来识别同一地址上的用户,和TCP端口号是一个概念。比如IP地址10.105.28.92
和SCTP端口号1024标识了一个传送地址,而10.105.28.93和1024则标识了另外一个
传送地址,同样,10.105.28.92和端口号1023也标识了一个不同的传送地址。
主机和端点
z
主机(Host)
主机配有一个或多个IP地址,是一个典型的物理实体。
z
端点(SCTP Endpoint)
端点是SCTP的基本逻辑概念,是数据报的逻辑发送者和接收者,是一个典型的逻辑实
体。
一个传送地址(IP地址+SCTP端口号)唯一标识一个端点。一个端点可以由多个传送
地址进行定义,但对于同一个目的端点而言,这些传送地址中的IP地址可以配置成多
个,但必须使用相同的SCTP端口。
一个主机上可以有多个端点。
偶联和流
z
偶联(Association)
4-2
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
偶联就是两个SCTP端点通过SCTP协议规定的4步握手机制建立起来的进行数据传递
的逻辑联系或者通道。
SCTP协议规定在任何时刻两个端点之间能且仅能建立一个偶联。由于偶联由两个端点
的传送地址来定义,所以通过数据配置本地IP地址、本地SCTP端口号、对端IP地址、
对端SCTP端口号等四个参数,可以唯一标识一个SCTP偶联。正因为如此,在
GTSOFTX3000中,偶联可以被看成是一条M2UA链路或M3UA链路。
z
流(Stream)
流是SCTP协议的一个特色术语。SCTP偶联中的流用来指示需要按顺序递交到高层协
议的用户消息的序列,在同一个流中的消息需要按照其顺序进行递交。严格地说,“流”
就是一个SCTP偶联中,从一个端点到另一个端点的单向逻辑通道。一个偶联是由多个
单向的流组成的。各个流之间相对独立,使用流ID进行标识,每个流可以单独发送数
据而不受其他流的影响。
一个偶联中可以包含多个流,可用流的数量是在建立偶联时由双方端点协商决定,而一个流
只能属于一个偶联。同时,出局的流数量可以与入局流数量的取值不同。
顺序提交的数据必须在一个流里面传输。
z
z
通路(Path)和首选通路(Primary Path)
z
通路(Path)
通路是一个端点将SCTP分组发送到对端端点特定目的传送地址的路由。如果分组发送
到对端端点不同的目的传送地址时,不需要配置单独的通路。
z
首选通路(Primary Path)
首选通路是在默认情况下,目的地址、源地址在SCTP分组中发到对端端点的通路。如
果可以使用多个目的地址作为到一个端点的目的地址,则这个SCTP端点为多归属。如
果发出SCTP分组的端点属于多归属节点时,如果定义了目的地址、源地址,能够更好
控制响应数据块返回的通路和数据包被发送的接口。
一个SCTP偶联的两个SCTP端点都可以配置多个IP地址,这样一个偶联的两个端点之
间具有多条通路,这就是SCTP偶联的多地址性。SCTP偶联的多地址性是SCTP与TCP
最大的不同。
一个偶联可以包括多条通路,但只有一个首选通路。如图4-1所示,MGC(如
GTSOFTX3000)一个端点包括两个传送地址(10.11.23.14:2905和10.11.23.15:2905),
而SG一个端点也包括两个传送地址(10.11.23.16:2904和10.11.23.17:2904)。
图4-1 SCTP双归属
10.11.23.14
MGC
Path2
Path0
10.11.23.16
Path1
Path3
SG
10.11.23.1510.11.23.17
文档版本 02 (2007-04-10) 华为技术有限公司
4-3
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
此两个端点决定了一个偶联,该偶联包括4条通路(Path0、Path1、Path2和Path3)。根
据数据配置可以确定此4条通路的选择方式,如图4-2所示。图中定义了4条通路,而
且首选通路为Path0:
z
Path0:本端传送地址1(10.11.23.14:2905)发送SCTP分组到对端传送地址1
(10.11.23.16:2904)。
Path1:本端传送地址1(10.11.23.14:2905)发送SCTP分组到对端传送地址2
(10.11.23.17:2904)。
Path2:本端传送地址2(10.11.23.15:2905)发送SCTP分组到对端传送地址1
(10.11.23.16:2904)。
Path3:本端传送地址2(10.11.23.15:2905)发送SCTP分组到对端传送地址2
(10.11.23.17:2904)。
z
z
z
端点发送的SCTP工作原理为:本端点传送地址A发送的SCTP包通过首选通路发送到
对端端点。当首选通路出现故障后,SCTP可以自动切换到其他备用通路上,优先切换
对端端点的传送地址,再次切换本端端点的传送地址。
SCTP定义了心跳消息(Heart Beat)。当某条通路空闲时,本端SCTP用户要求SCTP
生成相应的心跳消息并通过该通路发送到对端端点,而对端端点必须立即发回对应的心
跳确认消息。这种机制被用来精确测量回路时延RTT(Round Trip Time),而且可以随
时监视偶联的可用情况和保持SCTP偶联的激活状态。
图4-2 确定通路选择方式的数据配置
4-4
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
TSN和SSN
z
传输顺序号TSN(Transmission Sequence Number)
SCTP使用TSN机制实现数据的确认传输。一个偶联的一端为本端发送的每个数据块顺
序分配一个基于初始TSN的32位顺序号,以便对端收到时进行确认。
TSN是基于偶联进行维护的。
在TCP协议中,数据的确认传输和顺序递交是通过TSN这一种机制实现的。当发现TSN不连续
时候,TCP将进行数据重传,直到TSN连续以后才将数据向TCP层的上层用户递交。这实现机
制导致TCP协议不能满足七号信令对于低传输时延的要求。
z
流顺序号SSN(Stream Sequence Number)
SCTP为本端在这个流中发送的每个数据块顺序分配一个16位SSN,以便保证流内的顺
序传递。
在偶联建立时,所有流中的SSN都是从0开始。当SSN到达65535后,则接下来的SSN
为0。
TSN和SSN的分配是相互独立的。
拥塞窗口CWND(Congestion Window)
SCTP也是一个滑动窗口协议,拥塞窗口是针对每个目的地址维护的,它会根据网络状
况调节。当目的地址的发送未证实消息长度超过其CWND时,端点将停止向这个地址
发送数据。
接收窗口RWND(Receive Window)
RWND用来描述一个偶联对端的接收缓冲区大小。偶联建立过程中,双方会交换彼此的
初始RWND。RWND会根据数据发送、证实的情况即时地变化。RWND的大小限制了
SCTP可以发送的数据的大小。当RWND等于0时,SCTP还可以发送一个数据报,以
便通过证实消息得知对方缓冲区的变化,直到达到CWND的限制。
传输控制块TCB(Transmission Control Block)
TCB是一种内部数据结构,是一个SCTP端点为它与其他端点之间已经启动的每一个偶
联生成的。TCB包括端点的所有状态、操作信息,便于维护和管理相应的偶联。
4.3 SCTP功能
如图4-3所示,SCTP的功能主要包括:
偶联的建立和关闭、流内消息顺序递交、用户数据分段、证实和避免拥塞、消息块绑定、
分组的有效性和通路管理。
文档版本 02 (2007-04-10) 华为技术有限公司
4-5
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
图4-3 SCTP功能示意图
流内顺序递交
偶
联
的
建
立
和
关
闭
用户数据分段
证实和避免拥塞
数据块绑定
分组的有效性
通路管理
4.3.1 偶联的建立和关闭
偶联的建立是由SCTP用户(如M2UA、M3UA等)发起请求来启动的。而且建立过程
相对于TCP连接而言比较复杂,是个“四次握手”过程,并用到了“COOKIE”的机制。
COOKIE是一个含有端点初始信息和加密信息的数据块,通信的双方在关联建立时需要
处理并交换,从而增加协议的安全性,防止拒绝服务和伪装等潜在的攻击。
SCTP提供了对激活偶联的正常的关闭程序,它必须根据SCTP用户的请求来执行,当
然SCTP也提供一种非正常(即中止)程序,中止程序的执行既可以根据SCTP用户的
请求来启动,也可以由SCTP协议检查出差错来中止。
SCTP不支持半打开状态(即一端可以在另一端结束后继续发送数据)。无论是哪个端点
执行了关闭程序,偶联的两端都应停止接受从SCTP用户发来请求原语。
4.3.2 流内消息顺序递交
SCTP提供数据报的顺序传递,顺序传递的数据报必须放在一个“流”中传递。流是顺
序传递的基石。
通过流,SCTP将数据的确认和传输的有序递交分成两种不同机制。SCTP使用TSN机
制实现了数据的确认传输,使用流号和SSN(流顺序号)则实现数据的有序递交。当
SCTP收到数据的SSN连续的时候,SCTP就可以将数据向SCTP用户递交,而不用等
到数据的TSN号连续以后才向SCTP用户递交。
当一个流被闭塞时,期望的下一个连续的SCTP用户消息可以从另外的流上进行递交。
SCTP也提供非顺序递交的业务,接收到的用户消息可以使用这种方式立即递交到SCTP
用户,而不需要保证其接收顺序。
4-6
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
4.3.3 用户数据分段
SCTP通过对传送通路上最大PMTU(Path Maximum Transmission Unit)的检测,实现
在SCTP层将超大用户数据分片打包,避免在IP层的多次分片、重组,可以减少IP层
的数据负担。
z
在发送端,SCTP可以对大的用户数据报进行分片以确保SCTP数据报传递到低层
时适合通路MTU(Maximum Transmission Unit)。
在接收端,SCTP将分片重组为完整的用户数据报,然后传递给SCTP用户。
z
4.3.4 证实和避免拥塞
证实和重传是协议保证传输可靠性的策略,SCTP也一样。证实机制是SCTP保证传输
可靠性的基石。避免拥塞沿袭了TCP的窗口机制,进行合适的流量控制。
z
SCTP在将数据(数据分片或未分片的用户数据报)发送给底层之前顺序地为之分
配一个发送顺序号(TSN)。
TSN和SSN(流顺序号)是相互独立的,TSN用于保证传输的可靠性,SSN用于
保证流内消息的顺序传递。
TSN和SSN在功能上使可靠传递和顺序传递分开。接收端证实所有收到的TSNs,
即使其中有些尚未收到。
包重发功能负责TSN的证实,还负责拥塞消除。
z
z
z
4.3.5 消息块绑定
如果长度很短的用户数据被带上很大一个SCTP消息头,其传递效率会很低,因此,SCTP
将几个用户数据绑定在一个SCTP报文里面传输,以提高带宽的利用率。
z
SCTP分组由公共分组头和一个/多个信息块组成,信息块可以是用户数据,也可以
是SCTP控制信息。
SCTP用户能够可选地使用捆绑功能,决定是否将多个用户数据报捆绑在一个SCTP
分组中。
为提高效率,拥塞/重发时,捆绑功能可能仍被执行,即使用户已经禁止捆绑。
z
z
4.3.6 分组的有效性
分组的有效性是SCTP提供无差错传输的基石。SCTP分组的公共分组头包含一个验证
标签(Verification Tag)和一个可选的32位校验码(Checksum)。
验证标签的值由偶联两端在偶联启动时选择。如果收到的分组中如果没有期望的验证标
签值,接收端将丢弃这个分组,以阻止攻击和失效的SCTP分组。
校验码由SCTP分组的发送方设置,以提供附加的保护,用来避免由网络造成的数据差
错。接收端将丢弃包含无效校验码的SCTP分组。
4.3.7 通路管理
发送端的SCTP用户能够使用一组传送地址作为SCTP分组的目的地。SCTP管理功能
可以根据SCTP用户的指令和当前合格的目的地集合的可达性状态,为每个发送的SCTP
分组选择一个目的地传送地址。当其他分组业务量不能完全表明可达性时,通路管理功
文档版本 02 (2007-04-10) 华为技术有限公司
4-7
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
能可以通过心跳消息来监视到某个目的地址的可达性,并当任何对端传送地址的可达性
发生变化时,向SCTP用户提供指示。通路功能也用来在偶联建立时,向对端报告合格
的本端传送地址集合,并把从对端返回的传送地址报告给本地的SCTP用户。
在偶联建立时,为每个SCTP端点定义一个首选通路,用来正常情况下发送SCTP分组。
在接收端,通路管理功能在处理SCTP分组前,用来验证入局的SCTP分组属于的偶联
是否存在。
4.4 SCTP原语
SCTP通过接收高层协议(SCTP用户)发送的原语请求,为SCTP的用户提供服务。同
时SCTP可以根据不同事件向SCTP用户发送通知原语。
SCTP原语描述使用了如下格式:
原语名:必备属性,任选属性
返回结果:必备属性,任选属性
4.4.1 SCTP用户向SCTP发送的请求原语
SCTP用户向SCTP发送的请求原语共有16种,含义如表4-1所示。
表4-1 SCTP请求原语
原语名
INITIALIZE
功能
允许SCTP启动其内部的数据结构,并为建立操作环境分配所需的资
源,一旦SCTP启动后,则高层协议在与其他SCTP端点之间通信时
就不需要再调用此原语。
SCTP将向高层协议返回本地准备处理SCTP偶联的事件号(实例)。
ASSOCIATE
由高层启动一个到特定端点的偶联。对端端点将按照该端点定义的
传送地址的方式进行规定。如果偶联事件尚未启动,则认为该原语
是一个错误。
用来本地处理SCTP偶联的偶联ID,将作为返回结果用来返回偶联
是否成功建立。如果偶联建立不成功,则返回一个差错。如果偶联
成功,则返回结果中还应包含到对端的完整传送地址以及本端端点
出局的流数量,同时还应从返回的目的地址中选择一个传送地址,
该传送地址将作为本地端点向对端端点发送SCTP分组的首选通路。
返回的“目的地传送地址列表”可以由SCTP用户用来改变首选通路
或者是向一个特定传送地址强制发送一个SCTP分组。
返回结果:偶联ID
4-8
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
原语名
SHUTDOWN
功能
用来正常地关闭一个偶联,任何以在本地发送队列中的用户数据都
将被递交到对端。该偶联将在收到所有发送的SCTP分组的证实后停
止。
返回结果用来指示是否成功关闭了该偶联。如果成功关闭,则反馈
一个成功关闭偶联编码;如果关闭失败,则返回一个差错编码。
ABORT
用来非正常关闭一个偶联,本地发送队列中的用户数据将被丢弃,
并发送一个ABORT数据块到对端。
返回结果用来指示是否成功中止了该偶联。如果中止成功,则返回
一个已经中止的偶联编码。如果中止失败,则返回一个差错编码。
SEND
SCTP用户使用该原语通知SCTP在指定流ID中向目的地发送地址
发送数据。
返回结果用来指示是否成功发送了数据。
SET
PRIMARY
高层协议使用该原语指示本地SCTP将指定的目的地传送地址作为
发送分组的首选通路。
返回结果为结果编码,指示此操作是否成功执行。如果规定的目的
地传送地址没包含在ASSOCIATE请求原语或COMMUNCIATION
UP通知原语返回的“目的地传送地址列表”中,则返回一个差错。
RECEIVE
用来把在SCTP队列中的可用的用户消息读到由SCTP用户规定的缓
冲区中。
所读消息的字节数将作为结果返回。如果有可能根据特定的规定,
也可以返回其他消息,如发送方的地址、收到消息的流ID、是否有
消息可以进行恢复等。对于顺序的消息,消息的流顺序号码(SSN)
也可以被返回。
STATUS
用来要求SCTP返回一个包含以下信息的数据块:偶联连接状态、目
的地传送地址表、目的传送地址的可达性状态、当前的接收方窗口
大小、当前的拥塞窗口大小、未确认的DATA数据块的数量、收到
的DATA数据块的数量、首选通路、首选通路上最近收到的SRTT、
首选通路的RTO。
返回结果为要求返回信息的状态。
CHANGE
HEARTBEAT
高层协议用该原语指示本地端点允许或禁止向指定的目的地传送地
址发送心跳消息。
返回结果用来指示该操作的执行情况。当目的传送地址未空闲时,
心跳程序也不执行。
REQUEST
HERATBEAT
高层协议用该原语指示本地端点对指定偶联的特定目的地址执行心
跳程序。
返回结果用来指示传送给目的地址的HEART BEART数据块是否成
功。
文档版本 02 (2007-04-10) 华为技术有限公司
4-9
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
原语名
GET SRTT
REPORT
功能
高层协议用该原语指示本地SCTP报告对给定偶联上规定的目的地
传送地址的当前SRTT测量值。
返回结果是一个包含最近SRTT的毫秒值。
SET
FRAILURE
THRESHOLD
SET
PROTOCOL
PARAMETER
S
RECEIVE
UNSENT
MESSAGE
RECEIVE
UNACKNOW
LEDGED
MESSAGE
DESTROY
允许本地SCTP定制到给目的地传送地址的可达性故障检出的门限。
返回结果用来指示该操作是否成功。
允许本地SCTP定制协议参数。
返回结果用来指示该操作是否成功。
高层协议用该原语指示本地SCTP将收到故障消息在高层协议缓存
区储存。
返回结果为一个包含故障消息的字节数。
高层协议用该原语指示本地SCTP将收到的没有应答故障消息在高
层协议缓存区储存。
返回结果为一个包含没有应答消息的字节数。
指示本地哪个SCTP事件号(实例)被破坏。SCTP事件号由
INITIALIZE原语生成的。
返回结果为是否成功。
4.4.2 SCTP向SCTP用户发送的通知原语
SCTP向SCTP用户发送的通知原语共有8种,含义如表4-2所示。
表4-2 SCTP通知原语
原语名
DATA ARRIVE
功能
当一个用户消息被成功接收,并且准备向SCTP用户递交时,SCTP
使用该原语通知高层用户。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-流ID:用来指示数据从哪个流上接收到的。
SEND FAILURE
当一个消息不能递交时,SCTP使用该原语通知SCTP用户。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-数据恢复ID:用来恢复未发送和未证实数据的标识。
-原语编码:用来指示不能递交的原因,如长度过长、消息存活
时间过期等。
4-10
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
原语名
NETWORK
STATUS
CHANGE
功能
当目的地传送地址被标为未激活(如SCTP检测出故障)或标记为
激活时(SCTP检测出故障恢复),SCTP使用该原语通知SCTP
用户。
如下信息会被传递:
-偶联:本地处理的SCTP偶联
-目的地传送地址:指示由于状态变化而影响的对端端点的目的
地传送地址。
-新状态:指示新的状态。
COMMUNCIATI
ON UP
SCTP用该原语通知SCTP用户,指示本地SCTP已经准备好发送
或接收SCTP分组,或者时一个丢失通信的端点又已经恢复。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-状态:指示发生了哪种类型的事件
-目的地传送地址列表:对端端点的传送地址列表
-出局流数量:SCTP用户允许使用的最大的流数量
-入局流数量:对端端点对该偶联所请求的流数量,此值可以与
出局的流数量取值不同。
COMMUNICATI
ON LOST
当SCTP完全丢失了到某一个端点的通信时(用心跳消息),或者
是检测出端点已经执行了操作,SCTP使用该原语通知SCTP用户。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-状态:指示发生了哪种类型的事件。状态可以指示故障或者是
响应SHUTDOWN或ABORT请求原语的中止事件。
-数据恢复ID:用来指示恢复未发送或证实数据
-最后证实的TSN:对端端点最后证实的TSN
-最后发送的TSN:发送到对端端点最后一个TSN
COMMUNICATI
ON ERROR
当SCTP从对端端点收到了一个ERROR数据块,并且确定需要通
知高层用户时,才使用该通知原语。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-错误信息:指示错误类型并且可以任选地包含一些从ERROR数
据块中收到的附加信息。
RESTART
当SCTP检测出对端端点已经重新启动时,使用该原语通知SCTP
用户。
偶联ID会被传递。
文档版本 02 (2007-04-10) 华为技术有限公司
4-11
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
原语名
SHUTDOWN
COMPLETE
功能
当本地SCTP已经完成了偶联关闭后,是使用此原语通知SCTP用
户。
本地处理的SCTP偶联ID会被传递。
4.5 SCTP协议消息
4.5.1 消息结构
每个SCTP分组结构如所图4-4示。
图4-4 SCTP分组结构
16 bits
16 bits
Source Port Number
Destination Port Number
Verification Tag
Common
Header
Checksum
Chunk TypeChunk FlagsChunk Length
Chunk #1
Chunk Value
Chunk TypeChunk FlagsChunk Length
Chunk #n
Chunk Value
一个SCTP分组含了一个公共的分组头(Common Header)和若干数据块(Chunk),每
个数据块中既可以包含控制信息,也可以包含用户数据。除了INIT、INIT ACK和
SHUTDOWN COMPLETE数据块外,其他类型的多个数据块可以捆绑在一个SCTP分
4-12
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
组中,以满足对MTU大小的要求。当然,这些数据块也可以不与其他数据块捆绑在一
个分组中。如果一个用户消息不能放在一个SCTP分组中,这个消息可以被分成若干个
数据块。
公共分组头的格式
SCTP公共分组头中包括了源端口号(Source Port Number)、目的端口号(Destination Port
Number)、验证标签(Verification Tag)和校验码(Checksum)。
z
源端口号(16 bits)
源端口号识别SCTP发送端点的SCTP端口号。接收方可以使用源端口号、源IP地址、
目的端口号和目的IP地址标识该SCTP分组所属的偶联。
z
目的端口号(16 bits)
目的端口号为目的端点的SCTP端口号。接收主机可以使用目的端口号将SCTP分组解
复用到正确的端点或应用中。
z
验证标签(32 bits)
验证标签是偶联建立时,本端端点为这个偶联生成一个随机标识。偶联建立过程中,双
方会交换这个TAG,到了数据传递时,发送端必须在公共分组头中带上对端的这个TAG,
以备校验。
z
校验码(32 bits)
SCTP通过对用户数据使用ADLER-32算法,计算出一个32位的校验码,带在数据报
中,在接收端进行同样的运算,通过检查校验码是否相等来验证用户数据是否遭到破坏。
数据块字段的格式
数据块包括了块类型(Chunk Type)、块标志位(Chunk Flags)、块长度(Chunk Length)
和块值(Chunk Value )。
z
块类型(8 bits)
块类型定义在块值(Chunk Value)中消息所属的类型。表4-3列出了主要的块类型。
表4-3 SCTP数据块消息类型
ID
0
块类型
DATA(净数据)
说明
传输的用户数据块。
用于发起两个端点之间的SCTP偶联。
用来确认SCTP偶联的发起消息(INIT)。
该数据块送至对端,以确认收到DATA块,并且
通知对端DATA的接收顺序间隙。
1 INIT
2 INIT ACK
3 SACK
4 HEARTBEAT
端点发送该数据块至对端,以检测当前偶联中定
义的某一目的地址的可达性。
文档版本 02 (2007-04-10) 华为技术有限公司
4-13
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
ID
块类型 说明
5 HEARTBEAT ACK
响应HEARTBEAT消息。
6 ABORT
关闭偶联。
7 SHUTDOWN
偶联中的一个端点对其偶联发起一个GRACEFUL
关闭。
8 SHUTDOWN ACK
响应SHUTDOWN消息,关闭程序完成时发出。
9 ERROR
通知对端,SCTP偶联发生某种错误。
10 COOKIE ECHO
仅用于偶联发起过程,它由偶联的发起者发送至
对端以完成发起程序。
11 COOKIE ACK
COOKIE证实,相对于COOKIE ECHO
12 ECNE
13 CWR
14 SHUTDOWN
COMPLETE
15至62
-
保留,应用于外部环境拥塞发布回声
保留,应用于降低拥塞窗口
用于关闭程序完成时对SHUTDOWN ACK消息进
行确认
IETF保留
IETF定义块扩展使用
IETF保留
IETF定义块扩展使用
IETF保留
IETF定义块扩展使用
IETF保留
IETF定义块扩展使用
63 -
64至126
-
127 -
128至190
-
191 -
192至254
-
255 -
如果接收端点不能识别块类型时,块类型最高位2bit用于标识需要进行的各种操作,比
特组合含义如表4-4所示。
表4-4 接收端点不能识别块类型时,块类型最高2bit含义
Bits(最高两位) 含义
00
01
停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他消
息块。
停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他消
息块,并且在“ERROR”或“INIT ACK”中向发起端点返回不能
识别的参数。
4-14
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
Bits(最高两位) 含义
10
11
跳过此数据块并继续执行。
跳过此数据块并继续执行,并且在“ERROR”或“INIT ACK”中
向发起端点返回不能识别的参数。
z
数据块标志位(8bit)
块标志位用法由块类型决定。除非被置为其他值,块标记在传送过程中会被置0而且接
收端点会忽视块标记。
z
块长度(16bit)
块长度包括块类型(Chunk Type)、块标记(Chunk Flags)、块长度(Chunk Length)和
块值(Chunk Value),长度使用二进制表示。
z
块值(可变长度)
块值的内容在块中传送实际的信息,内容由消息块类型决定。块值的长度为不定长。
数据块的总长度(包括类型、长度和取值长度)必须是4字节的整数倍,如果该长度不是4字节
的整数倍,则发送方应当向数据块中填充全0的字节,这些填充的字节不计入数据块长度字段。
发送方填充的字节数应不超过3个字节,在接收方忽略所有的填充字节。
任选/可变长参数的格式
SCTP控制数据块(除DATA数据块外)的内容取值包含了数据块类型特定的数据块头
所要求的字段,随后是一个或多个参数。这些包含在一个数据块中的任选/可变长参数都
是按照参数类型、参数长度和参数取值的方式定义的,其格式如图4-5所示。
图4-5 任选/可变长参数格式
16 bits
16 bits
Parameter Type
Parameter Length
Parameter Value
z
数据块的参数类型(16bit)
参数类型字段用来识别参数的类型,取值范围从0到65534。65535预留给IETF进行扩
展。
如果接收端点不能识别参数类型时,参数类型中最高位2bit用于标识需要进行的各种操
作,比特组合含义如表4-5所示。
文档版本 02 (2007-04-10) 华为技术有限公司
4-15
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
表4-5 接收端点不能识别块参数类型时,参数类型最高2bit含义
Bits(最高两位)
00
01
含义
停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他
消息块。
停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他
消息块,并且在“ERROR”或“INIT ACK”的“不识别的参数
类型”字段中报告不识别的参数类型。
跳过此数据块并继续执行。
跳过此数据块并继续执行,并且在“ERROR”或“INIT ACK”
的“不识别的参数类型”字段中向发起端点返回不能识别的参数
类型。
10
11
z
数据块的参数长度(16bit)
参数长度字段包含参数类型、参数长度和参数取值字段在内所有字段的字节数。因此一
个参数的取值字段为0,则该长度字段应设置为4。参数长度字段不计算填充字节。
z
数据块的参数值(可变长度)
参数取值字段包含在该参数中传送的实际信息。
参的总长度(包括类型、长度和取值字段)必须是4字节的整数倍。如果该长度不是4字节的整
数倍,则发送方应当向数据块中填充全0的字节,这些填充的字节不计入参数长度字段。发送方
填充的字节数应不超过3个字节,接收方忽略所有的填充字节。
4.5.2 SCTP数据块的格式
净荷(DATA)数据块的格式
DATA数据块格式如图4-6所示。
4-16
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-6 DATA数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 0ReserveUBELength
TSN
Stream IDSSN
Payload Protocol Identifier
User Data
z
z
z
数据块类型为0
备用比特(5bit):设置全为0,在接收方忽略。
U比特(1比特)
非顺序比特。如果该比特设置为1,则指示这是一个非顺序的DATA数据块,不需要给
数据块分配顺序号码。所有接收方必须忽略SSN。
在重新组装完成后(如果需要),非顺序的数据块不需要尝试任何重新排序的过程,可
以由接收方直接递交到SCTP用户。
如果一个非顺序的用户消息被分段,则消息的每个分段中的U比特必须设置为1。
z
B比特
分段开始比特。如果该比特被设置,则指示这是用户消息的第一个分段。
z
E比特
分段结束比特。如果该比特被设置,则指示这是用户消息的最后一个分段。
一个没有分段的用户消息应当把所有的B和E比特设置为1。
如果B和E比特都设置为0,则表明这是一个分段的用户消息的一个中间分段。当用户
消息被分段到多个数据块中,接收方需要使用TSN对消息进行重组,这意味着给分段
的用户消息的每个分段都必须要使用连续的TSN。BE比特的取值含义如表4-6所示。
表4-6 BE比特的取值含义
BE
10
00
11
表示的含义
用户消息的第一个分段
用户消息的中间分段
用户消息的最后一个分段
文档版本 02 (2007-04-10) 华为技术有限公司
4-17
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
BE
11
z
表示的含义
未分段的消息
长度(16比特)
指示DATA数据块从类型字段开始到用户数据字段结束之间的字节数,但不包含任何填
充字节。如果DATA数据块的用户数据字段为0,则长度字段设为16。
z
TSN(32比特)
表示该数据块的TSN,TSN的有效值从0到2
32
-1。TSN值达到4294967295后将转回
到0。
z
Stream ID
用来识别用户数据属于的流。由INIT和INIT ACK数据块的发送者生成。
z
SSN(16bit)
表示所在流中的用户数据的顺序号码。该字段的有效值从0到65535。但一个用户消息
被SCTP分段后,则必须在消息的每个分段中都带相同的流顺序号码。
z
Payload Protocol Identifier(净负荷协议标识符)32bit
表示一个应用(或上层协议)特定的协议标识符。这个值由高层协议(SCTP用户)传
递到SCTP并发送到对等层。这个标识符不由SCTP使用,但可以由特定网络实体或对
端的应用来识别在DATA数据块中携带的信息类型。甚至在每个分段的DATA数据块中
也应包含该字段,以确保对网络中间的代理可用。
0表示高层协议(SCTP用户)未对该协议净荷规定应用标识符。
z
User Data(用户数据,可变长度)
它用来携带用户数据净荷。该字段必须被填充为4字节的整数倍,发送方填充的字节数
应不超过3个字节,接收方忽略所有的填充字节。
启动(INIT)数据块的格式
该数据块用来启动两个SCTP端点间的一个偶联,INIT数据块的格式如图4-7所示。
4-18
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-7 INIT数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 1
Chunk Flags
Length
Initiate Tag
Advertised Receiver Window Credit
Number of Outbound Streams
Initial TSN
Optional/Variable-Length Parameters
Number of Inbound Streams
INIT数据块应包括如下参数,除非特别支持,否则每个参数只能在INIT数据块中出现
一次:
必备参数为:启动标签(Initiate Tag)、广播的接收方窗口信用值(Advertised Receiver
Window Credit)、最大输出流数量(Number of Outbound Streams,OS)、最大输入流数
量(Number of Inbound Streams,MIS))、初始TSN(Initial TSN)。
可变长度参数:IPV4地址、IPV6地址、Cookie Preservative、ECN能力、主机名地址、
支持的地址类型。
z
INIT数据块标志字段
该字段备用,所有比特应设为0。INIT中的参数可以按任何顺序进行处理。
z
启动标签(Initiate Tag):32bit
INIT的接收方记录启动标签参数值。这个值必须被放置到INIT接收方发送的与该偶联
相关的每个SCTP分组中的验证标签字段中。
启动标签允许除0以外的任何值。如果在收到的INIT数据块中的启动标签为0,则接收
方必须作为错误处理,并且发送ABORT数据块中止该偶联。
z
广播的接收方窗口信用值(a_rwnd,32比特)
表示专用的缓冲区的容量,用字节数表示。INIT发送方为偶联预留的窗口。在偶联存活
期间,这个缓冲区的容量不应减少(即不应把该偶联的专用缓冲区取走),但端点可以
在发送的SACK数据块中修改a_rwnd的值。
z
输出流的数量(Number of Outbound Streams,OS)
定义发送INIT数据块的一方希望在该偶联中创建的输出流的数量。该值不允许为0。接
收方收到该参数为0的INIT数据块后会中止该偶联。
z
输入流的数量(Number of Inbound Streams,MIS)
文档版本 02 (2007-04-10) 华为技术有限公司
4-19
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
定义了发送这个INIT块的一方允许对端在该偶联中所创建的流的数量。该值不允许为
0。接收方收到该参数为0的INIT数据块后会中止该偶联。
z
初始TSN(Initial TSN)
定义发送方将使用的初始的TSN,该值可以设置为启动标签字段的值。
z
IP v4地址
发送方端点的IP v4地址,采用二进制编码。INIT数据块中可以包含多个IP V4或IP V6
地址或地址组合。
z
IP V6地址
发送方端点的IP V6地址,采用二进制编码。INIT数据块中可以包含多个IP V4或IP V6
地址或地址组合。发送方不必把IP V4地址映射到IP V6地址中,可以直接在IP V4地
址参数中使用IP V4地址。
与SCTP公共分组头中的源端口号一起,IP V4或IP V6地址参数中的地址可以用来指示
传送地址,并由INIT发送方所支持。在偶联存活期间,这个IP地址可以出现在IP包中
起源地址字段中,由INIT的发送者来发送,并且可以由INIT的接收者作为IP包的目
的地址。当INIT的发送方是一个多归属的情况时,多于一个IP地址参数可以包含在一
个INIT数据块中。此外一个多归属的端点可以接入到不同类型的网络,这样多于一个
的地址类型能够在INTI数据块中出现,即IP V4和IP V6的地址允许出现在同一个INIT
数据块中。
如果INTI中包含了至少一个IP地址参数,则IP数据报中的源IP包含在INIT数据块中,
INIT中提供的其他附加地址可以被接收INIT的端点作为目的地。如果INIT中未包含任
何IP地址参数,在收到INIT的端点必须使用收到的IP数据报中的源IP作为该偶联的
目的地址。
z
COOKIE Preservative
INIT的发送方应使用这个参数来建议INIT的接收方提供较长的存活跨度的状态
COOKIE。由于失效的COOKIE操作差错原因,前一次尝试与对等端建立偶联失败后,
又重新尝试偶联建立时,此参数由发送方添加到INIT数据块中。接收方出于安全的考
虑可以选择忽略建议的COOKIE存活跨度增量。
COOKIE Preservative参数中包含一个32bit的建议的COOKIE存活跨度(Suggested
Cookie Life-span Increment)参数:此参数用来向接收方指示发送方希望接收方为其缺省
的COOKIE的存活跨度增加的毫秒数。
z
主机名地址(Host Name Address)
INIT发送方使用此参数把其主机名(在IP地址中的位置)传递到对等层。这个对等层
负责解释这个主机名,用这个参数可以使偶联工作实现NAT穿越。
z
主机名(Host Name)
可变长度,该字段包含了按照RFC1123规定的“主机名句法”定义的主机名,主机名
地址的解析不在本SCTP标准中规定。
该参数中至少有一个空的中止符包含在主机名字符串中,并且应包含长度。
z
支持的地址类型(Supported Address Types)
4-20
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
INIT的发送方使用该参数列出其所支持的全部地址类型。
z
地址类型(Address Type)
该参数使用对应的地址类型的类型值,如IPV4=5,IPV6=6,主机名(Host Name)=
11。
启动证实(INIT ACK)数据块的格式
INIT ACK数据块用来确认SCTP偶联的启动。
如图4-8所示,INIT ACK的参数部分与INIT数据块的参数部分相同,还使用两个可变
长度的参数:COOKIE(STATE COOKIE)和未识别的参数。
图4-8 INIT ACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 2
Chunk Flags
Length
Initiate Tag
Advertised Receiver Window Credit
Number of Outbound Streams
Initial TSN
Optional/Variable-Length Parameters
Number of Inbound Streams
z
启动标签(Initiate Tag)32bit
INIT ACK的接收方记录启动标签参数的值,并把该值放到每个INIT ACK接收方在相
应的偶联上发送的每个SCTP分组中的验证标签。
启动标签不允许为0。如果收到的INIT ACK数据块中的启动标签为0,则接收方当作错
误来处理并通过发送ABORT来关闭偶联。
z
广播的接收方窗口信用值(Advertised Receiver Window Credit)32bit
表示专用的缓冲区的容量,用字节数表示,INIT ACK发送方为偶联预留的窗口,在偶
联存活期间,这个缓冲区的容量不应减少。
z
输出流的数量(Number of Outbound Streams,OS)16bit
定义发送INIT ACK数据块的一方希望在该偶联中创建的输出流的数量。该值不允许为
0。接收方收到该参数为0的INIT ACK数据块后中止该偶联并舍弃TCB。
z
输入流的数量(Number of Inbound Streams,MIS)16bit
文档版本 02 (2007-04-10) 华为技术有限公司
4-21
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
定义发送INIT ACK数据块的一方允许对端端点在偶联中所创建的流的最大数量。该值
不允许为0。接收方收到该参数为0的INIT ACK数据块后中止该偶联并舍弃TCB。
z
初始TSN( Initial TSN)32bit
定义发送方将使用的TSN,该值可以设置为启动标签字段的值。
z
IPV4地址和IP V6地址
与SCTP公共分组头中的源端口号一起,IP V4或IP V6地址参数中的地址可以用来指示
传送地址,并由INIT ACK发送方所支持。在偶联存活期间,这个IP地址可以出现在IP
包中起源地址字段中,由INIT ACK的发送者来发送,并且可以由INIT ACK的接收者
作为IP包的目的地址。当INIT ACK的发送方是一个多归属的情况时,多于一个IP地
址参数可以包含在一个INIT数据块中。此外一个多归属的端点可以接入到不同类型的
网络,这样多于一个的地址类型能够在INTI数据块中出现,即IP V4和IP V6的地址允
许出现在同一个INIT数据块中。
如果INTI ACK中包含了至少一个IP地址参数,则IP数据报中的源IP包含在INIT ACK
数据块中,INIT ACK中提供的其他附加地址可以被接收INIT ACK的端点作为目的地。
如果INIT ACK中未包含任何IP地址参数,在收到INIT ACK的端点必须使用收到的IP
数据报中的源IP作为该偶联的目的地址。
z
状态COOKIE(State COOKIE)可变长度
该参数长度取决于COOKIE的长度,该参数值的取值必须包含由INIT ACK发送方创建
该偶联所需的所有状态、参数信息和消息授权码。
z
不识别参数(Unrecognized Parameters)可变长度
该参数内容是INIT数据块中包含的一个不识别的参数,该参数用来返回给INIT数据块
的产生者一个指示。此参数字段包含了从INIT数据块中复制过来的不识别参数的完整
的参数类型、长度和参数值。
选择证实(SACK)数据块的格式
SACK通过使用DATA数据块中的TSN用来向对端端点确认接收到的DATA数据块,
并通知对端端点在收到的DATA数据块中的间隔。所谓间隔就是指收到的DATA数据块
的TSN不连续的情况。
SACK数据块格式如图4-9所示。
4-22
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-9 SACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 3
Chunk Flags
Length
Cumulative TSN Ack
Advertised Receiver Window Credit (a_rwnd)
Number of Gap AckBlocks = NNumber of Duplicate TSNs= X
Gap AckBlock #1 End
Gap AckBlock #1 Start
Gap AckBlock #n Start
Gap AckBlock #n End
Duplicate TSN 1
Duplicate TSN X
z
数据块类型(Type)
数值为3。
z
数据块标志
设为全0并由接收方忽略。
z
累积TSN证实(Cumulative TSN Ack)
指收到的TSN顺序断开前的最后一个TSN号码,下一个TSN则是在发送SACK的端
点尚未收到TSN值。这个参数包含了在收到TSN序列的间隔前的最后一个TSN值。此
参数确认已经收到了小于或等于该值的所有TSN。
z
广播的接收方窗口信用值(Advertised Receiver Window Credit (a_rwnd))
指示修改了SACK的发送方的接收缓冲容量的字节数。
z
间隔证实块的数目(Number of Gap Ack Blocks = N )
指示SACK数据块中包含的间隔证实块的数目。每个间隔证实块确认了在一个不连续
TSN后所收到的TSN序列,所有通过间隔证实块确认的TSN都比累积TSN证实的值
大。
z
重复的TSN数目(Number of Duplicate TSNs = X)
包含了该端点收到的重复的TSN的数目。每个重复的TSN都列在间隔证实块列表后。
z
间隔证实块(Gap Ack Blocks)
文档版本 02 (2007-04-10) 华为技术有限公司
4-23
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
此字段包含了间隔证实块,根据间隔证实块数量字段给出的值,间隔证实块重复若干次。
所有TSN大于或等于累积TSN证实+间隔证实块开始的DATA数据块,或者是小于或
等于每个间隔证实块的累积TSN证实+间隔证实块结束的DATA数据块都可以认为是
被正确接收了。
z
间隔证实块开始(Gap Ack Block Start)
该字段用来指示这个间隔整数块的开始TSN偏移。为了计算实际的TSN号码必须用累
积TSN证实加上偏移号码。计算出来的TSN标识用于识别第一个在这个间隔证实块中
被收到的TSN。
z
间隔证实块开始(Gap Ack Block End)
该字段用来指示这个间隔整数块的结束TSN偏移。为了计算实际的TSN号码必须用累
积TSN证实加上偏移号码。计算出来的TSN标识用于识别在这个间隔证实块中最后收
到的TSN。
z
重复的TSN(Duplicate TSN)
用来指示一个在上一个SACK发送后收到TSN重复个数。每次一个接收者收到一个重
复的TSN(在发送SACK前),则把这个TSN加到重复的TSN列表中。每发送一次SACK
后,则把统计重复TSN的计数器重新置0。
Heart Beat请求(HEARTBEAT)数据块的格式
SCTP端点通过向对端端点发送这个数据块,从而检测定义在该偶联上到特定目的地传
送地址的可达性。
HEARTBEAT数据块的格式如图4-10所示。
图4-10 HEARTBEAT数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 4
Chunk Flags
HEARTBEAT Length
Heartbeat Information TLV (Variable-Length)
z
数据块类型(Type)8bit
此值为4。
z
数据块标志(Chunk Flags)8bit
在发送方设置为全0,并在发送方忽略。
z
HEARTBEAT长度(HEARTBEAT Length)
设置为数据块长度的字节数,包括数据块头和HEARTBEAT信息参数的长度。
z
HEARTBEAT信息参数(HERATBEAT Information TLV)
4-24
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
HEARTBEAT参数字段包含HEARTBEAT信息(Heartbeat Information TLV),
HEARTBEAT信息是一个可变长度的非透明数据结构,其信息通常只需要发送方明白即
可。HEARTBEAT信息参数格式如图4-11所示。
图4-11 HEARTBEAT信息参数格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Heartbeat Info Type=1
Sender-specific Heartbeat Info
HB Info Length
当该HEARTBEAT数据块发送到目的地传送地址时,发送方特定的HEARTBEAT信息
字段(Sender-specific Heartbeat Info)通常包括关于发送方当前的时间信息。
Heart Beat证实(HEARTBEAT ACK)数据块的格式
SCTP端点在收到对端端点发来的HEARTBEAT数据块后,则发送该数据块作为响应。
HeartBeat证实数据块总是向包含HEARTBEAT数据块的IP数据包中的起源IP地址发
送,来作为对该HEARTBEAT数据块的响应。
HEARTBEAT ACK数据块格式如图4-12所示。
图4-12 HEARTBEAT ACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 5
Chunk FlagsHeartbeat AckLength
Heartbeat Information TLV (Variable-Length)
z
数据块类型(Type)8bit
此值为5。
z
数据块标志位(Chunk Flags)8bit
在发送方设置为全0,并在接收方忽略。
z
HEARTBEAT证实长度(HEARTBEAT ACK Length)
设置为数据块长度的字节数,包括数据块头和HEARTBEAT信息参数的长度。
z
HEARTBEAT信息参数(HEARTBEAT Information TLV)
可变长度,该字段的内容把HEARBEAT请求数据块中的HEARTBEAT信息参数作为回
送的响应,该参数字段包含一个可变长度的非透明的数据结构。
文档版本 02 (2007-04-10) 华为技术有限公司
4-25
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
中止(ABORT)数据块的格式
SCTP端点发送ABORT数据块来中止到对端端点的偶联,ABORT数据块中可以包含原
因参数来通知接收ABORT数据块的一方中止该偶联的原因。DATA数据块不能与
ABORT数据块捆绑在一个SCTP分组中。SCTP控制数据块中,除INIT、INIT ACK、
SHUTDOWN COMPLETE数据块外的数据块都可以与ABORT捆绑在一个SCTP分组
中,但这些捆绑的控制数据块都应放在SCTP分组中的ABORT数据块之前,否则这些
控制数据块会被接收方忽略。
如果一个端点收到了格式错误或与不存在的偶联相关的ABORT消息,则应当舍弃该消
息。此外,在任何情况下,端点收到一个ABORT消息后,都不能通过发送ABORT消
息作为响应。
ABORT数据块的格式如图4-13所示。
图4-13 ABORT数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 6ReservedT
Length
zero or more Error Causes
z
数据块类型(8bit)
该值为6。
z
数据块标志位(Chunk Flags)8bit
其中高7比特备用,在发送方设置为全0,并在接收方忽略。当发送方由一个TCB
(Transmission Control Block)被破坏时,则T比特设置为0;如果发送方没有TCB,则
T比特设置为1。
z
长度(Length)16bit
设置为该数据块的长度,包括数据块头和所有包含的差错原因字段。
z
0或多个差错原因(zero or more Error Causes)
ABORT数据块的信息内容。
关闭偶联(SHUTDOWN)数据块的格式
偶联的端点可以使用这个数据块启动对该偶联的正常关闭程序。SHUTDOWN数据块的
格式如图4-14所示。
4-26
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-14 SHUTDOWN数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 7Chunk Flags
Length=8
Cumulative TSN Ack
z
数据块类型(TYPE)
该值为7。
z
数据块标志(Chunk Flags)8bit
在发送方设置为全0,接收方忽略。
z
长度(Length)
指示SHUTDOWN数据块的长度,该字段设置为8。
z
累积的TSN证实(Cumulative TSN Ack)
包含了在任何间隔前收到的最后一个数据块的TSN。由于SHUTDOWN消息不包含间
隔证实块,因此,不能用来对收到的非连续TSN进行证实。
关闭证实(SHUTDOWN ACK)数据块的格式
在完成了偶联关闭后,必须使用SHUTDOWN ACK数据块确认收到的SHUTDOWN数
据块。SHUTDOWN ACK数据块的格式如图4-15所示。
图4-15 SHUTDOWN ACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 8Chunk Flags
Length=4
数据块标志位(Chunk Flags):在发送方设置为全0,并在接收方忽略。
SHUTDOWN ACK中不再包含其他参数,因此长度设为4。
操作差错(ERROR)数据块的格式
SCTP端点发送ERROR数据块向其他对端端点通知一些特定的差错情况。该数据块中
可以包含一个或多个差错原因。一般操作差错不一定是致命的。致命差错情况的报告一
般使用ABORT数据块。ERROR数据块格式如图4-16所示。
文档版本 02 (2007-04-10) 华为技术有限公司
4-27
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
图4-16 ERROR数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type =9Chunk Flags
one or more Error Causes
Length
z
数据块格式(Type)8bit
该值为9。
z
数据块标志位(Chunk Flags)8bit
在发送方设置为全0,并在接收方忽略。
z
可变长度(Length)16位
设置为该数据块的字节数,包括数据块头和所有包含的差错原因字段的长度。
z
差错原因参数(Error causes)
差错原因参数包括原因编码、原因长度和原因特定的信息,格式如图4-17所示。
图4-17 差错原因参数的格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Cause Code
Cause Length
Cause-specific Information
原因特定信息由原因编码确定,其对应关系如表4-7所示。
表4-7 原因特定信息与原因编码对应关系
原因编码
1
含义
无效的流标识符:指示收到了一
个关于不存在的流的DATA数
据块
参数信息
流ID(16bit):包含了接收的差错的
DATA数据块的流ID。
备用字段(16bit):由发送方设为全0,
在接收方忽略。
原因长度=8
4-28
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
原因编码
2
含义
丢失必备参数:指示一个或多个
必备的参数在收到的INIT或
INIT ACK数据块中丢失。
参数信息
丢失的参数个数(32bit):指示丢失
的参数个数。
丢失的参数类型(16bit):丢失的必
备参数号。
原因长度=8+N×2
3
过期的COOKIE差错:指示收到
的有效的State Cookie已经过期
了。
过期测量(32bit):包含了当前时间
和State Cookie过期时的时间差值(用
微妙表示)。该差错原因的发送方可
以通过在该字段中包含一个非0的值
来报告State Cookie过期了多长时间。
如果发送方不希望提供此信息,则该
字段设置为0。
原因长度=8
4
资源耗尽:指示发送方的资源已
经耗尽,通常情况下,该差错原
因与ABORT数据块一起发送。
原因长度=4
5
不可解析的地址:指示发送方不不可解析的地址(可变长度):不能
能解析特定的地址参数(即发送解析的完整的地址参数或主机名参数
方不支持该类地址类型),通常(类型、长度和地址值)。
情况下,该差错原因与ABORT
原因长度为可变长度。
数据块一起发送。
不识别的数据块类型:如果接收
方不能识别数据块类型而且数
据块类型比特中的高位比特设
为1,则将不识别的数据块类型
错误返回给数据块的发送方。
无效的必备参数:当一个必备参
数被设置成无效值时,则向INIT
或INIT ACK的生成者返回无效
的必备参数差错原因。
不识别的参数:如果接收方不能
识别INIT ACK数据块中一个或
多个任选参数时,则向INIT
ACK数据块的发送方返回该参
数。
不识别的数据块(可变长度):该字
段包含SCTP分组中不识别数据块的
类型、数据块标志和数据块长度。
原因长度为可变长度。
原因长度=4
6
7
8
不识别参数(可变长度):包含了从
INIT ACK数据块中复制的完整的不
识别参数。当COOKIE ECHO数据块
的发送者希望报告不识别的参数时,
此参数通常是包含在ERROR数据块
中与COOKIE ECHO数据块捆绑在一
起发送作为对INIT ACK的响应。
原因长度为可变长度。
文档版本 02 (2007-04-10) 华为技术有限公司
4-29
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
原因编码
9
含义
无用户数据:如果收到的DATA
数据块中未包含用户数据,则把
此差错原因返回给发送方。
参数信息
TSN:接收到的没有用户数据的DATA
数据块TSN值。
原因长度=8
10
关闭阶段收到COOKIE:当端点
原因长度=4
处于SHUTDOWN-ACK-SENT
状态,收到COOKIE ECHO时,
则发送此差错原因。
状态COOKIE(COOKIE ECHO)数据块的格式
COOKIE ECHO数据块只在启动偶联时使用,它由偶联的发起者发送到对端端点,以完
成启动的过程。COOKIE ECHO必须在该偶联上发送的DATA数据块前发送,但可以与
其他的DATA数据块捆绑到同一个SCTP分组中。
COOKIE ECHO数据块的格式如图4-18所示。
图4-18 COOKIE EHCO数据块的格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type =10Chunk Flags
COOKIE
Length
z
数据块类型(Type)8bit
该值为10。
z
数据块标志位(Chunk Flags)8bit
在发送方设置为全0,在接收方忽略。
z
长度(Length)16bit
该数据块长度的字节数,包括4字节的数据块头和COOKIE的长度。
z
COOKIE(可变长度)
该字段必须包含从前一个INIT ACK数据块的状态COOKIE(State COOKIE)参数中收
到准确的COOKIE,使用COOKIE时应尽可能的从小从而保证互操作性。
4-30
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
COOKIE证实(COOKIE ACK)数据块的格式
COOKIE ACK数据块只在启动偶联时使用,它用来证实收到COOKIE ECHO数据块。
这个数据块必须在该偶联上发送任何DATA或SACK数据块前发送,但这个数据块可以
与一个或多个DATA或SACK数据块捆绑在一个SCTP分组中发送。
如图4-19所示,COOKIE ACK数据块中没有任何其他参数。
图4-19 COOKIE ACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type =11Chunk Flags
Length=4
z
数据块标志(Chunk Flags)8bit
在发送方设置为全0,并在接收方忽略。
关闭完成(SHUTDOWN COMPLETE)数据块的格式
此数据块在完成关闭程序后用来确认收到的SHUTDOWN ACK数据块。
如图4-20所示,SHUTDOWN COPLIETE数据块中不含其他参数。
图4-20 SHUTDOWN COMPLETE数据块的格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type =14ReservedT
Length=4
z
数据块类型(Type)8bit
其中高7比特备用。备用比特在发送方设置全为0,在接收方忽略。
z
T比特(1比特)
当发送方有一个TCB被破坏时,则该T比特设置为0。如果发送方没有TCB,则把该
比特设置为1。
4.5.3 SCTP端点维护的参数和建议值
对应每个SCTP实例所需的参数
对应每个SCTP实例所需的参数如表4-8所示。
文档版本 02 (2007-04-10) 华为技术有限公司
4-31
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
表4-8 对应每个SCTP实例所需的参数
参数
偶联
密钥
地址列表
SCTP端口
含义
当前偶联列表,对应每个偶联的数据用户。
端点使用密钥来计算MAC,这应当是有足够长度的加密质量随机
数,RFC1750对密钥的选择有一些较为有益的说明。
一组该实例绑定的IP地址的列表,这个参数在INIT或INIT ACK
数据块中被传递到对端端点。
端点绑定的本地SCTP端口。
对应每个偶联SCTP端点所需的参数
对应每个偶联SCTP端点所需参数如表4-9所示。
表4-9 对应每个偶联SCTP端点所需的参数
参数
对端验证标签
本地验证标签
对端传送地址类
别
首选通路
全局差错计数
全局差错门限
对端的RWND
下一个TSN
含义
指收到的INIT或INIT ACK数据块中启动标签(Initiate Tag)字
段中的值。
指发出的INIT或INIT ACK数据块中启动标签(Initiate Tag)字
段中的值。
一组该实例绑定的IP地址的列表,这个参数在INIT或INIT ACK
数据块中被传递到对端端点。
端点绑定的本地SCTP端口。
整个偶联的所有差错计数。
这个门限用来控制偶联,当全局差错计数达到了这个门限,将导
致偶联的关闭或中止。
对端的Rwnd的当前计算值。
下一个TSN号码被分配给一个的DATA数据块,它可以在INIT
或INIT ACK数据块中发送到对端,并且这个号码每分配给DATA
数据块(通常的情况是在发送前或者是分段时)后加1。
这是最后一个按顺序收到的TSN,这个值最初是使用对端的初始
TSN来设定的,并在收到的INIT或INIT ACK数据块中携带,并
把该值减1得到。
这是一个以比特或字节定义的数组,它用来指示哪个收到的TSN
是非连续的(相对于最后收到的TSN)。如果不存在着不连续的
情况,即没有收到失序的分组,这个数组将被设置为全0。
最后收到的TSN
映射数组
4-32
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
参数
ACK状态
入局流
出局流
Reship Queue
本地传送地址列
表
偶联的PMTU
含义
这个标志位用来指示下一个收到的分组是否应当响应SACK,其
初始值为0。
一个用来跟踪入局流的数组结构,通常包含下一个希望收到的流
顺序号码的可能的流号码。
一个用来跟踪出局流的数组结构,通常包含下一个希望在某个流
上发送的流顺序号码。
一个重装队列。
该偶联绑定的本地IP地址
对所有对端端点传送地址发现的最小的PMTU(Path MTU)
对于一个给定的偶联,两个端点间使用的验证标签值在偶联的存活期间不需要改变。但无论何时
端点在清除偶联后,再重新建立到对端的偶联时则必须重新使用一个验证标签值。
对应每个传送地址所需的参数
对应于从INIT或INIT ACK中收到的对端端点地址列表中每个目的地传送地址,端点都
需要维护如表4-10所示的参数。
表4-10 对应每个传送地址所需的参数
参数
差错计数
差错门限
CWND
RTO(Retransmission
Timeout Value)
含义
对该目的地的当前差错计数。
对该目的地的当前差错门限,当差错计数到达该值时,则
标记到该目的传送地址的偶联停止。
当前的拥塞窗口。
当前的重发超时取值。
SRTT(Smoothed Round 当前的平滑双向时延值。
Trip Time)
RTTVAR(RTT
Variation)
部分字节证实
状态
PMTU
当前双向传播时间变化。
在拥塞避免模式下,CWND增加的跟踪方法。
目的地的当前状态,包括DOWN、UP、
ALLOW-HEARTBEAT、NO-HEARTBEAT。
当前已通知的通路MTU
文档版本 02 (2007-04-10) 华为技术有限公司
4-33
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
参数
每个目的地的定时器
最后使用时间
含义
针对每个目的地使用的定时器
指示最后向该目的地发送分组的时间,用来确定是否需要
发送HEART BEAT。
需要的通用参数
z
z
出局队列:出局DATA数据块的队列。
入局队列:入局DATA数据块的队列。
SCTP参数的建议值
z
z
z
z
z
z
z
z
z
z
RTO的初始值:3s
RTO的最小值:1s
RTO的最大值:60s
RTO Alpha:1/8
RTO Beta:1/4
有效的COOKIE寿命:60s
偶联的最大重传次数:10次
通路的最大重传次数:5次
IINIT的最大重传次数:8次
HEARTBEAT测试周期:30s
4.6 SCTP基本信令流程
4.6.1 偶联的建立和发送流程
SCTP端点A启动建立偶联,并向端点B发送一个用户消息,随后端点B向A发送两
个用户消息。(假定这些消息没有捆绑和分段)。信令流程如图4-21所示。
4-34
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-21 偶联建立过程消息交互图
Endpoint A
(1) INIT
(2) INIT ACK
(3) COOKIE ECHO
Endpoint B
(4) COOKIE ACK
(5) DATA
(6) SACK
(7) DATA
(8) DATA
(9) SACK
1. 端点A创建一个数据结构TCB(传输控制块)来描述即将发起的这个偶联(包含
偶联的基本信息),然后向端点B发送INIT数据块。INIT数据块中主要包括如下
参数:
z
启动标签(Initiate Tag):对端验证标签,如设为Tag_A。Tag_A是从1到4294967295
中的一个随机数。
输出流数量(OS):本端点期望的最大出局流的数量。
输入流数量(MIS):本端点允许入局流的最大数量。
对端点A、端点B而言,当收到对端端点的流信息后,都需要进行相关的检查。如果对端的最大
入局流数量比本端端点最大出局的流数量小,意味着对端端点不能支持本端端点期望的出局流的
数量,此时,本端端点可以使用对端端点最大入局流的数量作为本端端点出局流的数量,也可以
中止偶联并向SCTP用户报告对端端点资源短缺。
z
z
端点A发送INIT后启动一个INIT定时器,并进入COOKIE-WAIT状态。
INIT定时器作用是等待对端端点返回INIT ACK消息块。如果定时器超期仍收不到INTI ACK消
息块,本端端点则重发INIT数据块,直达到最大重发的次数。
2. 端点B收到INIT消息后,立即用INIT ACK数据块响应。INIT ACK数据块中必须
带有如下参数:
z
z
目的地IP地址:设置成INIT数据块的起源IP地址。
启动标签(Initiate Tag):设置成Tag_B。
文档版本 02 (2007-04-10) 华为技术有限公司
4-35
4 SCTP协议
z
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
状态COOKIE(STATE COOKIE):根据偶联的基本信息生成一个TCB,不过这个
TCB是一个临时TCB。这个TCB生成以后,将其中的必要信息(包含一个COOKIE
生成的时间戳、COOKIE的生命期)和一个本端的密钥通过RFC2401描述的算法
计算成一个32位的摘要MAC(这种计算是不可逆的)。必要信息和MAC组合成
STATE COOKIE参数。
本端点传送地址。
最大入局流的数量。
最大出局流的数量。
z
z
z
3. 端点A收到INIT ACK后,首先停止INIT定时器离开COOKIE-WAIT状态,然后
发送COOKIE ECHO数据块,将收到INIT ACK数据块中的STATE COOKIE参数
原封带回。最后端点A启动COOKIE定时器并进入COOKIE-ECHOED状态。
COOKIE ECHO数据块能够与DATA数据块捆绑在一个SCTP分组中发送,但COOKIE
ECHO必须是分组里的第一个数据块。除非收到返回的COOKIE ACK数据块,否则发
送端点不能给对端端点发送其他分组。
4. 端点B收到COOKIE ECHO数据块后,进行COOKIE验证。将STATE COOKIE
中的TCB部分和本端密钥根据RFC2401的MAC算法进行计算,得出的MAC和
STATE COOKIE中携带的MAC进行比较。如果不同则丢弃这个消息;如果相同,
则取出TCB部分的时间戳,和当前时间比较,看时间是否已经超过了COOKIE的
生命期。如果是,同样丢弃。否则根据TCB中的信息建立一个和端A的偶联。端
点B将状态迁入ESTABLISHED,并发出COOKIE ACK数据块。端点B向SCTP
用户发送SCOMMUNCIATION UP通知。
COOKIE ACK数据块能够与DATA、SACK数据块捆绑在一个SCTP分组中发送,但
COOKIE ACK必须是分组里的第一个数据块。
端点A收到COOKIE ACK数据块后,从COOKIE-ECHOED状态迁移到ESTAABLISHED
状态,并停止COOKIE定时器。端点A使用COMMUNICATION UP通知SCTP用户偶
联建立成功。
一个偶联的建立包括4次握手过程:INIT、INIT ACK、COOKIE ECHO和COOKIE ACK。
5. 端点A向端点B发送一个DATA数据块,启动T3-RTS定时器。DATA数据块中
必须带有如下参数:
z
z
z
TSN:DATA数据块的初始TSN。
流标识符(Stream Identifier):用户数据属于的流,假设流标识符为0。
流顺序码(Stream Sequence Number):所在流中的用户数据的顺序号码。该字段从
0到65535。
4-36
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
z
用户数据(User Data):携带用户数据净荷。
6. 端点B收到DATA数据块后,返回SACK数据块。SACK数据块中必须带有如下
参数:
z
z
累积证实TSN标签(Cumulative TSN Ack):端点A的初始TSN。
间隔块(Gap Ack Block):此值为0。
端点A收到SACK数据块后,停止T3-RTX定时器。
7. 端点B向端点A发送第一个DATA数据块。DATA数据块中必须带有如下参数:
z
z
z
TSN:端点B发出DATA数据块的初始TSN。
流标识符(Stream Identifier):用户数据属于的流,假设流标识符为0。
流顺序码(Stream Sequence Number):所在流中的用户数据的顺序号码。假设流顺
序码为0。
用户数据(User Data):携带用户数据净荷。
TSN:端点B发出DATA数据块的初始TSN+1。
流标识符(Stream Identifier):用户数据属于的流,假设流标识符为0。
流顺序码(Stream Sequence Number):所在流中的用户数据的顺序号码。此时流顺
序码为1。
用户数据(User Data):携带用户数据净荷。
z
8. 端点B向端点A发送第二个DATA数据块。DATA数据块中必须带有如下参数:
z
z
z
z
9. 端点A收到DATA数据块后,返回SACK数据块。SACK数据块中必须带有如下
参数:
z
z
累积证实TSN标签(Cumulative TSN Ack):端点B的初始TSN。
间隔块(Gap Ack Block):此值为0。
4.6.2 偶联关闭流程
一个端点退出服务时,需要停止它的偶联。偶联的停止使用两种流程:偶联的中止流程
(非正常关闭)和偶联的正常关闭流程。
偶联的中止(非正常关闭)可以在任何未完成期间进行,偶联的两端都舍弃数据并且不
提交到对端。此种方法不考虑数据的安全。偶联的中止步骤比较简单:发起端点向对端
端点发送ABORT数据块,发送的SCTP分组中必须填上对端端点的验证标签,而且不
在ABORT数据块中捆绑任何DATA数据;接收端点收到ABORT数据块后,进行验证
标签的检查。如果验证标签与本端验证标签相同,接收端点从记录上清除该偶联,并向
SCTP用户报告偶联的停止。
偶联的正常关闭:任何一个端点执行正常关闭程序时,偶联的两端将停止接受从其SCTP
用户发来的新数据,并且在发送或接收到SHUTDOWN数据块时,把分组中的数据递交
给SCTP用户。偶联的关闭可以保证所有两端的未发送、发送未证实数据得到发送和证
实后再终止偶联。
文档版本 02 (2007-04-10) 华为技术有限公司
4-37
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
图4-22 偶联正常关闭消息交互图
Endpoint A
(1) SHUTDOWN
(2) SHUTDOWN ACK
(3) SHUTDOWN COMPLETE
Endpoint B
偶联的正常关闭步骤如下:
1. 偶联关闭发起端点A的SCTP用户向SCTP发送请求SHUTDOWN原因。SCTP偶
联从ESTABLISHED状态迁入SHUTDOWN-PENDING状态。在这个状态,SCTP
不接受SCTP用户在这个偶联上的任何数据发送请求。同时等待端点A所有发送未
证实的数据得到端点B的证实。当所有端点A发送未证实数据得到证实,则向端
点B发送SHUTDOWN数据块。端点A启动T2-shutdown定时器进入
SHUTDOWN-SENT状态。启动T2-shutdown定时器的目的是等待端点B发回的
SHUTDOWN-ACK数据块,如果定时器超时,则端点A必须重新发送SHUTDOWN
数据块。
2. 端点B收到SHUTDOWN消息后,进入SHOUTDOWN-RECEIVED状态,不再
接收从SCTP用户发来的新数据,并且检查数据块的累积TSN ACK字段,验证所
有未完成的DATA数据块已经被SHUTDOWN的发送方接收。当端点B所有未发
送数据和发送未证实数据得到发送和证实后,发送SHUTDOWN ACK数据块并启
动本端T2-SHUTDOWN定时器,并且进入SHUTDOWN-ACK-SENT状态。如果定
时器超时了,端点B则重新发送SHUTDOWN ACK数据块。
3. 端点A收到SHUTDOWN ACK
消息后,停止T2-shutdown定时器,并且向端点B
发送SHUTDOWN COMPLETE数据块,并清除偶联的所有记录。端点B收到
SHUTDOWN COMPLETE数据块后,验证是否处于SHUTDOWN-ACK-SENT状态。
如果不是处于该状态,则丢弃该数据块;如果端点处于SHUTDOWN-ACK-SENT
状态,端点B则停止T2-shutdown定时器并清除偶联的所有记录,进入CLOSED
状态。
4-38
华为技术有限公司 文档版本 02 (2007-04-10)
2024年4月21日发(作者:淳于觅荷)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 目 录
目 录
4 SCTP协议....................................................................................................................................4-1
4.1 概述..............................................................................................................................................................4-2
4.2 SCTP相关术语............................................................................................................................................4-2
4.3 SCTP功能....................................................................................................................................................4-5
4.3.1 偶联的建立和关闭.............................................................................................................................4-6
4.3.2 流内消息顺序递交.............................................................................................................................4-6
4.3.3 用户数据分段.....................................................................................................................................4-7
4.3.4 证实和避免拥塞.................................................................................................................................4-7
4.3.5 消息块绑定........................................................................................................................................4-7
4.3.6 分组的有效性.....................................................................................................................................4-7
4.3.7 通路管理............................................................................................................................................4-7
4.4 SCTP原语....................................................................................................................................................4-8
4.4.1 SCTP用户向SCTP发送的请求原语................................................................................................4-8
4.4.2 SCTP向SCTP用户发送的通知原语..............................................................................................4-10
4.5 SCTP协议消息..........................................................................................................................................4-12
4.5.1 消息结构..........................................................................................................................................4-12
4.5.2 SCTP数据块的格式.........................................................................................................................4-16
4.5.3 SCTP端点维护的参数和建议值.....................................................................................................4-31
4.6 SCTP基本信令流程..................................................................................................................................4-34
4.6.1 偶联的建立和发送流程...................................................................................................................4-34
4.6.2 偶联关闭流程...................................................................................................................................4-37
文档版本 02 (2007-04-10) 华为技术有限公司
i
插图目录
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
插图目录
图4-1 SCTP双归属...........................................................................................................................................4-3
图4-2 确定通路选择方式的数据配置.............................................................................................................4-4
图4-3 SCTP功能示意图...................................................................................................................................4-6
图4-4 SCTP分组结构.....................................................................................................................................4-12
图4-5 任选/可变长参数格式.........................................................................................................................4-15
图4-6 DATA数据块格式................................................................................................................................4-17
图4-7 INIT数据块格式..................................................................................................................................4-19
图4-8 INIT ACK数据块格式.........................................................................................................................4-21
图4-9 SACK数据块格式................................................................................................................................4-23
图4-10 HEARTBEAT数据块格式..................................................................................................................4-24
图4-11 HEARTBEAT信息参数格式..............................................................................................................4-25
图4-12 HEARTBEAT ACK数据块格式........................................................................................................4-25
图4-13 ABORT数据块格式...........................................................................................................................4-26
图4-14 SHUTDOWN数据块格式..................................................................................................................4-27
图4-15 SHUTDOWN ACK数据块格式.........................................................................................................4-27
图4-16 ERROR数据块格式...........................................................................................................................4-28
图4-17 差错原因参数的格式.........................................................................................................................4-28
图4-18 COOKIE EHCO数据块的格式..........................................................................................................4-30
图4-19 COOKIE ACK数据块格式................................................................................................................4-31
图4-20 SHUTDOWN COMPLETE数据块的格式........................................................................................4-31
图4-21 偶联建立过程消息交互图.................................................................................................................4-35
图4-22 偶联正常关闭消息交互图.................................................................................................................4-38
ii
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 表格目录
表格目录
表4-1 SCTP请求原语.......................................................................................................................................4-8
表4-2 SCTP通知原语.....................................................................................................................................4-10
表4-3 SCTP数据块消息类型.........................................................................................................................4-13
表4-4 接收端点不能识别块类型时,块类型最高2bit含义.......................................................................4-14
表4-5 接收端点不能识别块参数类型时,参数类型最高2bit含义...........................................................4-16
表4-6 BE比特的取值含义.............................................................................................................................4-17
表4-7 原因特定信息与原因编码对应关系...................................................................................................4-28
表4-8 对应每个SCTP实例所需的参数.......................................................................................................4-32
表4-9 对应每个偶联SCTP端点所需的参数...............................................................................................4-32
表4-10 对应每个传送地址所需的参数.........................................................................................................4-33
文档版本 02 (2007-04-10) 华为技术有限公司
iii
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
4
关于本章
本章描述内容如下表所示。
标题
4.1 概述
4.2 SCTP相关术语
4.3 SCTP功能
4.4 SCTP原语
4.5 SCTP协议消息
4.6 SCTP基本信令流程
内容
概述SCTP协议制定的背景
介绍SCTP的相关术语。
介绍SCTP的功能。
介绍SCTP的原语。
SCTP协议
介绍SCTP的协议消息结构、数据块格式等。
介绍SCTP的基本信令流程。
文档版本 02 (2007-04-10) 华为技术有限公司
4-1
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
4.1 概述
在流控制传输协议SCTP(Stream Control Transmission Protocol)制定以前,在IP网上
传输七号信令使用的是UDP和TCP协议。UDP是一种无连接的传输协议,无法满足七
号信令对传输质量的要求。TCP协议是一种有连接的传输协议,可以信令的可靠传输,
但是TCP协议具有行头阻塞、实时性差、支持多归属比较困难、易受拒绝服务攻击(Dos)
的缺陷。因此IETF(Internet Engineering Task Force)RFC2960制定了面向连接的基于
分组的可靠传输协议SCTP协议。SCTP对TCP的缺陷进行了完善,使得信令传输具有
更高的可靠性,SCTP的设计包括适当的拥塞控制、防止泛滥和伪装攻击、更优的实时
性能和多归属性支持,因此,SCTP成为SIGTRAN协议族中的传输协议。
SCTP被视为一个传输层协议,它的上层为SCTP用户应用,下层作为分组网络。在
SIGTRAN协议的应用中,SCTP上层用户是SCN信令的适配模块(如M2UA、M3UA),
下层是IP网。
4.2 SCTP相关术语
传送地址
传送地址由IP地址、传输层协议类型和传输层端口号定义。由于SCTP在IP上传输,
所以一个SCTP传送地址由一个IP地址加一个SCTP端口号决定。SCTP端口号就是
SCTP用来识别同一地址上的用户,和TCP端口号是一个概念。比如IP地址10.105.28.92
和SCTP端口号1024标识了一个传送地址,而10.105.28.93和1024则标识了另外一个
传送地址,同样,10.105.28.92和端口号1023也标识了一个不同的传送地址。
主机和端点
z
主机(Host)
主机配有一个或多个IP地址,是一个典型的物理实体。
z
端点(SCTP Endpoint)
端点是SCTP的基本逻辑概念,是数据报的逻辑发送者和接收者,是一个典型的逻辑实
体。
一个传送地址(IP地址+SCTP端口号)唯一标识一个端点。一个端点可以由多个传送
地址进行定义,但对于同一个目的端点而言,这些传送地址中的IP地址可以配置成多
个,但必须使用相同的SCTP端口。
一个主机上可以有多个端点。
偶联和流
z
偶联(Association)
4-2
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
偶联就是两个SCTP端点通过SCTP协议规定的4步握手机制建立起来的进行数据传递
的逻辑联系或者通道。
SCTP协议规定在任何时刻两个端点之间能且仅能建立一个偶联。由于偶联由两个端点
的传送地址来定义,所以通过数据配置本地IP地址、本地SCTP端口号、对端IP地址、
对端SCTP端口号等四个参数,可以唯一标识一个SCTP偶联。正因为如此,在
GTSOFTX3000中,偶联可以被看成是一条M2UA链路或M3UA链路。
z
流(Stream)
流是SCTP协议的一个特色术语。SCTP偶联中的流用来指示需要按顺序递交到高层协
议的用户消息的序列,在同一个流中的消息需要按照其顺序进行递交。严格地说,“流”
就是一个SCTP偶联中,从一个端点到另一个端点的单向逻辑通道。一个偶联是由多个
单向的流组成的。各个流之间相对独立,使用流ID进行标识,每个流可以单独发送数
据而不受其他流的影响。
一个偶联中可以包含多个流,可用流的数量是在建立偶联时由双方端点协商决定,而一个流
只能属于一个偶联。同时,出局的流数量可以与入局流数量的取值不同。
顺序提交的数据必须在一个流里面传输。
z
z
通路(Path)和首选通路(Primary Path)
z
通路(Path)
通路是一个端点将SCTP分组发送到对端端点特定目的传送地址的路由。如果分组发送
到对端端点不同的目的传送地址时,不需要配置单独的通路。
z
首选通路(Primary Path)
首选通路是在默认情况下,目的地址、源地址在SCTP分组中发到对端端点的通路。如
果可以使用多个目的地址作为到一个端点的目的地址,则这个SCTP端点为多归属。如
果发出SCTP分组的端点属于多归属节点时,如果定义了目的地址、源地址,能够更好
控制响应数据块返回的通路和数据包被发送的接口。
一个SCTP偶联的两个SCTP端点都可以配置多个IP地址,这样一个偶联的两个端点之
间具有多条通路,这就是SCTP偶联的多地址性。SCTP偶联的多地址性是SCTP与TCP
最大的不同。
一个偶联可以包括多条通路,但只有一个首选通路。如图4-1所示,MGC(如
GTSOFTX3000)一个端点包括两个传送地址(10.11.23.14:2905和10.11.23.15:2905),
而SG一个端点也包括两个传送地址(10.11.23.16:2904和10.11.23.17:2904)。
图4-1 SCTP双归属
10.11.23.14
MGC
Path2
Path0
10.11.23.16
Path1
Path3
SG
10.11.23.1510.11.23.17
文档版本 02 (2007-04-10) 华为技术有限公司
4-3
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
此两个端点决定了一个偶联,该偶联包括4条通路(Path0、Path1、Path2和Path3)。根
据数据配置可以确定此4条通路的选择方式,如图4-2所示。图中定义了4条通路,而
且首选通路为Path0:
z
Path0:本端传送地址1(10.11.23.14:2905)发送SCTP分组到对端传送地址1
(10.11.23.16:2904)。
Path1:本端传送地址1(10.11.23.14:2905)发送SCTP分组到对端传送地址2
(10.11.23.17:2904)。
Path2:本端传送地址2(10.11.23.15:2905)发送SCTP分组到对端传送地址1
(10.11.23.16:2904)。
Path3:本端传送地址2(10.11.23.15:2905)发送SCTP分组到对端传送地址2
(10.11.23.17:2904)。
z
z
z
端点发送的SCTP工作原理为:本端点传送地址A发送的SCTP包通过首选通路发送到
对端端点。当首选通路出现故障后,SCTP可以自动切换到其他备用通路上,优先切换
对端端点的传送地址,再次切换本端端点的传送地址。
SCTP定义了心跳消息(Heart Beat)。当某条通路空闲时,本端SCTP用户要求SCTP
生成相应的心跳消息并通过该通路发送到对端端点,而对端端点必须立即发回对应的心
跳确认消息。这种机制被用来精确测量回路时延RTT(Round Trip Time),而且可以随
时监视偶联的可用情况和保持SCTP偶联的激活状态。
图4-2 确定通路选择方式的数据配置
4-4
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
TSN和SSN
z
传输顺序号TSN(Transmission Sequence Number)
SCTP使用TSN机制实现数据的确认传输。一个偶联的一端为本端发送的每个数据块顺
序分配一个基于初始TSN的32位顺序号,以便对端收到时进行确认。
TSN是基于偶联进行维护的。
在TCP协议中,数据的确认传输和顺序递交是通过TSN这一种机制实现的。当发现TSN不连续
时候,TCP将进行数据重传,直到TSN连续以后才将数据向TCP层的上层用户递交。这实现机
制导致TCP协议不能满足七号信令对于低传输时延的要求。
z
流顺序号SSN(Stream Sequence Number)
SCTP为本端在这个流中发送的每个数据块顺序分配一个16位SSN,以便保证流内的顺
序传递。
在偶联建立时,所有流中的SSN都是从0开始。当SSN到达65535后,则接下来的SSN
为0。
TSN和SSN的分配是相互独立的。
拥塞窗口CWND(Congestion Window)
SCTP也是一个滑动窗口协议,拥塞窗口是针对每个目的地址维护的,它会根据网络状
况调节。当目的地址的发送未证实消息长度超过其CWND时,端点将停止向这个地址
发送数据。
接收窗口RWND(Receive Window)
RWND用来描述一个偶联对端的接收缓冲区大小。偶联建立过程中,双方会交换彼此的
初始RWND。RWND会根据数据发送、证实的情况即时地变化。RWND的大小限制了
SCTP可以发送的数据的大小。当RWND等于0时,SCTP还可以发送一个数据报,以
便通过证实消息得知对方缓冲区的变化,直到达到CWND的限制。
传输控制块TCB(Transmission Control Block)
TCB是一种内部数据结构,是一个SCTP端点为它与其他端点之间已经启动的每一个偶
联生成的。TCB包括端点的所有状态、操作信息,便于维护和管理相应的偶联。
4.3 SCTP功能
如图4-3所示,SCTP的功能主要包括:
偶联的建立和关闭、流内消息顺序递交、用户数据分段、证实和避免拥塞、消息块绑定、
分组的有效性和通路管理。
文档版本 02 (2007-04-10) 华为技术有限公司
4-5
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
图4-3 SCTP功能示意图
流内顺序递交
偶
联
的
建
立
和
关
闭
用户数据分段
证实和避免拥塞
数据块绑定
分组的有效性
通路管理
4.3.1 偶联的建立和关闭
偶联的建立是由SCTP用户(如M2UA、M3UA等)发起请求来启动的。而且建立过程
相对于TCP连接而言比较复杂,是个“四次握手”过程,并用到了“COOKIE”的机制。
COOKIE是一个含有端点初始信息和加密信息的数据块,通信的双方在关联建立时需要
处理并交换,从而增加协议的安全性,防止拒绝服务和伪装等潜在的攻击。
SCTP提供了对激活偶联的正常的关闭程序,它必须根据SCTP用户的请求来执行,当
然SCTP也提供一种非正常(即中止)程序,中止程序的执行既可以根据SCTP用户的
请求来启动,也可以由SCTP协议检查出差错来中止。
SCTP不支持半打开状态(即一端可以在另一端结束后继续发送数据)。无论是哪个端点
执行了关闭程序,偶联的两端都应停止接受从SCTP用户发来请求原语。
4.3.2 流内消息顺序递交
SCTP提供数据报的顺序传递,顺序传递的数据报必须放在一个“流”中传递。流是顺
序传递的基石。
通过流,SCTP将数据的确认和传输的有序递交分成两种不同机制。SCTP使用TSN机
制实现了数据的确认传输,使用流号和SSN(流顺序号)则实现数据的有序递交。当
SCTP收到数据的SSN连续的时候,SCTP就可以将数据向SCTP用户递交,而不用等
到数据的TSN号连续以后才向SCTP用户递交。
当一个流被闭塞时,期望的下一个连续的SCTP用户消息可以从另外的流上进行递交。
SCTP也提供非顺序递交的业务,接收到的用户消息可以使用这种方式立即递交到SCTP
用户,而不需要保证其接收顺序。
4-6
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
4.3.3 用户数据分段
SCTP通过对传送通路上最大PMTU(Path Maximum Transmission Unit)的检测,实现
在SCTP层将超大用户数据分片打包,避免在IP层的多次分片、重组,可以减少IP层
的数据负担。
z
在发送端,SCTP可以对大的用户数据报进行分片以确保SCTP数据报传递到低层
时适合通路MTU(Maximum Transmission Unit)。
在接收端,SCTP将分片重组为完整的用户数据报,然后传递给SCTP用户。
z
4.3.4 证实和避免拥塞
证实和重传是协议保证传输可靠性的策略,SCTP也一样。证实机制是SCTP保证传输
可靠性的基石。避免拥塞沿袭了TCP的窗口机制,进行合适的流量控制。
z
SCTP在将数据(数据分片或未分片的用户数据报)发送给底层之前顺序地为之分
配一个发送顺序号(TSN)。
TSN和SSN(流顺序号)是相互独立的,TSN用于保证传输的可靠性,SSN用于
保证流内消息的顺序传递。
TSN和SSN在功能上使可靠传递和顺序传递分开。接收端证实所有收到的TSNs,
即使其中有些尚未收到。
包重发功能负责TSN的证实,还负责拥塞消除。
z
z
z
4.3.5 消息块绑定
如果长度很短的用户数据被带上很大一个SCTP消息头,其传递效率会很低,因此,SCTP
将几个用户数据绑定在一个SCTP报文里面传输,以提高带宽的利用率。
z
SCTP分组由公共分组头和一个/多个信息块组成,信息块可以是用户数据,也可以
是SCTP控制信息。
SCTP用户能够可选地使用捆绑功能,决定是否将多个用户数据报捆绑在一个SCTP
分组中。
为提高效率,拥塞/重发时,捆绑功能可能仍被执行,即使用户已经禁止捆绑。
z
z
4.3.6 分组的有效性
分组的有效性是SCTP提供无差错传输的基石。SCTP分组的公共分组头包含一个验证
标签(Verification Tag)和一个可选的32位校验码(Checksum)。
验证标签的值由偶联两端在偶联启动时选择。如果收到的分组中如果没有期望的验证标
签值,接收端将丢弃这个分组,以阻止攻击和失效的SCTP分组。
校验码由SCTP分组的发送方设置,以提供附加的保护,用来避免由网络造成的数据差
错。接收端将丢弃包含无效校验码的SCTP分组。
4.3.7 通路管理
发送端的SCTP用户能够使用一组传送地址作为SCTP分组的目的地。SCTP管理功能
可以根据SCTP用户的指令和当前合格的目的地集合的可达性状态,为每个发送的SCTP
分组选择一个目的地传送地址。当其他分组业务量不能完全表明可达性时,通路管理功
文档版本 02 (2007-04-10) 华为技术有限公司
4-7
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
能可以通过心跳消息来监视到某个目的地址的可达性,并当任何对端传送地址的可达性
发生变化时,向SCTP用户提供指示。通路功能也用来在偶联建立时,向对端报告合格
的本端传送地址集合,并把从对端返回的传送地址报告给本地的SCTP用户。
在偶联建立时,为每个SCTP端点定义一个首选通路,用来正常情况下发送SCTP分组。
在接收端,通路管理功能在处理SCTP分组前,用来验证入局的SCTP分组属于的偶联
是否存在。
4.4 SCTP原语
SCTP通过接收高层协议(SCTP用户)发送的原语请求,为SCTP的用户提供服务。同
时SCTP可以根据不同事件向SCTP用户发送通知原语。
SCTP原语描述使用了如下格式:
原语名:必备属性,任选属性
返回结果:必备属性,任选属性
4.4.1 SCTP用户向SCTP发送的请求原语
SCTP用户向SCTP发送的请求原语共有16种,含义如表4-1所示。
表4-1 SCTP请求原语
原语名
INITIALIZE
功能
允许SCTP启动其内部的数据结构,并为建立操作环境分配所需的资
源,一旦SCTP启动后,则高层协议在与其他SCTP端点之间通信时
就不需要再调用此原语。
SCTP将向高层协议返回本地准备处理SCTP偶联的事件号(实例)。
ASSOCIATE
由高层启动一个到特定端点的偶联。对端端点将按照该端点定义的
传送地址的方式进行规定。如果偶联事件尚未启动,则认为该原语
是一个错误。
用来本地处理SCTP偶联的偶联ID,将作为返回结果用来返回偶联
是否成功建立。如果偶联建立不成功,则返回一个差错。如果偶联
成功,则返回结果中还应包含到对端的完整传送地址以及本端端点
出局的流数量,同时还应从返回的目的地址中选择一个传送地址,
该传送地址将作为本地端点向对端端点发送SCTP分组的首选通路。
返回的“目的地传送地址列表”可以由SCTP用户用来改变首选通路
或者是向一个特定传送地址强制发送一个SCTP分组。
返回结果:偶联ID
4-8
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
原语名
SHUTDOWN
功能
用来正常地关闭一个偶联,任何以在本地发送队列中的用户数据都
将被递交到对端。该偶联将在收到所有发送的SCTP分组的证实后停
止。
返回结果用来指示是否成功关闭了该偶联。如果成功关闭,则反馈
一个成功关闭偶联编码;如果关闭失败,则返回一个差错编码。
ABORT
用来非正常关闭一个偶联,本地发送队列中的用户数据将被丢弃,
并发送一个ABORT数据块到对端。
返回结果用来指示是否成功中止了该偶联。如果中止成功,则返回
一个已经中止的偶联编码。如果中止失败,则返回一个差错编码。
SEND
SCTP用户使用该原语通知SCTP在指定流ID中向目的地发送地址
发送数据。
返回结果用来指示是否成功发送了数据。
SET
PRIMARY
高层协议使用该原语指示本地SCTP将指定的目的地传送地址作为
发送分组的首选通路。
返回结果为结果编码,指示此操作是否成功执行。如果规定的目的
地传送地址没包含在ASSOCIATE请求原语或COMMUNCIATION
UP通知原语返回的“目的地传送地址列表”中,则返回一个差错。
RECEIVE
用来把在SCTP队列中的可用的用户消息读到由SCTP用户规定的缓
冲区中。
所读消息的字节数将作为结果返回。如果有可能根据特定的规定,
也可以返回其他消息,如发送方的地址、收到消息的流ID、是否有
消息可以进行恢复等。对于顺序的消息,消息的流顺序号码(SSN)
也可以被返回。
STATUS
用来要求SCTP返回一个包含以下信息的数据块:偶联连接状态、目
的地传送地址表、目的传送地址的可达性状态、当前的接收方窗口
大小、当前的拥塞窗口大小、未确认的DATA数据块的数量、收到
的DATA数据块的数量、首选通路、首选通路上最近收到的SRTT、
首选通路的RTO。
返回结果为要求返回信息的状态。
CHANGE
HEARTBEAT
高层协议用该原语指示本地端点允许或禁止向指定的目的地传送地
址发送心跳消息。
返回结果用来指示该操作的执行情况。当目的传送地址未空闲时,
心跳程序也不执行。
REQUEST
HERATBEAT
高层协议用该原语指示本地端点对指定偶联的特定目的地址执行心
跳程序。
返回结果用来指示传送给目的地址的HEART BEART数据块是否成
功。
文档版本 02 (2007-04-10) 华为技术有限公司
4-9
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
原语名
GET SRTT
REPORT
功能
高层协议用该原语指示本地SCTP报告对给定偶联上规定的目的地
传送地址的当前SRTT测量值。
返回结果是一个包含最近SRTT的毫秒值。
SET
FRAILURE
THRESHOLD
SET
PROTOCOL
PARAMETER
S
RECEIVE
UNSENT
MESSAGE
RECEIVE
UNACKNOW
LEDGED
MESSAGE
DESTROY
允许本地SCTP定制到给目的地传送地址的可达性故障检出的门限。
返回结果用来指示该操作是否成功。
允许本地SCTP定制协议参数。
返回结果用来指示该操作是否成功。
高层协议用该原语指示本地SCTP将收到故障消息在高层协议缓存
区储存。
返回结果为一个包含故障消息的字节数。
高层协议用该原语指示本地SCTP将收到的没有应答故障消息在高
层协议缓存区储存。
返回结果为一个包含没有应答消息的字节数。
指示本地哪个SCTP事件号(实例)被破坏。SCTP事件号由
INITIALIZE原语生成的。
返回结果为是否成功。
4.4.2 SCTP向SCTP用户发送的通知原语
SCTP向SCTP用户发送的通知原语共有8种,含义如表4-2所示。
表4-2 SCTP通知原语
原语名
DATA ARRIVE
功能
当一个用户消息被成功接收,并且准备向SCTP用户递交时,SCTP
使用该原语通知高层用户。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-流ID:用来指示数据从哪个流上接收到的。
SEND FAILURE
当一个消息不能递交时,SCTP使用该原语通知SCTP用户。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-数据恢复ID:用来恢复未发送和未证实数据的标识。
-原语编码:用来指示不能递交的原因,如长度过长、消息存活
时间过期等。
4-10
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
原语名
NETWORK
STATUS
CHANGE
功能
当目的地传送地址被标为未激活(如SCTP检测出故障)或标记为
激活时(SCTP检测出故障恢复),SCTP使用该原语通知SCTP
用户。
如下信息会被传递:
-偶联:本地处理的SCTP偶联
-目的地传送地址:指示由于状态变化而影响的对端端点的目的
地传送地址。
-新状态:指示新的状态。
COMMUNCIATI
ON UP
SCTP用该原语通知SCTP用户,指示本地SCTP已经准备好发送
或接收SCTP分组,或者时一个丢失通信的端点又已经恢复。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-状态:指示发生了哪种类型的事件
-目的地传送地址列表:对端端点的传送地址列表
-出局流数量:SCTP用户允许使用的最大的流数量
-入局流数量:对端端点对该偶联所请求的流数量,此值可以与
出局的流数量取值不同。
COMMUNICATI
ON LOST
当SCTP完全丢失了到某一个端点的通信时(用心跳消息),或者
是检测出端点已经执行了操作,SCTP使用该原语通知SCTP用户。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-状态:指示发生了哪种类型的事件。状态可以指示故障或者是
响应SHUTDOWN或ABORT请求原语的中止事件。
-数据恢复ID:用来指示恢复未发送或证实数据
-最后证实的TSN:对端端点最后证实的TSN
-最后发送的TSN:发送到对端端点最后一个TSN
COMMUNICATI
ON ERROR
当SCTP从对端端点收到了一个ERROR数据块,并且确定需要通
知高层用户时,才使用该通知原语。
如下信息会被传递:
-偶联ID:本地处理的SCTP偶联
-错误信息:指示错误类型并且可以任选地包含一些从ERROR数
据块中收到的附加信息。
RESTART
当SCTP检测出对端端点已经重新启动时,使用该原语通知SCTP
用户。
偶联ID会被传递。
文档版本 02 (2007-04-10) 华为技术有限公司
4-11
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
原语名
SHUTDOWN
COMPLETE
功能
当本地SCTP已经完成了偶联关闭后,是使用此原语通知SCTP用
户。
本地处理的SCTP偶联ID会被传递。
4.5 SCTP协议消息
4.5.1 消息结构
每个SCTP分组结构如所图4-4示。
图4-4 SCTP分组结构
16 bits
16 bits
Source Port Number
Destination Port Number
Verification Tag
Common
Header
Checksum
Chunk TypeChunk FlagsChunk Length
Chunk #1
Chunk Value
Chunk TypeChunk FlagsChunk Length
Chunk #n
Chunk Value
一个SCTP分组含了一个公共的分组头(Common Header)和若干数据块(Chunk),每
个数据块中既可以包含控制信息,也可以包含用户数据。除了INIT、INIT ACK和
SHUTDOWN COMPLETE数据块外,其他类型的多个数据块可以捆绑在一个SCTP分
4-12
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
组中,以满足对MTU大小的要求。当然,这些数据块也可以不与其他数据块捆绑在一
个分组中。如果一个用户消息不能放在一个SCTP分组中,这个消息可以被分成若干个
数据块。
公共分组头的格式
SCTP公共分组头中包括了源端口号(Source Port Number)、目的端口号(Destination Port
Number)、验证标签(Verification Tag)和校验码(Checksum)。
z
源端口号(16 bits)
源端口号识别SCTP发送端点的SCTP端口号。接收方可以使用源端口号、源IP地址、
目的端口号和目的IP地址标识该SCTP分组所属的偶联。
z
目的端口号(16 bits)
目的端口号为目的端点的SCTP端口号。接收主机可以使用目的端口号将SCTP分组解
复用到正确的端点或应用中。
z
验证标签(32 bits)
验证标签是偶联建立时,本端端点为这个偶联生成一个随机标识。偶联建立过程中,双
方会交换这个TAG,到了数据传递时,发送端必须在公共分组头中带上对端的这个TAG,
以备校验。
z
校验码(32 bits)
SCTP通过对用户数据使用ADLER-32算法,计算出一个32位的校验码,带在数据报
中,在接收端进行同样的运算,通过检查校验码是否相等来验证用户数据是否遭到破坏。
数据块字段的格式
数据块包括了块类型(Chunk Type)、块标志位(Chunk Flags)、块长度(Chunk Length)
和块值(Chunk Value )。
z
块类型(8 bits)
块类型定义在块值(Chunk Value)中消息所属的类型。表4-3列出了主要的块类型。
表4-3 SCTP数据块消息类型
ID
0
块类型
DATA(净数据)
说明
传输的用户数据块。
用于发起两个端点之间的SCTP偶联。
用来确认SCTP偶联的发起消息(INIT)。
该数据块送至对端,以确认收到DATA块,并且
通知对端DATA的接收顺序间隙。
1 INIT
2 INIT ACK
3 SACK
4 HEARTBEAT
端点发送该数据块至对端,以检测当前偶联中定
义的某一目的地址的可达性。
文档版本 02 (2007-04-10) 华为技术有限公司
4-13
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
ID
块类型 说明
5 HEARTBEAT ACK
响应HEARTBEAT消息。
6 ABORT
关闭偶联。
7 SHUTDOWN
偶联中的一个端点对其偶联发起一个GRACEFUL
关闭。
8 SHUTDOWN ACK
响应SHUTDOWN消息,关闭程序完成时发出。
9 ERROR
通知对端,SCTP偶联发生某种错误。
10 COOKIE ECHO
仅用于偶联发起过程,它由偶联的发起者发送至
对端以完成发起程序。
11 COOKIE ACK
COOKIE证实,相对于COOKIE ECHO
12 ECNE
13 CWR
14 SHUTDOWN
COMPLETE
15至62
-
保留,应用于外部环境拥塞发布回声
保留,应用于降低拥塞窗口
用于关闭程序完成时对SHUTDOWN ACK消息进
行确认
IETF保留
IETF定义块扩展使用
IETF保留
IETF定义块扩展使用
IETF保留
IETF定义块扩展使用
IETF保留
IETF定义块扩展使用
63 -
64至126
-
127 -
128至190
-
191 -
192至254
-
255 -
如果接收端点不能识别块类型时,块类型最高位2bit用于标识需要进行的各种操作,比
特组合含义如表4-4所示。
表4-4 接收端点不能识别块类型时,块类型最高2bit含义
Bits(最高两位) 含义
00
01
停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他消
息块。
停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他消
息块,并且在“ERROR”或“INIT ACK”中向发起端点返回不能
识别的参数。
4-14
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
Bits(最高两位) 含义
10
11
跳过此数据块并继续执行。
跳过此数据块并继续执行,并且在“ERROR”或“INIT ACK”中
向发起端点返回不能识别的参数。
z
数据块标志位(8bit)
块标志位用法由块类型决定。除非被置为其他值,块标记在传送过程中会被置0而且接
收端点会忽视块标记。
z
块长度(16bit)
块长度包括块类型(Chunk Type)、块标记(Chunk Flags)、块长度(Chunk Length)和
块值(Chunk Value),长度使用二进制表示。
z
块值(可变长度)
块值的内容在块中传送实际的信息,内容由消息块类型决定。块值的长度为不定长。
数据块的总长度(包括类型、长度和取值长度)必须是4字节的整数倍,如果该长度不是4字节
的整数倍,则发送方应当向数据块中填充全0的字节,这些填充的字节不计入数据块长度字段。
发送方填充的字节数应不超过3个字节,在接收方忽略所有的填充字节。
任选/可变长参数的格式
SCTP控制数据块(除DATA数据块外)的内容取值包含了数据块类型特定的数据块头
所要求的字段,随后是一个或多个参数。这些包含在一个数据块中的任选/可变长参数都
是按照参数类型、参数长度和参数取值的方式定义的,其格式如图4-5所示。
图4-5 任选/可变长参数格式
16 bits
16 bits
Parameter Type
Parameter Length
Parameter Value
z
数据块的参数类型(16bit)
参数类型字段用来识别参数的类型,取值范围从0到65534。65535预留给IETF进行扩
展。
如果接收端点不能识别参数类型时,参数类型中最高位2bit用于标识需要进行的各种操
作,比特组合含义如表4-5所示。
文档版本 02 (2007-04-10) 华为技术有限公司
4-15
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
表4-5 接收端点不能识别块参数类型时,参数类型最高2bit含义
Bits(最高两位)
00
01
含义
停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他
消息块。
停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他
消息块,并且在“ERROR”或“INIT ACK”的“不识别的参数
类型”字段中报告不识别的参数类型。
跳过此数据块并继续执行。
跳过此数据块并继续执行,并且在“ERROR”或“INIT ACK”
的“不识别的参数类型”字段中向发起端点返回不能识别的参数
类型。
10
11
z
数据块的参数长度(16bit)
参数长度字段包含参数类型、参数长度和参数取值字段在内所有字段的字节数。因此一
个参数的取值字段为0,则该长度字段应设置为4。参数长度字段不计算填充字节。
z
数据块的参数值(可变长度)
参数取值字段包含在该参数中传送的实际信息。
参的总长度(包括类型、长度和取值字段)必须是4字节的整数倍。如果该长度不是4字节的整
数倍,则发送方应当向数据块中填充全0的字节,这些填充的字节不计入参数长度字段。发送方
填充的字节数应不超过3个字节,接收方忽略所有的填充字节。
4.5.2 SCTP数据块的格式
净荷(DATA)数据块的格式
DATA数据块格式如图4-6所示。
4-16
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-6 DATA数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 0ReserveUBELength
TSN
Stream IDSSN
Payload Protocol Identifier
User Data
z
z
z
数据块类型为0
备用比特(5bit):设置全为0,在接收方忽略。
U比特(1比特)
非顺序比特。如果该比特设置为1,则指示这是一个非顺序的DATA数据块,不需要给
数据块分配顺序号码。所有接收方必须忽略SSN。
在重新组装完成后(如果需要),非顺序的数据块不需要尝试任何重新排序的过程,可
以由接收方直接递交到SCTP用户。
如果一个非顺序的用户消息被分段,则消息的每个分段中的U比特必须设置为1。
z
B比特
分段开始比特。如果该比特被设置,则指示这是用户消息的第一个分段。
z
E比特
分段结束比特。如果该比特被设置,则指示这是用户消息的最后一个分段。
一个没有分段的用户消息应当把所有的B和E比特设置为1。
如果B和E比特都设置为0,则表明这是一个分段的用户消息的一个中间分段。当用户
消息被分段到多个数据块中,接收方需要使用TSN对消息进行重组,这意味着给分段
的用户消息的每个分段都必须要使用连续的TSN。BE比特的取值含义如表4-6所示。
表4-6 BE比特的取值含义
BE
10
00
11
表示的含义
用户消息的第一个分段
用户消息的中间分段
用户消息的最后一个分段
文档版本 02 (2007-04-10) 华为技术有限公司
4-17
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
BE
11
z
表示的含义
未分段的消息
长度(16比特)
指示DATA数据块从类型字段开始到用户数据字段结束之间的字节数,但不包含任何填
充字节。如果DATA数据块的用户数据字段为0,则长度字段设为16。
z
TSN(32比特)
表示该数据块的TSN,TSN的有效值从0到2
32
-1。TSN值达到4294967295后将转回
到0。
z
Stream ID
用来识别用户数据属于的流。由INIT和INIT ACK数据块的发送者生成。
z
SSN(16bit)
表示所在流中的用户数据的顺序号码。该字段的有效值从0到65535。但一个用户消息
被SCTP分段后,则必须在消息的每个分段中都带相同的流顺序号码。
z
Payload Protocol Identifier(净负荷协议标识符)32bit
表示一个应用(或上层协议)特定的协议标识符。这个值由高层协议(SCTP用户)传
递到SCTP并发送到对等层。这个标识符不由SCTP使用,但可以由特定网络实体或对
端的应用来识别在DATA数据块中携带的信息类型。甚至在每个分段的DATA数据块中
也应包含该字段,以确保对网络中间的代理可用。
0表示高层协议(SCTP用户)未对该协议净荷规定应用标识符。
z
User Data(用户数据,可变长度)
它用来携带用户数据净荷。该字段必须被填充为4字节的整数倍,发送方填充的字节数
应不超过3个字节,接收方忽略所有的填充字节。
启动(INIT)数据块的格式
该数据块用来启动两个SCTP端点间的一个偶联,INIT数据块的格式如图4-7所示。
4-18
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-7 INIT数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 1
Chunk Flags
Length
Initiate Tag
Advertised Receiver Window Credit
Number of Outbound Streams
Initial TSN
Optional/Variable-Length Parameters
Number of Inbound Streams
INIT数据块应包括如下参数,除非特别支持,否则每个参数只能在INIT数据块中出现
一次:
必备参数为:启动标签(Initiate Tag)、广播的接收方窗口信用值(Advertised Receiver
Window Credit)、最大输出流数量(Number of Outbound Streams,OS)、最大输入流数
量(Number of Inbound Streams,MIS))、初始TSN(Initial TSN)。
可变长度参数:IPV4地址、IPV6地址、Cookie Preservative、ECN能力、主机名地址、
支持的地址类型。
z
INIT数据块标志字段
该字段备用,所有比特应设为0。INIT中的参数可以按任何顺序进行处理。
z
启动标签(Initiate Tag):32bit
INIT的接收方记录启动标签参数值。这个值必须被放置到INIT接收方发送的与该偶联
相关的每个SCTP分组中的验证标签字段中。
启动标签允许除0以外的任何值。如果在收到的INIT数据块中的启动标签为0,则接收
方必须作为错误处理,并且发送ABORT数据块中止该偶联。
z
广播的接收方窗口信用值(a_rwnd,32比特)
表示专用的缓冲区的容量,用字节数表示。INIT发送方为偶联预留的窗口。在偶联存活
期间,这个缓冲区的容量不应减少(即不应把该偶联的专用缓冲区取走),但端点可以
在发送的SACK数据块中修改a_rwnd的值。
z
输出流的数量(Number of Outbound Streams,OS)
定义发送INIT数据块的一方希望在该偶联中创建的输出流的数量。该值不允许为0。接
收方收到该参数为0的INIT数据块后会中止该偶联。
z
输入流的数量(Number of Inbound Streams,MIS)
文档版本 02 (2007-04-10) 华为技术有限公司
4-19
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
定义了发送这个INIT块的一方允许对端在该偶联中所创建的流的数量。该值不允许为
0。接收方收到该参数为0的INIT数据块后会中止该偶联。
z
初始TSN(Initial TSN)
定义发送方将使用的初始的TSN,该值可以设置为启动标签字段的值。
z
IP v4地址
发送方端点的IP v4地址,采用二进制编码。INIT数据块中可以包含多个IP V4或IP V6
地址或地址组合。
z
IP V6地址
发送方端点的IP V6地址,采用二进制编码。INIT数据块中可以包含多个IP V4或IP V6
地址或地址组合。发送方不必把IP V4地址映射到IP V6地址中,可以直接在IP V4地
址参数中使用IP V4地址。
与SCTP公共分组头中的源端口号一起,IP V4或IP V6地址参数中的地址可以用来指示
传送地址,并由INIT发送方所支持。在偶联存活期间,这个IP地址可以出现在IP包中
起源地址字段中,由INIT的发送者来发送,并且可以由INIT的接收者作为IP包的目
的地址。当INIT的发送方是一个多归属的情况时,多于一个IP地址参数可以包含在一
个INIT数据块中。此外一个多归属的端点可以接入到不同类型的网络,这样多于一个
的地址类型能够在INTI数据块中出现,即IP V4和IP V6的地址允许出现在同一个INIT
数据块中。
如果INTI中包含了至少一个IP地址参数,则IP数据报中的源IP包含在INIT数据块中,
INIT中提供的其他附加地址可以被接收INIT的端点作为目的地。如果INIT中未包含任
何IP地址参数,在收到INIT的端点必须使用收到的IP数据报中的源IP作为该偶联的
目的地址。
z
COOKIE Preservative
INIT的发送方应使用这个参数来建议INIT的接收方提供较长的存活跨度的状态
COOKIE。由于失效的COOKIE操作差错原因,前一次尝试与对等端建立偶联失败后,
又重新尝试偶联建立时,此参数由发送方添加到INIT数据块中。接收方出于安全的考
虑可以选择忽略建议的COOKIE存活跨度增量。
COOKIE Preservative参数中包含一个32bit的建议的COOKIE存活跨度(Suggested
Cookie Life-span Increment)参数:此参数用来向接收方指示发送方希望接收方为其缺省
的COOKIE的存活跨度增加的毫秒数。
z
主机名地址(Host Name Address)
INIT发送方使用此参数把其主机名(在IP地址中的位置)传递到对等层。这个对等层
负责解释这个主机名,用这个参数可以使偶联工作实现NAT穿越。
z
主机名(Host Name)
可变长度,该字段包含了按照RFC1123规定的“主机名句法”定义的主机名,主机名
地址的解析不在本SCTP标准中规定。
该参数中至少有一个空的中止符包含在主机名字符串中,并且应包含长度。
z
支持的地址类型(Supported Address Types)
4-20
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
INIT的发送方使用该参数列出其所支持的全部地址类型。
z
地址类型(Address Type)
该参数使用对应的地址类型的类型值,如IPV4=5,IPV6=6,主机名(Host Name)=
11。
启动证实(INIT ACK)数据块的格式
INIT ACK数据块用来确认SCTP偶联的启动。
如图4-8所示,INIT ACK的参数部分与INIT数据块的参数部分相同,还使用两个可变
长度的参数:COOKIE(STATE COOKIE)和未识别的参数。
图4-8 INIT ACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 2
Chunk Flags
Length
Initiate Tag
Advertised Receiver Window Credit
Number of Outbound Streams
Initial TSN
Optional/Variable-Length Parameters
Number of Inbound Streams
z
启动标签(Initiate Tag)32bit
INIT ACK的接收方记录启动标签参数的值,并把该值放到每个INIT ACK接收方在相
应的偶联上发送的每个SCTP分组中的验证标签。
启动标签不允许为0。如果收到的INIT ACK数据块中的启动标签为0,则接收方当作错
误来处理并通过发送ABORT来关闭偶联。
z
广播的接收方窗口信用值(Advertised Receiver Window Credit)32bit
表示专用的缓冲区的容量,用字节数表示,INIT ACK发送方为偶联预留的窗口,在偶
联存活期间,这个缓冲区的容量不应减少。
z
输出流的数量(Number of Outbound Streams,OS)16bit
定义发送INIT ACK数据块的一方希望在该偶联中创建的输出流的数量。该值不允许为
0。接收方收到该参数为0的INIT ACK数据块后中止该偶联并舍弃TCB。
z
输入流的数量(Number of Inbound Streams,MIS)16bit
文档版本 02 (2007-04-10) 华为技术有限公司
4-21
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
定义发送INIT ACK数据块的一方允许对端端点在偶联中所创建的流的最大数量。该值
不允许为0。接收方收到该参数为0的INIT ACK数据块后中止该偶联并舍弃TCB。
z
初始TSN( Initial TSN)32bit
定义发送方将使用的TSN,该值可以设置为启动标签字段的值。
z
IPV4地址和IP V6地址
与SCTP公共分组头中的源端口号一起,IP V4或IP V6地址参数中的地址可以用来指示
传送地址,并由INIT ACK发送方所支持。在偶联存活期间,这个IP地址可以出现在IP
包中起源地址字段中,由INIT ACK的发送者来发送,并且可以由INIT ACK的接收者
作为IP包的目的地址。当INIT ACK的发送方是一个多归属的情况时,多于一个IP地
址参数可以包含在一个INIT数据块中。此外一个多归属的端点可以接入到不同类型的
网络,这样多于一个的地址类型能够在INTI数据块中出现,即IP V4和IP V6的地址允
许出现在同一个INIT数据块中。
如果INTI ACK中包含了至少一个IP地址参数,则IP数据报中的源IP包含在INIT ACK
数据块中,INIT ACK中提供的其他附加地址可以被接收INIT ACK的端点作为目的地。
如果INIT ACK中未包含任何IP地址参数,在收到INIT ACK的端点必须使用收到的IP
数据报中的源IP作为该偶联的目的地址。
z
状态COOKIE(State COOKIE)可变长度
该参数长度取决于COOKIE的长度,该参数值的取值必须包含由INIT ACK发送方创建
该偶联所需的所有状态、参数信息和消息授权码。
z
不识别参数(Unrecognized Parameters)可变长度
该参数内容是INIT数据块中包含的一个不识别的参数,该参数用来返回给INIT数据块
的产生者一个指示。此参数字段包含了从INIT数据块中复制过来的不识别参数的完整
的参数类型、长度和参数值。
选择证实(SACK)数据块的格式
SACK通过使用DATA数据块中的TSN用来向对端端点确认接收到的DATA数据块,
并通知对端端点在收到的DATA数据块中的间隔。所谓间隔就是指收到的DATA数据块
的TSN不连续的情况。
SACK数据块格式如图4-9所示。
4-22
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-9 SACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 3
Chunk Flags
Length
Cumulative TSN Ack
Advertised Receiver Window Credit (a_rwnd)
Number of Gap AckBlocks = NNumber of Duplicate TSNs= X
Gap AckBlock #1 End
Gap AckBlock #1 Start
Gap AckBlock #n Start
Gap AckBlock #n End
Duplicate TSN 1
Duplicate TSN X
z
数据块类型(Type)
数值为3。
z
数据块标志
设为全0并由接收方忽略。
z
累积TSN证实(Cumulative TSN Ack)
指收到的TSN顺序断开前的最后一个TSN号码,下一个TSN则是在发送SACK的端
点尚未收到TSN值。这个参数包含了在收到TSN序列的间隔前的最后一个TSN值。此
参数确认已经收到了小于或等于该值的所有TSN。
z
广播的接收方窗口信用值(Advertised Receiver Window Credit (a_rwnd))
指示修改了SACK的发送方的接收缓冲容量的字节数。
z
间隔证实块的数目(Number of Gap Ack Blocks = N )
指示SACK数据块中包含的间隔证实块的数目。每个间隔证实块确认了在一个不连续
TSN后所收到的TSN序列,所有通过间隔证实块确认的TSN都比累积TSN证实的值
大。
z
重复的TSN数目(Number of Duplicate TSNs = X)
包含了该端点收到的重复的TSN的数目。每个重复的TSN都列在间隔证实块列表后。
z
间隔证实块(Gap Ack Blocks)
文档版本 02 (2007-04-10) 华为技术有限公司
4-23
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
此字段包含了间隔证实块,根据间隔证实块数量字段给出的值,间隔证实块重复若干次。
所有TSN大于或等于累积TSN证实+间隔证实块开始的DATA数据块,或者是小于或
等于每个间隔证实块的累积TSN证实+间隔证实块结束的DATA数据块都可以认为是
被正确接收了。
z
间隔证实块开始(Gap Ack Block Start)
该字段用来指示这个间隔整数块的开始TSN偏移。为了计算实际的TSN号码必须用累
积TSN证实加上偏移号码。计算出来的TSN标识用于识别第一个在这个间隔证实块中
被收到的TSN。
z
间隔证实块开始(Gap Ack Block End)
该字段用来指示这个间隔整数块的结束TSN偏移。为了计算实际的TSN号码必须用累
积TSN证实加上偏移号码。计算出来的TSN标识用于识别在这个间隔证实块中最后收
到的TSN。
z
重复的TSN(Duplicate TSN)
用来指示一个在上一个SACK发送后收到TSN重复个数。每次一个接收者收到一个重
复的TSN(在发送SACK前),则把这个TSN加到重复的TSN列表中。每发送一次SACK
后,则把统计重复TSN的计数器重新置0。
Heart Beat请求(HEARTBEAT)数据块的格式
SCTP端点通过向对端端点发送这个数据块,从而检测定义在该偶联上到特定目的地传
送地址的可达性。
HEARTBEAT数据块的格式如图4-10所示。
图4-10 HEARTBEAT数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 4
Chunk Flags
HEARTBEAT Length
Heartbeat Information TLV (Variable-Length)
z
数据块类型(Type)8bit
此值为4。
z
数据块标志(Chunk Flags)8bit
在发送方设置为全0,并在发送方忽略。
z
HEARTBEAT长度(HEARTBEAT Length)
设置为数据块长度的字节数,包括数据块头和HEARTBEAT信息参数的长度。
z
HEARTBEAT信息参数(HERATBEAT Information TLV)
4-24
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
HEARTBEAT参数字段包含HEARTBEAT信息(Heartbeat Information TLV),
HEARTBEAT信息是一个可变长度的非透明数据结构,其信息通常只需要发送方明白即
可。HEARTBEAT信息参数格式如图4-11所示。
图4-11 HEARTBEAT信息参数格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Heartbeat Info Type=1
Sender-specific Heartbeat Info
HB Info Length
当该HEARTBEAT数据块发送到目的地传送地址时,发送方特定的HEARTBEAT信息
字段(Sender-specific Heartbeat Info)通常包括关于发送方当前的时间信息。
Heart Beat证实(HEARTBEAT ACK)数据块的格式
SCTP端点在收到对端端点发来的HEARTBEAT数据块后,则发送该数据块作为响应。
HeartBeat证实数据块总是向包含HEARTBEAT数据块的IP数据包中的起源IP地址发
送,来作为对该HEARTBEAT数据块的响应。
HEARTBEAT ACK数据块格式如图4-12所示。
图4-12 HEARTBEAT ACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 5
Chunk FlagsHeartbeat AckLength
Heartbeat Information TLV (Variable-Length)
z
数据块类型(Type)8bit
此值为5。
z
数据块标志位(Chunk Flags)8bit
在发送方设置为全0,并在接收方忽略。
z
HEARTBEAT证实长度(HEARTBEAT ACK Length)
设置为数据块长度的字节数,包括数据块头和HEARTBEAT信息参数的长度。
z
HEARTBEAT信息参数(HEARTBEAT Information TLV)
可变长度,该字段的内容把HEARBEAT请求数据块中的HEARTBEAT信息参数作为回
送的响应,该参数字段包含一个可变长度的非透明的数据结构。
文档版本 02 (2007-04-10) 华为技术有限公司
4-25
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
中止(ABORT)数据块的格式
SCTP端点发送ABORT数据块来中止到对端端点的偶联,ABORT数据块中可以包含原
因参数来通知接收ABORT数据块的一方中止该偶联的原因。DATA数据块不能与
ABORT数据块捆绑在一个SCTP分组中。SCTP控制数据块中,除INIT、INIT ACK、
SHUTDOWN COMPLETE数据块外的数据块都可以与ABORT捆绑在一个SCTP分组
中,但这些捆绑的控制数据块都应放在SCTP分组中的ABORT数据块之前,否则这些
控制数据块会被接收方忽略。
如果一个端点收到了格式错误或与不存在的偶联相关的ABORT消息,则应当舍弃该消
息。此外,在任何情况下,端点收到一个ABORT消息后,都不能通过发送ABORT消
息作为响应。
ABORT数据块的格式如图4-13所示。
图4-13 ABORT数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 6ReservedT
Length
zero or more Error Causes
z
数据块类型(8bit)
该值为6。
z
数据块标志位(Chunk Flags)8bit
其中高7比特备用,在发送方设置为全0,并在接收方忽略。当发送方由一个TCB
(Transmission Control Block)被破坏时,则T比特设置为0;如果发送方没有TCB,则
T比特设置为1。
z
长度(Length)16bit
设置为该数据块的长度,包括数据块头和所有包含的差错原因字段。
z
0或多个差错原因(zero or more Error Causes)
ABORT数据块的信息内容。
关闭偶联(SHUTDOWN)数据块的格式
偶联的端点可以使用这个数据块启动对该偶联的正常关闭程序。SHUTDOWN数据块的
格式如图4-14所示。
4-26
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-14 SHUTDOWN数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 7Chunk Flags
Length=8
Cumulative TSN Ack
z
数据块类型(TYPE)
该值为7。
z
数据块标志(Chunk Flags)8bit
在发送方设置为全0,接收方忽略。
z
长度(Length)
指示SHUTDOWN数据块的长度,该字段设置为8。
z
累积的TSN证实(Cumulative TSN Ack)
包含了在任何间隔前收到的最后一个数据块的TSN。由于SHUTDOWN消息不包含间
隔证实块,因此,不能用来对收到的非连续TSN进行证实。
关闭证实(SHUTDOWN ACK)数据块的格式
在完成了偶联关闭后,必须使用SHUTDOWN ACK数据块确认收到的SHUTDOWN数
据块。SHUTDOWN ACK数据块的格式如图4-15所示。
图4-15 SHUTDOWN ACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type = 8Chunk Flags
Length=4
数据块标志位(Chunk Flags):在发送方设置为全0,并在接收方忽略。
SHUTDOWN ACK中不再包含其他参数,因此长度设为4。
操作差错(ERROR)数据块的格式
SCTP端点发送ERROR数据块向其他对端端点通知一些特定的差错情况。该数据块中
可以包含一个或多个差错原因。一般操作差错不一定是致命的。致命差错情况的报告一
般使用ABORT数据块。ERROR数据块格式如图4-16所示。
文档版本 02 (2007-04-10) 华为技术有限公司
4-27
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
图4-16 ERROR数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type =9Chunk Flags
one or more Error Causes
Length
z
数据块格式(Type)8bit
该值为9。
z
数据块标志位(Chunk Flags)8bit
在发送方设置为全0,并在接收方忽略。
z
可变长度(Length)16位
设置为该数据块的字节数,包括数据块头和所有包含的差错原因字段的长度。
z
差错原因参数(Error causes)
差错原因参数包括原因编码、原因长度和原因特定的信息,格式如图4-17所示。
图4-17 差错原因参数的格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Cause Code
Cause Length
Cause-specific Information
原因特定信息由原因编码确定,其对应关系如表4-7所示。
表4-7 原因特定信息与原因编码对应关系
原因编码
1
含义
无效的流标识符:指示收到了一
个关于不存在的流的DATA数
据块
参数信息
流ID(16bit):包含了接收的差错的
DATA数据块的流ID。
备用字段(16bit):由发送方设为全0,
在接收方忽略。
原因长度=8
4-28
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
原因编码
2
含义
丢失必备参数:指示一个或多个
必备的参数在收到的INIT或
INIT ACK数据块中丢失。
参数信息
丢失的参数个数(32bit):指示丢失
的参数个数。
丢失的参数类型(16bit):丢失的必
备参数号。
原因长度=8+N×2
3
过期的COOKIE差错:指示收到
的有效的State Cookie已经过期
了。
过期测量(32bit):包含了当前时间
和State Cookie过期时的时间差值(用
微妙表示)。该差错原因的发送方可
以通过在该字段中包含一个非0的值
来报告State Cookie过期了多长时间。
如果发送方不希望提供此信息,则该
字段设置为0。
原因长度=8
4
资源耗尽:指示发送方的资源已
经耗尽,通常情况下,该差错原
因与ABORT数据块一起发送。
原因长度=4
5
不可解析的地址:指示发送方不不可解析的地址(可变长度):不能
能解析特定的地址参数(即发送解析的完整的地址参数或主机名参数
方不支持该类地址类型),通常(类型、长度和地址值)。
情况下,该差错原因与ABORT
原因长度为可变长度。
数据块一起发送。
不识别的数据块类型:如果接收
方不能识别数据块类型而且数
据块类型比特中的高位比特设
为1,则将不识别的数据块类型
错误返回给数据块的发送方。
无效的必备参数:当一个必备参
数被设置成无效值时,则向INIT
或INIT ACK的生成者返回无效
的必备参数差错原因。
不识别的参数:如果接收方不能
识别INIT ACK数据块中一个或
多个任选参数时,则向INIT
ACK数据块的发送方返回该参
数。
不识别的数据块(可变长度):该字
段包含SCTP分组中不识别数据块的
类型、数据块标志和数据块长度。
原因长度为可变长度。
原因长度=4
6
7
8
不识别参数(可变长度):包含了从
INIT ACK数据块中复制的完整的不
识别参数。当COOKIE ECHO数据块
的发送者希望报告不识别的参数时,
此参数通常是包含在ERROR数据块
中与COOKIE ECHO数据块捆绑在一
起发送作为对INIT ACK的响应。
原因长度为可变长度。
文档版本 02 (2007-04-10) 华为技术有限公司
4-29
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
原因编码
9
含义
无用户数据:如果收到的DATA
数据块中未包含用户数据,则把
此差错原因返回给发送方。
参数信息
TSN:接收到的没有用户数据的DATA
数据块TSN值。
原因长度=8
10
关闭阶段收到COOKIE:当端点
原因长度=4
处于SHUTDOWN-ACK-SENT
状态,收到COOKIE ECHO时,
则发送此差错原因。
状态COOKIE(COOKIE ECHO)数据块的格式
COOKIE ECHO数据块只在启动偶联时使用,它由偶联的发起者发送到对端端点,以完
成启动的过程。COOKIE ECHO必须在该偶联上发送的DATA数据块前发送,但可以与
其他的DATA数据块捆绑到同一个SCTP分组中。
COOKIE ECHO数据块的格式如图4-18所示。
图4-18 COOKIE EHCO数据块的格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type =10Chunk Flags
COOKIE
Length
z
数据块类型(Type)8bit
该值为10。
z
数据块标志位(Chunk Flags)8bit
在发送方设置为全0,在接收方忽略。
z
长度(Length)16bit
该数据块长度的字节数,包括4字节的数据块头和COOKIE的长度。
z
COOKIE(可变长度)
该字段必须包含从前一个INIT ACK数据块的状态COOKIE(State COOKIE)参数中收
到准确的COOKIE,使用COOKIE时应尽可能的从小从而保证互操作性。
4-30
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
COOKIE证实(COOKIE ACK)数据块的格式
COOKIE ACK数据块只在启动偶联时使用,它用来证实收到COOKIE ECHO数据块。
这个数据块必须在该偶联上发送任何DATA或SACK数据块前发送,但这个数据块可以
与一个或多个DATA或SACK数据块捆绑在一个SCTP分组中发送。
如图4-19所示,COOKIE ACK数据块中没有任何其他参数。
图4-19 COOKIE ACK数据块格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type =11Chunk Flags
Length=4
z
数据块标志(Chunk Flags)8bit
在发送方设置为全0,并在接收方忽略。
关闭完成(SHUTDOWN COMPLETE)数据块的格式
此数据块在完成关闭程序后用来确认收到的SHUTDOWN ACK数据块。
如图4-20所示,SHUTDOWN COPLIETE数据块中不含其他参数。
图4-20 SHUTDOWN COMPLETE数据块的格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Type =14ReservedT
Length=4
z
数据块类型(Type)8bit
其中高7比特备用。备用比特在发送方设置全为0,在接收方忽略。
z
T比特(1比特)
当发送方有一个TCB被破坏时,则该T比特设置为0。如果发送方没有TCB,则把该
比特设置为1。
4.5.3 SCTP端点维护的参数和建议值
对应每个SCTP实例所需的参数
对应每个SCTP实例所需的参数如表4-8所示。
文档版本 02 (2007-04-10) 华为技术有限公司
4-31
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
表4-8 对应每个SCTP实例所需的参数
参数
偶联
密钥
地址列表
SCTP端口
含义
当前偶联列表,对应每个偶联的数据用户。
端点使用密钥来计算MAC,这应当是有足够长度的加密质量随机
数,RFC1750对密钥的选择有一些较为有益的说明。
一组该实例绑定的IP地址的列表,这个参数在INIT或INIT ACK
数据块中被传递到对端端点。
端点绑定的本地SCTP端口。
对应每个偶联SCTP端点所需的参数
对应每个偶联SCTP端点所需参数如表4-9所示。
表4-9 对应每个偶联SCTP端点所需的参数
参数
对端验证标签
本地验证标签
对端传送地址类
别
首选通路
全局差错计数
全局差错门限
对端的RWND
下一个TSN
含义
指收到的INIT或INIT ACK数据块中启动标签(Initiate Tag)字
段中的值。
指发出的INIT或INIT ACK数据块中启动标签(Initiate Tag)字
段中的值。
一组该实例绑定的IP地址的列表,这个参数在INIT或INIT ACK
数据块中被传递到对端端点。
端点绑定的本地SCTP端口。
整个偶联的所有差错计数。
这个门限用来控制偶联,当全局差错计数达到了这个门限,将导
致偶联的关闭或中止。
对端的Rwnd的当前计算值。
下一个TSN号码被分配给一个的DATA数据块,它可以在INIT
或INIT ACK数据块中发送到对端,并且这个号码每分配给DATA
数据块(通常的情况是在发送前或者是分段时)后加1。
这是最后一个按顺序收到的TSN,这个值最初是使用对端的初始
TSN来设定的,并在收到的INIT或INIT ACK数据块中携带,并
把该值减1得到。
这是一个以比特或字节定义的数组,它用来指示哪个收到的TSN
是非连续的(相对于最后收到的TSN)。如果不存在着不连续的
情况,即没有收到失序的分组,这个数组将被设置为全0。
最后收到的TSN
映射数组
4-32
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
参数
ACK状态
入局流
出局流
Reship Queue
本地传送地址列
表
偶联的PMTU
含义
这个标志位用来指示下一个收到的分组是否应当响应SACK,其
初始值为0。
一个用来跟踪入局流的数组结构,通常包含下一个希望收到的流
顺序号码的可能的流号码。
一个用来跟踪出局流的数组结构,通常包含下一个希望在某个流
上发送的流顺序号码。
一个重装队列。
该偶联绑定的本地IP地址
对所有对端端点传送地址发现的最小的PMTU(Path MTU)
对于一个给定的偶联,两个端点间使用的验证标签值在偶联的存活期间不需要改变。但无论何时
端点在清除偶联后,再重新建立到对端的偶联时则必须重新使用一个验证标签值。
对应每个传送地址所需的参数
对应于从INIT或INIT ACK中收到的对端端点地址列表中每个目的地传送地址,端点都
需要维护如表4-10所示的参数。
表4-10 对应每个传送地址所需的参数
参数
差错计数
差错门限
CWND
RTO(Retransmission
Timeout Value)
含义
对该目的地的当前差错计数。
对该目的地的当前差错门限,当差错计数到达该值时,则
标记到该目的传送地址的偶联停止。
当前的拥塞窗口。
当前的重发超时取值。
SRTT(Smoothed Round 当前的平滑双向时延值。
Trip Time)
RTTVAR(RTT
Variation)
部分字节证实
状态
PMTU
当前双向传播时间变化。
在拥塞避免模式下,CWND增加的跟踪方法。
目的地的当前状态,包括DOWN、UP、
ALLOW-HEARTBEAT、NO-HEARTBEAT。
当前已通知的通路MTU
文档版本 02 (2007-04-10) 华为技术有限公司
4-33
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
参数
每个目的地的定时器
最后使用时间
含义
针对每个目的地使用的定时器
指示最后向该目的地发送分组的时间,用来确定是否需要
发送HEART BEAT。
需要的通用参数
z
z
出局队列:出局DATA数据块的队列。
入局队列:入局DATA数据块的队列。
SCTP参数的建议值
z
z
z
z
z
z
z
z
z
z
RTO的初始值:3s
RTO的最小值:1s
RTO的最大值:60s
RTO Alpha:1/8
RTO Beta:1/4
有效的COOKIE寿命:60s
偶联的最大重传次数:10次
通路的最大重传次数:5次
IINIT的最大重传次数:8次
HEARTBEAT测试周期:30s
4.6 SCTP基本信令流程
4.6.1 偶联的建立和发送流程
SCTP端点A启动建立偶联,并向端点B发送一个用户消息,随后端点B向A发送两
个用户消息。(假定这些消息没有捆绑和分段)。信令流程如图4-21所示。
4-34
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
图4-21 偶联建立过程消息交互图
Endpoint A
(1) INIT
(2) INIT ACK
(3) COOKIE ECHO
Endpoint B
(4) COOKIE ACK
(5) DATA
(6) SACK
(7) DATA
(8) DATA
(9) SACK
1. 端点A创建一个数据结构TCB(传输控制块)来描述即将发起的这个偶联(包含
偶联的基本信息),然后向端点B发送INIT数据块。INIT数据块中主要包括如下
参数:
z
启动标签(Initiate Tag):对端验证标签,如设为Tag_A。Tag_A是从1到4294967295
中的一个随机数。
输出流数量(OS):本端点期望的最大出局流的数量。
输入流数量(MIS):本端点允许入局流的最大数量。
对端点A、端点B而言,当收到对端端点的流信息后,都需要进行相关的检查。如果对端的最大
入局流数量比本端端点最大出局的流数量小,意味着对端端点不能支持本端端点期望的出局流的
数量,此时,本端端点可以使用对端端点最大入局流的数量作为本端端点出局流的数量,也可以
中止偶联并向SCTP用户报告对端端点资源短缺。
z
z
端点A发送INIT后启动一个INIT定时器,并进入COOKIE-WAIT状态。
INIT定时器作用是等待对端端点返回INIT ACK消息块。如果定时器超期仍收不到INTI ACK消
息块,本端端点则重发INIT数据块,直达到最大重发的次数。
2. 端点B收到INIT消息后,立即用INIT ACK数据块响应。INIT ACK数据块中必须
带有如下参数:
z
z
目的地IP地址:设置成INIT数据块的起源IP地址。
启动标签(Initiate Tag):设置成Tag_B。
文档版本 02 (2007-04-10) 华为技术有限公司
4-35
4 SCTP协议
z
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
状态COOKIE(STATE COOKIE):根据偶联的基本信息生成一个TCB,不过这个
TCB是一个临时TCB。这个TCB生成以后,将其中的必要信息(包含一个COOKIE
生成的时间戳、COOKIE的生命期)和一个本端的密钥通过RFC2401描述的算法
计算成一个32位的摘要MAC(这种计算是不可逆的)。必要信息和MAC组合成
STATE COOKIE参数。
本端点传送地址。
最大入局流的数量。
最大出局流的数量。
z
z
z
3. 端点A收到INIT ACK后,首先停止INIT定时器离开COOKIE-WAIT状态,然后
发送COOKIE ECHO数据块,将收到INIT ACK数据块中的STATE COOKIE参数
原封带回。最后端点A启动COOKIE定时器并进入COOKIE-ECHOED状态。
COOKIE ECHO数据块能够与DATA数据块捆绑在一个SCTP分组中发送,但COOKIE
ECHO必须是分组里的第一个数据块。除非收到返回的COOKIE ACK数据块,否则发
送端点不能给对端端点发送其他分组。
4. 端点B收到COOKIE ECHO数据块后,进行COOKIE验证。将STATE COOKIE
中的TCB部分和本端密钥根据RFC2401的MAC算法进行计算,得出的MAC和
STATE COOKIE中携带的MAC进行比较。如果不同则丢弃这个消息;如果相同,
则取出TCB部分的时间戳,和当前时间比较,看时间是否已经超过了COOKIE的
生命期。如果是,同样丢弃。否则根据TCB中的信息建立一个和端A的偶联。端
点B将状态迁入ESTABLISHED,并发出COOKIE ACK数据块。端点B向SCTP
用户发送SCOMMUNCIATION UP通知。
COOKIE ACK数据块能够与DATA、SACK数据块捆绑在一个SCTP分组中发送,但
COOKIE ACK必须是分组里的第一个数据块。
端点A收到COOKIE ACK数据块后,从COOKIE-ECHOED状态迁移到ESTAABLISHED
状态,并停止COOKIE定时器。端点A使用COMMUNICATION UP通知SCTP用户偶
联建立成功。
一个偶联的建立包括4次握手过程:INIT、INIT ACK、COOKIE ECHO和COOKIE ACK。
5. 端点A向端点B发送一个DATA数据块,启动T3-RTS定时器。DATA数据块中
必须带有如下参数:
z
z
z
TSN:DATA数据块的初始TSN。
流标识符(Stream Identifier):用户数据属于的流,假设流标识符为0。
流顺序码(Stream Sequence Number):所在流中的用户数据的顺序号码。该字段从
0到65535。
4-36
华为技术有限公司 文档版本 02 (2007-04-10)
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册 4 SCTP协议
z
用户数据(User Data):携带用户数据净荷。
6. 端点B收到DATA数据块后,返回SACK数据块。SACK数据块中必须带有如下
参数:
z
z
累积证实TSN标签(Cumulative TSN Ack):端点A的初始TSN。
间隔块(Gap Ack Block):此值为0。
端点A收到SACK数据块后,停止T3-RTX定时器。
7. 端点B向端点A发送第一个DATA数据块。DATA数据块中必须带有如下参数:
z
z
z
TSN:端点B发出DATA数据块的初始TSN。
流标识符(Stream Identifier):用户数据属于的流,假设流标识符为0。
流顺序码(Stream Sequence Number):所在流中的用户数据的顺序号码。假设流顺
序码为0。
用户数据(User Data):携带用户数据净荷。
TSN:端点B发出DATA数据块的初始TSN+1。
流标识符(Stream Identifier):用户数据属于的流,假设流标识符为0。
流顺序码(Stream Sequence Number):所在流中的用户数据的顺序号码。此时流顺
序码为1。
用户数据(User Data):携带用户数据净荷。
z
8. 端点B向端点A发送第二个DATA数据块。DATA数据块中必须带有如下参数:
z
z
z
z
9. 端点A收到DATA数据块后,返回SACK数据块。SACK数据块中必须带有如下
参数:
z
z
累积证实TSN标签(Cumulative TSN Ack):端点B的初始TSN。
间隔块(Gap Ack Block):此值为0。
4.6.2 偶联关闭流程
一个端点退出服务时,需要停止它的偶联。偶联的停止使用两种流程:偶联的中止流程
(非正常关闭)和偶联的正常关闭流程。
偶联的中止(非正常关闭)可以在任何未完成期间进行,偶联的两端都舍弃数据并且不
提交到对端。此种方法不考虑数据的安全。偶联的中止步骤比较简单:发起端点向对端
端点发送ABORT数据块,发送的SCTP分组中必须填上对端端点的验证标签,而且不
在ABORT数据块中捆绑任何DATA数据;接收端点收到ABORT数据块后,进行验证
标签的检查。如果验证标签与本端验证标签相同,接收端点从记录上清除该偶联,并向
SCTP用户报告偶联的停止。
偶联的正常关闭:任何一个端点执行正常关闭程序时,偶联的两端将停止接受从其SCTP
用户发来的新数据,并且在发送或接收到SHUTDOWN数据块时,把分组中的数据递交
给SCTP用户。偶联的关闭可以保证所有两端的未发送、发送未证实数据得到发送和证
实后再终止偶联。
文档版本 02 (2007-04-10) 华为技术有限公司
4-37
4 SCTP协议
HUAWEI GT800 GTSOFTX3000
技术手册 信令与协议分册
图4-22 偶联正常关闭消息交互图
Endpoint A
(1) SHUTDOWN
(2) SHUTDOWN ACK
(3) SHUTDOWN COMPLETE
Endpoint B
偶联的正常关闭步骤如下:
1. 偶联关闭发起端点A的SCTP用户向SCTP发送请求SHUTDOWN原因。SCTP偶
联从ESTABLISHED状态迁入SHUTDOWN-PENDING状态。在这个状态,SCTP
不接受SCTP用户在这个偶联上的任何数据发送请求。同时等待端点A所有发送未
证实的数据得到端点B的证实。当所有端点A发送未证实数据得到证实,则向端
点B发送SHUTDOWN数据块。端点A启动T2-shutdown定时器进入
SHUTDOWN-SENT状态。启动T2-shutdown定时器的目的是等待端点B发回的
SHUTDOWN-ACK数据块,如果定时器超时,则端点A必须重新发送SHUTDOWN
数据块。
2. 端点B收到SHUTDOWN消息后,进入SHOUTDOWN-RECEIVED状态,不再
接收从SCTP用户发来的新数据,并且检查数据块的累积TSN ACK字段,验证所
有未完成的DATA数据块已经被SHUTDOWN的发送方接收。当端点B所有未发
送数据和发送未证实数据得到发送和证实后,发送SHUTDOWN ACK数据块并启
动本端T2-SHUTDOWN定时器,并且进入SHUTDOWN-ACK-SENT状态。如果定
时器超时了,端点B则重新发送SHUTDOWN ACK数据块。
3. 端点A收到SHUTDOWN ACK
消息后,停止T2-shutdown定时器,并且向端点B
发送SHUTDOWN COMPLETE数据块,并清除偶联的所有记录。端点B收到
SHUTDOWN COMPLETE数据块后,验证是否处于SHUTDOWN-ACK-SENT状态。
如果不是处于该状态,则丢弃该数据块;如果端点处于SHUTDOWN-ACK-SENT
状态,端点B则停止T2-shutdown定时器并清除偶联的所有记录,进入CLOSED
状态。
4-38
华为技术有限公司 文档版本 02 (2007-04-10)