使用Dialogic NetStructure SS7板卡使双机箱系统具有容错能力
 

[ page1 ] [ page2 ]

摘要
介绍
概念
 双MTP3概念
 MTP上的状态机
 双电话操作(基于CIC)
 双SCCP(子系统状态维护)
 双TCAP操作
 TCAP 用户(GSM-MAP、IS41-MAP、INAP)
设置
 MTP3的设置
 ISUP和TUP的设置
 SCCP的设置
 TCAP的设置
机箱间通信
容错应用
设置system.txt值
 主机协议实现的system.txt
 信令处理器板卡协议实现的system.txt

 

设 置

  Linux和Windows版本的Dialogic开发包V2.00支持双机箱SS7系统的设置,并且提供了双系统操作设置MTP、ISUP、TUP和NUP层的必要的命令和参数。SCCP、TCAP和TCAP-User层的设置与单系统(无容错)的设置的实现方式相同。即:使用离散的消息,既可以将此功能嵌入用户自己的程序也可以使用s7_play实体。

  在一个双机箱系统中,为了设置的目的,两个部分分开对待,每个部分都有独立的设置文件。

  ◎ MTP3设置

  在一个双MTP系统中,一个链路集内的链路应该在两个系统间平均分配。两部分的逻辑参考参数如link_id和linkset_id都应该从0开始。系统的每部分的链路 和链路集都使用相同范围的标识符(标记符/句柄)。

  需要使用一条额外的链路集来连接两个MTP3平台。使单节点编码可以在两个平台间共享。与标准的SS7链路集的定义方式相同,使用MTP_LINKSET设置命令并且<local_pc>和<adjacent_pc>使用相同的值。(都设置为两个平台间共享的平台编码的值)。这个链路集需要将<flags>参数的第15比特设置为1,表明此链路集连接两个使用相同节点编码的MTP3协议。链路通过MTP_LINK命令添加到链路集。

  每一目标路由都(包括相邻的节点)应该指明两个链路集。.<primary_Is>是连接本地MTP到相邻节点的链路集的标识符。<secondary_Is>参数应该用来表示连接共享一个本地节点编码的两个MTP3层的链路集。<options>参数应该设为0x0001,表明第二个链路集已经被指定,并且在到达目标节点的原始路由不可用的情况下,只能使用这个链路集。

  所有其他的参数的含义都与用户手册中描述的单MTP设置中的参数相同。
  图9和图10中说明了两个例子。

图9:直接连接终端节点的MTP设置

  对于MTP A

  对于MTP B:

  注意,这些不包括任何设置或定义信令板卡的命令,应该象定义标准的单系统一样定义。MTP_ROUTE <up_enable>参数为ISUP设置,在上例中用户部分SI=5。

