收藏 分享(赏)

SCTP协议的研究与应用.doc

上传人:dreamzhangning 文档编号:2287781 上传时间:2018-09-09 格式:DOC 页数:7 大小:45.50KB
下载 相关 举报
SCTP协议的研究与应用.doc_第1页
第1页 / 共7页
SCTP协议的研究与应用.doc_第2页
第2页 / 共7页
SCTP协议的研究与应用.doc_第3页
第3页 / 共7页
SCTP协议的研究与应用.doc_第4页
第4页 / 共7页
SCTP协议的研究与应用.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、SCTP 流控制传输协议1.引言过去的20年内,作为一种可靠的数据传输方式,TCP 提供了许多应用服务,但随着 IP网的多业务化,尤其是 VoIP 的发展,TCP 出现了很多局限性,例如对于 VoIP 信令及异步基于事务应用的处理。因此,IEFT 的信令传输工作组(SIGTRAN)提出了一种面向多媒体通信的流控制传输协议(SCTP),用于在 IP 网络上传输 PSTN 信令消息,即通常所说的 SS7 over IP。目前,IEFT将 SCTP 传输层协议作为主要研究目的,与 TCP 和 UDP 共筑于 IP 层之上。同 TCP 一样,SCTP 提供面向连接的、点到点的可靠传输,它继承了 TCP

2、 强大的拥塞控制、数据包丢失发现等功能,任何在 TCP 上运行的应用都可被移至 SCTP 上运行。不同于 TCP 的是,SCTP 提供了许多对于信令传输很重要的功能,同时,对于其他一些对性能和可靠性有额外需要的应用,它能提供传输优势来满足这些需要。SCTP 和 TCP最大的区别在于 SCTP 对多宿( multihoming)和部分有序(partial ordering)的支持。SCTP 的多宿使得每个端点可被多个传输地址访问到,选择不同传输地址会导致两个端点间不同的数据路径,理想情况是在每一条路径都建立一条独立的拥塞控制。所以,SCTP的多主机拥塞控制仍需改进。2.STCP 协议简介串流控制

3、传输协议(Stream Control Transmission Protocol 或简写 SCTP)是在 2000年由 IETF 的 SIGTRAN 工作组定义的一个传输层协议。 RFC 4960 详细地定义了 SCTP,介绍性的文档是 RFC 3286。作为一个传输层协议,SCTP 可以理解为和 TCP 及 UDP 相类似的。它提供的服务有点像 TCP,又同时将 UDP 的一些优点相结合。是一种提供了可靠、高效、有序的数据传输协议。相比之下 TCP 是面向字节的,而 SCTP 是针对成帧的消息。SCTP 主要的贡献是对多重联外线路的支持,一个端点可以由多于一个 IP 地址 组成,使得传输可

4、在主机间或网卡间做到透明的网络容错备援。SCTP 最初是被设计用于在 IP 上传输电话协议(SS7) ,把 SS7 信令网络的一些可靠特性引入 IP。IETF 的这方面的工作称为信令传输 SIGTRAN。3.SCTP 的特点SCTP 处于 SCTP 用户应用层与 IP 网络层之间,它运用“ 关联”(association)这个术语定义交换信息的两个对等 SCTP 用户间的协议状态。 SCTP 也是面向连接的,但在概念上,SCTP“关联”比 TCP 连接更为广泛: TCP 的连接只有一个源地址和一个目的地址,SCTP 提供一种方式使得每个 SCTP 端点能为另一个对等端点提供一组传输地址,即传输

