SCTP协议详解.docx

上传人:b****5 文档编号:27921098 上传时间:2023-07-06 格式:DOCX 页数:15 大小:260.84KB
下载 相关 举报
SCTP协议详解.docx_第1页
第1页 / 共15页
SCTP协议详解.docx_第2页
第2页 / 共15页
SCTP协议详解.docx_第3页
第3页 / 共15页
SCTP协议详解.docx_第4页
第4页 / 共15页
SCTP协议详解.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

SCTP协议详解.docx

《SCTP协议详解.docx》由会员分享,可在线阅读,更多相关《SCTP协议详解.docx(15页珍藏版)》请在冰豆网上搜索。

SCTP协议详解.docx

SCTP协议详解

SCTP协议详解

SCTP被视为一个传输层协议,它的上层为SCTP用户应用,下层作为分组网络。

在SIGTRAN

协议的应用中,SCTP上层用户是SCN信令的适配模块(如M2UAM3UA,下层是IP网。

・SCTP相关术语

・SCTP功能

*SCTP基本信令流程

IbM

 

SCTP相关术语

1.传送地址

传送地址由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也标识了一个不同的传送地址。

2.主机和端点

主机(HOST)主机配有一个或多个IP地址,是一个典型的物理实体。

端点(SCTPEndpoint)

端点是SCTP的基本逻辑概念,是数据报的逻辑发送者和接收者,是一个典型的逻辑

实体。

一个传送地址(IP地址+SCTP端口号)唯一标识一个端点。

一个端点可以由多个传

送地址进行定义,但对于同一个目的端点而言,这些传送地址中的IP地址可以配置成多

个,但必须使用相同的SCTP端口。

3.偶联和流

偶联(AssociATION偶联就是两个SCTP端点通过SCTP协议规定的4步握手机制建立起来的进行数据传递的逻辑联系或者通道。

SCTP协议规定在任何时刻两个端点之间能

且仅能建立一个偶联。

由于偶联由两个端点的传送地址来定义,所以通过数据配置本地IP

地址、本地SCTP端口号、对端IP地址、对端SCTP端口号等四个参数,可以唯一标识一个SCTP偶联。

正因为如此,在GTSOFTX3000中,偶联可以被看成是一条M2UA链路或M3UA链路。

流(Stream)流是SCTP协议的一个特色术语。

SCTP偶联中的流用来指示需要按顺序递交到高层协议的用户消息的序列,在同一个流中的消息需要按照其顺序进行递交。

严格地说,“流”就是一个SCTP偶联中,从一个端点到另一个端点的单向逻辑通道。

一个偶

联是由多个单向的流组成的。

各个流之间相对独立,使用流ID进行标识,每个流可以单

独发送数据而不受其他流的影响。

4.通路(Path)和首选通路(PrimaryPath)

通路(Path)通路是一个端点将SCTP分组发送到对端端点特定目的传送地址的路由。

如果分组发送到对端端点不同的目的传送地址时,不需要配置单独的通路。

首选通路(PrimaryPath)首选通路是在默认情况下,目的地址、源地址在SCTP分

组中发到对端端点的通路。

如果可以使用多个目的地地址作为到一个端点的目的地址,则这个SCTP端点为多归

属。

如果发出SCTP分组的端点属于多归属节点时,如果定义了目的地址、源地址,能够

更好控制响应数据块返回的通路和数据包被发送的接口。

一个SCTP偶联的两个SCTP端

点都可以配置多个IP地址,这样一个偶联的两个端点之间具有多条通路,这就是SCTP偶

联的多地址性。

SCTP偶联的多地址性是SCTP与TCP最大的不同。

一个偶联可以包括多条通路,但只有一个首选通路。

如图1所示,MGC如GTSOFTX3000一个端点包括两个传送地址(10.11.23.14:

2905和10.11.23.15:

2905),而SG一个端

点也包括两个传送地址(10.11.23.16:

2904和10.11.23.17:

2904)。

图1SCTP双归属

此两个端点决定了一个偶联,该偶联包括4条通路(PathO、Pathl、Path2和Path3)。

根据数据配置可以确定此4条通路的选择方式,如图2所示。

图中定义了4条通路,而且首选通路为PathO:

PathO:

本端传送地址1(10.11.23.14:

2905)发送SCTP分组到对端传送地址1(10.11.23.16:

2904)。

 

端点发送的SCTP工作原理为:

本端点传送地址A发送的SCTP包通过首选通路发送到对端端点。

当首选通路出现故障后,SCTP可以自动切换到其他备用通路上,优先切换对

端端点的传送地址,再次切换本端端点的传送地址。

SCTP定义了心跳消息(HeartBeat)。

当某条通路空闲时,本端SCTP用户要求SCTP生成相应的心跳消息并通过该通路发送到对端端点,而对端端点必须立即发回对应的心跳确

认消息。

这种机制被用来精确测量回路时延RTT(RoundTripTIme),而且可以随时监视偶

联的可用情况和保持SCTP偶联的激活状态。

Historycomaiann:

.ll

祗.A

inpt]-:

A

 

图2确定通路选择方式的数据配置

5.TSN和SSN

传输顺序号TSN(TransmissionSequeneeNumber)SCTP使用TSN机制实现数据的确认传输。

一个偶联的一端为本端发送的每个数据块顺序分配一个基于初始TSN的32位

顺序号,以便对端收到时进行确认。

TSN是基于偶联进行维护的。

流顺序号SSN(StreamSequeneeNumber)

SCTP为本端在这个流中发送的每个数据块顺序分配一个16位SSN以便保证流内的

顺序传递。

在偶联建立时,所有流中的SSN都是从0开始。

当SSN到达65535后,贝U接下来的SSN为0。

TSN和SSN的分配是相互独立的。

6.拥塞窗口CWNDCongestionWindow)

