当前位置:文档之家› 基于SIP协议的VOIP系统设计与实现

基于SIP协议的VOIP系统设计与实现

第8卷 第10期 2008年5月167121819(2008)1022589204 科 学 技 术 与 工 程Science Technol ogy and Engineering Vol .8 No .10 M ay 2008Ζ 2008 Sci .Tech .Engng .基于S IP 协议的V O IP 系统设计与实现徐 炽 张闻芳13(湖南城市学院计算机科学系,湖南城市学院,益阳,413000)摘 要 近年来,SI P 作为Vo I P 的相关协议得到了越来越广泛的应用和越来越多厂商的支持。

介绍了Vo I P 的基本原理及SI P 协议的基本内容。

基于SI P 协议的Vo I P 作为主要研究内容,探讨了I P 电话的相关协议、相关标准和关键技术,对SI P 这种比较新的I P 电话协议进行了研究分析,设计出一套基于SI P 协议的Vo I P 电话服务器系统,包括系统分析、系统设计、系统实现,最后对该软件进行了测试,使该软件的开发达到了预期的目的。

关键词 Vo I P SI P radius openSER 服务器中图法分类号 TP393.04; 文献标志码 A2007年9月12日收到第一作者简介:徐 炽(1981—),男,湖南益阳人,硕士研究生,研究方向:软件工程。

3通信作者简介张闻芳(1981—),女,湖南衡阳人,硕士研究生,研究方向:图形图像。

近年来,Vo I P 及其应用技术日渐成熟,在全球范围内获得了高速发展,已经成为影响下一代网络(NG N )的一个主要因素[1]。

目前构建Vo I P 系统结构的信令协议主要有H.323协议和SI P 协议[2]。

虽然H.323协议正主导着Vo I P 技术,但其实现复杂、成本高、建立连接时延大,在现有网络中很难实现互联互通。

因此,I ETF 组织提出了会话初始协议SI P (Sessi on I nitial Pr ot ocol )[3]。

SI P 将网络设备的复杂性推向网络边缘,支持单播通信、多播通信、名称映射和重定向业务,还支持类似呼叫转发、呼叫拒绝等电信业务的实现以及支持用户移动性。

与H.323协议相比,SI P 协议更适合于智能用户终端,使用更加灵活、简单。

I P 技术是一种面向无连接的技术,I P 网络只提供一种“尽力而为”(Best Eff ort )的服务,这对于只要求准确率而对时延没有严格要求的数据业务来说是合适的,而对于音、视频等实时通信的QoS (Quality of Service )却难以保证。

因此,如何为音、视频等实时通信保证合理可预测的QoS,提供与公共开关电话网PST N(Public S witched Telephone Net w ork )可媲美的质量和服务已成为当前I P 领域中一个重要的研究热点[4]。

1 VO I P 和S I PVo I P (Voice Over I P ),顾名思义,就是在I P 网络上进行语音通信,但现在的Vo I P 已不仅仅是指传统意义上的语音通信,而是指音频、视频、数据合一的实时多媒体通信[5]。

VO I P 就可定义为:在整个语音通信过程中,部分或全部采用分组交换技术,通过I P 网络来进行的语音传输都可称之为V0I P 。

VO I P 的本质特征在于是否语音分组交换技术。

分组交换技术是I nternet 采用的体系结构,其核心是将要传输的数据报文分成长度较短且具有标准格式的分组,并采用存储转发机制,有效降低数据传输过程中的网络延迟,满足数据传输和交换的要求。

总之,VO I P 采用分组交换技术,具有以下特点[6]:(1)数据包排队传输产生时的时延较小,基本满足语音通信的要求。

(2)路由共享,传输线路动态统计时分复用,资源利用率高。

(3)为不同传输速率、不同编码方式、不同同步方式、不同通信规程的用户之间提供了语音通信的环境。

(4)采用分组技术,传输误码率低:从源端到目的端存在多个路由,网络中某一节点发生问题时,分组可以自动选择另外路由,从而保证通信不会中断,可靠性高。

(5)分组交换设备要比传统的PST N 设备交换机便宜,其运营和维护费用少,并且有利于新业务的扩展,经济性好。

(6)由于I P 协议本身提供的是面向无连接的服务,并不适合对实时性要求较高的语音服务,所以语音服务质量较难保证。

(7)要提供高质量的语音服务,尚存在一定的技术难度。

SI P 协议是由I ETF 最早提出的一种Vo I P 实现方式[7],其基本思想是在互联网环境中,组建一个平面结构的、可用于点对点对话需求的系统。

SI P 作为一个广义的电话信令协议,具有以下几个主要特征[8]:(1)SI P 可以发起会话,也可以邀请用户加入以其他方式(如S AP 、LDAP 等)发布或建立的会话。

(2)SI P 可以支持单播会话,也可以支持多播会话。

(3)SI P 与网络协议独立,即与底层协议无关。

SI P 可以在不同的传输层协议,如TCP 或UDP 。

当使用UDP 的时候,SI P 可以更好的支持多播会话;当使用T CP 的时候,SI P 可以更容易的穿透防火墙。

(4)SI P 支持很多其他协议,如RS VP 、RTP 和RTCP 、RTSP 、S AP 、S DP 等,但SI P 的功能和操作不取决于以上任何协议。