5、地址= 一组 IP 地址 +端口号。在继承 TCP 特点的基础上,SCTP 提供了一些额外的功能:1. 在多个“ 流” (stream)中实现用户数据的有序发送“流”在 TCP 中指一系列的字节,而在 SCTP 中是指发送到上层协议的一定系列的用户消息,这些消息的顺序与流内其他消息相关。SCTP 用户在建立关联时,可以规定关联支持的流的数目。这个数目是与源端商定的,用户消息与流数目关联。在链路中,SCTP 为每个送到对等端的消息分配一个流序号。在接收端,SCTP 确保在给定流中消息按顺序发送。同时,当一个流正在等待下一个非顺序的用户消息时,其他流的发送会继续。2. 根据已发现的路径 MTU(最

6、大传输单元)大小进行用户数据分片为了确保发送到下层的 SCTP 数据包与路径 MTU 一致, SCTP 对用户消息分片。在接收端,分片被重组后传给上层 SCTP 用户。3. 选择性确认(SACK)和拥塞控制选择性确认用于数据包丢失发现,TCP 中确认序号返回的是发送方已成功收到数据字节序号(不包含确认序号所指的字节) ,而 SCTP 反馈给发送端的是丢失的并且要求重传的消息序号。SCTP 运用了 TCP 中的拥塞控制技术,包括慢启动,拥塞避免和快速重传。因此,当和 TCP 应用共存时,SCTP 应用可接收属于 SCTP 的网络资源部分。4. 块(chunk)绑定即多个用户消息可选择地绑定到一个

7、 SCTP 包上,通过将消息放到一个或多个 SCTP数据结构“块” 中,SCTP 保留了应用程序的消息框架边界。不同类型的块可绑定到一个SCTP 包中,但是控制块必须放在任何一个数据块之前。5. 路径管理SCTP 路径管理功能主要负责从远端提供的一组传输地址中选择目的传输地址,它根据两个方面来选择目的地址:SCTP 用户指示和当前可达的合格目的地。当其他流控制不能提供可达性信息时,路径管理功能定时地扫描链路的可达性,并向 SCTP 报告远端传输地址所发生的变化。SCTP 路径管理功能模块同时还负责在建立链路时,向远端报告可用的本地地址,并把远端返回的传输地址告诉 SCTP 用户。6. 支持多宿

8、当 SCTP 传送数据包给目的 IP 地址时,如果此 IP 地址是不可达的,SCTP 可以将消息重路由给一个交替的 IP 地址。这样,在关联的一端甚至两端,可容忍网络级错误。7. 防范拒绝服务(DoS)攻击DoS 的攻击方式有很多种,最基本的 DoS 攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。SYN Flooding 攻击是 DoS 攻击的一种实例,是目前效果最好的一种黑客攻击方式。为了抵抗 SYN Flooding 对目标主机攻击,SCTP 在关联初始化阶段实施了一种安全的 “Cookie”机制。8. 支持多种传输模式严格有序传输(像 TCP) ,部分

9、有序传输(像 per-stream)和无序传输(像 UDP) 。4.SCTP 包结构SCTP 包的结构,一个数据包首部可跟一个或多个可变长的块。块采用“类型长度值”(TLV)的格式。源端口、目的端口、校验码的意义同 TCP 中的意义相似。确认标签保存着在 SCTP 握手中第一次交换的初始标签的值。在关联中,任何 SCTP 数据包若不包含这样一个标签,当到达时会被接收端丢弃。在每个块中,TLV 包括块类型、传输处理标记、块长度。不同的块类型可用来传输控制信息或数据。传输序列号(TSN)和流序列号(SSN )是两种不同的序列号, TSN 保证整个关联的可靠性,而 SSN 保证整个流的有序性,这样,

10、在传输中,将数据的可靠性与有序性独立分开。5.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. 主机和端点主

11、机(HoST) 主机配有一个或多个 IP 地址,是一个典型的物理实体。端点(SCTP Endpoint)端点是 SCTP 的基本逻辑概念,是数据报的逻辑发送者和接收者,是一个典型的逻 辑实体。一个传送地址(IP 地址SCTP 端口号)唯一标识一个端点。一个端点可以由多个 传送地址进行定义,但对于同一个目的端点而言,这些传送地址中的 IP 地址可以配 置成多个,但必须使用相同的 SCTP 端口。3. 偶联和流偶联(AssociATI ON) 偶联就是两个 SCTP 端点通过 SCTP 协议规定的4 步握手机制建立起来的进行数据 传递的逻辑联系或者通道。 SCTP 协议规定在任何时刻两个端点之间能