SCTP也是一个滑动窗口协议,拥塞窗口是针对每个目的地址维护的,它会根据网络状

况调节。

当目的地址的发送未证实消息长度超过其CWND寸,端点将停止向这个地址发送

数据。

7.接收窗口RWNDReceiveWindow)

RWNE用来描述一个偶联对端的接收缓冲区大小。

偶联建立过程中,双方会交换彼此的

初始RWNDRWND会根据数据发送、证实的情况即时地变化。

RWND勺大小限制了SCTP可

以发送的数据的大小。

当RWND等于0时,SCTP还可以发送一个数据报,以便通过证实消息得知对方缓冲区的变化,直到达到CWND勺限制。

8.传输控制块TCB(TransmissionControlBlock)

TCB是一种内部数据结构,是一个SCTP端点为它与其他端点之间已经启动的每一个

偶联生成的。

TCB包括端点的所有状态、操作信息,便于维护和管理相应的偶联。

SCTP功能

如图所示,SCTP的功能主要包括:

偶联的建立和关闭、流内消息顺序递交、用户数据分段、证实和避免拥塞、消息块绑定、分组的有效性和通路管理。

流内咂库递交

图SCTP功能示意图

1、偶联的建立和关闭

偶联的建立是由SCTP用户(如M2UAM3UA等)发起请求来启动的。

而且建立过程

相对于TCP连接而言比较复杂,是个“四次握手”过程,并用到了“COOKIE”的机制。

COOKIE是一个含有端点初始信息和加密信息的数据块,通信的双方在关联建立时需要处理

并交换,从而增加协议的安全性,防止拒绝服务和伪装等潜在的攻击。

SCTP提供了对激

活偶联的正常的关闭程序,它必须根据SCTP用户的请求来执行,当然SCTP也提供一种非

正常(即中止)程序,中止程序的执行既可以根据SCTP用户的请求来启动,也可以由SCTP

协议检查出差错来中止。

SCTP不支持半打开状态(即一端可以在另一端结束后继续发送数据)。

