现在的位置: 首页 > 综合 > 正文

软交换总结之一-开篇

2013年01月17日 ⁄ 综合 ⁄ 共 5065字 ⁄ 字号 评论关闭

1:SIGTRAN简介

  SIGTRAN协议是IETF的信令传送工作组SIGTRAN所建立的一套在IP网络上传送PSTN信令的传输控制协议。SIGTRAN定义了一个比较完善的SIGTRAN协议堆栈,分为IP协议、信令传输、信令传输适配和信令应用等四层。每层所含内容如下:
  ·IP协议层:IP
  ·信令传输层:SCTP
  ·信令传输适配层:SUA;M3UA;M2UA/M2PA;IUA
  ·信令应用层:TCAP;TUP;ISUP;SCCP;MTP3;Q931/QSIG
  不同的信令应用层需要不同的信令传输适配层,但IP协议层和信令传输层是共享的和相同的。信令传输适配层与信令应用层的对应关系如下:
  ·SUA对应TCAP
  ·M3UA对应TUP;ISUP;SCCP、TCAP
  ·M2UA/M2PA对应MTP3、ISUP
  ·IUA对应Q931/QSIG、ISUP
  (1)SCTP协议
  SCTP由IETF提出,是一个面向连接的传输层协议,采用了类似TCP的流量控制和拥塞控制算法,通过自身的证实与重发机制来保证用户数据在两个SCTP端点间可靠传送。相对于TCP等其他传输协议,SCTP传输时延小,可避免某些大数据对其他数据的阻塞,具有更高的可靠性和安全性。
  (2)M3UA协议
  M3UA是MTP第三级用户适配层协议,提供信令点编码和IP地址的转换。用于在软交换与信令网关之间实现七号信令协议的传送,支持在IP网上传送MTP第三级的用户消息,包括ISUP、TUP和SCCP消息,TCAP消息作为SCCP的净荷可由M3UA透明传送。
  (3)M2UA/M2PA协议
  M2UA/M2PA是MTP第二级用户对等层间的适配层协议。
  (4)IUA协议
  IUA是ISDN Q.931用户适配层协议。
  (5)SUA协议
  SUA是SCCP用户适配层协议。SUA与M3UA不同,它直接实现了TCAP over IP功能。
  SIGTRAN支持PSTN信令应用的标准原语接口,利用标准的IP传送协议作为低层传送信令,是NGN中重要的传输控制协议之一。
  SIGTRAN是在IP网络中传递SS7信令的协议.它支持的标准原语接口不需要对现有的SS7信令应用部分进行任何修改.
  信令传送利用标准的IP传送协议作为低层传送,并通过增加自身的功能来满足SS7信令的传送要求.
2:SIGTRAN数据配置流程
     1)硬件数据配置:GARP板,EM ,RP/EM定义解闭;
          相关指令:EXRPI,EXRUI;
     2)IP层数据配置:IP端口
          相关指令:IHCOI,IHCOC,IHRDI;
     3)SCTP层数据配置:SCTP EP,SCTP Association
          相关指令:IHBII,IHADI,IHASC,M3ASC;
     4)M3UA层数据配置:本局、目的SPC,M3UA信令路由等;
          相关指令:C7OPI,C7NPC,C7SPI,C7SPC,M3RSI,M3RAI;
     5)应用层数据配置;
   
     SIGTRAN数据检查指令:
     IHCOP,IHRDP,IHALP,IHSAP,IHSLP,IHSTP,M3ASP,M3RSP;
     脚本定义SIGTRAN所需的MO有:
     IPACCESSHOSTGPB,SCTP,M3UAASSOCIATION,MTP3BSPCHINA,MTPSBSRS,MTP3BSR;
3:SCTP协议
     SCTP流控制传输协议,Stream Control Transfer Protocol.
     SCTP处于SCTP用户应用层与IP网络层之间,它运用“关联”(association)这个术语定义交换信息的两个对等SCTP用户间的协议状态 。SCTP也是面向连接的,但在概念上,SCTP“关联”比TCP连接更为广泛:TCP的连接只有一个源地址和一个目的地址,SCTP提供一种方式使得每个SCTP端点能为另一个对等端点提供一组传输地址,即传输地址= 一组IP地址+端口号
  在继承TCP特点的基础上,SCTP提供了一些额外的功能:
  1)在多个“流”(stream)中实现用户数据的有序发送
  “流”在TCP中指一系列的字节,而在SCTP中是指发送到上层协议的一定系列的用户消息,这些消息的顺序与流内其他消息相关。SCTP用户在建立关联时,可以规定关联支持的流的数目。这个数目是与源端商定的,用户消息与流数目关联。在链路中,SCTP为每个送到对等端的消息分配一个流序号。在接收端,SCTP确保在给定流中消息按顺序发送。同时,当一个流正在等待下一个非顺序的用户消息时,其他流的发送会继续。
  2)根据已发现的路径MTU(最大传输单元)大小进行用户数据分片
  为了确保发送到下层的SCTP数据包与路径MTU一致,SCTP对用户消息分片。在接收端,分片被重组后传给上层SCTP用户。
  3) 选择性确认(SACK)和拥塞控制
       选择性确认用于数据包丢失发现,TCP中确认序号返回的是发送方已成功收到数据字节序号(不包含确认序号所指的字节),而SCTP反 馈给发送端的是丢失的并且要求重传的消息序号。
  SCTP运用了TCP中的拥塞控制技术,包括慢启动,拥塞避免和快速重传。因此,当和TCP应用共存时,SCTP应用可接收属于SCTP的网络资源部分。
  4) 块(chunk)绑定
  即多个用户消息可选择地绑定到一个SCTP包上,通过将消息放到一个或多个SCTP数据结构——“块”中,SCTP保留了应用程序的消息框架边界。不同类型的块可绑定到一个SCTP包中,但是控制块必须放在任何一个数据块之前。
  5) 路径管理
  SCTP 路径管理功能主要负责从远端提供的一组传输地址中选择目的传输地址,它根据两个方面来选择目的地址:SCTP用户指示和当前可达的合格目的地。当其他流控制不能提供可达性信息时,路径管理功能定时地扫描链路的可达性,并向SCTP报告远端传输地址所发生的变化。SCTP 路径管理功能模块同时还负责在建立链路时,向远端报告可用的本地地址,并把远端返回的传输地址告诉SCTP用户。
  6)支持多宿
  当SCTP传送数据包给目的IP地址时,如果此IP地址是不可达的,SCTP可以将消息重路由给一个交替的IP地址。这样,在关联的一端甚至两端,可容忍网络级错误。
  7) 防范拒绝服务(DoS)攻击
  DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。SYN Flooding攻击是DoS攻击的一种实例,是目前效果最好的一种黑客攻击方式。为了抵抗SYN Flooding对目标主机攻击,SCTP在关联初始化阶段实施了一种安全的“Cookie”机制。
      TCP是不能防范DOS攻击的,所以SCTP采用四次握手,而不是TCP的三次握手;
  8)支持多种传输模式
          严格有序传输(像TCP),部分有序传输(像per-stream)和无序传输(像UDP)。