12、且仅能建立一个偶联。由于偶联由两个 端点的传送地址来定义,所以通过数据配置本地 IP 地址、本地 SCTP 端口号、对端 IP 地址、对端 SCTP 端口号等四个参数,可以唯一标识一个 SCTP 偶联。正因为如 此,在 GTSOFTX3000 中,偶联可以被看成是一条M2UA 链路或 M3UA 链路。流(Stream) 流是 SCTP 协议的一个特色术语。SCTP 偶联中的流用来指示需要按顺序递交到高 层协议的用户消息的序列,在同一个流中的消息需要按照其顺序进行递交。严格地 说, “流” 就是一个 SCTP 偶联中,从一个端点到另一个端点的单向逻辑通道。一 个偶联是由多个单向的流组成的。各个流

13、之间相对独立,使用流 ID 进行标识,每个 流可以单独发送数据而不受其他流的影响。4. 通路(Path)和首选通路( Primary Path)通路(Path) 通路是一个端点将 SCTP 分组发送到对端端点特定目的传送地址的路由。如果分组 发送到对端端点不同的目的传送地址时,不需要配置单独的通路。首选通路(Primary Path) 首选通路是在默认情况下,目的地址、源地址在 SCTP 分组中发到对端端点的通路。如果可以使用多个目的地地址作为到一个端点的目的地址,则这个 SCTP 端点为多 归属。如果发出 SCTP 分组的端点属于多归属节点时,如果定义了目的地址、源地 址,能够更好控制响应数

14、据块返回的通路和数据包被发送的接口。 一个 SCTP 偶联的两个SCTP 端点都可以配置多个 IP 地址,这样一个偶联的两个 端点之间具有多条通路,这就是 SCTP 偶联的多地址性。SCTP 偶联的多地址性是 SCTP 与 TCP 最大的不同。6.SCTP 功能SCTP 的功能主要包括:偶联的建立和关闭、流内消息顺序递交、用户数据分段、证实和避免拥塞、消息块绑定、分组的有效性和通路管理。1、偶联的建立和关闭偶联的建立是由 SCTP 用户(如 M2UA、M3UA 等)发起请求来启动的。而且建立 过程相对于 TCP 连接而言比较复杂,是个“四次握手” 过程,并用到了“COOKIE” 的机制。COO

15、KIE 是一个含有端点初始信息和加密信息的数据块,通信的双方在关 联建立时需要处理并交换,从而增加协议的安全性,防止拒绝服务和伪装等潜在的 攻击。 SCTP 提供了对激活偶联的正常的关闭程序,它必须根据 SCTP 用户的请求来执行, 当然 SCTP 也提供一种非正常(即中止)程序,中止程序的执行既可以根据 SCTP 用户的请求来启动,也可以由 SCTP 协议检查出差错来中止。 SCTP 不支持半打开状态(即一端可以在另一端结束后继续发送数据) 。无论是哪 个端点执行了关闭程序,偶联的两端都应停止接受从SCTP 用户发来请求原语。2、流内消息顺序递交SCTP 提供数据报的顺序传递,顺序传递的数据

16、报必须放在一个“流” 中传递。流 是顺序传递的基石。 通过流,SCTP 将数据的确认和传输的有序递交分成两种不同机制。SCTP 使用 TSN 机制实现了数据的确认传输,使用流号和 SSN(流顺序号)则实现数据的有序递交。 当 SCTP 收到数据的 SSN 连续的时候,SCTP 就可以将数据向 SCTP 用户递交, 而不用等到数据的 TSN 号连续以后才向 SCTP 用户递交。当一个流被闭塞时,期望的下一个连续的 SCTP 用户消息可以从另外的流上进行递 交。 SCTP 也提供非顺序递交的业务,接收到的用户消息可以使用这种方式立即递交到 SCTP 用户,而不需要保证其接收顺序。3、用户数据分段S