图10:连接到STP的MTP设置

  对于MTP A:

  

  对于 MTP B:

  

  连接两个MTP3层的链路集应该提供足够的连接来提供足够的信令宽度,允许一个MTP3的所有流量都可以通过第二个MTP3路由,设计者也应该注意,为了每个MTP3可以传送另一个MTP3的流量,系统的每一部分在正常工作情况下的负荷不应超过50%(所有的处理和信令通道带宽),SS7系统通常的最大负荷为20~40%。

  机箱之间的链路的激活方式必须同连接平台和远端SS7节点的其他链路的激活方式相同。可以通过使用mtpsl实体或通过从应用程序传送MTP链路或链路集激活命令消息实现。

  ◎ ISUP和TUP的设置

  对于ISUP,其他ISUP协议(其他系统中)的module_id通过设置ISUP_CONFIG命令中的<partner_id>参数来指定。应该设置ISUP_CONFIG的选项比特ISPF_DUAL ,表明ISUP应该将从MTP3接收的任何未知电路实体的信息传送到这个软件任务。

  同样地,对于TUP,TUP_CONFIG的<partner_id>应该设置第为二个机箱中TUP模块的module_id,并且设置TUPF_DUAL选项。

  通常情况下ISUP的任务标识符设置为0x23。对于A方,发送未知电路的ISUP消息的任务的标识符为0x73,对于B方为0x63。通常设置到TUP的任务标识符为0x4a。对于发送未知电路的TUP消息的任务,在A方标识符为0x93,在B方标识符为0x83。用户应该设置一个LOCAL任务将发送到这个任务的消息传送到另一个平台上的ISUP或TUP协议层。这可以简单的通过使用RSI任务和REDIRECTION命令来实现。

  注意:在Dialogic NetStructure CPM8、SPCI2S或SPCI4板卡上运行IsUP和TUP。

  当ISUP或TUP协议运行在Dialogic NetStructure SS7板卡上时,B方的SEPTEL_CP命令的参数l1_flags应该设置比特9(0x0200)。

  下面例子说明了ISUP和TUP设置命令:
  Side A

  Side B

  两个系统中的电路组既可以从0开始编号,也可以两个系统间隔标号。如果使用第一种方法,整个系统的容量就是单ISUP/TUP协议层系统的容量的2倍,如果使用第二种方法,系统总容量与单ISUP/TUP协议层系统的容量相同。对于这两种情况,每半部分控制对立的CIC范围,如图11和12所示:

  系统两部分之间没有重复的电路组("单容量"系统,如图12所示)的系统在一部分故障的情况下能够激活另一个没有使用的电路组,这个过程可以使用xxx_MSG_CNF_GRP消息设置电路组来实现。这可以为另一单元中失效的电路提供SS7信令资源以及ISUP或TUP状态机,但是,如果电路终端本身仍然同故障单元物理上相连,那么信令能够为这些电路实现的唯一进程是硬件阻塞。

  ◎ SCCP的设置

  在SCCP层,每一SCCP协议的设置都应该使用相同的本地子系统、远端信令点和远端子系统数据。

  设置参数smb_id是在状态更新时用来标识目标节点,并且应该设置为一个任务的id。这个任务在双系统中能够将信息传递到其他SCCP模块。在大多数环境下,SCCP使用0x33作为任务标识符,并且smb_id在A方应该设置为0x53,在B方应该设置为0x43。可以使用文件system.txt中的一个REDIRECTION语句来将这些消息路由到RSI或相似的任务。这样它们就可以传递到通过以太网连接的其他SCCP层。另外,SCCP smb_flags设置参数应该设为0x001c。

  ◎ TCAP的设置

  在一个多TCAP的环境中,每一TCAP给定一个唯一的实例,它是在SCCP边缘使用事务id编码的,这样可以为接收的消息快速解析正确的目标TCAP。第一个TCAP实例值通常应该为0,下一个为1。

  参数tid_ninst控制在事务id中使用多少比特对实例数据编码。在一个双系统中,1比特就可以区分两个TCAP了。(注意tid_ndref必须足够大,可以对最高的dialogue_id的值进行编码。在一个同时支持2048个对话的系统中,tid_ndref的值必须大于等于11)。

  两个TCAP部分的逻辑dialogue_id的范围可以相同(这样运行在这两个系统上的两个应用进程都有相同的dialogue_id范围),也可以使用不同的范围。

机箱之间的通信

  容错接口(RSI)软件从它的输入队列中获取具有目标节点的消息,而不获取RSI本身的消息,并且将这些消息发送给TCP/IP网络远端的同等RSI任务,通信采用TCP/IP套接字,一端作为服务器,另一端作为客户端。

  在接收端,RSI获取从以太网接收的消息,并且将它们通过本地消息传输系统传递到消息所标识的任务中(帧头dst字段)。如果两个RSI任务通过以太网进行的通信发生故障,传递到RSI通过以太网进行发送的消息将被丢弃。

  系统中运行的两个RSI任务(每半个系统一个)使用相同的唯一的模块id,通常为0xb0。必须在两个系统中的文件system.txt中进行声明,使用FORK_PROCESS命令开始。RSI程序将其模块id作为可选的命令行参数,前缀为'-m'。例如:
  ./rsi -m0xb0

  任何发送到使用模块id指定的RSI的消息会被本地RSI若和任务处理,并且不会通过以太网传输。
  主机同每一个从机的RSI连接使用rsicmd工具激活,rsicmd工具的用法如下:
rsicmd <link_id> <conc_id> <link_type>
<rem_addr> <rem_port> [<rsi_id>]

  <link_id>是这个特殊通信通道的逻辑标识符,RSI通过匹配消息实例值(由GCT_set_instance设置,缺省值为0)和link_id值来选择输出通道。对于大多数的双系统,两个系统之间建立一条RSI连接就足够了,因此这个参数应该设为0。
<conc_id>指定一个模块id,当指定的RSI连接失效时,此模块用来接收通知(一个消息)。这个参数的设置可以将这些指示传递给应用程序任务或者一个管理事件查看程序。如s7_log等。
  <link_type>和<rem_addr>应该依据下表进行设置:

连接类型 Rem_addr Ink_type 值
服务器 B方的IP地址 0(客户端)
客户端 0 1(服务器)

  系统的一端需要设置为客户端,另一端设置为服务器。
  <rem_port>指定了连接所使用的TCP/IP套接字端口号,每一RSI连接(应该具有唯一的link_id)必须使用唯一的端口号,从9000开始。
  参数<rsi_id>是可选的,指定了传送消息的RSI模块。
  对于所有可以通过RSI连接访问的目标节点,文件system.txt文件中必须插入一条REDIRECT语句(第二个ISUP、SCCP、和/或TCAP协议的module_id)。
  例如,一个双ISUP系统应该由两个ISUP部分组成,每个缺省module_id都为0x23。A方ISUP的设置数据表示另一个ISUP部分的module_id为0x73。因此,在A方将会有一个重定向的动作来对经过RSI发送往0x73的任何消息重新定向,在B方,应该有一个REDIRECT语句将B方RSI所接收的所有目标为0x73的消息路由到本地ISUP。标识为0x23。如图13所示。

图13:ISUP之间通信重采用REDIRECT语句



图14:带有SSD的REDIRECT的使用

  运行在信令卡上的协议模块,接收端(对方)的REDIRECT语句应该通过ssd或ssd的驱动(通常情况下使用module_id为0x20)来对消息进行重定向,如图14所示。
  下表给出了系统双方都应该使用的module_id值:

对于容错应用考虑

  在一个SS7接口和应用程序嵌入的双系统中,应用程序故障或者SS7部分的故障将导致整个系统全部或部分故障。

  在一个双电路交换应用(使用ISUP或TUP)中,物理电路终端分布在组成系统的两个机箱中,因此如果系统的一部分发生故障,将导致一部分电路的物理故障。在SS7终端,硬件故障通常由硬件旁路处理(也称为硬件隔离)。这样所有受这部分硬件影响的激活的呼叫都会被拆除,表示这些电路不能被呼叫选择使用,直到硬件隔离解除,如果电路故障恢复,则硬件隔离会被解除。

  但是,在前面所述的设置中,系统继续工作的部分对于故障电路一无所知(这部分设置数据应该保存在故障的部分中),因此不能传递硬件隔离故障。解决这个问题的一个办法就是使用电路组设置方法,这样可以为另一部分的电路组保留空间,当一个电路组发生故障时,这些备份的电路组可以由继续工作的部分进行设置,允许对物理上连接的另一部分传递硬件隔离命令。

  也可以采用物理上隔离应用程序媒介/电路处理和SS7协议状态信息,使两个应用程序可以使用两个SS7接口进行通信(SIU采用这种方法)。物理隔离可以采用RSI和以太网实现。

  如果需要,应用程序可以通过节点间互相检查来检测故障,使用基于消息的API和RSI/以太网进行通信。一个用户指定的信息必须为这个目的定义。

  在一个双TCAP系统中,系统的一部分故障会导致TCAP状态信息的丢失(例如,事务状态和事务挂起的存储部件)。在一个智能网络环境中,如果可能,此事务相关的呼叫将被拆除。在移动/无线环境中,任何相关的挂起的移动业务(例如短消息)都可能超时。这些操作在系统继续工作的部分中应该再次执行。

  同SS7协议通信的应用程序必须在逻辑电路id和每个SS7设置的会话id范围能工作。系统的两部分既可以使用相同范围值,这些值只在每部分内部使用,也可以在不同的范围内运行。

设置System.txt值

  下图中描述了一个双ISUP/TUP/SCCP/TCAP系统中各模块之间的关系,以及系统两部分的config.txt文件中的条目。参见图15。

图15:双SS7协议系统中的模块

  ◎ 主机协议的System.txt

  A方

  

  B方

  

  system.txt文件必须也包括主机上运行的所有本地SS7协议(如ISUP、TUP、SCCP或TCAP)的LOCAL定义和应用程序任务、设置功能(如s7_mgt)和调试工具的LOCAL定义。这里也应该通过FORK_PROCESS语句来启动相应的驱动和任务,在相应的语法手册中有详细描述。

  ◎ 运行在信令处理器板卡上的System.txt

  A方

  

  B方

  

  system.txt文件也必须包括所有应用程序任务、设置工具(如s7_mgt)和调试工具的LOCAL定义。这里也应该通过FORK_PROCESS语句来启动相应的驱动和任务,在相应的语法手册中有详细描述。

  附录A-TCAP Set 例程模块ID消息
  描述:
  这个消息为一个指定的TCAP实例设置module_id,当发送任何来自网络上的带有事务id中指定实例的消息时,TCAP使用这个module_id作为目标节点。
  消息格式:

  参数描述:
  Instance
  应该从指定module_id发送的任何接收的消息中事务ID中设置的实例值
module_id
  对于指定实例,TCAP发送消息的目标的module_id。

 

进一步了解信息,访问我们网站http://www.Dialogic.com/

[ 全文英文版 ]

 

[ page1 ] [ page2 ]


融合通信专栏>>技术开发>>