基于SIP协议的IP电话增值业务实现技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于SIP协议的IP电话增值业务实现技术王瑜,乐正友(清华大学电子工程系,北京100084)摘要:讨论了SIP协议以及基于SIP协议的IP电话增值业务实现技术,并对SIPCGI、CPL、SIPServ-lets、JAINAPIs等几种SIP编程技术进行了分析与比较,归纳总结了开发IP电话增值业务的一般方法。关键词:智能网;IP电话;协议;增值业务一、引言近年来随着Internet的日益普及,基于分组交换的IP电话技术得到了迅速的发展。最初的IP电话只能实现PC到PC的简单呼叫,随着H.323、SIP等相关IP电话协议的出现,IP电话技术中的控制和信令体系日趋完善,几乎所有的传统电信业务都能够在IP网上得以实现。不仅如此,IP电话技术还能够将传统电信业务与Internet应用相结合,例如在Web中集成800呼叫,用媒体流技术实现语音信箱等等,从而提供比传统电信网更加丰富的业务类型。如何在现有IP电话协议的基础上方便快捷地开发IP电话应用、实现各种IP电话增值业务,已成为现今IP电话技术中的核心问题之一。本文将以SIP协议为例,讨论IP电话增值业务的开发及实现方案,然后结合具体实例介绍SIPCGI、CPL、SIPServlets、JAINAPIs等SIP编程技术,并对它们各自的特点及应用范围加以比较与分析,从而归纳总结出开发IP电话增值业务的一般方法。二、SIP协议简介SIP(SessionInitiationProtocol)协议由IETF(InternetEngineeringTaskForce)的MMUSIC(Multi-partyMultimediaSessionControl)工作组提出,是一个用于建立和控制多媒体会话的应用层协议,其中的多媒体会话包括多媒体会议、远程教育、IP电话以及类似的应用。SIP协议支持单播和多播通信,支持名称映射和重定向业务,支持类似呼叫转发、呼叫拒绝等电信业务的实现,支持用户移动性。的功能及组件总体说来,SIP协议支持多媒体通信中以下几个方面的功能:(1)用户定位:确定通信中终端系统的位置;(2)用户可用性:确定被叫方是否愿意参与通信;(3)性能协商:确定通信中所用媒体及媒体参数;(4)会话建立:呼叫双方会话参数的建立;(5)会话管理:包括会话转移和中止、会话参数变更、调用新业务等内容。采用SIP协议的通信系统应该包括2种组件:SIP用户代理(UserAgent简写为UA)和SIP网络服务器。SIP用户代理是终端系统组件,而SIP网络服务器是处理大量呼叫信令的网络设备。SIP用户代理UA又分为用户代理客户端(UserAgentClient,简写为UAC)和用户代理服务器(UserAgentServer,简写为UAS),前者发起呼叫,后者应答呼叫。SIP网络服务器包括SIP代理服务器(SIPproxyserver)、SIP重定向服务器(SIPredirectserver)和SIP注册服务器(SIPregistrar)3种。SIP代理服务器接收到呼叫请求后,通过地址解析确定被叫方位置,然后将请求转发至下一跳服务器。而SIP重定向服务器则是在完成地址解析后将被叫方的地址信息发给呼叫方,让呼叫方直接向下一跳服务器发送请求。SIP注册服务器用于接受客户端的注册请求,并提供定位服务。的消息机制SIP是一个基于文本的协议,它的消息分为两大类:从客户端到服务器的请求(Request)和从服务器到客户端的响应(Response)。无论请求消息还是响应消息都是由起始行(Start-Line)、消息头部(Message-Header)和可选的消息体(Message-Body)构成。SIP消息的头部字段主要有From、To、Call-ID、Cseq、Via、Contact等,用于标识会话的各种相关参数,而可选的消息体部分通常用于描述会话双方的通信能力。请求消息的起始行称为请求行(Request-Line),其中的“方法”(Method)字段表明了请求消息的功能。SIP协议定义了6种方法:(1)REGISTER:用于登记联系信息;(2)INVITE:用于邀请用户加入会话;(3)ACK:用于对邀请作出响应;(4)CANCEL:用于取消未完成的请求;(5)BYE:用于终止会话;(6)OPTIONS:用于询问服务器的性能。响应消息的起始行称为状态行(Status-Line),其中的状态码字段指示了被叫方对请求的响应结果。SIP协议定义的状态码是一个3位整数,同样也分为6大类:(1)1xx(100~199之间的状态码用1xx表示,以下类推):暂时响应——呼叫处理中;(2)2xx:成功响应——请求被成功接收、理解并接受;(3)3xx:重定向响应——需要采取进一步动作以完成请求;(4)4xx:客户端出错——客户端的请求包含语法错误或无法在服务器完成该请求;(5)5xx:服务器出错——服务器无法完成合法请求;(6)6xx:全局故障——任何服务器均无法完成请求。呼叫举例图1描述了一个典型的SIP呼叫。user1@sip1.com作为UAC希望同user2@sip2.com通话,他首先发出一个INVITE请求,本地的SIP代理服务器sip1.com接受到这个INVITE请求后,经过地址解析,将其发送至SIP代理服务器sip2.com,同时sip1.com返回给user1一个100Trying消息。sip2.com接收到sip1.com的INVITE请求后,将其转发给user2@sip2.com,并返回给sip1.com一个Trying消息。user2接受到INVITE请求后,在应答之前,将返回给sip2.com一个180Ringing消息,此Ringing消息将依次转发给sip1.com、user1。如果user2决定应答呼叫,则返回一个200OK消息,此消息经过sip2.com、sip1.com最后到达user1。user1在收到200OK消息后,直接发送一个ACK确认消息给user2。至此呼叫建立过程完成,user1和user2之间可以建立媒体通道进行对话。当一方想结束通话时,发送一个BYE消息给对方,对方返回一个200OK消息,SIP呼叫即被终止。三、基于SIP的IP电话增值业务实现方案电话增值业务简介传统电信网的电话业务分为3类:仅具有呼入呼出功能的传统电话业务,包含呼叫转移、三方通话、语音信箱等功能的程控电话新业务,以及近年来得到广泛应用的电话增值业务。目前电信部门提供的电话增值业务有电话投票业务、记帐卡呼叫业务、800业务和200卡业务等。传统电信网的电话增值业务主要是通过智能网(IntelligentNetwork,简写为IN)实现的。智能网是在原有通信网络基础上为快速提供新业务而设置的附加网络结构,它的最大特点是将网络的交换功能与控制功能相分离,把电话网中原来位于各个端局交换机中的网络智能集中到若干个新设的功能部件——称为智能网的业务控制点的大型计算机上,而让原有的交换机仅完成基本的接续功能。而对于IP电话来说,由于它架构在Internet之上,其增值业务的内容要丰富得多,实现方式也与传统电信网有所不同。以800业务为例,在传统的800业务模式中,用户只能通过电话机终端拨打800号码,而IP电话则可以将800业务与Web服务相结合,实现“click-to-dial”,也就是用户可以在浏览网页时通过点击享受800服务,而企业也可以将更多的信息资源通过Internet融入到800业务中去。增值业务实现技术SIP协议可以说是为IP电话量身定做的协议,事实上,在SIP协议的设计中也处处体现出它在实现电话新业务方面的优势。举例来说,如果要在基于SIP协议的IP电话业务中实现呼叫转移,几乎不用再做其它的工作,因为SIP协议本身就包含了对呼叫转移以及用户移动性的支持,用户只需用他当前的终端在SIP定位服务器上注册,所有指向该用户的呼叫即可方便地转移到当前终端上。SIP协议还借用了HTTP和SMTP协议的成功方法,引入了许多扩充性能,而且SIP协议本身又是基于文本的,这些都给SIP增值业务的实现提供了方便。然而,仅仅靠SIP协议本身的特性来实现不断涌现的各种IP电话增值业务是远远不够的。在采用SIP协议的IP电话网中,实现功能繁多的增值业务必须依靠业务功能模块对网络系统元件的动作加以控制。仍以前面提到的“click-to-dial”800业务为例,如果某个企业希望对使用“click-to-dial”方式呼叫800业务的用户进行分类,根据用户提出的问题按照售前咨询、技术支持和售后服务3个类别将呼叫转移至不同的客户服务代表,那么只需在用户点击800呼叫时提供问题类别信息,在提交SIP呼叫请求时将问题类别信息一同发送至SIP服务器,服务器端通过业务功能模块对用户信息加以判断并与相应的客服代表的SIP地址对应,这样便可以方便地实现800呼叫的分类功能。实现基于SIP协议的IP电话增值业务的基本模型如图2所示。当SIP服务器接受到请求或响应时,将信息通过程序接口传递给业务功能模块,业务功能模块基于收集到的信息发出指令再传递给SIP服务器,SIP服务器依据得到的指令继续执行。上面所说的将业务功能模块和服务器相分离的模型其实并不是SIP增值业务所独有的,在前面提及的智能网中就用到了类似的思想。当呼叫建立消息到达智能网的交换机时,交换机并不直接处理,而是将其传递给另一个分离的设备——业务控制端(ServiceControlPoint,简写为SCP),继而等待SCP传回的指令。在Internet上的Web业务中也有类似的情形,Web服务器接收到用户浏览器传来的请求信息后,有时并不能直接输出用户所需访问的内容(例如要做数据库查询、后台数据处理等),这时Web服务器就会通过CGI(CommonGatewayInterface)、ASP(ActiveServerPages)、JSP(JavaServerPages)来完成数据库的访问等工作。由于SIP与HTTP等文本协议有很强的相似性,所以在设计业务功能模块及其与SIP服务器之间程序接口时,我们完全可以参考Web业务中的做法,甚至可以将CGI等成熟的技术直接拿来使用。当然,我们也可以根据SIP协议以及IP电话的特点,另外制定一套技术规范来实现基于SIP的IP电话增值业务。下面我们将对几种主要的SIP编程技术依次作一分析。四、几种SIP编程技术的分析与比较在Internet领域中,CGI一直是进行Web编程的有效手段,即使与后来大行其道的ASP、JSP相比,CGI在Web编程的灵活性上依然有着自己的优势。前面也提到过,由于SIP与HTTP的相似性,我们很自然的会想到用CGI来作为开发SIP业务的工具。具体说来,用CGI来开发SIP业务有以下几点优势:(1)语言独立性:CGI可以用Perl、C、VisualBasic以及很多其他语言来开发,只要它们支持环境变量的获取即可;(2)头部信息的获取:CGI可以获取HTTP请求的所有头部信息,这对SIP业务来讲同样非常重要,因为SIP的头部信息几乎包含了呼叫的全部有用信息,例如呼叫方、被叫方、主题、地址、呼叫状态等;(3)响应的生成:CGI的另一个优势在于它除了能够生成消息体之外,可以生成响应的任何一个部分,包括头部、状态码等,而其他的一些编程机制,比如Javaservlets只是考虑消息体部分。对于SIP协议来说,消息体并不是新业务开发中最重要的部分,因此能否生成响应的所有部分就显得尤为关键;(4)组件重用:由于SIP协议重用了很多HTTP的语法,因此针对SIP开发的CGI可以重用HTTPCGI的很多有用工具;(5)熟悉的开发环境:很多Web程序员对CGI都相当熟悉,这也有助于他们转到SIP的开发中来;(6)方便的扩展性:由于CGI是接口而不是语言,它能够很容易的被扩展和重用于类似SIP这样的协议。为此,IETF的Network工作组提出了SIPCGI。尽管SIP与HTTP在基本语法和请求-响应模型上非常类似,但它们之间也存在着很多区别,例如SIP可以将

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功