移动软交换协议分析_第1页
移动软交换协议分析_第2页
移动软交换协议分析_第3页
移动软交换协议分析_第4页
移动软交换协议分析_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

软交换协议分析STYLEREF"标题1"\n第4章STYLEREF"标题1"BICC协议90H.248协议概述H.248和MEGACO是ITU-T与IETF共同努力的结果,ITU-T称之为H.248,而IETF称为MEGACO,以下通称为H.248。H.248是一种媒体网关控制协议,在分离网关体系中,H.248协议用作媒体网关控制器(MediaGatewayController,即MGC)与媒体网关(MediaGateway,即MG)之间的通信,实现MGC对MG的控制功能。在UMTS系统,H.248协议应用于Mc接口上。Mc接口定义及功能Mc接口定义Mc接口是MSCServer(或GMSCServer)与媒体网关MGW间的标准接口,其协议遵从H.248协议,并针对3GPP特殊需求,定义了H.248扩展事务交互(Transaction)及包(Package)。Mc接口为3GPPR4新增接口,物理接口方式可选择ATM或IP。Mc接口的协议消息编码采用二进制或文本方式,底层传输机制将采用MTP3b(基于ATM的信令传输)或SCTP(基于IP的信令传输)为其提供协议承载。Mc接口功能Mc接口提供了MSCServer(或GMSCServer)在呼叫处理过程中控制MGW中各类传输方式(IP/ATM/TDM)的静态及动态资源的能力(包括终端属性、终端连接交换关系及其承载的媒体流);该接口还提供了独立于呼叫的MGW状态维护与管理能力。H.248协议的应用MSOFTX3000在UMTS系统中用作MSCServer(或GMSCServer),是核心网控制面设备,处于分离网关体系的控制地位(即作MGC)。H.248协议应用于MSOFTX3000与媒体网关(UMG8900)之间的接口上,该接口在UMTS定义为Mc接口,如REF_Ref31180182\r\h图1-1所示。H.248协议的应用协议栈结构如REF_Ref28765267\r\h图1-2所示,H.248协议应用于Mc接口,该协议传输可以基于IP(图中a),也可基于ATM(图中b)。目前的组网结构一般采用基于IP的传输方式。H.248协议结构H.248协议介绍概述基本概念媒体网关(MG):媒体网关将一种类型网络的媒体转换成另一网络所要求的格式,例如,媒体网关可能终结交换电路网的承载信道(如PCM)和分组网络的媒体流(如IP网络中的媒体流)。可以有能力分别对音频、视频和数据进行处理,并且能够进行全双工的媒体转换。也可以播放一些音频/视频信号,执行一些IVR功能,甚至具有提供媒体会议的能力。媒体网关控制器(MGC):负责对相关于MG内媒体信道连接控制的呼叫状态进行维护。多点控制单元(MCU):控制多方会议(通常会包含对音频、视频和数据的处理)的建立和协调的实体。流(Stream):作为呼叫或者会议的一部分,而被媒体网关发送/接收的双向媒体或控制流。连接模型协议的连接模型描述了能够被MGC所控制,位于MG内的逻辑实体或对象。连接模型的主要抽象是终端(Termination)和关联(Context)。REF_Ref27798157\r\h图1-3是对连接模型的一个图形化抽象表示:H.248/MEGACO协议连接模型示意图在H.248/Megaco定义的连接模型中,包括关联和终端两个实体。一个关联中至少要包含一个终端,否则此关联将被删除。同时一个终端在任一时刻也只能属于一个关联。关联(Context)关联描述一个终端集内部的关联关系,当一个关联涉及多个终端时,关联将描述这些终端所组成的拓扑结构以及媒体混合交换的参数。NULL关联为特殊关联,用于容纳当前不与任何其它终端处于关联状态的终端。当终端处于NULL关联中时,允许对其进行参数查询、修改,请求事件检测等操作。关联所允许包含的最大终端数目是个依赖于媒体网关实现的属性。关联的属性主要包括:ContextID,32bits,在网关范围内唯一标识一个关联。特殊关联ID表示如REF_Ref27909703\r\h表1-1:特殊关联编码对照图关联二进制编码表示文本编码表示NULL关联0‘-’CHOOSE关联0xFFFFFFFE‘$’ALL关联0xFFFFFFFF‘*’拓扑,用于描述一个关联内部终端之间的媒体流向。终端也存在一个称之为MODE的属性,用于描述媒体的流向,但它描述的是相对于关联外部的流向。优先级,标识媒体网关对关联处理的优先级。取值范围为0到15,取值越小优先级越大。紧急指示,用于在某些紧急情况下指示网关进行优先处理。终端(Termination)终端是位于媒体网关中的一个逻辑实体,可以发送/接收媒体和(或)控制流。终端特征通过属性来描述,这些属性被组合成描述符在命令中携带。终端被创建时,媒体网关会为其分配一个唯一标识。终端通常可分为两类,一类是半永久终端,用来表示物理实体。例如TDM信道,只要这个TDM信道在媒体网关中被配置,就一直存在,只有当配置信息被删除时,与之对应的终端才会消失。另一类称为临时终端,代表临时性的信息流,例如RTP流,当需要时创建,使用完毕后就删除。临时终端通过ADD命令创建,通过SUBTRACT命令清除。与此不同,当一个半永久终端被加入一个特定关联时,它是从NULL关联中获取,而当从特定关联中删除时,它又被返回到NULL关联。终端属性,可以创建新的终端或者修改已存在终端的属性。终端ID,对不同的终端通过终端ID来引用,终端ID是由MG自己设置的。终端ID有两种通配方式:“ALL”和“CHOOSE”。包,不同类型网关的终端可能具有不同的特性。为了获取媒体网关/媒体网关控制器之间良好的互操作性,将终端的可选属性组合成包,通常终端实现这些包的一个子集。终端属性和描述符,终端拥有属性,属性拥有唯一的属性ID。ROOT终端,通常用来表示媒体网关本身,允许在ROOT终端上定义包,也可以拥有属性、事件、信号、统计和参数。ROOT终端可以出现在Modify、Notify、AuditValue、AuditCapability、ServiceChange命令中,其它任何对ROOT终端的使用都是种错误。命令,协议提供了命令以操作连接模型的逻辑实体:关联和终端。大多数命令由媒体网关控制器发起,媒体网关作为响应方。比较特殊的是Notify和ServiceChange两个命令,前者从媒体网关发往媒体网关控制器,后者则可以双向传递。命令含义请参考后面的命令解释部分内容。描述符,命令的参数表现为描述符,描述符包括一个名字和一个由子项构成的列表。描述符可以作为命令的输出在响应中返回,这些返回的描述符,如果不存在任何内容,则用只包含描述符名和空子项列表来表示。消息结构消息是H.248协议发送的一个信息单元。消息可以二进制格式和文本格式编码。采用二进制编码时,使用ITU-TX.680(ASN.1)定义的规范描述,使用X.690定义的BER规则编码;采用文本方式编码时,遵循RFC2234ABNF规范。MGC必须支持两种编码格式,MG可能支持其中任何一种或两种方式。H.248消息都有相同的结构,一个H.248消息的结构如REF_Ref19691967\r\h图1-4所示。H.248消息结构一个H.248消息(Message)包含多个事务交互(Transaction),消息中的事务交互之间没有关系,可以单独处理;一个事务交互由多个动作(Action)构成,动作对应关联(Context);动作由一系列局限于一个关联的命令(Command)组成。由此,H.248消息构成机制如REF_Ref17862103\r\h图1-5所示。消息构成机制消息(Message)H.248协议发送或接受的信息单元称为消息,消息从消息头(Header)开始,后面是若干个事务交互。消息头中包含消息标识符(MID,MessageIdentifier)和版本字段:MID用于标识消息的发送者,可以是域地址、域名或设备名,一般采用域名。版本字段用于标识消息遵守的协议版本。版本字段有1位或2位数,目前版本为1。消息内的事务交互是相互独立的,当多个被独立处理时,消息没有规定处理的先后次序。事务交互(Transaction)MGC和MG之间的一组命令构成事务交互,事务交互由TransactionID进行标识。事务交互包含一个或多个动作,一个动作由一系列局限于一个关联的命令组成。一个事务交互从“事务头部”(TransHdr)开始。在TransHdr中包含TransactionID。TransactionID由事务交互的发送者指定,在发送者范围内是唯一的。TransHdr后面是该事务交互的若干动作,这些动作必须顺序执行。若某动作中的一个命令执行失败,该事务交互中以后的命令将终止执行(Optional命令除外)。引入事务交互的一个重要功能是可以保证命令的顺序执行。当命令标记为“Optional”(可选命令),该命令可以越过一个命令执行失败而导致以后命令终止执行的限制,即如果可选命令执行不成功,其后的命令可以继续执行。事务交互包括请求和响应两种类型,而响应也有两种:TransactionReply和TransactionPending。TransactionRequest每个TransactionRequest请求激发一个事务交互。一个事务交互包含一个到多个动作,每个动作包含与同一个关联(Context)相关的一个到多个命令。TransactionRequest结构如下:TransactionReplyTransactionReply是事务交互接收者对TransactionRequest的一种响应,表明接收者完成该TransactionRequest命令执行,对每个事务交互都应有一个Reply响应。有两种情况表明一个TransactionRequest执行完成:TransactionRequest中的所有命令成功执行完毕;TransactionRequest中的一个非可选命令执行失败。TransactionReply结构如下:TransactionPendingTransactionPending由接收者发送,指示事务交互正在处理,但仍然没有完成。当命令处理时间较长时,可以防止发送者重发事务交互请求。TransactionPending结构如下:可见,事务交互表现为TransactionRequest,对TransactionRequest接收者必须响应一个TransactionReply,在此之前可能由许多TransactionPending响应。H.248事务交互(Transaction)事务交互说明MGWCommunicationUpMGC与MGW通信恢复后,MGW上报的消息MGWOutOfServiceMGW出现故障时,上报MGC,表示MGW离开服务MGWRestorationMGW从故障中恢复后,MGW上报的恢复消息MGWRegister系统上电后,MGW主动发送注册消息给MGC,请求注册。只有MGW成功注册,MGC才可以使用MGW的资源MGWRe-Register在一些情况下,如MGC切换时,MGC可以要求MGW重新注册(G)MSCServerOrderedRe-Register(G)MSCServer请求MGW重新注册,MGW收到命令后,发起定义的事务交互(G)MSCServerRestoration(G)MSCServer从故障中恢复后,(G)MSCServer发送该消息给MGWTerminationOutOfService终端出现故障时,MGW发送该消息给MGC,以便MGC不再使用该资源TerminationRestoration当终端从故障中恢复,MGW发送该消息,通知MGC更新资源状态AuditValue审计请求终端资源的各种属性的当前值AuditCapability审计请求终端资源的各种属性的能力集合MGWCapabilityChange由于故障或OMC配置改变MGW时,MGW使用该事务交互通知MGC,以便MGC更新MGW的能力状态(G)MSCServerOutOfService当(G)MSCServer出现故障时,通知MGWChangeThroughConnection改变终端的MODE属性。该操作可用于控制媒体流程的方向,包括向前、向后、双向和隔离ChangeFlowDirection通过修改终端之间的拓扑参数,控制终端之间的媒体流方向IsolateBearerTermination把一个终端从其他终端的媒体流关系中孤立出来,不与任何一个终端发生媒体流关系JoinBearerTermination在存在的关联中加入一个终端EstablishBearer建立MGW之间的承载。该操作包括申请终端资源和到目的MGW的承载PrepareBearer从MGW申请终端资源,该操作在建立承载之前。它可能导致产生一个新的关联ActivateInterworkingFunction激活MGW上的IWF功能ReleaseBearer释放MGW之间的承载,该操作不释放终端资源ReleaseTermination释放终端资源BearerReleasedMGW上报的承载释放完成事件。该事件由MGC请求BearerEstablishedMGW上报的承载创建完成事件。该事件由MGC请求SendTone送音操作。呼叫时,MGC请求终端向某一方向送一个音,如回铃音、忙音等PlayAnnouncement智能业务、补充业务等应用中播放通知音SendDTMF送DTMF音DetectDTMF请求MGW检测DTMF音ReportDTMFMGW向MGC上报检测DTMF音完成AnnouncementCompletedMGW上报通知音播放完成ActivateVoiceProcessingFunction激活语音处理功能,包括EC、预留电路资源等TunnelInformationUpMGW向MGC上报IPBCP帧,MGC通过隧道把它送给对端MGWTunnelInformationDownMGC把其它MGC送来的IPBCP消息发给MGWToneCompletedMGW上报完成播放音事件StopAnnouncementMGC请求MGW停止送通知音StopToneMGC请求MGW停止送音StopDTMFMGC请求MGW停止送DTMF音StopDTMFDetectionMGC请求MGW停止DTMF检测ConfirmCharMGC请求MGW确认保留的资源ModifyCharMGC修改以前保留在MGW上的资源ReserveCharMGC保留MGW上的资源BearerModified承载修改完成事件BearerModificationFailed承载修改故障事件TFOActivationMGC激活MGW的TFO功能OptimalCodecandDistantListNotifyMGW上报TFO时Codec协商的Codec列表。CodecModifyMGW上报Codec修改结果DistantCodecListMGW上报远端Codec协商结果CommandRejected当MGW从MGC检测到不合法或不可执行的命令,MGW返回拒绝的命令ModifyBearerCharacteristicsMGC请求修改承载资源动作(Action)动作与关联(Context)是密切相关的,它由一系列局限于一个关联的命令组成。动作由ContextID进行标识。在一个动作内,命令需要顺序执行。一个动作从关联头部(CtxHdr)开始,在CtxHdr包含ContextID,用于标识该动作对应的关联。ContextID由MG指定,在MG范围内是唯一的。MGC必须在以后的与此关联相关的事务交互中使用ContextID。在CtxHdr后面是若干命令,这些命令都与ContextID标识的关联相关。命令(CMD)命令是H.248消息的主要内容,实现对关联和终端属性的控制,包括指定终端报告的事件什么信号和动作可施加于终端,以及指定关联的拓扑结构等。命令由命令头部(CMDHdr)与命令参数构成,在H.248协议中,命令参数被组织成“描述符”(Descriptor)。H.248协议定义了八个命令,其中“Notify”是由MG发给MGC,“ServiceChange”可由MG或MGC发送,其它命令都是由MGC发给MG。H.248命令参见REF_Ref19759960\r\h表1-3。H.248命令命令发送方向含义AddMGC→MG增加一个终端到一个关联中,当不指明ContextID时,将生成一个关联,然后加入终端ModifyMGC→MG修改一个终端的属性、事件和信号参数SubtractMGC→MG从一个关联中删除一个终端,同时返回终端的统计状态。如关联中再没有其它的终端将删除此关联MoveMGC→MG将一个终端从一个关联移到另一个关联AuditValueMGC→MG返回终端特性的当前状态AuditCapabilitiesMGC→MG返回终端特性的能力集NotifyMG→MGCMG将检测到的事件通知给MGCServiceChangeMGC↔MGMG向MGC通知一个或者多个终端将要脱离或者加入业务,也可以用于MG注册到MGC,表示可用性,以及MGC的挂起和MGC的主备转换通知等描述符(Descriptor)命令的相关参数被组织成描述符,描述符包含名字和许多列表项,一些命令共享通用的描述符。通常,描述符的文本格式形式如下:H.248协议定义了18种描述符,参见REF_Ref19762416\r\h表1-4。描述符描述符名称说明Modem标识Modem类型和属性Mux描述多媒体终端(H.221,H.223,H.225.0)的复用类型和终端输入队列复用Media媒体流规格的列表TerminationState不特定于流的终端属性(可在包中定义)Stream单个流的Local/Remote/LocalControl描述符的列表LocalMG接收的流相关的属性RemoteMG发送的流相关的属性Localcontrol描述MGC和MG之间的属性EventsMGC要求MG检测及报告的事件列表EventBufferMGC要求MG在EventBufferControl为LockStep时,检测及缓冲的事件列表Signals描述应用于终端的信号和(或)活动(如回铃音)Audit描述哪些信息需要审计ServiceChangeServiceChange的活动和原因DigitMap指示如何在MG中处理号码匹配的拨号方案StatisticsSubtract和Audit命令中,终端保持的统计数据的报告Packages审记时,返回终端识别的包的列表ObservedEvents“Notify”上报检测到的事件Topology描述Context内各终端间的流的方向,用于Context而不是Termination信令流程下面对H.248协议的基本过程进行示例性说明,只是介绍了协议应用的一个典型的情况。画出的呼叫流程图仅仅是对媒体网关和媒体网关控制器之间交互的一种抽象表示,并没有考虑任何的时间刻度之类的问题。示例所选取的是一个建立在两个住宅网关之间的呼叫。用户A和用户B分别连接在两个住宅网关RGW1和RGW2上,并且这两个住宅网关受同一个媒体网关控制器所控制。示例仅介绍成功呼叫的情况,并且作了媒体网关已经完成向媒体网关控制器注册的假设。流程分为两个过程来介绍,分别为呼叫建立过程和呼叫拆除过程。呼叫建立流程H.248呼叫建立流程如REF_Ref28076210\r\h图1-6所示。呼叫建立过程媒体网关控制器向两个网关发送Modify消息,检测终端的摘机事件。假设用户A先摘机,网关RGW1检测到后,发送Notify消息给媒体网关控制器,携带相应的事件信息和检出时戳。媒体网关控制器返回响应消息应答。媒体网关控制器发送Modify命令给RGW1。指示RGW1向用户A送拨号音。RGW向用户侧送拨号音,同时返回应答消息。当用户A听到拨号音之后,就开始拨号。媒体网关控制器在接收到RGW1的Notify消息之后,开始对拨号串进行分析。假设被叫用户连接在住宅网关RGW2,这个网关被同一个媒体网关控制器所管理。媒体网关控制器为RGW1创建一个新关联,并且将物理终端TermA添加到其中。如果用户B正处于空闲状态,给用户A播放回铃音,同时创建一个临时终端并将该终端加入所创建的同一关联。临时终端的连接域IP地址、媒体域端口号未指定。RGW1创建一个ID为1的关联。物理终端TermA被添加到关联中。同时,创建临时终端EphA,为其分配IP地址和端口号,之后RGW1返回相应的响应,在响应中指示所使用的IP地址和端口号。媒体网关控制器向住宅网关RGW2发送一个类似的事务。网关RGW2首先创建一个ID为2的关联,然后将物理终端TermB添加到这个关联,同时创建临时终端EphB,返回响应消息。用户B摘机,网关RGW2通过Notify命令请求将这个事件报告给媒体网关控制器,媒体网关控制器也返回一个Notify响应。媒体网关控制器向RGW1发送一个消息以停止向用户A送回铃音,并且设置临时终端EphA的远端SDP信息。两个终端的模式都被修改为SendRecv(之前都是以RecvOnly模式创建的)。RGW1返回响应消息,指示操作成功。媒体网关控制器给RGW2发送一个事务,指示停止终端TermB上的振铃音。网关RGW2处理完毕之后,返回一个应答。两用户进入通话阶段。一旦呼叫被主叫方或被叫方终止,另一方将听到忙音。呼叫拆除流程REF_Ref28076219\r\h图1-7是呼叫拆除部分的流程。呼叫拆除过程假设由主叫用户A挂机终止呼叫。RGW1向媒体网关控制器发送Notify消息,报告这一事件。媒体网关控制器返回一个Notify命令响应消息。媒体网关控制器生成一个Modify命令,指示RGW2向被叫用户B放忙音。两个终端的模式同被设置为RecvOnly。RGW2返回应答,指示操作成功。媒体网关控制器指示网关RGW1将两个终端从关联1中删除,并返回临时终端的统计信息作为响应。用户B在听到忙音之后也挂机,RGW2向媒体网关控制器上报Notify消息,媒体网关控制器返回相应的响应消息。媒体网关发出Subtract命令将终端TermB和EphB从关联2中删除。RGW2同样在关联2清除之后返回应答,携带临时终端的统计信息。到此,一次呼叫流程结束,终端又恢复初始状态,重新等待新呼叫的到来。