SCTP包结构

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

SCTP数据传输

      1) SCTP四路握手及抵抗SYN Flooding攻击的原理
  一个SCTP关联定义为:[主机A的一组IP地址]+[主机A的端口]+ [主机B的一组IP地址]+[主机B的端口]。 因此,每一端对应组中的任何一个IP地址都可作为相应的源/目的地址来标示本次关联,通过四路握手,两端SCTP主机交换通信状态。
  SYN Flooding利用了TCP/IP的固有漏洞,面向连接的TCP三次握手是SYN Flooding存在的基础。SYN Flooding攻击的原理是:恶意的攻击者大量向服务器发送SYN报文,服务器在发出SYN+ACK应答报文后无法收到客户端的ACK报文(第三次握手无法完成),服务器端将为维护一个非常大的半连接列表而消耗非常多的CPU时间和内存资源,还要不断对这个列表中的IP进行SYN+ACK的重试。服务器端将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,此时从正常客户的角度看来,服务器失去响应。
  而在一次SCTP四路握手中,INIT消息的接收端不必保存任何状态信息或者分配任何资源,这样就可防范SYN Flooding等DoS攻击。它在发送INIT-ACK消息时,采用了一种机制——“状态Cookie”,该Cookie具有发送端要建立自己状态所需的全部信息。
  SCTP产生一个状态Cookie的过程如下:
  1. 使用收到的INIT和发出的INIT- ACK块中的信息创建一个关联的TCB(传输控制块)。
  2. 在TCB中,将当前日期设为创建日期,将协议参数“有效Cookie时间”设为生存期间。
  3. 根据TCB,收集重建TCB所需的最小信息子集,将该子集和密钥产生一个MAC(信息认证编码)。
  4. 结合上述最小信息子集和MAC产生状态Cookie。
  5. 在发送完INIT ACK(包含状态Cookie参数)后,发送方必须删除TCB以及任何与新关联有关的本地资源。
  INIT和INIT-ACK都必须包含建立初始状态所需的参数:一组IP地址,保证可靠传输的初始TSN,每个被接收的SCTP包中必须含有的初始标签,每一端请求发出的流数目和每一端能支持接收的流数目。交换完这些消息之后,INIT的发送端以COOKIE-ECHO消息的方式发送回状态Cookie。接收端根据所接收到的COOKIE-ECHO中的状态Cookie,完整地重建自己的状态,并回送COOKIE- ACK来确认关联已建立。COOKIE-ECHO和COOKIE-ACK都可将用户数据消息绑定到各自的包中。
   由此可见,采用以上这种方式,即使接收再多的INIT消息, 接收端也没有任何资源的消耗:它既不分配任何系统资源,也不保存此次新关联的状态,它只是把相应重建状态所用的状态Cookie作为参数,包含在每一个回送的INIT-ACK消息中,最后该状态Cookie会被COOKIE-ECHO消息发送回来。

      2)SCTP数据交换
  在两个SCTP主机间的正常数据交换。SCTP主机发送SACK块,用来确认每一个收到的SCTP包。因为SACK能完整地描述接收端的状态,因此,依据SACK,发送端能做出重传判决。SCTP支持类似于TCP中的快速重传和time-out重传算法。
  对于数据包丢失发现,SCTP和TCP采用截然不同的机制:当TCP发现接收序号有缺口时,会等到该缺口被填上后,才发送序列号高于丢失数据包的数据。然而,SCTP即使发现接收序号有缺口或顺序错乱,仍会发送后面的数据。

      3)SCTP关闭关联

  作为面向连接的传输协议,SCTP也运用三路握手来关闭一个关联,但与TCP有一点不同:一个TCP终端在“关联关闭”的过程中能够保持连接开启,并从对端接收新的数据,而SCTP不支持TCP的这种“半关闭”状态。  

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

抱歉!评论已关闭.