无论是哪个端点执行了关闭程序,偶联的两端都应停止接受从SCTP用户发来请求原语。

2、流内消息顺序递交

SCTP提供数据报的顺序传递,顺序传递的数据报必须放在一个“流”中传递。

流是顺

序传递的基石。

通过流,SCTP将数据的确认和传输的有序递交分成两种不同机制。

SCTP使

用TSN机制实现了数据的确认传输,使用流号和SSN(流顺序号)则实现数据的有序递交。

当SCTP收到数据的SSN连续的时候,SCTP就可以将数据向SCTP用户递交,而不用等到数据的TSN号连续以后才向SCTP用户递交。

当一个流被闭塞时,期望的下一个连续的SCTP用户消息可以从另外的流上进行递交。

SCTP也提供非顺序递交的业务,接收到的用户消息可以使用这种方式立即递交到SCTP用

户,而不需要保证其接收顺序。

3、用户数据分段

SCTP通过对传送通路上最大PMTU(PathMaximumTransmissiONUnit)的检测,实

现在SCTP层将超大用户数据分片打包,避免在IP层的多次分片、重组,可以减少IP层

的数据负担。

在发送端,SCTP可以对大的用户数据报进行分片以确保SCTP数据报传递到低层时适

合通路MTU(MaximumTransmissionUnit)。

在接收端,SCTP将分片重组为完整的用户数据报,然后传递给SCTP用户。

4、证实和避免拥塞

证实和重传是协议保证传输可靠性的策略,SCTP也一样。

证实机制是SCTP保证传输

可靠性的基石。

避免拥塞沿袭了TCP的窗口机制,进行合适的流量控制。

SCTP在将数据(数据分片或未分片的用户数据报)发送给底层之前顺序地为之分配一

