分享到:

研发图
联络我们 | 访客留言 |
论 文 专 利 著 作 项 目 ZigBee 与 Uwb动态 技术FAQ
 
               
基于SIP和CMPP的即时消息网关的设计和实现

金纯[1][2] 汤芳剑[1] 赵喜[2] 叶怿[2] 杨帆[1]

重庆邮电大学[1] 重庆金瓯科技发展有限责任公司[2]

摘要:文章基于SIP和CMPP协议,提出了一个即时消息网关的设计与实现方案,使IP网络上的SIP即时消息可以与CMPP消息互通。在实现了SIP、CMPP协议的基础之上,进一步给出了一个实现短信网关接口的简单模型,并从网关的体系结构、典型信令流程、协议映射方面进行了分析,最后对整个方案进行了总结。
关键词:SIP CMPP 即时消息网关
【中图分类号】TN949.197 【文献标识码】A

Design and Implementation of Instant Messaging Gateway Basesd on SIP and CMPP
Jin chun[1][2] Tang fangjian[1] Zhao xi[2] Ye yi[2] Yang fan[1]

Chongqing University of Posts and Telecommunications[1] Chongqing JINOU Science and Technology Development Co,Ltd[2]
Abstract: This paper bases on SIP and CMPP and introduces a design and implementation of a Instant Messaging Gateway,SIP Instant Messaging and CMPP message can realize exchange through it. Further gives a realization of a simple SMG Interface Model on the basis of implementation of the SIP、CMPP protocol,analysises the gateway from the area of architecture、typical signaling process and protocol mapping,at the same time, the entire program are summarized finally.
Keywords: SIP CMPPInstant Messaging Gateway

1 引言
  短消息作为已经成熟的无线互联增值业务,能以低廉的资费、充分的个性与秘密性等特征为商家带来可观的收入,而且还可以带动一些相关业务的蓬勃发展。短消息服务技术是无线通信在20世纪末所做的一次重要飞跃,这使移动网络不仅可以传送音频,也可以传送数据,而数据传输是互联网技术的根本。
  即时消息(Instant Messaging,IM)是一种实时通信的方式,通过快速在用户之间传递文本或多媒体信息并及时地、有选择地向用户的联系人传递用户的在线信息,以实现用户之间的通信。IM区别于其他消息的特性就是交互性,用户可以几乎实时地交换消息以进行会话[1]。
 

网关体系结构

                图1 网关体系结构

CMPP已经实现了手机与移动网络的即时短信互通,然而目前像AIM、MSN 和Yahoo等IM工具与手机的短信互通还没有实现,本文提出的即时消息网关正是为了实现SIP和CMPP的即时短信互通。
  本文基于SIP和CMPP协议,提出了一个使IP网络与CMPP网络消息互通的通信网关设计方案,IP网络上的终端使用SIP协议可以发送消息给中国移动手机用户,反之中国移动手机用户可以通过网关与使用SIP协议的终端建立消息互通。
2 即时消息网关的设计
  即时消息网关用于在客户端与业务平台之间进行协议映射和互通[2], 以实现客户端用户使用即时 消息业务。下面分别从网关体系结构设计和业务信令流程方面进行介绍。
2.1 网关体系结构
  业务平台是整合了即时消息、按键通话 、短信以及语音等多种通信方式的业务平台, 目的是将多种通信类业务整合于统一的用户界面中, 方便用户使用。业务平台支持多种终端, 其中包括客户端。
  网关系统在整体架构上可划分为协议接口层、业务逻辑层、数据持久层, 包括CMPP IM接口、SIP互联接口、CMPP会话控制模块、协议适配模块、数据访问接口模块以及数据库[3], 如图1所示。下面对网关的各个组成部分做一一说明。
