1、SCTP协议详解SCTP协议详解SCTP被视为一个传输层协议,它的上层为SCTP用户应用,下层作为分组网络。在SIGTRAN协议的应用中,SCTP上层用户是SCN信令的适配模块(如 M2UA M3UA,下层是IP网。SCTP相关术语SCTP功能*SCTP基本信令流程IbMSCTP相关术语1.传送地址传送地址由IP地址、传输层协议类型和传输层端口号定义。 由于SCTP在IP上传输,所以一个SCTP传送地址由一个IP地址加一个SCTP端口号决定。SCTP端口 号就是SCTP 用来识别同一地址上的用户,和 TCP端口号是一个概念。比如 IP地址10.105.28.92 和SCTP端口号1024标识了
2、一个传送地址,而 10.105.28.93 和1024则标识了另外一个传送 地址,同样,10.105.28.92 和端口号1023也标识了一 个不同的传送地址。2.主机和端点主机(HOST)主机配有一个或多个IP 地址,是一个典型的物理实体。端点(SCTP Endpoint)端点是SCTP的基本逻辑概念,是数据报的逻辑发送者和接收者,是一个典型的逻 辑实体。一个传送地址(IP地址+ SCTP端口号)唯一标识一个端点。一个端点可以由多个 传送地址进行定义,但对于同一个目的端点而言,这些传送地址中的 IP地址可以配 置成多个,但必须使用相同的 SCTP端口。3.偶联和流偶联(AssociATION
3、 偶联就是两个 SCTP端点通过SCTP协议规定的4步握手机制建 立起来的进行数据 传递的逻辑联系或者通道。 SCTP协议规定在任何时刻两个端点之间能且仅能建立一个偶联。 由于偶联由两个 端点的传送地址来定义,所以通过数据配置本地 IP地址、本地SCTP端口号、对端IP地址、对端SCTP端口号等四个参数,可以唯一标识一 个SCTP偶联。正因为如 此,在GTSOFTX3000中,偶联可以被看成是一条 M2UA链路或M3UA 链路。流(Stream)流是SCTP协议的一个特色术语。SCTP偶联中的流用来指示需要按顺序 递交到高 层协议的用户消息的序列,在同一个流中的消息需要按照其顺序进行递交。严格
4、 地说,“流”就是一个 SCTP偶联中,从一个端点到另一个端点的单向逻辑通道。一 个偶联是由多个单向的流组成的。各个流之间相对独立,使用流 ID进行标识,每个 流可以单独发送数据而不受其他流的影响。4.通路(Path )和首选通路(Primary Path )通路(Path)通路是一个端点将 SCTP分组发送到对端端点特定目的传送地址的路由。 如果分组 发送到对端端点不同的目的传送地址时,不需要配置单独的通路。首选通路(Primary Path )首选通路是在默认情况下,目的地址、源地址在 SCTP分组中发到对端端点的通路。如果可以使用多个目的地地址作为到一个端点的目的地址,则这个 SCTP端
5、点为多 归属。如果发出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 : 29
6、04 和 10.11.23.17 : 2904 )。图1 SCTP双归属此两个端点决定了一个偶联,该偶联包括 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可以自动切换到其他备用通路上, 优先切
7、换对端端点的传送地址,再次切换本端端点的传送地址。SCTP定义了心跳消息(Heart Beat )。当某条通路空闲时, 本端SCTP用户要求SCTP生 成相应的心跳消息并通过该通路发送到对端端点,而对端端点必须立即发 回对应的心跳确认消息。这种机制被用来精确测量回路时延 RTT( Round Trip TI me),而且可以随时监视偶联的可用情况和保持 SCTP偶联的激活状态。History comaiann:.ll祗.Ainpt-:A图2确定通路选择方式的数据配置5.TSN 和 SSN传输顺序号 TSN (Transmission Sequenee Number ) SCTP使用TSN机制实
8、现数据的 确认传输。一个偶联的一端为本端发送的每个数据 块顺序分配一个基于初始 TSN的32位顺序号,以便对端收到时进行确认。 TSN是基于偶联进行维护的。流顺序号 SSN ( Stream Sequenee Number)SCTP为本端在这个流中发送的每个数据块顺序分配一个 16位SSN以便保证流 内的顺序传递。 在偶联建立时,所有流中的SSN都是从0开始。当SSN到达65535后,贝U接下 来 的SSN为0。TSN和SSN的分配是相互独立的。6.拥塞窗口 CWND Congestion Window )SCTP也是一个滑动窗口协议, 拥塞窗口是针对每个目的地址维护的, 它会根据网 络状况调
9、节。当目的地址的发送未证实消息长度超过其 CWND寸,端点将停止向这 个地址发送数据。7.接收窗口 RWND Receive Window )RWNE用来描述一个偶联对端的接收缓冲区大小。 偶联建立过程中,双方会交换彼此的初始RWND RWND会根据数据发送、证实的情况即时地变化。 RWND勺大小限制了 SCTP可以发送的数据的大小。当 RWND等于0时,SCTP还可以发送一个数据报,以便通过证实消 息得知对方缓冲区的变化,直到达到 CWND勺限制。8.传输控制块 TCB (Transmission Control Block )TCB是一种内部数据结构,是一个 SCTP端点为它与其他端点之间
10、已经启动的每一 个偶联生成的。TCB包括端点的所有状态、操作信息,便于维护和管理相应的偶联。SCTP功能如图所示,SCTP的功能主要包括:偶联的建立和关闭、流内消息顺序递交、用户数据 分段、证实和避免拥塞、消息块绑定、分组的有效性和通路管理。流内咂库递交图SCTP功能示意图1、偶联的建立和关闭偶联的建立是由 SCTP用户(如M2UA M3UA等)发起请求来启动的。而且建立 过程相对于TCP连接而言比较复杂,是个“四次握手”过程,并用到了“ CO OKIE”的机制。 COOKIE是一个含有端点初始信息和加密信息的数据块, 通信的双方在关联建立时需要处理并交换,从而增加协议的安全性,防止拒绝服务和
11、伪装等潜在的 攻击。SCTP提供了对激活偶联的正常的关闭程序, 它必须根据SCTP用户的请求来执行, 当然SCTP也提供一种非正常(即中止)程序,中止程序的执行既可以根据 SCTP用户的请求来启动, 也可以由SCTP协议检查出差错来中止。SCTP不支持半打开状态(即一端可以在另一端结束后继续发送数 据)。无论是哪个端点执行了关闭程序,偶联的两端都应停止接受从 SCTP用户发来请求原 语。2、 流内消息顺序递交SCTP提供数据报的顺序传递, 顺序传递的数据报必须放在一个“流”中传递。 流是顺序传递的基石。 通过流,SCTP将数据的确认和传输的有序递交分成两种不同机制。 SCTP使用TSN机制实现
12、了数据的确认传输,使用流号和 SSN(流顺序号)则实现数据的有序递交。当SCTP收到数据的SSN连续的时候,SCTP就可以将数据向 SCTP用户递交, 而不用等到 数据的TSN号连续以后才向 SCTP用户递交。当一个流被闭塞时,期望的下一个连续的 SCTP用户消息可以从另外的流上进行递 交。 SCTP也提供非顺序递交的业务,接收到的用户消息可以使用这种方式立即递交到 SCTP用户,而不需要保证其接收顺序。3、 用户数据分段SCTP通过对传送通路上最大 PMTU( Path Maximum Tran smissiON Un it )的检测, 实现在SCTP层将超大用户数据分片打包,避免在 IP层
13、的多次分片、重组,可以减 少IP层的数据负担。在发送端,SCTP可以对大的用户数据报进行分片以确保 SCTP数据报传递到低层时适合通路 MTU( Maximum Tran smissio n Un it )。在接收端,SCTP将分片重组为完整的用户数据报,然后传递给 SCTP用户。4、 证实和避免拥塞证实和重传是协议保证传输可靠性的策略, SCTP也一样。证实机制是SCTP保证 传输可靠性的基石。避免拥塞沿袭了 TCP的窗口机制,进行合适的流量控制。 ?SCTP在将数据(数据分片或未分片的用户数据报) 发送给底层之前顺序地为 之分配一个发送顺序号(TSN。TSN和SSN(流顺序号)是相互独立的
14、, TSN用于保证传输的可靠性, SSN用于保证流内消息的顺序传递。TSN和SSN在功能上使可靠传递和顺序传递分开。 接收端证实所有收到的 TSNs,即使其中有些尚未收到。包重发功能负责 TSN的证实,还负责拥塞消除。5、 消息块绑定如果长度很短的用户数据被带上很大一个 SCTP消息头,其传递效率会很低,因此,SCTP将几个用户数据绑定在一个 SCTP报文里面传输,以提高带宽的利用率。SCTP分组由公共分组头和一个/多个信息块组成,信息块可以是用户数据,也 可以是SCTP控制信息。SCTP用户能够可选地使用捆绑功能,决定是否将多个用户数据报捆绑在一个 SCTP分组中。为提高效率,拥塞/重发时,
15、捆绑功能可能仍被执行,即使用户已经禁止捆绑。6、 分组的有效性分组的有效性是SCTP提供无差错传输的基石。SCTP分组的公共分组头包含一个 验证标签(VerificATIon Tag )和一个可选的32位校验码(Checksum)。验证标签的值由偶联 两端在偶联启动时选择。如果收到的分组中如果没有期望的验 证标签值,接收端将丢弃这个分组,以阻止攻击和失效的 SCTP分组。校验码由SCTP分组的发送方设置,以提供附加的保护,用来避免由网络造成的数 据差错。接收端将丢弃包含无效校验码的 SCTP分组。7、通路管理发送端的SCTP用户能够使用一组传送地址作为 SCTP分组的目的地。SCTP管理 功能
16、 可以根据SCTP用户的指令和当前合格的目的地集合的可达性状态, 为每个发 送的SCTP分组选择一个目的地传送地址。当其他分组业务量不能完全表明可达性 时,通路管理功能可以通过心跳消息来监视到某个目的地地址的可达性,并当任何 对端传送地址的可达性发生变化时,向SCTP用户提供指示。通路功能也用来在偶 联建立时,向对端报告合格的本端传送地址集合,并把从对端返回的传送地址报告 给本地的SCTP用户。 在偶联建立时,为每个SCTP端点定义一个首选通路,用来正常情况下发送 SCTP分组。在接收端,通路管理功能在处理 SCTP分组前,用来验证入局的SCTP分组属于的 偶联 是否存在。SCTP基本信令流程
17、1偶联的建立和发送流程SCTP端点A启动建立偶联,并向端点B发送一个用户消息,随后端点B向A发送 两 个用户消息。(假定这些消息没有捆绑和分段)。信令流程如图1所示。Endpoint 0塾 LNTT ACK COOKIE ECHO COOKIE ACK 0A7ASACK(7) DATA同 DATA倒 SACK图1偶联建立过程消息交互图(1)端点A创建一个数据结构 TCB(传输控制块)来描述即将发起的这个偶联(包 含 偶联的基本信息),然后向端点B发送INIT数据块。INIT数据块中主要包 括如下参数:启动标签(Initiate Tag):对端验证标签,如设为Tag_A。Tag_A是从1到429
18、4967295中的一个随机数。输出流数量(OS:本端点期望的最大出局流的数量。输入流数量(MIS):本端点允许入局流的最大数量。(2)端点B收到INIT消息后,立即用INIT ACK数据块响应。INIT ACK数据块中必 须带有如下参数:目的地IP地址:设置成INIT数据块的起源IP地址。启动标签(Initiate Tag ):设置成Tag_B。状态COOKIE( STATE COOKIE:根据偶联的基本信息生成一个 TCB不 过这个TCB是一个临时TCB这个TCB生成以后,将其中的必要信息(包含 一个COOKIE生成的时间戳、 COOKIE的生命期)和一个本端的密钥通过 RFC2401描述的
19、算法计算成一个 32位的摘要MAC(这种计算是不可逆的)。 必要信息和 MAC组合成STATE COOKIE参数。本端点传送地址。最大入局流的数量。最大出局流的数量。(3)端点A收到INIT ACK后,首先停止INIT定时器 离开COOKIE-WAIT状态,然 后发送COOKIE ECHO数据块,将收到INIT ACK数据块中的STATE COOKIE参数原封带回。 最后端点A启动COOKIE定时器并进入COOKIE-ECHOED状态。(4)端点B收到COOKIEECHO据块后,进行 COOK旧佥证。将 STATECOOKIE中的TCB部分和本端密钥根据 RFC2401的MAC算法进行计算,得
20、出的 MAC和 STATE COOKIE中携带的MAC进行比较。如果不同则丢弃这个消息; 女口果相同,则取出TCB部分的时间戳,和当前时间比较,看时间是否已经超过 了 COOKIE的生命期。如果是,同样丢弃。否则根据TCB中的信息建立一个 和端A的偶联。端点B将状态迁入 ESTABLISHED并发出COOKIEACK数 据块。端点 B向SCTP用户发送 SCOMMUNCIATION I通知。(5)端点A向端点B发送一个DATA数据块,启动T3-RTS定时器。DATA数据 块中必 须带有如下参数:TSN DATA数据块的初始 TSN流标识符(Stream Identifier ):用户数据属于的
21、流,假设流标识符为 0。流顺序码(Stream Sequenee Number):所在流中的用户数据的顺序号码。 该字段从0到65535。用户数据(User Data ):携带用户数据净荷。(6)端点B收到DATA数据块后,返回SACK数据块。SACK数据块中必须带有 如下参 数:累积证实TSN标签(Cumulative TSN Ack ):端点A的初始TSM间隔块(Gap Ack Block):此值为0。 端点A收到SACK数据块后,停止 T3-RTX定时 器。(7)端点B向端点A发送第一个DATA数据块。DATA数据块中必须带有如下参 数:TSN端点B发出DATA数据块的初始TSM流标识符
22、(Stream Identifier ):用户数据属于的流,假设流标识符为 0。流顺序码(Stream Sequenee Number):所在流中的用户数据的顺序号码。 假设流顺序码为0。用户数据(User Data):携带用户数据净荷。(8)端点B向端点A发送第二个DATA数据块。DATA数据块中必须带有如下参 数:TSN端点B发出DATA数据块的初始TSN+ 1。流标识符(Stream Identifier ):用户数据属于的流,假设流标识符为 0。流顺序码(Stream Sequenee Number):所在流中的用户数据的顺序号码。 此时流顺序码为1。用户数据(User Data ):
23、携带用户数据净荷。(9)端点A收到DATA数据块后,返回SACK数据块。SACK数据块中必须带有 如下参 数:累积证实TSN标签(Cumulative TSN Ack ):端点B的初始TSM间隔块(Gap Ack Block ):此值为0。2偶联关闭流程一个端点退出服务时,需要停止它的偶联。偶联的停止使用两种流程:偶联的中止 流程(非正常关闭)和偶联的正常关闭流程。 偶联的中止(非正常关闭)可以在任何未完成期间进行,偶联的两端都舍弃数据并 且不提交到对端。此种方法不考虑数据的安全。偶联的中止步骤比较简单:发起端 点向对端端点发送 ABORT数据块,发送的SCTP分组中必须 填上对端端点的验证
24、标签,而且不在 ABORT数据块中捆绑任何 DATA数据;接收端点收到ABORT数据块后,进行验证标签的检查。如果验证标签与本端验证标签相同,接收端点从 记录上清除该偶联,并向 SCTP用户报告偶联的停止。偶联的正常关闭:任何一个端点执行正常关闭程序时, 偶联的两端将停止接受从其 SCTP用户发来的新数据,并且在发送或接收到 SHUTDOW数据块时,把分组中的数据递交给SCTP 用户。偶联的关闭可以保证所有两端的未发送、发送未证实数 据得到发送和证实后再终止偶联。(H SHUTDOWN|2) SHUTDOWN ACK(3) SHUTDOWN COM PLETE图2偶联正常关闭消息交互图偶联的正
25、常关闭步骤如下: 偶联关闭发起端点 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
26、数 据块。(2)端点B收到SHUTDOW消息后,进入 SHOUTDOWNRECEIVED状态, 不再接收从 SCTP用户发来的的新数据,并且检查数据块的累积 TSNACK字段,验证所有未完成的 DATA 数据块已经被SHUTDOW的发送方接收。当 端点B所有未发送数据和发送未证实数据得到发送和证实后, 发送SHUTDOWN AC数据块并启动本端 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