17、CTP 通过对传送通路上最大 PMTU(Path Maximum TransmissiON Unit)的检测, 实现在 SCTP 层将超大用户数据分片打包,避免在 IP 层的多次分片、重组,可以减 少 IP 层的数据负担。 在发送端,SCTP 可以对大的用户数据报进行分片以确保 SCTP 数据报传递到 低层时适合通路 MTU(Maximum Transmission Unit ) 。在接收端,SCTP 将分片重组为完整的用户数据报,然后传递给 SCTP 用户。4、 证实和避免拥塞证实和重传是协议保证传输可靠性的策略,SCTP 也一样。证实机制是 SCTP 保证 传输可靠性的基石。避免拥塞沿袭了

18、 TCP 的窗口机制,进行合适的流量控制。 ?SCTP 在将数据(数据分片或未分片的用户数据报)发送给底层之前顺序地为 之分配一个发送顺序号(TSN) 。TSN 和 SSN(流顺序号)是相互独立的, TSN 用于保证传输的可靠性, SSN 用于保证流内消息的顺序传递。TSN 和 SSN 在功能上使可靠传递和顺序传递分开。接收端证实所有收到的 TSNs,即使其中有些尚未收到。包重发功能负责 TSN 的证实,还负责拥塞消除。5、 消息块绑定如果长度很短的用户数据被带上很大一个 SCTP 消息头,其传递效率会很低,因此, SCTP 将几个用户数据绑定在一个 SCTP 报文里面传输,以提高带宽的利用率

19、。SCTP 分组由公共分组头和一个 /多个信息块组成,信息块可以是用户数据,也 可以是 SCTP 控制信息。SCTP 用户能够可选地使用捆绑功能,决定是否将多个用户数据报捆绑在一个 SCTP 分组中。为提高效率,拥塞/重发时,捆绑功能可能仍被执行,即使用户已经禁止捆绑。6 、分组的有效性分组的有效性是 SCTP 提供无差错传输的基石。SCTP 分组的公共分组头包含一个 验证标签(VerificATIon Tag)和一个可选的32 位校验码(Checksum) 。 验证标签的值由偶联两端在偶联启动时选择。如果收到的分组中如果没有期望的验 证标签值,接收端将丢弃这个分组,以阻止攻击和失效的 SCT

20、P 分组。 校验码由 SCTP 分组的发送方设置,以提供附加的保护,用来避免由网络造成的数 据差错。接收端将丢弃包含无效校验码的SCTP 分组。7、 通路管理发送端的 SCTP 用户能够使用一组传送地址作为 SCTP 分组的目的地。SCTP 管理 功能可以根据 SCTP 用户的指令和当前合格的目的地集合的可达性状态,为每个发 送的SCTP 分组选择一个目的地传送地址。当其他分组业务量不能完全表明可达性 时,通路管理功能可以通过心跳消息来监视到某个目的地地址的可达性,并当任何 对端传送地址的可达性发生变化时,向 SCTP 用户提供指示。通路功能也用来在偶 联建立时,向对端报告合格的本端传送地址集

21、合,并把从对端返回的传送地址报告 给本地的 SCTP 用户。 在偶联建立时,为每个 SCTP 端点定义一个首选通路,用来正常情况下发送 SCTP 分组。在接收端,通路管理功能在处理 SCTP 分组前,用来验证入局的 SCTP 分组属于的 偶联是否存在。7.SCTP 数据传输7.1 SCTP 四路握手及抵抗 SYN Flooding 攻击的原理一个 SCTP 关联定义为: 主机 A 的一组 IP 地址+ 主机 A 的端口+ 主机 B 的一组 IP地址+主机 B 的端口。 因此,每一端对应组中的任何一个 IP 地址都可作为相应的源/目的地址来标示本次关联,通过四路握手,两端 SCTP 主机交换通信

22、状态。SYN Flooding 利用了 TCP/IP 的固有漏洞,面向连接的 TCP 三次握手是 SYN Flooding存在的基础。SYN Flooding 攻击的原理是:恶意的攻击者大量向服务器发送 SYN 报文,服务器在发出 SYN+ACK 应答报文后无法收到客户端的 ACK 报文(第三次握手无法完成) ,服务器端将为维护一个非常大的半连接列表而消耗非常多的 CPU 时间和内存资源,还要不断对这个列表中的 IP 进行 SYN+ACK 的重试。服务器端将忙于处理攻击者伪造的 TCP 连接请求而无暇理睬客户的正常请求,此时从正常客户的角度看来,服务器失去响应。而在一次 SCTP 四路握手中,

