UML软件工程组织

 

 

SIP与MGCP协议的互通
 
作者:waterfall 来源:bbs.itgoal.com
 

随着信息服务与应用的兴起和发展,IP网络上的数据业务量正在迅速增长。数据业务必须遵循一定的协议,目前使用的较多的是H323、SIP和MGCP。这些协议都有自己的特点,并得到一定程度的推广。本文探讨性地提出了SIP和MGCP它们之间的互通方法。

逻辑结构

图1 互通的逻辑结构

图1中IWF是CallAgent的协议互通模块。下面以MGCP侧发起呼叫为例:从MGCP网络一侧发起呼叫时,CallAgent根据被叫的信息进行路由选择。当知道被叫是SIP终端时,调用映射状态机进行协议翻译,并在本机保存会话信息,由SIP信令模块发起呼叫。SIP终端响应后,消息通用经过CallAgent返回到MGCP的主叫。

建立一次会话之后,MG和SIP终端建立起一个媒体通道,结束通话时由CallAgent关闭媒体通道。

映射模型

映射模型可以分为会话、状态、信息和头域四个层次。

图2 互通的映射模型

⑴会话层

映射模型的会话指的是用户一次完整的呼叫过程。从实现上来说,会话就是一个状态机实例,由会话的若干个状态组成。

⑵状态层

会话中的每个状态对应着通话过程中的某个阶段。状态是协议互通中基本的映射单元,可以包含一条或者多条的映射规则。映射规则即是命令间的一对一的关系或者一对多,多对一,多对多的关系。

⑶信息层

CallAgent协议栈完成对主叫方命令的识别和参数的分解,状态中的映射规则定义了消息之间的映射关系。消息层主要按照映射规则根据映射方法,映射成每个被叫消息的若干序列。

4)帧头层

帧头层完成消息之间帧头到帧头之间的映射关系,是最低层的映射。这种映射关系往往不是直接拷贝的映射,而是采用构造,删除,转换等方法进行映射。

映射方法

不同协议间命令和帧头都不相同,经常采用的映射方法有:直接映射,构造映射,删除映射,转换映射。

直接映射

不同协议的消息有意义和表达方式都相同的参数,可以直接进行参数赋值。比如,MGCP协议的URI有可能相同,此时直接赋值就可以。

构造映射

当被叫方消息的参数在主叫方为缺项时,需要设置默认值或者通过查询数据库取得。比如MGCP呼叫SIP时,SIP消息头域需要SUBJECT,可以通过缺省值设置。

删除映射

当主叫方消息的参数被叫方并不需要时,可以直接删除。例如,SIP中消息头域有可能有Hide,Expired等,MGC并不需要,故可直接删除。

转换映射

当主被叫参数意义相同,但格式不同时,需要做格式转换后才能赋值。

寻址问题(1)SIP的寻址格式

SIP通过SIP URL实现寻址功能。在SIP消息的多个域中使用SIP URL,例如用来指示消息源的From,指示当前目的地的Request-URL域,指示最终接收者的To,以及指示重定向地址的Contact域。

SIP URL的一般结构为:

SIP:用户名:口令@主机:端口;传送参数;用户参数;方法参数;生存期参数;服务器地址参数?头部名=头部值

该结构和一般的URI相同。其中,SIP表示需采用SIP协议和所指示的终端系统通信。用户名可由任意字符组成,一般可取类似于E-mail用户名的形式。

SIP URL的一个特定功能是允许主机类型为IP电话网关,此时,用户名可为一般的电话号码。由于BNF语法表示无法区分电话号码和一般的用户名,因此,在域名后增加了“用户参数”字段。该字段有两个可选值:IP和电话。 “主机”可为域名或IP地址。“端口”指示请求消息送往的端口号,缺省值为5060。口令可以写入SIP URL 中,但考虑到安全问题,一般不建议这样做。除此之外的参数容易理解或者不大常用,在此不一一介绍了。

(2)MGCP端点标识格式

MGCP端点标识由两部分组成:端点所在网关的域名和网关中的本地名。本地名往往使用物理接口号/电路号来标识。

(3)地址映射及其实现

互通的一个重要要求是主叫用户不需要知道被叫所在网络的类型,他应该如同在原有服务环境中一样使用其电话业务。CallAgent进行寻址的作用是根据主叫侧网关或代理服务器送来的地址确定被叫侧网关或代理服务器。重点需要通过DNS解决下面问题:
1.E.164与SIP URL的地址映射
2.E.164与MG端点标识的地址映射
3.SIP URL与MG端点标识的地址映射

三种方式都可以通过数据库匹配方式实现,其中,最重要也是最难的就是E.164到SIP URL或者MG端点标识的映射关系。IETF提出RFC2916协议解决这个问题。

能力协商

能力协商是的目的是确保在会话过程中双方的多媒体信号(媒体类型和媒体参数)能够被对方接收和解码,实际中使用何种编解码方式还受到带宽,网络实际状况等外部因素的制约。多媒体信息仍由SDP协议传送。

SIP能力协商

当SIP为主叫方时,SIP在INVITE方法的会话描述中指示其能够接受的媒体类型及其参数,还可以指示其愿意发送的媒体类型。

当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描述中不会回送;如果该端点不支持该方式,则由MG回送差错响应。

能力协商

1.默认设置

对于CallAgent控制下的MG,在MG第一次启动时,用AUEP命令得到该MG所支持的全部编解码方式,并存储在相应的数据库中。除非更换MG,否则对于该MG其后的启动,CallAgent不再发送AUEX命令(通过flag来区分)。

2.SIP-MG(SIP为主叫方)

SIP在INVITE方法的会话描述中指示其能够接受的媒体类型。CallAgent收到该INVITE请求后,查找相应的数据库,得到相应MG所支持的全部编解码方式,并和UA所能支持的编解码方式进行比较,得出UA和MG都支持的编解码方式,根据带宽和优先级等因素选出一种最适合的编解码方式。在CRCX命令和SIP 200响应中分别发送给MG和UA。

3.MG-SIP(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响应中分别发送给MG和UA。

双向呼叫

互通必须保证可以从任何一方协议正常呼叫到另外一方。因此在CallAgent的协议映射层必须有两个状态机,分别进行Sip2Mgcp和Mgcp2Sip的信令翻译过程。

透明传输

SIP-MGCP之间的透明传输主要是通过RFC2833协议实现。此方式主要实现DTMF的透明传输,与音频或者视频的RTP媒体流采用相同的通道。为了使接收端能够将DTMF信号从媒体流中区分开来,可以设置RTP包头的PT域标志。标志在H.225.0的应用文档中定义。PT从0到95为静态类型,96到127为动态类型。RFC2833使用96作为净荷类型代码,使用97作为帧类型代码。

附:呼叫实例

由于篇幅关系,本文只提供SIP到MGCP的呼叫实例。

& 呼叫流程图

图3 SIP2MGCP 呼叫流程图

&场景描述

(1)主叫(sip终端)摘机并拨打被叫端电话号码。UA根据被叫端电话号码查找DataBase得出被叫对应的SIP地址,UA向代理服务器发送INVITE请求,该请求包含主叫的IP地址和udp端口号(sdp1)。

(2)代理服务器向UA发送100响应,表示正在试呼中。

(3)代理服务器通过DNS得知被叫所在的域不在本地,于是向CallAgent发送INVITE请求,该请求包含主叫的IP地址和udp端口号(sdp1)。

(4)CallAgent向MG发送通知请求命令,请求发送振铃音,监视摘机事件。

(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向代理服务器发送200响应,响应中包含被叫的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响应。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号