(1)CMPP IM接口模块通过CMPP协议与手机客户端进行消息交互。CMPP接口分为数据通道及通信初始化请求通道, 数据通道用于客户端与服务器之间传输消息, 通信初始化请求通道用于服务器通知客户端启动一个消息传输过程[3]。
(2)SIP互联接口模块负责与业务平台进行消息交互[3], 使用SIP协议, 并根据业务特点进行部分扩展。
(3)CMPP会话控制模块负责控制会话, 包括配合业务平台完成客户端的注册及认证分别与客户端和业务平台建立会话, 并维护两个会话之间的绑定关系, 包括心跳监控及超时处理;调用协议适配模块将客户端业务请求转换为SIP请求, 并通过接口层转发至业务平台;调用协议适配模块将SIP应答转换为手机客户端业务应答, 并通过接口层转发至手机客户端。
(4)协议适配模块负责CMPP接口协议与SIP协议之间的双向适配。
(5)数据访问接口模块采用数据库连接池及关系对象映射技术, 负责和数据库建立连接以及进行各项数据库的操作[3]。
(6)数据库主要用于保存CMPP系统配置参数、运行日志、用户业务操作日志及系统管理维护数据, 而用户有关数据由业务平台统一管理。
2.2 典型信令流程
  "发送即时消息"是即时消息系统中最核心的功能, 下面以它为例介绍网关中的信令交互流程。
图2为SIP客户端向手机客户端发送即时消息的流程[4]。在SIP协议的定义中, 如果对方用户在线, 则发送即时消息之前需要通过INVITE请求建立连接;而CMPP协议中客户端接收消息直接通过"Submit"消息, 所以由网关处理业务平台发过来的INVITE请求即可[5]。这样, 当手机客户端退出系统时, 同样需要由网关代替用户向业务平台主动发送BYE, 用来终结此用户尚未结束的会话。
  为简化流程并使其更具典型性, 这里假设手机和SIP客户端都已经成功登录, 且双方之间能够互发消息(即没有被对方列入黑名单);在结束时, 假定手机客户端先退出系统。
详细流程说明如下:
(1)--(2)SIP客户端发送INVITE, 邀请手机客户端参与会话;
(3)--(4)网关回送200 OK, 标识邀请的手机客户端接收邀请;
(5)--(6)SIP客户端返回对INVITE的最终确认ACK;

发送即时消息信令流程

 

 

 

 

 

 

 

 

 

 

 

               图2 发送即时消息信令流程

(7)SIP客户端通过MESSAGE请求发送即时消息给手机客户端;
(8)业务平台将MESSAGE请求转发给网关;
(9)--(10)网关回送200 OK;
(11)网关进行协议转换后, 通过CMPP中的"Submit"将消息发送给手机客户端;
(12)客户端回送相应的"Submit_Resp"消息, 确认接收消息;
(13)手机客户端通过"Terminate" 消息请求退出登录;
(14)网关回送Status消息;
(15)--(16)网关在向测试环境注销此手机用户之前,先发送BYE请求结束刚才的会话;
(17)--(18)SIP客户端为BYE请求回送200 OK。
(19)网关发送REGISTER请求给业务平台,注销此手机用户;
(20)业务平台回送200 OK。
从上述流程可以看出, 网关不仅要对CMPP和SIP之间的消息进行转换映射, 对于SIP中存在但CMPP无法支持的消息, 网关还要在收到消息后自动回送相关应答, 以匹配SIP中的消息模式。
手机客户端给SIP客户端发送即时消息的业务流程相对简单, 网关无需利用INVITE建立会话和维持会话,这里不再累述。
3 CMPP与SIP协议间映射的关键问题
  CMPP协议与SIP协议的映射包括:消息类型映射, 用户标识的映射, 消息模式映射, 以及事务标识映射等。在映射过程中必须注意到, 不是所有CMPP协议的消息都能一一对应到SIP协议的消息。下面给出对上述几个关键问题的分析。
3.1消息类型映射
  CMPP协议中用信息单元"Message-Type"来标识消息类型, SIP协议用请求行的方法名来标识消息类型;如果方法名为"SUBSCRIBE"或"NOTIFY",还需要通过消息头域"EVENT"来进一步区别标识。表1描述了CMPP协议与SIP协议在消息类型上的映射。

 

CMPP

SIP

登录
发送即时消息
退出登录

Connect
SendMessageRequest
Terminate

REGISTER(expires>0)
INVITE ?MESSAGE
REGISTER(expires=0)

表1 CMPP 与SIP之间的消息类型映射