SCTP协议概述在SCTP(StreamControlTransmissionProtocol,流控制传输协议)制定以前,在IP网上传输七号信令使用的是UDP、TCP协议。UDP是一种无连接的传输协议,无法满足七号信令对传输质量的要求。TCP协议是一种有连接的传输协议,可以信令的可靠传输,但是TCP协议具有行头阻塞、实时性差、支持多归属比较困难、易受拒绝服务攻击(Dos)的缺陷。因此IETF(InternetEngineeringTaskForce)RFC2960制定了面向连接的基于分组的可靠传输协议SCTP协议。SCTP对TCP的缺陷进行了完善,使得信令传输具有更高的可靠性,SCTP的设计包括适当的拥塞控制、防止泛滥和伪装攻击、更优的实时性能和多归属性支持,因此,SCTP成为SIGTRAN协议族中的传输协议。SCTP被视为一个传输层协议,它的上层为SCTP用户应用,下层作为分组网络。在SIGTRAN协议的应用中,SCTP上层用户是SCN信令的适配模块(如M2UA、M3UA),下层是IP网。SCTP相关术语传送地址传送地址由IP地址、传输层协议类型和传输层端口号定义。由于SCTP在IP上传输,所以一个SCTP传送地址由一个IP地址加一个SCTP端口号决定。SCTP端口号就是SCTP用来识别同一地址上的用户,和TCP端口号是一个概念。比如IP地址2和SCTP端口号1024标识了一个传送地址,而3和1024则标识了另外一个传送地址,同样,2和端口号1023也标识了一个不同的传送地址。主机和端点主机(Host)主机配有一个或多个IP地址,是一个典型的物理实体。端点(SCTPEndpoint)端点是SCTP的基本逻辑概念,是数据报的逻辑发送者和接收者,是一个典型的逻辑实体。一个传送地址(IP地址+SCTP端口号)唯一标识一个端点。一个端点可以由多个传送地址进行定义,但对于同一个目的端点而言,这些传送地址中的IP地址可以配置成多个,但必须使用相同的SCTP端口。说明:一个主机上可以有多个端点。偶联和流偶联(Association)偶联就是两个SCTP端点通过SCTP协议规定的4步握手机制建立起来的进行数据传递的逻辑联系或者通道。SCTP协议规定在任何时刻两个端点之间能且仅能建立一个偶联。由于偶联由两个端点的传送地址来定义,所以通过数据配置本地IP地址、本地SCTP端口号、对端IP地址、对端SCTP端口号等四个参数,可以唯一标识一个SCTP偶联。正因为如此,在MSOFTX3000中,偶联可以被看成是一条M2UA链路或M3UA链路。流(Stream)流是SCTP协议的一个特色术语。SCTP偶联中的流用来指示需要按顺序递交到高层协议的用户消息的序列,在同一个流中的消息需要按照其顺序进行递交。严格地说,“流”就是一个SCTP偶联中,从一个端点到另一个端点的单向逻辑通道。一个偶联是由多个单向的流组成的。各个流之间相对独立,使用流ID进行标识,每个流可以单独发送数据而不受其他流的影响。说明:一个偶联中可以包含多个流,可用流的数量是在建立偶联时由双方端点协商决定,而一个流只能属于一个偶联。同时,出局的流数量可以与入局流数量的取值不同。顺序提交的数据必须在一个流里面传输。通路(Path)和首选通路(PrimaryPath)通路(Path)通路是一个端点将SCTP分组发送到对端端点特定目的传送地址的路由。如果分组发送到对端端点不同的目的传送地址时,不需要配置单独的通路。首选通路(PrimaryPath)首选通路是在默认情况下,目的地址、源地址在SCTP分组中发到对端端点的通路。如果可以使用多个目的地地址作为到一个端点的目的地址,则这个SCTP端点为多归属。如果发出SCTP分组的端点属于多归属节点时,如果定义了目的地址、源地址,能够更好控制响应数据块返回的通路和数据包被发送的接口。一个SCTP偶联的两个SCTP端点都可以配置多个IP地址,这样一个偶联的两个端点之间具有多条通路,这就是SCTP偶联的多地址性。SCTP偶联的多地址性是SCTP与TCP最大的不同。一个偶联可以包括多条通路,但只有一个首选通路。如REF_Ref58741607\r\h图2-1所示,MGC(如MSOFTX3000)一个端点包括两个传送地址(4:2905和5:2905),而SG一个端点也包括两个传送地址(6:2904和7:2904)。SCTP双归属此两个端点决定了一个偶联,该偶联包括4条通路(Path0、Path1、Path2、Path3)。根据数据配置可以确定此4条通路的选择方式,如REF_Ref58743477\r\h错误!未找到引用源。所示。图中定义了4条通路,而且首选通路为Path0:Path0:本端传送地址1(4:2905)发送SCTP分组到对端传送地址1(6:2904)Path1:本端传送地址1(4:2905)发送SCTP分组到对端传送地址2(7:2904)Path2:本端传送地址2(5:2905)发送SCTP分组到对端传送地址1(6:2904)Path3:本端传送地址2(5:2905)发送SCTP分组到对端传送地址2(7:2904)端点发送的SCTP工作原理为:本端点传送地址A发送的SCTP包通过首选通路发送到对端端点。当首选通路出现故障后,SCTP可以自动切换到其他备用通路上,优先切换对端端点的传送地址,再次切换本端端点的传送地址。SCTP定义了心跳消息(HeartBeat)。当某条通路空闲时,本端SCTP用户要求SCTP生成相应的心跳消息并通过该通路发送到对端端点,而对端端点必须立即发回对应的心跳确认消息。这种机制被用来精确测量回路时延(RTT,RoundTripTime),而且可以随时监视偶联的可用情况和保持SCTP偶联的激活状态。TSN和SSNTSN(TransmissionSequenceNumber,传输顺序号)SCTP使用TSN机制实现数据的确认传输。一个偶联的一端为本端发送的每个数据块顺序分配一个基于初始TSN的32位顺序号,以便对端收到时进行确认。TSN是基于偶联进行维护的。说明:在TCP协议中,数据的确认传输和顺序递交是通过TSN这一种机制实现的。当发现TSN不连续时候,TCP将进行数据重传,直到TSN连续以后才将数据向TCP层的上层用户递交。这实现机制导致TCP协议不能满足七号信令对于低传输时延的要求。SSN(StreamSequenceNumber,流顺序号)SCTP为本端在这个流中发送的每个数据块顺序分配一个16位SSN,以便保证流内的顺序传递。在偶联建立时,所有流中的SSN都是从0开始。当SSN到达65535后,则接下来的SSN为0。TSN和SSN的分配是相互独立的。CWND(CongestionWindow,拥塞窗口)SCTP也是一个滑动窗口协议,拥塞窗口是针对每个目的地址维护的,它会根据网络状况调节。当目的地址的发送未证实消息长度超过其CWND时,端点将停止向这个地址发送数据。RWND(ReceiveWindow,接收窗口)RWND用来描述一个偶联对端的接收缓冲区大小。偶联建立过程中,双方会交换彼此的初始RWND。RWND会根据数据发送、证实的情况即时地变化。RWND的大小限制了SCTP可以发送的数据的大小。当RWND等于0时,SCTP还可以发送一个数据报,以便通过证实消息得知对方缓冲区的变化,直到达到CWND的限制。TCB(TransmissionControlBlock,传输控制块)TCB是一种内部数据结构,是一个SCTP端点为它与其他端点之间已经启动的每一个偶联生成的。TCB包括端点的所有状态、操作信息,便于维护和管理相应的偶联。SCTP功能如REF_Ref66678830\r\h图2-2所示,SCTP的功能主要包括偶联的建立与关闭、流内消息的顺序递交、用户数据分段、证实和避免拥塞、数据块绑定、分组的有效性和通路管理等。SCTP功能示意图偶联的建立和关闭偶联的建立是由SCTP用户(如M2UA、M3UA等)发起请求来启动的。而且建立过程相对于TCP连接而言比较复杂,是个“四次握手”过程,并用到了“COOKIE”的机制。COOKIE是一个含有端点初始信息和加密信息的数据块,通信的双方在关联建立时需要处理并交换,从而增加协议的安全性,防止拒绝服务和伪装等潜在的攻击。SCTP提供了对激活偶联的正常的关闭程序,它必须根据SCTP用户的请求来执行,当然SCTP也提供一种非正常(即中止)程序,中止程序的执行既可以根据SCTP用户的请求来启动,也可以由SCTP协议检查出差错来中止。SCTP不支持半打开状态(即一端可以在另一端结束后继续发送数据)。无论是哪个端点执行了关闭程序,偶联的两端都应停止接受从SCTP用户发来请求原语。流内消息顺序递交SCTP提供数据报的顺序传递,顺序传递的数据报必须放在一个“流”中传递。流是顺序传递的基石。通过流,SCTP将数据的确认和传输的有序递交分成两种不同机制。SCTP使用TSN机制实现了数据的确认传输,使用流号和SSN(流顺序号)则实现数据的有序递交。当SCTP收到数据的SSN连续的时候,SCTP就可以将数据向SCTP用户递交,而不用等到数据的TSN号连续以后才向SCTP用户递交。当一个流被闭塞时,期望的下一个连续的SCTP用户消息可以从另外的流上进行递交。SCTP也提供非顺序递交的业务,接收到的用户消息可以使用这种方式立即递交到SCTP用户,而不需要保证其接收顺序。用户数据分段SCTP通过对传送通路上最大PMTU(PathMaximumTransmissionUnit)的检测,实现在SCTP层将超大用户数据分片打包,避免在IP层的多次分片、重组,可以减少IP层的数据负担。在发送端,SCTP可以对大的用户数据报进行分片以确保SCTP数据报传递到低层时适合通路MTU(MaximumTransmissionUnit)。在接收端,SCTP将分片重组为完整的用户数据报,然后传递给SCTP用户。证实和避免拥塞证实和重传是协议保证传输可靠性的策略,SCTP也一样。证实机制是SCTP保证传输可靠性的基石。避免拥塞沿袭了TCP的窗口机制,进行合适的流量控制。SCTP在将数据(数据分片或未分片的用户数据报)发送给底层之前顺序地为之分配一个发送顺序号(TSN)。TSN和SSN(流顺序号)是相互独立的,TSN用于保证传输的可靠性,SSN用于保证流内消息的顺序传递。TSN和SSN在功能上使可靠传递和顺序传递分开。接收端证实所有收到的TSNs,即使其中有些尚未收到。包重发功能负责TSN的证实,还负责拥塞消除。消息块绑定如果长度很短的用户数据被带上很大一个SCTP消息头,其传递效率会很低,因此,SCTP将几个用户数据绑定在一个SCTP报文里面传输,以提高带宽的利用率。SCTP分组由公共分组头和一个/多个信息块组成,信息块可以是用户数据,也可以是SCTP控制信息。SCTP用户能够可选地使用捆绑功能,决定是否将多个用户数据报捆绑在一个SCTP分组中。为提高效率,拥塞/重发时,捆绑功能可能仍被执行,即使用户已经禁止捆绑。分组的有效性分组的有效性是SCTP提供无差错传输的基石。SCTP分组的公共分组头包含一个验证标签(VerificationTag)和一个可选的32位校验码(Checksum)。验证标签的值由偶联两端在偶联启动时选择。如果收到的分组中如果没有期望的验证标签值,接收端将丢弃这个分组,以阻止攻击和失效的SCTP分组。校验码由SCTP分组的发送方设置,以提供附加的保护,用来避免由网络造成的数据差错。接收端将丢弃包含无效校验码的SCTP分组。通路管理发送端的SCTP用户能够使用一组传送地址作为SCTP分组的目的地。SCTP管理功能可以根据SCTP用户的指令和当前合格的目的地集合的可达性状态,为每个发送的SCTP分组选择一个目的地传送地址。当其他分组业务量不能完全表明可达性时,通路管理功能可以通过心跳消息来监视到某个目的地地址的可达性,并当任何对端传送地址的可达性发生变化时,向SCTP用户提供指示。通路功能也用来在偶联建立时,向对端报告合格的本端传送地址集合,并把从对端返回的传送地址报告给本地的SCTP用户。在偶联建立时,为每个SCTP端点定义一个首选通路,用来正常情况下发送SCTP分组。在接收端,通路管理功能在处理SCTP分组前,用来验证入局的SCTP分组属于的偶联是否存在。SCTP原语SCTP通过接收高层协议(SCTP用户)发送的原语请求,为SCTP的用户提供服务。同时SCTP可以根据不同事件向SCTP用户发送通知原语。SCTP原语描述使用了如下格式:原语名:必备属性,【任选属性】返回结果:必备属性,【任选属性】SCTP用户向SCTP发送的请求原语SCTP用户向SCTP发送的请求原语共有16种,含义如REF_Ref66272017\r\h表2-1所示。SCTP请求原语原语名功能INITIALIZE允许SCTP启动其内部的数据结构,并为建立操作环境分配所需的资源,一旦SCTP启动后,则高层协议在与其他SCTP端点之间通信时就不需要再调用此原语。SCTP将向高层协议返回本地准备处理SCTP偶联的事件号(实例)。ASSOCIATE由高层启动一个到特定端点的偶联。对端端点将按照该端点定义的传送地址的方式进行规定。如果偶联事件尚未启动,则认为该原语是一个错误。用来本地处理SCTP偶联的偶联ID,将作为返回结果用来返回偶联是否成功建立。如果偶联建立不成功,则返回一个差错。如果偶联成功,则返回结果中还应包含到对端的完整传送地址以及本端端点出局的流数量,同时还应从返回的目的地地址中选择一个传送地址,该传送地址将作为本地端点向对端端点发送SCTP分组的首选通路。返回的“目的地传送地址列表”可以由SCTP用户用来改变首选通路或者是向一个特定传送地址强制发送一个SCTP分组。返回结果:偶联IDSHUTDOWN用来正常地关闭一个偶联,任何以在本地发送队列中的用户数据都将被递交到对端。该偶联将在收到所有发送的SCTP分组的证实后停止。返回结果用来指示是否成功关闭了该偶联。如果成功关闭,则反馈一个成功关闭偶联编码;如果关闭失败,则返回一个差错编码。ABORT用来非正常关闭一个偶联,本地发送队列中的用户数据将被丢弃,并发送一个ABORT数据块到对端。返回结果用来指示是否成功中止了该偶联。如果中止成功,则返回一个已经中止的偶联编码。如果中止失败,则返回一个差错编码。SENDSCTP用户使用该原语通知SCTP在指定流ID中向目的地发送地址发送数据。返回结果用来指示是否成功发送了数据。SETPRIMARY高层协议使用该原语指示本地SCTP将指定的目的地传送地址作为发送分组的首选通路。返回结果为结果编码,指示此操作是否成功执行。如果规定的目的地传送地址没包含在ASSOCIATE请求原语或COMMUNCIATIONUP通知原语返回的“目的地传送地址列表”中,则返回一个差错。RECEIVE用来把在SCTP队列中的可用的用户消息读到由SCTP用户规定的缓冲区中。所读消息的字节数将作为结果返回。如果有可能根据特定的规定,也可以返回其他消息,如发送方的地址、收到消息的流ID、是否有消息可以进行恢复等。对于顺序的消息,消息的流顺序号码(SSN)也可以被返回。STATUS用来要求SCTP返回一个包含以下信息的数据块:偶联连接状态、目的地传送地址表、目的传送地址的可达性状态、当前的接收方窗口大小、当前的拥塞窗口大小、未确认的DATA数据块的数量、收到的DATA数据块的数量、首选通路、首选通路上最近收到的SRTT、首选通路的RTO。返回结果为要求返回信息的状态。CHANGEHEARTBEAT高层协议用该原语指示本地端点允许或禁止向指定的目的地传送地址发送心跳消息。返回结果用来指示该操作的执行情况。当目的传送地址未空闲时,心跳程序也不执行。REQUESTHERATBEAT高层协议用该原语指示本地端点对指定偶联的特定目的地地址执行心跳程序。返回结果用来指示传送给目的地址的HEARTBEART数据块是否成功。GETSRTTREPORT高层协议用该原语指示本地SCTP报告对给定偶联上规定的目的地传送地址的当前SRTT测量值。返回结果是一个包含最近SRTT的毫秒值。SETFRAILURETHRESHOLD允许本地SCTP定制到给目的地传送地址的可达性故障检出的门限。返回结果用来指示该操作是否成功。SETPROTOCOLPARAMETERS允许本地SCTP定制协议参数。返回结果用来指示该操作是否成功。RECEIVEUNSENTMESSAGE高层协议用该原语指示本地SCTP将收到故障消息在高层协议缓存区储存。返回结果为一个包含故障消息的字节数。RECEIVEUNACKNOWLEDGEDMESSAGE高层协议用该原语指示本地SCTP将收到的没有应答故障消息在高层协议缓存区储存。返回结果为一个包含没有应答消息的字节数。DESTROY指示本地哪个SCTP事件号(实例)被破坏。SCTP事件号由INITIALIZE原语生成的。返回结果为是否成功。SCTP向SCTP用户发送的通知原语SCTP向SCTP用户发送的通知原语共有8种,含义如REF_Ref66596072\r\h表2-2所示。SCTP通知原语原语名功能DATAARRIVE当一个用户消息被成功接收,并且准备向SCTP用户递交时,SCTP使用该原语通知高层用户。如下信息会被传递:-偶联ID:本地处理的SCTP偶联-流ID:用来指示数据从哪个流上接收到的。SENDFAILURE当一个消息不能递交时,SCTP使用该原语通知SCTP用户。如下信息会被传递:-偶联ID:本地处理的SCTP偶联-数据恢复ID:用来恢复未发送和未证实数据的标识。-原语编码:用来指示不能递交的原因,如长度过长、消息存活时间过期等。NETWORKSTATUSCHANGE当目的地传送地址被标为未激活(如SCTP检测出故障)或标记为激活时(SCTP检测出故障恢复),SCTP使用该原语通知SCTP用户。如下信息会被传递:-偶联:本地处理的SCTP偶联-目的地传送地址:指示由于状态变化而影响的对端端点的目的地传送地址。-新状态:指示新的状态。COMMUNCIATIONUPSCTP用该原语通知SCTP用户,指示本地SCTP已经准备好发送或接收SCTP分组,或者时一个丢失通信的端点又已经恢复。如下信息会被传递:-偶联ID:本地处理的SCTP偶联-状态:指示发生了哪种类型的事件-目的地传送地址列表:对端端点的传送地址列表-出局流数量:SCTP用户允许使用的最大的流数量-入局流数量:对端端点对该偶联所请求的流数量,此值可以与出局的流数量取值不同。COMMUNICATIONLOST当SCTP完全丢失了到某一个端点的通信时(用心跳消息),或者是检测出端点已经执行了操作,SCTP使用该原语通知SCTP用户。如下信息会被传递:-偶联ID:本地处理的SCTP偶联-状态:指示发生了哪种类型的事件。状态可以指示故障或者是响应SHUTDOWN或ABORT请求原语的中止事件。-数据恢复ID:用来指示恢复未发送或证实数据-最后证实的TSN:对对端端点最后证实的TSN-最后发送的TSN:发送到对端端点最后一个TSNCOMMUNICATIONERROR当SCTP从对端端点收到了一个ERROR数据块,并且确定需要通知高层用户时,才使用该通知原语。如下信息会被传递:-偶联ID:本地处理的SCTP偶联-错误信息:指示错误类型并且可以任选地包含一些从ERROR数据块中收到的附加信息。RESTART当SCTP检测出对端端点已经重新启动时,使用该原语通知SCTP用户。偶联ID会被传递。SHUTDOWNCOMPLETE当本地SCTP已经完成了偶联关闭后,是使用此原语通知SCTP用户。本地处理的SCTP偶联ID会被传递。SCTP协议消息消息结构每个SCTP分组结构如所REF_Ref58749365\r\h图2-3示。SCTP分组结构一个SCTP分组含了一个公共的分组头(CommonHeader)和若干数据块(Chunk),每个数据块中既可以包含控制信息,也可以包含用户数据。除了INIT、INITACK和SHUTDOWNCOMPLETE数据块外,其他类型的多个数据块可以捆绑在一个SCTP分组中,以满足对MTU大小的要求。当然,这些数据块也可以不与其他数据块捆绑在一个分组中。如果一个用户消息不能放在一个SCTP分组中,这个消息可以被分成若干个数据块。公共分组头的格式SCTP公共分组头中包括了源端口号(SourcePortNumber)、目的端口号(DestinationPortNumber)、验证标签(VerificationTag)和校验码(Checksum)。源端口号(16bits)源端口号识别SCTP发送端点的SCTP端口号。接收方可以使用源端口号、源IP地址、目的端口号和目的IP地址标识该SCTP分组所属的偶联。目的端口号(16bits)目的端口号为目的端点的SCTP端口号。接收主机可以使用目的端口号将SCTP分组解复用到正确的端点或应用中。验证标签(32bits)验证标签是偶联建立时,本端端点为这个偶联生成一个随机标识。偶联建立过程中,双方会交换这个TAG,到了数据传递时,发送端必须在公共分组头中带上对端的这个TAG,以备校验。校验码(32bits)SCTP通过对用户数据使用ADLER-32算法,计算出一个32位的校验码,带在数据报中,在接收端进行同样的运算,通过检查校验码是否相等来验证用户数据是否遭到破坏。数据块字段的格式数据块包括了块类型(ChunkType)、块标志位(ChunkFlags)、块长度(ChunkLength)和块值(ChunkValue)。块类型(8bits)块类型定义在块值(ChunkValue)中消息所属的类型。REF_Ref20824091\r\h表2-3列出了主要的块类型。SCTP数据块消息类型ID块类型说明0DATA(净数据)传输的用户数据块。1INIT用于发起两个端点之间的SCTP偶联。2INITACK用来确认SCTP偶联的发起消息(INIT)。3SACK该数据块送至对端,以确认收到DATA块,并且通知对端DATA的接收顺序间隙。4HEARTBEAT端点发送该数据块至对端,以检测当前偶联中定义的某一目的地址的可达性。5HEARTBEATACK响应HEARTBEAT消息。6ABORT关闭偶联。7SHUTDOWN偶联中的一个端点对其偶联发起一个GRACEFUL关闭。8SHUTDOWNACK响应SHUTDOWN消息,关闭程序完成时发出。9ERROR通知对端,SCTP偶联发生某种错误。10COOKIEECHO仅用于偶联发起过程,它由偶联的发起者发送至对端以完成发起程序。11COOKIEACKCOOKIE证实,相对于COOKIEECHO12ECNE保留,应用于外部环境拥塞发布回声13CWR保留,应用于降低拥塞窗口14SHUTDOWNCOMPLETE用于关闭程序完成时对SHUTDOWNACK消息进行确认如果接收端点不能识别块类型时,块类型最高位2bit用于标识需要进行的各种操作,比特组合含义如REF_Ref58821247\r\h表2-4所示。接收端点不能识别块类型时,块类型最高2bit含义Bits(最高两位)含义00停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他消息块。01停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他消息块,并且在“ERROR”或“INITACK”中向发起端点返回不能识别的参数。10跳过此数据块并继续执行。11跳过此数据块并继续执行,并且在“ERROR”或“INITACK”中向发起端点返回不能识别的参数。数据块标志位(8bit)块标志位用法由块类型决定。除非被置为其他值,块标记在传送过程中会被置0而且接收端点会忽视块标记。块长度(16bit)块长度包括块类型(ChunkType)、块标记(ChunkFlags)、块长度(ChunkLength)和块值(ChunkValue),长度使用二进制表示。块值(可变长度)块值的内容在块中传送实际的信息,内容由消息块类型决定。块值的长度为不定长。说明:数据块的总长度(包括类型、长度和取值长度)必须是4字节的整数倍,如果该长度不是4字节的整数倍,则发送方应当向数据块中填充全0的字节,这些填充的字节不计入数据块长度字段。发送方填充的字节数应不超过3个字节,在接收方忽略所有的填充字节。任选/可变长参数的格式SCTP控制数据块(除DATA数据块外)的内容取值包含了数据块类型特定的数据块头所要求的字段,随后是一个或多个参数。这些包含在一个数据块中的任选/可变长参数都是按照参数类型、参数长度和参数取值的方式定义的,其格式如REF_Ref66606178\r\h图2-4所示。任选/可变长参数格式数据块的参数类型(16bit)参数类型字段用来识别参数的类型,取值范围从0到65534。65535预留给IETF进行扩展。如果接收端点不能识别参数类型时,参数类型中最高位2bit用于标识需要进行的各种操作,比特组合含义如REF_Ref66608568\r\h表2-5所示。接收端点不能识别块参数类型时,参数类型最高2bit含义Bits(最高两位)含义00停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他消息块。01停止处理并丢弃此SCTP分组,不再处理该SCTP分组中的其他消息块,并且在“ERROR”或“INITACK”的“不识别的参数类型”字段中报告不识别的参数类型。10跳过此数据块并继续执行。11跳过此数据块并继续执行,并且在“ERROR”或“INITACK”的“不识别的参数类型”字段中向发起端点返回不能识别的参数类型。数据块的参数长度(16bit)参数长度字段包含参数类型、参数长度和参数取值字段在内所有字段的字节数。因此一个参数的取值字段为0,则该长度字段应设置为4。参数长度字段不计算填充字节。数据块的参数值(可变长度)参数取值字段包含在该参数中传送的实际信息。说明:参数的总长度(包括类型、长度和取值字段)必须是4字节的整数倍。如果该长度不是4字节的整数倍,则发送方应当向数据块中填充全0的字节,这些填充的字节不计入参数长度字段。发送方填充的字节数应不超过3个字节,接收方忽略所有的填充字节。SCTP数据块的格式净荷(DATA)数据块的格式DATA数据块格式如REF_Ref66616617\r\h图2-5所示。DATA数据块格式数据块类型为0备用比特(5bit):设置全为0,在接收方忽略。U比特(1比特)非顺序比特。如果该比特设置为1,则指示这是一个非顺序的DATA数据块,不需要给数据块分配顺序号码。所有接收方必须忽略SSN。在重新组装完成后(如果需要),非顺序的数据块不需要尝试任何重新排序的过程,可以由接收方直接递交到SCTP用户。如果一个非顺序的用户消息被分段,则消息的每个分段中的U比特必须设置为1。B比特分段开始比特。如果该比特被设置,则指示这是用户消息的第一个分段。E比特分段结束比特。如果该比特被设置,则指示这是用户消息的最后一个分段。一个没有分段的用户消息应当把所有的B和E比特设置为1。如果B和E比特都设置为0,则表明这是一个分段的用户消息的一个中间分段。当用户消息被分段到多个数据块中,接收方需要使用TSN对消息进行重组,这意味着给分段的用户消息的每个分段都必须要使用连续的TSN。BE比特的取值含义如