23、 INIT 消息的接收端不必保存任何状态信息或者分配任何资源,这样就可防范 SYN Flooding 等 DoS 攻击。它在发送 INIT-ACK 消息时,采用了一种机制“状态 Cookie”,该 Cookie 具有发送端要建立自己状态所需的全部信息。SCTP 产生一个状态 Cookie 的过程如下:1. 使用收到的 INIT 和发出的 INIT- ACK 块中的信息创建一个关联的 TCB(传输控制块) 。2. 在 TCB 中,将当前日期设为创建日期,将协议参数“有效 Cookie 时间”设为生存期间。3. 根据 TCB,收集重建 TCB 所需的最小信息子集,将该子集和密钥产生一个MAC(信息

24、认证编码) 。4. 结合上述最小信息子集和 MAC 产生状态 Cookie。5. 在发送完 INIT ACK(包含状态 Cookie 参数)后,发送方必须删除 TCB 以及任何与新关联有关的本地资源。INIT 和 INIT-ACK 都必须包含建立初始状态所需的参数:一组 IP 地址,保证可靠传输的初始 TSN,每个被接收的 SCTP 包中必须含有的初始标签,每一端请求发出的流数目和每一端能支持接收的流数目。交换完这些消息之后,INIT 的发送端以 COOKIE-ECHO消息的方式发送回状态 Cookie。接收端根据所接收到的 COOKIE-ECHO 中的状态Cookie,完整地重建自己的状态,

25、并回送 COOKIE- ACK 来确认关联已建立。COOKIE-ECHO 和 COOKIE-ACK 都可将用户数据消息绑定到各自的包中。由此可见,采用以上这种方式,即使接收再多的 INIT 消息, 接收端也没有任何资源的消耗:它既不分配任何系统资源,也不保存此次新关联的状态,它只是把相应重建状态所用的状态 Cookie 作为参数,包含在每一个回送的 INIT-ACK 消息中,最后该状态 Cookie会被 COOKIE-ECHO 消息发送回来。7.2 SCTP 数据交换在两个 SCTP 主机间的正常数据交换。SCTP 主机发送 SACK 块,用来确认每一个收到的 SCTP 包。因为 SACK 能

26、完整地描述接收端的状态,因此,依据 SACK,发送端能做出重传判决。SCTP 支持类似于 TCP 中的快速重传和 time-out 重传算法。对于数据包丢失发现,SCTP 和 TCP 采用截然不同的机制:当 TCP 发现接收序号有缺口时,会等到该缺口被填上后,才发送序列号高于丢失数据包的数据。然而,SCTP 即使发现接收序号有缺口或顺序错乱,仍会发送后面的数据。7.3 SCTP 关闭关联作为面向连接的传输协议,SCTP 也运用三路握手来关闭一个关联,但与 TCP 有一点不同:一个 TCP 终端在“关联关闭 ”的过程中能够保持连接开启,并从对端接收新的数据,而 SCTP 不支持 TCP 的这种“

27、 半关闭 ”状态。 1. 主机 A 发出“ 关闭”(SHUTDOWN)块来终止与主机 B 的关联,主机 A 进入“SHUTDOWN- PENDING”状态,对应的动作是:不再接受上层应用的数据,只发送队列中剩余的数据,进入“SHUTDOWN-SENT” 状态。2. 主机 B 一旦接收到“ 关闭” 块,就进入“SHUTDOWN-RECEIVED”状态,同主机 A 一样,不再接受上层应用的数据,只发送队列中剩余的数据。3. 主机 A 再次发送“ 关闭” 块,通知主机 B 所发送的剩余数据已到达,并且重申了关联正在关闭。4. 当第二次收到“ 关闭”块时,主机 B 发送“确认关闭”块。5. 主机 A