个发送顺序号(TSN。

TSN和SSN(流顺序号)是相互独立的,TSN用于保证传输的可靠性,SSN用于保证流

内消息的顺序传递。

TSN和SSN在功能上使可靠传递和顺序传递分开。

接收端证实所有收到的TSNs,即使

其中有些尚未收到。

包重发功能负责TSN的证实,还负责拥塞消除。

5、消息块绑定

如果长度很短的用户数据被带上很大一个SCTP消息头,其传递效率会很低,因此,

SCTP将几个用户数据绑定在一个SCTP报文里面传输,以提高带宽的利用率。

SCTP分组由公共分组头和一个/多个信息块组成,信息块可以是用户数据,也可以是

SCTP控制信息。

SCTP用户能够可选地使用捆绑功能,决定是否将多个用户数据报捆绑在一个SCTP分

组中。

为提高效率,拥塞/重发时,捆绑功能可能仍被执行,即使用户已经禁止捆绑。

6、分组的有效性

分组的有效性是SCTP提供无差错传输的基石。

SCTP分组的公共分组头包含一个验证

标签(VerificATIonTag)和一个可选的32位校验码(Checksum)。

验证标签的值由偶联两端在偶联启动时选择。

如果收到的分组中如果没有期望的验证标签值,接收端将丢弃这

个分组,以阻止攻击和失效的SCTP分组。

校验码由SCTP分组的发送方设置,以提供附

加的保护,用来避免由网络造成的数据差错。

接收端将丢弃包含无效校验码的SCTP分组。

7、通路管理

发送端的SCTP用户能够使用一组传送地址作为SCTP分组的目的地。

SCTP管理功能可以根据SCTP用户的指令和当前合格的目的地集合的可达性状态,为每个发送的SCTP分

组选择一个目的地传送地址。

当其他分组业务量不能完全表明可达性时,通路管理功能可

以通过心跳消息来监视到某个目的地地址的可达性,并当任何对端传送地址的可达性发生

变化时,向SCTP用户提供指示。

通路功能也用来在偶联建立时,向对端报告合格的本端

传送地址集合,并把从对端返回的传送地址报告给本地的SCTP用户。

在偶联建立时,为

每个SCTP端点定义一个首选通路,用来正常情况下发送SCTP分组。

在接收端,通路管理功能在处理SCTP分组前,用来验证入局的SCTP分组属于的偶联是否存在。

SCTP基本信令流程

1偶联的建立和发送流程

SCTP端点A启动建立偶联,并向端点B发送一个用户消息,随后端点B向A发送两个用户消息。

(假定这些消息没有捆绑和分段)。

信令流程如图1所示。

Endpoint0

 

塾LNTTACK

⑶COOKIEECHO

⑷COOKIEACK

 

⑼0A7A

SACK

(7)DATA

同DATA

倒SACK

图1偶联建立过程消息交互图

(1)端点A创建一个数据结构TCB(传输控制块)来描述即将发起的这个偶联(包含偶联的基本信息),然后向端点B发送INIT数据块。

INIT数据块中主要包括如下参数:

启动标签(InitiateTag):

对端验证标签,如设为Tag_A。

Tag_A是从1到4294967295

中的一个随机数。

输出流数量(OS:

本端点期望的最大出局流的数量。

输入流数量(MIS):

本端点允许入局流的最大数量。

(2)端点B收到INIT消息后,立即用INITACK数据块响应。

INITACK数据块中必须带有如下参数:

目的地IP地址:

设置成INIT数据块的起源IP地址。

启动标签(InitiateTag):

设置成Tag_B。

状态COOKIE(STATECOOKIE:

根据偶联的基本信息生成一个TCB不过这个TCB是

一个临时TCB这个TCB生成以后,将其中的必要信息(包含一个COOKIE生成的时间戳、COOKIE的生命期)和一个本端的密钥通过RFC2401描述的算法计算成一个32位的摘要

MAC(这种计算是不可逆的)。

必要信息和MAC组合成STATECOOKIE参数。

本端点传送地址。

最大入局流的数量。

最大出局流的数量。

(3)端点A收到INITACK后,首先停止INIT定时器离开COOKIE-WAIT状态,然后发送COOKIEECHO数据块,将收到INITACK数据块中的STATECOOKIE参数原封带回。

最后端点A启动COOKIE定时器并进入COOKIE-ECHOED状态。

(4)端点B收到COOKIEECHO^据块后,进行COOK旧佥证。

将STATECOOKIE中的TCB

部分和本端密钥根据RFC2401的MAC算法进行计算,得出的MAC和STATECOOKIE中携带

的MAC进行比较。

如果不同则丢弃这个消息;女口果相同,则取出TCB部分的时间戳,和当

前时间比较,看时间是否已经超过了COOKIE的生命期。

如果是,同样丢弃。

否则根据TCB

中的信息建立一个和端A的偶联。

端点B将状态迁入ESTABLISHED并发出COOKIEACK数据块。

端点B向SCTP用户发送SCOMMUNCIATIONI通知。

(5)端点A向端点B发送一个DATA数据块,启动T3-RTS定时器。

DATA数据块中必须带有如下参数:

TSNDATA数据块的初始TSN

流标识符(StreamIdentifier):

用户数据属于的流,假设流标识符为0。

流顺序码(StreamSequeneeNumber):

所在流中的用户数据的顺序号码。

该字段从0到

65535。

用户数据(UserData):

携带用户数据净荷。

(6)端点B收到DATA数据块后,返回SACK数据块。

SACK数据块中必须带有如下参数:

累积证实TSN标签(CumulativeTSNAck):

端点A的初始TSM

间隔块(GapAckBlock):

此值为0。

端点A收到SACK数据块后,停止T3-RTX定时器。

(7)端点B向端点A发送第一个DATA数据块。

DATA数据块中必须带有如下参数:

TSN端点B发出DATA数据块的初始TSM

流标识符(StreamIdentifier):

用户数据属于的流,假设流标识符为0。

流顺序码(StreamSequeneeNumber):

所在流中的用户数据的顺序号码。

假设流顺序

码为0。

用户数据(UserData):

携带用户数据净荷。

(8)端点B向端点A发送第二个DATA数据块。

DATA数据块中必须带有如下参数:

TSN端点B发出DATA数据块的初始TSN+1。

流标识符(StreamIdentifier):

用户数据属于的流,假设流标识符为0。

流顺序码(StreamSequeneeNumber):

所在流中的用户数据的顺序号码。

此时流顺序

码为1。

用户数据(UserData):

携带用户数据净荷。

(9)端点A收到DATA数据块后,返回SACK数据块。

SACK数据块中必须带有如下参数:

累积证实TSN标签(CumulativeTSNAck):

端点B的初始TSM

间隔块(GapAckBlock):

此值为0。

2偶联关闭流程

一个端点退出服务时,需要停止它的偶联。

偶联的停止使用两种流程:

偶联的中止流

程(非正常关闭)和偶联的正常关闭流程。

偶联的中止(非正常关闭)可以在任何未完成

期间进行,偶联的两端都舍弃数据并且不提交到对端。

此种方法不考虑数据的安全。

偶联

的中止步骤比较简单:

发起端点向对端端点发送ABORT数据块,发送的SCTP分组中必须填上对端端点的验证标签,而且不在ABORT数据块中捆绑任何DATA数据;接收端点收到

ABORT数据块后,进行验证标签的检查。

如果验证标签与本端验证标签相同,接收端点从记录上清除该偶联,并向SCTP用户报告偶联的停止。

偶联的正常关闭:

任何一个端点执行正常关闭程序时,偶联的两端将停止接受从其SCTP

用户发来的新数据,并且在发送或接收到SHUTDOW数据块时,把分组中的数据递交给SCTP用户。

偶联的关闭可以保证所有两端的未发送、发送未证实数据得到发送和证实后再终止

偶联。

(HSHUTDOWN

|2)SHUTDOWNACK

(3)SHUTDOWNCOMPLETE

 

图2偶联正常关闭消息交互图

偶联的正常关闭步骤如下:

⑴偶联关闭发起端点A的SCTP用户向SCTP发送请求SHUTDOW原因。

SCTP偶联从ESTABLISHED犬态迁入SHUTDOWN-PENDING态。

在这个状态,SCTP不接受SCTP用户在这个偶联上的任何数据发送请求。

同时等待端点A所有发送未证实的数据得到端点B的

证实。

当所有端点A发送未证实数据得到证实,则向端点B发送SHUTDOW数据块。

端点

A启动T2-shutdown定时器进入SHUTDOWN-SEN状态。

启动T2-shutdown定时器的目的是等待端点B发回的SHUTDOWN-ACK据块,如果定时器超时,则端点A必须重新发送SHUTDOW数据块。

(2)端点B收到SHUTDOW消息后,进入SHOUTDOWNRECEIVED状态,不再接收从SCTP用户发来的的新数据,并且检查数据块的累积TSNACK字段,验证所有未完成的DATA数据块已经被SHUTDOW的发送方接收。

当端点B所有未发送数据和发送未证实数据得到

发送和证实后,发送SHUTDOWNAC数据块并启动本端T2-SHUTDOW定时器,并且进入

SHUTDOWN-ACK-SENT态。

如果定时器超时了,端点B则重新发送SHUTDOWNCK数据块。

(3)端点A收到SHUTDOWACK消息后,停止T2-shutdown定时器,并且向端点B发送SHUTDOWNDMPLET数据块,并清除偶联的所有记录。

端点B收到SHUTDOWNOMPLETE^据块后,验证是否处于SHUTDOWN-ACK-SENT态。

如果不是处于该状态,则丢弃该数据块;如果端点处于SHUTDOWN-ACK-SEI状态,端点B则停止T2-shutdown定时器并清除偶联的所有记录,进入CLOSEDT态。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1