REF_Ref72667697\r\h表2-6所示。BE比特的取值含义BE表示的含义10用户消息的第一个分段00用户消息的中间分段11用户消息的最后一个分段11未分段的消息长度(16比特)指示DATA数据块从类型字段开始到用户数据字段结束之间的字节数,但不包含任何填充字节。如果DATA数据块的用户数据字段为0,则长度字段设为16。TSN(32比特)表示该数据块的TSN,TSN的有效值从0到232-1。TSN值达到4294967295后将转回到0。StreamID用来识别用户数据属于的流。由INIT和INITACK数据块的发送者生成。SSN(16bit)表示所在流中的用户数据的顺序号码。该字段的有效值从0到65535。但一个用户消息被SCTP分段后,则必须在消息的每个分段中都带相同的流顺序号码。PayloadProtocolIdentifier(净负荷协议标识符)32bit表示一个应用(或上层协议)特定的协议标识符。这个值由高层协议(SCTP用户)传递到SCTP并发送到对等层。这个标识符不由SCTP使用,但可以由特定网络实体或对端的应用来识别在DATA数据块中携带的信息类型。甚至在每个分段的DATA数据块中也应包含该字段,以确保对网络中间的代理可用。0表示高层协议(SCTP用户)未对该协议净荷规定应用标识符。UserData(用户数据,可变长度)它用来携带用户数据净荷。该字段必须被填充为4字节的整数倍,发送方填充的字节数应不超过3个字节,接收方忽略所有的填充字节。启动(INIT)数据块的格式该数据块用来启动两个SCTP端点间的一个偶联,INIT数据块的格式如REF_Ref66616632\r\h图2-6所示。INIT数据块格式INIT数据块应包括如下参数,除非特别支持,否则每个参数只能在INIT数据块中出现一次:必备参数为:启动标签(InitiateTag)、广播的接收方窗口信用值(AdvertisedReceiverWindowCredit)、最大输出流数量(NumberofOutboundStreams,OS)、最大输入流数量(NumberofInboundStreams,MIS))、初始TSN(InitialTSN)。可变长度参数:IPV4地址、IPV6地址、CookiePreservative、ECN能力、主机名地址、支持的地址类型。INIT数据块标志字段该字段备用,所有比特应设为0。INIT中的参数可以按任何顺序进行处理。启动标签(InitiateTag):32bitINIT的接收方记录启动标签参数值。这个值必须被放置到INIT接收方发送的与该偶联相关的每个SCTP分组中的验证标签字段中。启动标签允许除0以外的任何值。如果在收到的INIT数据块中的启动标签为0,则接收方必须作为错误处理,并且发送ABORT数据块中止该偶联。广播的接收方窗口信用值(a_rwnd,32比特)表示专用的缓冲区的容量,用字节数表示。INIT发送方为偶联预留的窗口。在偶联存活期间,这个缓冲区的容量不应减少(即不应把该偶联的专用缓冲区取走),但端点可以在发送的SACK数据块中修改a_rwnd的值。输出流的数量(NumberofOutboundStreams,OS)定义发送INIT数据块的一方希望在该偶联中创建的输出流的数量。该值不允许为0。接收方收到该参数为0的INIT数据块后会中止该偶联。输入流的数量(NumberofInboundStreams,MIS)定义了发送这个INIT块的一方允许对端在该偶联中所创建的流的数量。该值不允许为0。接收方收到该参数为0的INIT数据块后会中止该偶联。初始TSN(InitialTSN)定义发送方将使用的初始的TSN,该值可以设置为启动标签字段的值。IPv4地址发送方端点的IPv4地址,采用二进制编码。INIT数据块中可以包含多个IPV4或IPV6地址或地址组合。IPV6地址发送方端点的IPV6地址,采用二进制编码。INIT数据块中可以包含多个IPV4或IPV6地址或地址组合。发送方不必把IPV4地址映射到IPV6地址中,可以直接在IPV4地址参数中使用IPV4地址。与SCTP公共分组头中的源端口号一起,IPV4或IPV6地址参数中的地址可以用来指示传送地址,并由INIT发送方所支持。在偶联存活期间,这个IP地址可以出现在IP包中起源地址字段中,由INIT的发送者来发送,并且可以由INIT的接收者作为IP包的目的地地址。当INIT的发送方是一个多归属的情况时,多于一个IP地址参数可以包含在一个INIT数据块中。此外一个多归属的端点可以接入到不同类型的网络,这样多于一个的地址类型能够在INTI数据块中出现,即IPV4和IPV6的地址允许出现在同一个INIT数据块中。如果INTI中包含了至少一个IP地址参数,则IP数据报中的源IP包含在INIT数据块中,INIT中提供的其他附加地址可以被接收INIT的端点作为目的地。如果INIT中未包含任何IP地址参数,在收到INIT的端点必须使用收到的IP数据报中的源IP作为该偶联的目的地地址。COOKIEPreservativeINIT的发送方应使用这个参数来建议INIT的接收方提供较长的存活跨度的状态COOKIE。由于失效的COOKIE操作差错原因,前一次尝试与对等端建立偶联失败后,又重新尝试偶联建立时,此参数由发送方添加到INIT数据块中。接收方出于安全的考虑可以选择忽略建议的COOKIE存活跨度增量。COOKIEPreservative参数中包含一个32bit的建议的COOKIE存活跨度(SuggestedCookieLife-spanIncrement)参数:此参数用来向接收方指示发送方希望接收方为其缺省的COOKIE的存活跨度增加的毫秒数。主机名地址(HostNameAddress)INIT发送方使用此参数把其主机名(在IP地址中的位置)传递到对等层。这个对等层负责解释这个主机名,用这个参数可以使偶联工作实现NAT穿越。主机名(HostName)可变长度,该字段包含了按照RFC1123规定的“主机名句法”定义的主机名,主机名地址的解析不在本SCTP标准中规定。该参数中至少有一个空的中止符包含在主机名字符串中,并且应包含长度。支持的地址类型(SupportedAddressTypes)INIT的发送方使用该参数列出其所支持的全部地址类型。地址类型(AddressType)该参数使用对应的地址类型的类型值,如IPV4=5,IPV6=6,主机名(HostName)=11.启动证实(INITACK)数据块的格式INITACK数据块用来确认SCTP偶联的启动。如REF_Ref66618485\r\h图2-7所示,INITACK的参数部分与INIT数据块的参数部分相同,还使用两个可变长度的参数:COOKIE(STATECOOKIE)和未识别的参数。INITACK数据块格式启动标签(InitiateTag)32bitINITACK的接收方记录启动标签参数的值,并把该值放到每个INITACK接收方在相应的偶联上发送的每个SCTP分组中的验证标签。启动标签不允许为0。如果收到的INITACK数据块中的启动标签为0,则接收方当作错误来处理并通过发送ABORT来关闭偶联。广播的接收方窗口信用值(AdvertisedReceiverWindowCredit)32bit表示专用的缓冲区的容量,用字节数表示,INITACK发送方为偶联预留的窗口,在偶联存活期间,这个缓冲区的容量不应减少。输出流的数量(NumberofOutboundStreams,OS)16bit定义发送INITACK数据块的一方希望在该偶联中创建的输出流的数量。该值不允许为0。接收方收到该参数为0的INITACK数据块后中止该偶联并舍弃TCB。输入流的数量(NumberofInboundStreams,MIS)16bit定义发送INITACK数据块的一方允许对端端点在偶联中所创建的流的最大数量。该值不允许为0。接收方收到该参数为0的INITACK数据块后中止该偶联并舍弃TCB。初始TSN(InitialTSN)32bit定义发送方将使用的TSN,该值可以设置为启动标签字段的值。IPV4地址和IPV6地址与SCTP公共分组头中的源端口号一起,IPV4或IPV6地址参数中的地址可以用来指示传送地址,并由INITACK发送方所支持。在偶联存活期间,这个IP地址可以出现在IP包中起源地址字段中,由INITACK的发送者来发送,并且可以由INITACK的接收者作为IP包的目的地地址。当INITACK的发送方是一个多归属的情况时,多于一个IP地址参数可以包含在一个INIT数据块中。此外一个多归属的端点可以接入到不同类型的网络,这样多于一个的地址类型能够在INTI数据块中出现,即IPV4和IPV6的地址允许出现在同一个INIT数据块中。如果INTIACK中包含了至少一个IP地址参数,则IP数据报中的源IP包含在INITACK数据块中,INITACK中提供的其他附加地址可以被接收INITACK的端点作为目的地。如果INITACK中未包含任何IP地址参数,在收到INITACK的端点必须使用收到的IP数据报中的源IP作为该偶联的目的地地址。状态COOKIE(StateCOOKIE)可变长度该参数长度取决于COOKIE的长度,该参数值的取值必须包含由INITACK发送方创建该偶联所需的所有状态、参数信息和消息授权码。不识别参数(UnrecognizedParameters)可变长度该参数内容是INIT数据块中包含的一个不识别的参数,该参数用来返回给INIT数据块的产生者一个指示。此参数字段包含了从INIT数据块中复制过来的不识别参数的完整的参数类型、长度和参数值。选择证实(SACK)数据块的格式SACK通过使用DATA数据块中的TSN用来向对端端点确认接收到的DATA数据块,并通知对端端点在收到的DATA数据块中的间隔。所谓间隔就是指收到的DATA数据块的TSN不连续的情况。SACK数据块格式如REF_Ref66623421\r\h图2-8所示。SACK数据块格式数据块类型(Type)数值为3数据块标志设为全0并由接收方忽略。累积TSN证实(CumulativeTSNAck)指收到的TSN顺序断开前的最后一个TSN号码,下一个TSN则是在发送SACK的端点尚未收到TSN值。这个参数包含了在收到TSN序列的间隔前的最后一个TSN值。此参数确认已经收到了小于或等于该值的所有TSN。广播的接收方窗口信用值(AdvertisedReceiverWindowCredit(a_rwnd))指示修改了SACK的发送方的接收缓冲容量的字节数。间隔证实块的数目(NumberofGapAckBlocks=N)指示SACK数据块中包含的间隔证实块的数目。每个间隔证实块确认了在一个不连续TSN后所收到的TSN序列,所有通过间隔证实块确认的TSN都比累积TSN证实的值大。重复的TSN数目(NumberofDuplicateTSNs=X)包含了该端点收到的重复的TSN的数目。每个重复的TSN都列在间隔证实块列表后。间隔证实块(GapAckBlocks)此字段包含了间隔证实块,根据间隔证实块数量字段给出的值,间隔证实块重复若干次。所有TSN大于或等于累积TSN证实+间隔证实块开始的DATA数据块,或者是小于或等于每个间隔证实块的累积TSN证实+间隔证实块结束的DATA数据块都可以认为是被正确接收了。间隔证实块开始(GapAckBlockStart)该字段用来指示这个间隔整数块的开始TSN偏移。为了计算实际的TSN号码必须用累积TSN证实加上偏移号码。计算出来的TSN标识用于识别第一个在这个间隔证实块中被收到的TSN。间隔证实块开始(GapAckBlockEnd)该字段用来指示这个间隔整数块的结束TSN偏移。为了计算实际的TSN号码必须用累积TSN证实加上偏移号码。计算出来的TSN标识用于识别在这个间隔证实块中最后收到的TSN。重复的TSN(DuplicateTSN)用来指示一个在上一个SACK发送后收到TSN重复个数。每次一个接收者收到一个重复的TSN(在发送SACK前),则把这个TSN加到重复的TSN列表中。每发送一次SACK后,则把统计重复TSN的计数器重新置0。HeartBeat请求(HEARTBEAT)数据块的格式SCTP端点通过向对端端点发送这个数据块,从而检测定义在该偶联上到特定目的地传送地址的可达性。HEARTBEAT数据块的格式如REF_Ref66625170\r\h图2-9所示。HEARTBEAT数据块格式数据块类型(Type)8bit此值为4。数据块标志(ChunkFlags)8bit在发送方设置为全0,并在发送方忽略。HEARTBEAT长度(HEARTBEATLength)设置为数据块长度的字节数,包括数据块头和HEARTBEAT信息参数的长度。HEARTBEAT信息参数(HERATBEATInformationTLV)HEARTBEAT参数字段包含HEARTBEAT信息(HeartbeatInformationTLV),HEARTBEAT信息是一个可变长度的非透明数据结构,其信息通常只需要发送方明白即可。HEARTBEAT信息参数格式如REF_Ref66625538\r\h图2-10所示。HEARTBEAT信息参数格式当该HEARTBEAT数据块发送到目的地传送地址时,发送方特定的HEARTBEAT信息字段(Sender-specificHeartbeatInfo)通常包括关于发送方当前的时间信息。HeartBeat证实(HEARTBEATACK)数据块的格式

温馨提示

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

最新文档

评论

0/150

提交评论