28、随后发送“ 关闭结束”块,完成本次关联的关闭。8.SCTP 在工业以太网通信技术中的应用随着自动化领域的信息化不断加深,工业以太网应用的广度和深度不断扩展。社会对关键基础设施的依赖不断加强,工业以太网在这些领域发挥越来越重要的作用。自动控制的应用向高精尖发展,工业控制方面的要求越来越高,在某些高危领域的应用甚至是极端苛刻的。而另一方面,工业以太网通信所处的环境将越来越多样化、复杂化,受干扰和入侵攻击的概率加大。因此,工业以太网通信要求有足够的高实时性、高可靠性、抗干扰、抗网络故障、抗截取、抗伪造性能,保证高质量的控制数据通信。如前所述,现有的工业以太网方案还面临着巨大的信息安全风险,下一代通用

29、传输协议 SCTP 提供了一些 UDP 和 TCP 所不具备的新特性。用 SCTP 替换现有工业以太网协议中 UDP 和 TCP,构建基于 SCTP 的工业以太网通信将更加有优势,表现在以下几个方面:(1)利用 SCTP 偶联的多宿主特性,在工业以太网的端点建立网络级冗余方案,还可以采取不同的媒体通信手段,大幅度提高网络的可靠性。(2)多流控制能有效地减少通信延迟,这样控制数据能够通过单独的流通道来传递,其他非控制数据流走其他的多个流通道,这样控制数据不会被其他通信阻塞,从而获得更好的实时性能。另外,接收端发现发生数据丢失时,通过 SACK 机制 SCTP 直接给发送端反馈要求重传的消息序号,

30、并且支持无序递交,有利于快速重传。(3)增加的安全机制有助于工业以太网抵御 synflood 和匿名攻击。基于 SCTP 的工业以太网通信是可行性的,因为:首先,SCTP 和 TCP,UDP 一样是基于 IP 的通用传输层协议,而且更加先进。以太网解决方案 SCTP 协议已经成为 IETF 的正式标准,已经有部分计算机操作系统提供 SCTP的支持,在电信行业,NGN 中关键的 Sigtran 协议栈正是基于 SCTP 传输层协议的,这些足以证明 SCTP 协议本身的成熟性。其次,具体到工业以太网而言,涉及到的端设备包括控制器的以太网模块、工控机板卡、OPC 软件、HMI 软件等,只需要对它们进

31、行改造,将原本基于 UDP 和 TCP 的通信协议和服务应用实现转到基于 SCTP 上来即可。因为网络的通信对于控制网络的应用而言是透明的,因此,这种升级和改变带来了通信服务质量的提升,而对于控制业务本身没有任何影响。最后,由于基于 SCTP 的工业以太网只是对原有工业以太网协议的变化,因此,不会带来巨大成本压力。9.总结SCTP 是为传输信令业务流而开发的,但它所具有的一些优于 TCP 的先进协议机制,如选择性确认、快速重传、无序递交等,使它又满足高性能传输的需求,这会给它带来更为宽广的应用需求。目前,已有各种操作系统支持 SCTP, 如Linux、AIX 、Solaris 、Windows

32、 、FressBSD。在不同协议实现间的互操作性测试的成功,揭示着 SCTP 正走向商业产品之路。IEFT 正在致力于 SCTP 进一步的修改,使其更能满足下一代应用的需求,例如支持IPv6 地址,解决对端对于 IPv6 的 site-local、link-local 地址无连通性的问题,以及在已存在的关联中动态地增加或删除 IP 地址而无需重启该关联。SCTP 作为新一代基于 IP 层的通用传输协议,更能满足工业以太网通信的需要。但是,还应该认识到将 SCTP 应用到工业以太网通信中并不能解决目前面临的所有信息安全问题,其他的一些针对 SCTP 的建议,诸如在 SCTP 通信中应用 ESP,IPSEC 等技术手段保证通信数据的机密性和完整性等,还需针对工业以太网的实际情况做进一步的分析和研究工作。尽管如此,随着研究的深入和业界的探索,SCTP 一定会应用于工业以太网络,更好地提升自动化的信息安全。

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报