SCTP协议详情详解.docx

上传人:b****8 文档编号:13017776 上传时间:2023-06-10 格式:DOCX 页数:13 大小:103.55KB
下载 相关 举报
SCTP协议详情详解.docx_第1页
第1页 / 共13页
SCTP协议详情详解.docx_第2页
第2页 / 共13页
SCTP协议详情详解.docx_第3页
第3页 / 共13页
SCTP协议详情详解.docx_第4页
第4页 / 共13页
SCTP协议详情详解.docx_第5页
第5页 / 共13页
SCTP协议详情详解.docx_第6页
第6页 / 共13页
SCTP协议详情详解.docx_第7页
第7页 / 共13页
SCTP协议详情详解.docx_第8页
第8页 / 共13页
SCTP协议详情详解.docx_第9页
第9页 / 共13页
SCTP协议详情详解.docx_第10页
第10页 / 共13页
SCTP协议详情详解.docx_第11页
第11页 / 共13页
SCTP协议详情详解.docx_第12页
第12页 / 共13页
SCTP协议详情详解.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SCTP协议详情详解.docx

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

SCTP协议详情详解.docx

SCTP协议详情详解

SCTP协议详解

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

在SIGTRAN协议的应用中,SCTP上层用户是SCN信令的适配模块(如M2UA、M3UA),下层是IP网。

∙SCTP相关术语

∙SCTP功能

∙SCTP基本信令流程

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条通路(Path0、Path1、Path2和Path3)。

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

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

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)。

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

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

当首选通路出现故障后,SCTP可以自动切换到其他备用通路上,优先切换对端端点的传送地址,再次切换本端端点的传送地址。

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

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

这种机制被用来精确测量回路时延RTT(RoundTripTIme),而且可以随时监视偶联的可用情况和保持SCTP偶联的激活状态。

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

  5.TSN和SSN

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

一个偶联的一端为本端发送的每个数据块顺序分配一个基于初始TSN的32位顺序号,以便对端收到时进行确认。

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

  流顺序号SSN(StreamSequenceNumber)

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

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

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

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

  6.拥塞窗口CWND(CongestionWindow)

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

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

  7.接收窗口RWND(ReceiveWindow)

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

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

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

RWND的大小限制了SCTP可以发送的数据的大小。

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

  8.传输控制块TCB(TransmissionControlBlock)

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

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

SCTP功能

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

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

  图SCTP功能示意图

  1、偶联的建立和关闭

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

而且建立过程相对于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所示。

  图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数据块后,进行COOKIE验证。

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

如果不同则丢弃这个消息;如果相同,则取出TCB部分的时间戳,和当前时间比较,看时间是否已经超过了COOKIE的生命期。

如果是,同样丢弃。

否则根据TCB中的信息建立一个和端A的偶联。

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

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

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

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

  TSN:

DATA数据块的初始TSN。

  流标识符(StreamIdentifier):

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

  流顺序码(StreamSequenceNumber):

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

该字段从0到65535。

  用户数据(UserData):

携带用户数据净荷。

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

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

  累积证实TSN标签(CumulativeTSNAck):

端点A的初始TSN。

  间隔块(GapAckBlock):

此值为0。

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

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

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

  TSN:

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

  流标识符(StreamIdentifier):

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

  流顺序码(StreamSequenceNumber):

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

假设流顺序码为0。

  用户数据(UserData):

携带用户数据净荷。

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

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

  TSN:

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

  流标识符(StreamIdentifier):

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

  流顺序码(StreamSequenceNumber):

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

此时流顺序码为1。

  用户数据(UserData):

携带用户数据净荷。

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

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

  累积证实TSN标签(CumulativeTSNAck):

端点B的初始TSN。

  间隔块(GapAckBlock):

此值为0。

  2偶联关闭流程

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

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

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

偶联的中止(非正常关闭)可以在任何未完成期间进行,偶联的两端都舍弃数据并且不提交到对端。

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

偶联的中止步骤比较简单:

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

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

  偶联的正常关闭:

任何一个端点执行正常关闭程序时,偶联的两端将停止接受从其SCTP用户发来的新数据,并且在发送或接收到SHUTDOWN数据块时,把分组中的数据递交给SCTP用户。

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

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

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

  

(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用户发来的的新数据,并且检查数据块的累积TSNACK字段,验证所有未完成的DATA数据块已经被SHUTDOWN的发送方接收。

当端点B所有未发送数据和发送未证实数据得到发送和证实后,发送SHUTDOWNACK数据块并启动本端T2-SHUTDOWN定时器,并且进入SHUTDOWN-ACK-SENT状态。

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

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

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

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

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2