3.2用户标识映射
  SIP协议中使用用户标识主要有三处:From头域、To头域和消息体中[4]。网关在完成用户地址的映射时, 根据SIP协议的要求, From头域中只要填写User-ID, 而To头域和消息体中的用户地址还需要把Schema转换为"SIP" 。同时,SIP中的用户标识可带有一个标识用户所属域的p参数, 它的值为用户所在的逻辑区域的ID, 这个值对于客户端是透明的, 网关只需要根据业务平台返回的值加上p参数即可。
3.3消息模式映射
  从图2中可以看到, CMPP协议和SIP协议在消息模式上无法一一对应。所以网关要消除模式上差异并维护相关资源。比如, 由于CMPP协议中没有SIP的"Dialog"的概念, 这样在进行映射时, 网关需要为每个客户端用户维护Dialog相关资源, 在CMPP客户端用户退出系统时, 网关还需要显式释放资源并向业务平台发送消息以结束此用户相关的会话。而对于CMPP协议中无法匹配的SIP消息, 网关直接回送业务平台200 OK。这样分别符合CMPP协议和SIP协议中的消息模式。
3.4事务标识映射
  一个事务通常包括一个请求(Request)消息和一个响应(Response)消息。CONNECTION是CMPP协议中的事务标识,由事务的发起实体分配, 而事务的响应实体在响应消息中返回相应的标识。在SIP中, 标识一个事务要通过Call-ID头域和Cseq头域来共同完成。CMPP的所有请求消息对应到SIP中的请求消息可以分为会话(Dialog)内消息和非会话内消息。对于非会话内消息, 比如SIP中的MESSAGE、INFO等消息产生的事务, 只需通过Call-ID的不同来标识;而对于会话内消息, 比如INVITE、SUBSCRIBE消息, 在一个会话内的所有消息共享一个Call-ID,这时所有请求消息中的Cseq头域的序列号依次从"1"开始递增, 用以区分同一个会话内的不同请求消息。而在一个事务中, 应答消息和请求消息的Call-ID和Cseq取值相同。
4 方案总结
  本方案实现了CMPP协议与SIP协议间的转换。总体来说, 协议的转换保留了即时消息中最重要的功能, 尽量消除协议差异, 并充分考虑到流程的简化和运行效率,在扩展性方面, SIP协议具有很大的优点,本方案中各模块之间的松耦合设计很好地支持了协议的扩展, 通过适当修改"协议适配模块"和"互联接口模块",可以实现网关的升级。
  但是, 由于两个协议本身的差别, 部分功能也会有所损失, 例如CMPP中支持"发送状态报告"用来显示消息接收方的消息接收情况, 但SIP没有相关消息可以支持, 这种差别无法通过优化网关设计来避免。
5 结束语
  本文阐述了即时消息的特点,结合CMPP协议和SIP协议, 提出了即时消息网关的体系结构以及信令流程, 并对协议映射中的关键问题进行了分析。当前, 即时消息业务的迅速发展引起了各运营商的广泛关注, 可与此同时相关协议并不统一且互通工作进展缓慢。CMPP与SIP协议的互通给增值业务的发展带来一定的动力,本文提出的即时消息网关为实现CMPP与SIP协议的映射转换具有重要的现实意义。

参考文献
[1] M.Day,et al,A Model for Presence and Instant Messaging,RFC2778,IETF,Feb,2002.
[2]夏寅贲,张大伟.短消息网关系统结构设计分析[J].电信科学,2002.
[3]中国移动通信集团公司综合即时通信接口规范-基本信令消息V2.0,2006.
[4]Gonzalo Camarillo著,白建军等译.SIP揭密[M].北京:人民邮电出版社,2003.
[5]中华人民共和国信息产业部.YD/T 1291-2003.点对点短消息网间互通协议要求.2003.

作者简介:
金纯:(1966- ) 男,籍贯重庆,美国伊利诺伊大学计算机专业博士,重庆邮电大学教授,硕士研究生导师,研究方向:通信网。
汤芳剑:(1985- )男,籍贯江西,重庆邮电大学通信与信息系统专业硕士研究生,研究方向个人通信。

 
 
上一页:IEEE802.11P:车载环境下的无线局域网
下一页:基于SIP和TVPP的短信网关的研究和实现