(5)SI P 是基于文本的协议,简单灵活,可扩展性好;SI P 采用Client/Server 的体系结构,在很大程度上继承了HTTP 和S MTP 协议的特征[9]。

(6)SI P 协议是无状态的,服务器可以保持也可以不保持呼叫状态。

(7)SI P 透明支持名字映射和重定向服务,可以实现I S DN 和I N 电话用户服务;通过网关,SI P 可以实现PST N 电话之间的呼叫。

(8)SI P 支持用户的移动性和移动业务。

图1 VO I P 分组交换2 系统简介本系统主要由SI P 服务器、基于RAD I U S 的AAA 服务器、用户注册平台以及Talk 软电话四部分组成。

Vo I P 系统网络拓扑结构在vTalk 系统的实现过程中,SI P 服务器使用开源的OpenSER 来完成。

OpenSER 是由基于I PTE L 公司开发的SER 发展出来的,采用GP L (General Public L icense )许可证发行的自由软件,它是符合ANSI C 语言标准写成架构在Free BS D 、L inux 2L ike (PC )系统和Solaris (Sun )系统,OpenSER 是支持符合RFC 3261的协议规范且架构在TCP 和UDP 之上的SI P 协议,是一套高效能、易于修改组态成形的语音服务器系统。

除了可以充当SI P 服务器外,OpenSER 还可作为短消息服务(S MS,Short Message Service )、即时通信(I M ,I nstant Message )、RAD I U S 记账和授权以及基于W eb 的用户配置、账号申请等充当网关。

3 系统的设计与实现本文中的SI P 服务器、Radius 服务器及Apache 、Mysql 服务器均建立在同一机器上,此机器使用的操作系统为Free BS D。

图2 32TI ER 的架构0952科 学 技 术 与 工 程8卷如图2所示,基于32TI ER的架构,本文把系统规划为后端服务器层、前端应用程序服务器层、客户端及管理者端的应用层。

首先,依照服务器环境的需求将服务器安装在Free BS D操作系统,并在此服务器上将依序安装以下各个服务器或系统:・OpenSER(后端SI P语音服务器)・MyS QL Server(后端数据库服务器)・Radius服务器用来做AAA认证・Apache HTTP Serve(前端应用程序服务服务器)・v oi p_reg(前端网络电话服务系统系统)・两个客户端使用Talk本文利用OpenSER来提供Si p的语音相关服务,MyS QL Server用来记录OpenSER提供服务时所产生的数据,作为帐务产生的依据。

经由Apache HTTPServer下透过v oi p_reg来提供用户帐号申请服务,两台用来测试OpenSER运作情形的机器,均安装上Talk客户端。

由于SI P服务器是架设在Free BS D操作系统之上的,所以除在安装SI P服务器前需要先装好Free BS D操作系统,还需要添加其他一些必须的软件,如软件编译环境g make、Apache、Mysql、PHP等,以用来开发本系统。

在服务器上安装好OpenSER 后,由于编译安装了Mysql模块,下面通过对OpenS2 ER的设定,使其支持Mysql数据库,使用Mysql数据库模块的目的是为了增强服务器的强韧性,并在重新开机后仍能保持用户的认证数据及记录用户位置,从而避免了OpenSER在不使用数据库模块的情况下,会出现无法对用户的身份认证,或在服务器重开机之后会失去用户位置数据等情况。

Radius认证过程系统对用户认证时主要涉及三个数据包,这三个数据包分别是:认证请求包(Access2Request)、认证响应包(Access2Accep t)和认证拒绝包(Access2 Reject)[10]。

第一个是用户认证时需要发给Radius 服务器的数据包,后两个是Radius服务器返回给Radius客户端的认证通过或认证拒绝的响应数据包。

本系统对用户认证时采用两次认证的方法:①首先,运行客户端电话软件vTalk后,出现登陆界面,用户需要输入账号和密码,然后生成Ac2 cess2Request数据包,将该数据包传给主Radius服务器。

②若主Radius服务器在一定时间内没有响应,则重发一次该请求包,若还没有响应,则把该包发给备份Radius服务器,备份服务器增强了系统的健壮性。

Radius服务器是一段软件代码,它收到请求包后,解包得到认证信息,并与数据库中的用户信息做比较。

在此是比较账号对应的密码,若密码相同,则认证通过,发回Access2Accep t包;若密码不同,认证未通过,发回Access2Reject包。

③当用户端收到Access2Accep t包时,表明用户合法,打电话的界面出现。

当用户端收到Access2 Reject包时,表明用户不合法,打电话的界面不出现。

这是首次认证。

当合法用户输入电话号码打电话时,呼叫控制服务器提取用户的账号和密码,生成Access2Request数据包,它以NAS的身份与Radius服务器通信,对用户进行二次认证,过程与第一次认证相同。

若呼叫控制服务器收到Radius服务器发回的Access2Accep t包,说明验证通过,可使用户与语音网关建立联接,并得到可通话最长时间或卡上余额等信息;若呼叫控制服务器收到Radius 服务器发回的Access2Reject包,说明验证未通过,用户与语音网关不能建立联接。

相关主题