《SIP与MGCP协议的互通.docx》由会员分享,可在线阅读,更多相关《SIP与MGCP协议的互通.docx(6页珍藏版)》请在三一办公上搜索。
1、SIP与MGCP协议的互通随着信息服务与应用的兴起和发展,ip网络上的数据业务量正在迅速增长。数据业务必须遵循一定的协议,目前使用的较多 的是H323、SIP和MGCP。这些协议都有自己的特点,并得到一定程度的推广。本文探讨性地提出了 SIP和MGCP它们之间 的互通方法。逻辑结构IWFfCallAEcnt)itri itikt irns ur 址图1互通的逻辑结构图1中IWF是CallAgent的协议互通模块。下面以MGCP侧发起呼叫为例:从MGCP网络一侧发起呼叫时,CallAgent根据 被叫的信息进行路由选择。当知道被叫是SIP终端时,调用映射状态机进行协议翻译,并在本机保存会话信息,
2、由SIP信令模 块发起呼叫。SIP终端响应后,消息通用经过CallAgent返回到MGCP的主叫。建立一次会话之后,MG和SIP终端建立起一个媒体通道,结束通话时由CallAgent关闭媒体通道。映射模型映射模型可以分为会话、状态、信息和头域四个层次。Session1LSession3t ate3t ateMe 5 s e ag cM c 5 5 e a g ele ade rIte a d t riF图2互通的映射模型会话层映射模型的会话指的是用户一次完整的呼叫过程。从实现上来说,会话就是一个状态机实例,由会话的若干个状态组成。状态层会话中的每个状态对应着通话过程中的某个阶段。状态是协议互通
3、中基本的映射单元,可以包含一条或者多条的映射规则。映射规则即是命令间的一对一的关系或者一对多,多对一,多对多的关系。信息层CallAgent协议栈完成对主叫方命令的识别和参数的分解,状态中的映射规则定义了消息之间的映射关系。消息层主要按照映 射规则根据映射方法,映射成每个被叫消息的若干序列。(4)帧头层帧头层完成消息之间帧头到帧头之间的映射关系,是最低层的映射。这种映射关系往往不是直接拷贝的映射,而是采用构造, 删除,转换等方法进行映射。映射方法不同协议间命令和帧头都不相同,经常采用的映射方法有:直接映射,构造映射,删除映射,转换映射。直接映射不同协议的消息有意义和表达方式都相同的参数,可以直
4、接进行参数赋值。比如,MGCP协议的URI有可能相同,此时直接 赋值就可以。构造映射当被叫方消息的参数在主叫方为缺项时,需要设置默认值或者通过查询数据库取得。比如MGCP呼叫SIP时,SIP消息头域 需要SUBJECT,可以通过缺省值设置。删除映射当主叫方消息的参数被叫方并不需要时,可以直接删除。例如,SIP中消息头域有可能有Hide,Expired等,MGC并不需要, 故可直接删除。转换映射当主被叫参数意义相同,但格式不同时,需要做格式转换后才能赋值。寻址问题(1)SIP的寻址格式SIP通过SIP URL实现寻址功能。在SIP消息的多个域中使用SIP URL,例如用来指示消息源的From,指
5、示当前目的地的 Request-URL域,指示最终接收者的To,以及指示重定向地址的Contact域。SIP URL的一般结构为:SIP :用户名:口令主机:端口;传送参数;用户参数;方法参数;生存期参数;服务器地址参数?头部名=头部值该结构和一般的URI相同。其中,SIP表示需采用SIP协议和所指示的终端系统通信。用户名可由任意字符组成,一般可取 类似于E-mail用户名的形式。SIP URL的一个特定功能是允许主机类型为IP电话网关,此时,用户名可为一般的电话号码。由于BNF语法表示无法区分 电话号码和一般的用户名,因此,在域名后增加了用户参数字段。该字段有两个可选值:IP和电话。主机可为
6、域名或IP 地址。端口”指示请求消息送往的端口号,缺省值为5060。口令可以写入SIP URL中,但考虑到安全问题,一般不建议这样 做。除此之外的参数容易理解或者不大常用,在此不一一介绍了。(2) MGCP端点标识格式MGCP端点标识由两部分组成:端点所在网关的域名和网关中的本地名。本地名往往使用物理接口号/电路号来标识。(3) 地址映射及其实现互通的一个重要要求是主叫用户不需要知道被叫所在网络的类型,他应该如同在原有服务环境中一样使用其电话业务。CallAgent进行寻址的作用是根据主叫侧网关或代理服务器送来的地址确定被叫侧网关或代理服务器。重点需要通过DNS解决 下面问题:1. E.164
7、与SIP URL的地址映射2. E.164与MG端点标识的地址映射3.SIP URL与MG端点标识的地址映射三种方式都可以通过数据库匹配方式实现,其中,最重要也是最难的就是E.164到SIP URL或者MG端点标识的映射关系。IETF提出RFC2916协议解决这个问题。能力协商能力协商是的目的是确保在会话过程中双方的多媒体信号(媒体类型和媒体参数)能够被对方接收和解码,实际中使用何种编 解码方式还受到带宽,网络实际状况等外部因素的制约。多媒体信息仍由SDP协议传送。SIP能力协商当SIP为主叫方时,SIP在INVITE方法的会话描述中指示其能够接受的媒体类型及其参数,还可以指示其愿意发送的媒体
8、类 型。当SIP为被叫方时,SIP在成功响应消息的消息体中指明其希望接受那些媒体,还可以指示其行将发送的媒体。此外,SIP也可在options方法(SIP2.0)和negotiation方法(SIP5.0)的响应中由UA告知请求方UA自身的能力集。MGCP能力协商MGCP协议中只有AUEP命令(参数F:A)和AUCX命令(参数F:A河以得到mg相应端点支持的全部编解码方式。mgc在crcx和mdcx命令中给出希望mg相应端点支持的编解码方式,如果该端点支持该方式,则由MG返回”200 xxxx ok”响应消息。但若该mg还支持其它方式,一般在200 xxxx ok响应消息的SDP描述中不会回送
9、;如果该端点不支持该方式,则 由MG回送差错响应。能力协商1.默认设置对于CallAgent控制下的MG,在MG第一次启动时,用AUEP命令得到该MG所支持的全部编解码方式,并存储在相应的 数据库中。除非更换MG,否则对于该MG其后的启动,CallAgent不再发送AUEX命令(通过flag来区分)。2.SIPMG(SIP 为主叫方)SIP在INVITE方法的会话描述中指示其能够接受的媒体类型。CallAgent收到该INVITE请求后,查找相应的数据库,得到相 应MG所支持的全部编解码方式,并和UA所能支持的编解码方式进行比较,得出UA和MG都支持的编解码方式,根据带宽 和优先级等因素选出一
10、种最适合的编解码方式。在CRCX命令和SIP 200响应中分别发送给MG和UA。3.MGSIP(MG为主叫方)MG端向UA端发起呼叫,CallAgent查找相应的数据库,得到相应MG所支持的全部编解码方式。CallAgent在向MG发送CRCX 命令后,向SIP PROXY SERVER发送INVITE请求,在该请求的SDP描述中包含MG所支持的全部编解码方式。UA在SIP 200 响应中返回其所能支持的编解码方式,CallAgent对UA和MG所支持的编解码方式进行比较,得出UA和MG都支持的编解码 方式,根据带宽和优先级等因素选出一种最适合的编解码方式,在MDCX命令和SIP ACK响应中
11、分别发送给MG和UA。双向呼叫互通必须保证可以从任何一方协议正常呼叫到另外一方。因此在CallAgent的协议映射层必须有两个状态机,分别进行 Sip2Mgcp和Mgcp2Sip的信令翻译过程。透明传输SIP-MGCP之间的透明传输主要是通过RFC2833协议实现。此方式主要实现DTMF的透明传输,与音频或者视频的RTP媒 体流采用相同的通道。为了使接收端能够将DTMF信号从媒体流中区分开来,可以设置RTP包头的PT域标志。标志在H.225.0 的应用文档中定义。PT从0到95为静态类型,96至到 127为动态类型。RFC2833使用96作为净荷类型代码,使用97作为帧类 型代码。附:呼叫实例
12、由于篇幅关系,本文只提供SIP到MGCP的呼叫实例。&呼叫流程图5E(I 霓I zoo图3 SIP2MGCP 呼叫流程图妙do&场景描述(1) 主叫(sip终端)摘机并拨打被叫端电话号码。UA根据被叫端电话号码查找DataBase得出被叫对应的SIP地址,UA向代 理服务器发送INVITE请求,该请求包含主叫的IP地址和udp端口号(sdpl)。(2) 代理服务器向UA发送100响应,表示正在试呼中。(3) 代理服务器通过DNS得知被叫所在的域不在本地,于是向CallAgent发送INVITE请求,该请求包含主叫的IP地址和udp 端口号(sdp1)。CallAgent向MG发送通知请求命令,
13、请求发送振铃音,监视摘机事件。(5) MG 向 CallAgent 发送 200 响应。(6) MG向被叫振铃。(7) CallAgent向代理服务器发送180响应,表示正在向被叫振铃。(8) 代理服务器向UA发送180响应,表示正在向被叫振铃。(9) 被叫摘机。(10) 被叫端MG通知CallAgent被叫摘机。(11) CallAgent 向 MG 发送 200 响应。(12) CallAgent向MG发送创建连接命令,该命令包含监视挂机事件。(13) MG向CallAgent发送200响应,响应中包含被叫的IP地址和UDP端口号(sdp2)。(14) CallAgent向代理服务器发送2
14、00响应,响应中包含被叫的IP地址和UDP端口号(sdp2)。(15) 代理服务器向UA发送200响应,响应中包含被叫的IP地址和UDP端口号(sdp2)。(16) UA向代理服务器发送ACK响应。(17) 代理服务器向CallAgent发送ACK响应。(18) CallAgent向MG发送更改连接命令,该命令包含主叫的IP地址和UDP端口号(sdp1)。(19) MG 向 CallAgent 发送 200 响应。(20) 主被叫开始进行端到端通信。(21) 通话结束,被叫用户挂机。(22) MG通知CallAgent被叫挂机。(23) CallAgent向代理服务器发送BYE请求消息。(24) 代理服务器向UA发送BYE请求消息。(25) CallAgent向被叫MG发送200响应。(26) 主叫UA向代理服务器发送200响应。(27) 代理服务器向CallAgent发送200响应。(28) CallAgent向被叫MG发送DLCX命令。命令中携带请求事件参数,请求MG监视摘机事件。(29) MG 向 CallAgent 发送 250 响应。