IMS与PSTN互通中SIP与ISUP之间转换的设计
扫描二维码
随时随地手机看文章
摘要:文章探讨了在3GPP IMS与PSTN互通的过程中SIP与ISUP两种不同的协议数据单元之间的转换问题。提出了实现转换的机制,定义了两种不同的协议数据结构,重点研究基于ISUP数据单元格式两种协议数据的转换方法,并给出了具体的流程图,实现了相互的转换。
关键词:互通;SIP;ISUP;转换
0 引言
由于IMS系统主要是基于IP的多媒体子系统,其在应用层使用的会话协议是SIP协议,而CS/PSTN主要是传统的电路交换网络,其典型的会话协议是ISUP协议。所以二者之间的互通必须进行一个地址信令的转换映射,这一功能主要是由MGCF来完成的。无论是对于IMS网络还是CS/PSTN网络,MGCF都有相应的逻辑接口,并且实现相应的映射过程。因此,对于无论是由IMS发起的呼叫,还是CS/PSTN发起的呼叫,由于有了MGCF,都能使呼叫顺利地进行下去。
1 SIP与ISUP转换的机制
SIP和ISUP信令之间的映射是基于收到的消息类型,通过对消息类型的理解,可以做出相应的处理并维护或转移当前的呼叫状态。在这里可以用有限状态机FSM(Finite State Machine)去描述当前呼叫状态以及信令的映射关系。
在任何一个状态,MGCF会根据到达的事件执行特定的操作,这里的事件主要指信令消息和定时器的超时消息,根据操作结果进行状态转移。对于一个非法的消息,它保持当前的状态不变,并且返回一个失败消息。
定义FSM的状态单元的数据结构如下:
由不同的状态单元组成了状态链表,根据当前状态以及收到的事件类型,查找状态链表,就能得到相应的处理,作出响应。
2 SIP与ISUP转换的实现过程
在互通的过程中,SIP消息和ISUP消息在一定的映射规则下要进行转换,因此这两个消息的格式定义非常重要。首先定义SIP消息的数据结构:
当MGCF收到消息时,先查找互通FSM,根据当前的状态以及收到的事件,通过FSM得到相应的处理方法。如果仅仅是对收到消息的同侧做出响应,则不涉及转换过程,直接做出处理:但是如果要对互通的另一侧发出消息,则必须调用转换过程。
由于在查找FSM的时候,已经得知了对应于当前收到的事件的处理方法,也就知道了SIP消息映射到哪一个ISUP消息,所以,在转换过程中最主要的就是处理如何在两个消息的参数之间进行转换。
在具体的转换过程的设计上,如果是SIP到ISUP消息的转换,由于ISUP消息中要求各参数必须按照一定的顺序排列,所以必须根据具体的ISUP消息对应的参数表的参数顺序,参照映射规则,提取SIP消息中相应的字段进行翻译转换得到各参数。如果SIP消息中存在MIME消息体,还需查找该消息体,转换其中特有的ISUP信息而SIP消息没有对应的信息描述。如果对于必备的参数,不存在相应字段,需要参照本地策略填入默认值:相反,如果是将ISUP消息翻译到SIP消息,相对比较简单,直接将ISUP消息中包含的相应的字段根据映射规则转换到SIP消息的对应字段。如果没有对应字段的,就封装到MIME消息体中。
转换过程中涉及的数据结构SIP消息格式和ISUP消息格式在前面已经定义,下面定义部分涉及的函数:
翻译过程的流程图如图1(以SIP到ISUP的消息翻译为例)。
翻译过程处理函数为:int inter_tran(sip_t*s_msg,isup_m*i*msg),传入的参数为sip*t结构的sip消息,翻译后的ISUP消息放入isup _m结构的isup消息体中,成功完成操作返回1,否则返回0。具体的翻译过程是,对应于每一对SIP与ISUP消息组合,有不同的翻译函数。在函数内部,根据ISUP消息参数顺序,参照映射规则,提取SIP消息的不同部分,来填充ISUP消息结构体,如果没有相应的值就使用根据本地策略确定的缺省值,如果没有缺省值,翻译失败。
3 结束语
IMS必须与PSTN实现互联互通,但是前提是必须首先解决SIP与ISUP之间的转换问题,基于ISUP参数的转换方法操作起来比较简单,容易理解。能够较为有效地实现二者之间的转换。