APP下载

基于Android的SIP软交换系统

2014-04-04苏静班正宇

物联网技术 2014年3期

苏静+班正宇

摘 要:本文结合SIP软交换系统的结构,针对SIP软交换系统的功能及相关问题,对系统做出扩展,确保系统在响应正常业务的同时,增加了对Android系统的支持,结合NDK开发框架,设计了一套基于SIP协议的安卓客户端。

关键词:SIP;软交换;DNK开发框架;安卓客户端

中图分类号:TN915 文献标识码:A 文章编号:2095-1302(2014)03-0039-04

0 引 言

掌上通信软件作为手机应用的一部分,正发挥着巨大的作用。随着互联网的不断改善,在互联网上利用网络进行语音通话已成为现实,网络电话应运而生。网络电话的原理正是采用了VoIP(Voice over Internet Protocol)技术实现的,VoIP是一种建立在互联网上的数字化或分组化的语音传输技术。在VoIP中常用的控制协议(Control Protocol)有H.323、SIP、MEGACO和MGCP。其中SIP(会话发起协议)是建立VOIP连接的IETF标准。为了方便用户之间的通信,需要设计一款基于SIP协议的Android应用软件。

SIP协议的Android平台的通信软件开发可以进一步提高人们间的通信质量,解决人与人之间由于远距离通信而产生高昂话费的问题。

1 需求分析

SIP软交换系统是一个支持SIP协议通信的服务器,分为服务器和Android客户端两部分。服务器主要完成数据的封包请求的转发,路由的寻址等,让用户从Android客户端中发出的数字信息通过服务器的处理转发给另外一个客户机,而另外一个Android客户机通过解析从服务器中收到的数据,并把信号还原为原始数据,从而达到通信的目的。主要完成以下服务:服务器启动,将服务器绑定到指定的IP地址上,客户机连接这个IP地址上服务器,客户机通话等。

本系统是为了达到用户与用户间的通信,让用户能在不通过三大运营商的收费情况下,实现免费通话,从而降低了用户的经济开销,并且通话不受任何限制,使用户之间畅所欲言。

SIP软交换系统由服务器和Android客户端组成:

服务器功能:数据的读取与解析,SIP版权认证,创建SIP协议栈,绑定地址、定位、认证、能力,会话管理,数据包的接收、解析、过滤、组装与应答,Proxy行为;

Android客户端功能:连接服务器,发送语音,接收数据,解析数据。

本系统的整体功能结构图如图1所示。

图1 SIP系统整体结构图

2 系统设计

2.1 系统主要功能设计

(1)数据(*.xml)的读取与解析设计

在Proxy Server启动之前,需要预先对Proxy Server进行设置,如SIP栈的名称、IP、端口、路由等参数的设置,考虑到系统移植和维护的方便性,把这些信息写在配置文件configuration.xml中,在系统启动的时候读取,以便于移植和维护。

(2)SIP版权认证设计

系统启动时,应对系统的版权进行验证,只有合法授权的系统才能正确启动。主要认证最大用户数(Max),失效日期(Expiration),系列号(Serial),网卡物理地址(Mac),密钥 (Key),同样这些信息也写在了配置文件license.xml中。

(3)创建SIP协议栈设计

栈是一种数据结构,只能在一端进行插入和删除的线性表,按照后进先出的存取规则。创建SIP协议栈后,在接收到一个以太网数据帧时,数据可以方便地从协议栈里面由底部向顶部上升,同时报文首部在各层协议上被去掉,方便读取报文数据。报文首部的协议标识在每层协议上都很方便检查,这样就可确定数据接收的上层协议,同时按照事先规定好的规则分析出需要的内容,例如数据包的源端口号、源IP、目的IP等等。

(4)注册、定位、认证、能力设计

Proxy Server启动以后,要获得代理的服务,必须先注册成为Proxy Server的用户,用户信息存放在后台数据库中,包含用户名、密码、服务器地址等。要对用户进行代理,必须能定位用户位置,对用户身份进行认证,确认后把呼叫方和被叫方的地址、媒体参数等提供给对方,以完成会话的创建。

(5)会话管理设计

包括发送和终止会话、修改会话参数、激活服务等。

(6)数据包的接收、解析、过滤、组装与应答

系统在收到以太网的数据包后,对数据包进行解析,过滤掉“非法”数据包,获取“合法”的正常业务信息,组装数据包进行交互。

(7)Proxy行为设计

当Proxy Server收到一个请求时,在做代理之前,首先应该判断自己是否需要响应该请求,是否非法或者没有可信任证书需要认证,是应该按有状态还是无状态的方式处理。无状态,即Proxy只是简单的转发到下一个Proxy Server,之后该请求的相关资料就被丢弃。这些信息(特别是事务信息)会被有状态的Proxy保留,所有接收到的请求和所有接收请求的应答的相关信息被保留。这些被它保留的信息用于处理与这个请求相关的后续消息。

(8)Android连接服务器设计

当服务器注册到一个网络地址上时,客户端的Android手机获取服务器绑定的IP地址,然后发送请求,若IP地址无误,那么Android客户端顺利连接上服务器。

(9)Android发送语音和接收语音消息设计

根据已经连接上SIP软交换系统的Android客户端,会话终端向目标终端发起呼叫或者会话终端监听被叫,经服务器验证注册,采用SIP协议实现语音通信。

2.2 Android内线呼叫运作模式设计

Android内线呼叫运作的具体流程如图2所示。关键步骤分析如下:

F1:INVITE是终端代理201@192.168.6.5 作为主叫向代理服务器192.168.6.180发送INVITE请求;

F2:407 Proxy Authentication Required表示代理服务器对主叫进行INVITE认证发出407请求码,认证成功;

F3:ACK为回送ACK请求,表示已收到Proxy对INVITE请求的最终响应;

F4:INVITE为终端代理201@192.168.6.5 作为主叫向代理服务器192.168.6.180发送INVITE请求,邀请发起一路呼叫;

F5:INVITE表示代理服务器192.168.6.180向终端代理被叫202@192.168.6.3发送INVITE请求,邀请被叫发起一路呼叫;

F6:100 Trying被叫Android终端向服务器发出呼叫处理中的应答消息,100 Trying;

F7:180 Ringing表示被叫Android终端振铃并向服务器发出振铃消息,180 Ringing;

F8:100 Trying表示服务器向主叫发出呼叫处理中的应答消息,100 Trying;

F9:180 Ringing为服务器向主叫发出振铃消息,180 Ringing,主叫振铃;

F10和F11:200 OK表示主叫和被叫之间呼叫建立,发出200 OK应答消息;

F12和F13:ACK为呼叫建立的确认消息;

F14和F15:BYE为结束请求;

F16和F17:200 OK表示主叫和被叫之间结束呼叫,发出200 OK应答消息。

图2 Android内线呼叫时序图

2.3 Android客户端设计

根据RFC 3261的定义,多媒体会话(Multimedia Session)是指一组多媒体发送者和接收者,以及从发送者到接收者的数据流。Android客户端界面设计图如图3所示。

图3 主界面设计图

3 数据库设计

3.1 系统E-R图

本系统的实体有计算机SIP服务器、Android终端用户,其E-R图如图4所示。

图4 SIP系统的E-R图

3.2 数据表的结构

本系统一共使用了47张数据表,由于表与表之间的关系太过于复杂,故这里只选出其中用到的2张表。其中t_extension表主要是用来扩展电话机的电话号码。extension为主键,如表1所列。

表1 t_extension表

字段名 数据类型 说明 备注

extension 自动编号 电话号码 主键

tenant_id 文本 用户名编号 外键

extension_type 文本 扩展类型 ——

sup_extension 默认(no) 子扩充 ——

而留言表则主要是保存前表与表之间的关系。id_table_id为主键。如表2所列。

表2 id_table表

字段名 数据类型 说明 备注

id_table_id 自动编号 记录ID 主键

table_name 自动编号 扩展表明 ——

next_id 文本 保存时间 ——

quantity 文本 保存通信记录 ——

4 系统功能实现

要对Android进行过滤,难点不在采用什么样的方法去过滤,而在于如何识别异常,这就需要系统在开发和数据解析的时候严格遵循标准的协议,这样才能精确识别异常数据包。

4.1 Android运行主界面

主页面主要用来显示输入电话号码的地址栏和连接SIP服务器的IP地址。

4.2 SIP账户设置模块

SIP账户设置的列表页面主要是进行基本的通话设置与起始连接SIP服务器的设置,用户有很多不同的选择。当点击所选的SIP账户名称时,就会转到该设置的详细设置页面。SIP账户设置的列表页面如图5所示。

图5 设置列表

SIP账户的详细设置主要有认证用户名称、密码、服务器和域的设置与查看,让用户知道如何设置才能顺利连接上服务器,以及连接使用的端口是多少,最重要的是还能查看支持的VoIP类型。

4.3 认证用户名模块

因为连接服务器的Android客户端可能有很多,所以必须进行认证,只有认证合法了才能进行友好回话,否则不予以连接,或者连接中断。用户可进行多种选择。该页面如图6所示。

图6 认证用户名列表页面

4.4 Wi-Fi模块

Wi-Fi模块的列表页面可列出当前能够使用的各个网络的连接方式名称,用户可从中进行选择。当点击所选的连接网络方式名称时,就会转到该详细页面。该页面如图7所示。

在Wi-Fi模块详细页面主要设置如何使用Android手机连接SIP服务器,同时还提供优先拨打功能。该设置信息一目了然。该页面如图8 所示。

图7 Wi-Fi模块页面

这样设置完成后,就可以拨打电话,然后通话了。

5 结 语

本文从Android手机出发,针对SIP软交换系统的原理,在Android手机上进行合理的设置与开发,实现了基于Android的SIP软交换系统。同时通过对SIP软交换系统的扩展,使其在Android客户端上也能使用,最终在一定程度上实现了对系统的改良。

图8 详细展示设置

参 考 文 献

[1] 张扬. 基于SIP的软交换在集群通信系统中的设计与实现[J].计算机系统应用,2010,19(1):31-35.

[2] 刘习义.基于SIP协议VoIP软终端的研究与实现[J].信息安全与技术,2011(10):33-35.

[3] 杨磊,林海泉,朱剑锋.SIP软交换系统群呼的实现[J].软件,2012,33(3):44-46.

[4] 刘德山,金百东,张建华.Java 程序设计[M].北京:科学出版社,2012.

[5] 隆益民.Android应用开发[M].广州:中山大学出版社,2010.

SIP soft switch system base on Android

SU Jing, BAN Zheng-yu

(College of Information and Electrical Engineering, Qiongzhou University, Sanya 572022, China)

Abstract: Aiming at the function of SIP soft switch system and some related problem, the system is extended in combination of the SIP soft switch system structure, which added support for Android system and ensured that the system in response to normal business at the same time. A set of Android client based on SIP protocol is designed in combination of NDK development framework.

Keywords: SIP; soft switch; NDK development framework;Android client

Android内线呼叫运作的具体流程如图2所示。关键步骤分析如下:

F1:INVITE是终端代理201@192.168.6.5 作为主叫向代理服务器192.168.6.180发送INVITE请求;

F2:407 Proxy Authentication Required表示代理服务器对主叫进行INVITE认证发出407请求码,认证成功;

F3:ACK为回送ACK请求,表示已收到Proxy对INVITE请求的最终响应;

F4:INVITE为终端代理201@192.168.6.5 作为主叫向代理服务器192.168.6.180发送INVITE请求,邀请发起一路呼叫;

F5:INVITE表示代理服务器192.168.6.180向终端代理被叫202@192.168.6.3发送INVITE请求,邀请被叫发起一路呼叫;

F6:100 Trying被叫Android终端向服务器发出呼叫处理中的应答消息,100 Trying;

F7:180 Ringing表示被叫Android终端振铃并向服务器发出振铃消息,180 Ringing;

F8:100 Trying表示服务器向主叫发出呼叫处理中的应答消息,100 Trying;

F9:180 Ringing为服务器向主叫发出振铃消息,180 Ringing,主叫振铃;

F10和F11:200 OK表示主叫和被叫之间呼叫建立,发出200 OK应答消息;

F12和F13:ACK为呼叫建立的确认消息;

F14和F15:BYE为结束请求;

F16和F17:200 OK表示主叫和被叫之间结束呼叫,发出200 OK应答消息。

图2 Android内线呼叫时序图

2.3 Android客户端设计

根据RFC 3261的定义,多媒体会话(Multimedia Session)是指一组多媒体发送者和接收者,以及从发送者到接收者的数据流。Android客户端界面设计图如图3所示。

图3 主界面设计图

3 数据库设计

3.1 系统E-R图

本系统的实体有计算机SIP服务器、Android终端用户,其E-R图如图4所示。

图4 SIP系统的E-R图

3.2 数据表的结构

本系统一共使用了47张数据表,由于表与表之间的关系太过于复杂,故这里只选出其中用到的2张表。其中t_extension表主要是用来扩展电话机的电话号码。extension为主键,如表1所列。

表1 t_extension表

字段名 数据类型 说明 备注

extension 自动编号 电话号码 主键

tenant_id 文本 用户名编号 外键

extension_type 文本 扩展类型 ——

sup_extension 默认(no) 子扩充 ——

而留言表则主要是保存前表与表之间的关系。id_table_id为主键。如表2所列。

表2 id_table表

字段名 数据类型 说明 备注

id_table_id 自动编号 记录ID 主键

table_name 自动编号 扩展表明 ——

next_id 文本 保存时间 ——

quantity 文本 保存通信记录 ——

4 系统功能实现

要对Android进行过滤,难点不在采用什么样的方法去过滤,而在于如何识别异常,这就需要系统在开发和数据解析的时候严格遵循标准的协议,这样才能精确识别异常数据包。

4.1 Android运行主界面

主页面主要用来显示输入电话号码的地址栏和连接SIP服务器的IP地址。

4.2 SIP账户设置模块

SIP账户设置的列表页面主要是进行基本的通话设置与起始连接SIP服务器的设置,用户有很多不同的选择。当点击所选的SIP账户名称时,就会转到该设置的详细设置页面。SIP账户设置的列表页面如图5所示。

图5 设置列表

SIP账户的详细设置主要有认证用户名称、密码、服务器和域的设置与查看,让用户知道如何设置才能顺利连接上服务器,以及连接使用的端口是多少,最重要的是还能查看支持的VoIP类型。

4.3 认证用户名模块

因为连接服务器的Android客户端可能有很多,所以必须进行认证,只有认证合法了才能进行友好回话,否则不予以连接,或者连接中断。用户可进行多种选择。该页面如图6所示。

图6 认证用户名列表页面

4.4 Wi-Fi模块

Wi-Fi模块的列表页面可列出当前能够使用的各个网络的连接方式名称,用户可从中进行选择。当点击所选的连接网络方式名称时,就会转到该详细页面。该页面如图7所示。

在Wi-Fi模块详细页面主要设置如何使用Android手机连接SIP服务器,同时还提供优先拨打功能。该设置信息一目了然。该页面如图8 所示。

图7 Wi-Fi模块页面

这样设置完成后,就可以拨打电话,然后通话了。

5 结 语

本文从Android手机出发,针对SIP软交换系统的原理,在Android手机上进行合理的设置与开发,实现了基于Android的SIP软交换系统。同时通过对SIP软交换系统的扩展,使其在Android客户端上也能使用,最终在一定程度上实现了对系统的改良。

图8 详细展示设置

参 考 文 献

[1] 张扬. 基于SIP的软交换在集群通信系统中的设计与实现[J].计算机系统应用,2010,19(1):31-35.

[2] 刘习义.基于SIP协议VoIP软终端的研究与实现[J].信息安全与技术,2011(10):33-35.

[3] 杨磊,林海泉,朱剑锋.SIP软交换系统群呼的实现[J].软件,2012,33(3):44-46.

[4] 刘德山,金百东,张建华.Java 程序设计[M].北京:科学出版社,2012.

[5] 隆益民.Android应用开发[M].广州:中山大学出版社,2010.

SIP soft switch system base on Android

SU Jing, BAN Zheng-yu

(College of Information and Electrical Engineering, Qiongzhou University, Sanya 572022, China)

Abstract: Aiming at the function of SIP soft switch system and some related problem, the system is extended in combination of the SIP soft switch system structure, which added support for Android system and ensured that the system in response to normal business at the same time. A set of Android client based on SIP protocol is designed in combination of NDK development framework.

Keywords: SIP; soft switch; NDK development framework;Android client

Android内线呼叫运作的具体流程如图2所示。关键步骤分析如下:

F1:INVITE是终端代理201@192.168.6.5 作为主叫向代理服务器192.168.6.180发送INVITE请求;

F2:407 Proxy Authentication Required表示代理服务器对主叫进行INVITE认证发出407请求码,认证成功;

F3:ACK为回送ACK请求,表示已收到Proxy对INVITE请求的最终响应;

F4:INVITE为终端代理201@192.168.6.5 作为主叫向代理服务器192.168.6.180发送INVITE请求,邀请发起一路呼叫;

F5:INVITE表示代理服务器192.168.6.180向终端代理被叫202@192.168.6.3发送INVITE请求,邀请被叫发起一路呼叫;

F6:100 Trying被叫Android终端向服务器发出呼叫处理中的应答消息,100 Trying;

F7:180 Ringing表示被叫Android终端振铃并向服务器发出振铃消息,180 Ringing;

F8:100 Trying表示服务器向主叫发出呼叫处理中的应答消息,100 Trying;

F9:180 Ringing为服务器向主叫发出振铃消息,180 Ringing,主叫振铃;

F10和F11:200 OK表示主叫和被叫之间呼叫建立,发出200 OK应答消息;

F12和F13:ACK为呼叫建立的确认消息;

F14和F15:BYE为结束请求;

F16和F17:200 OK表示主叫和被叫之间结束呼叫,发出200 OK应答消息。

图2 Android内线呼叫时序图

2.3 Android客户端设计

根据RFC 3261的定义,多媒体会话(Multimedia Session)是指一组多媒体发送者和接收者,以及从发送者到接收者的数据流。Android客户端界面设计图如图3所示。

图3 主界面设计图

3 数据库设计

3.1 系统E-R图

本系统的实体有计算机SIP服务器、Android终端用户,其E-R图如图4所示。

图4 SIP系统的E-R图

3.2 数据表的结构

本系统一共使用了47张数据表,由于表与表之间的关系太过于复杂,故这里只选出其中用到的2张表。其中t_extension表主要是用来扩展电话机的电话号码。extension为主键,如表1所列。

表1 t_extension表

字段名 数据类型 说明 备注

extension 自动编号 电话号码 主键

tenant_id 文本 用户名编号 外键

extension_type 文本 扩展类型 ——

sup_extension 默认(no) 子扩充 ——

而留言表则主要是保存前表与表之间的关系。id_table_id为主键。如表2所列。

表2 id_table表

字段名 数据类型 说明 备注

id_table_id 自动编号 记录ID 主键

table_name 自动编号 扩展表明 ——

next_id 文本 保存时间 ——

quantity 文本 保存通信记录 ——

4 系统功能实现

要对Android进行过滤,难点不在采用什么样的方法去过滤,而在于如何识别异常,这就需要系统在开发和数据解析的时候严格遵循标准的协议,这样才能精确识别异常数据包。

4.1 Android运行主界面

主页面主要用来显示输入电话号码的地址栏和连接SIP服务器的IP地址。

4.2 SIP账户设置模块

SIP账户设置的列表页面主要是进行基本的通话设置与起始连接SIP服务器的设置,用户有很多不同的选择。当点击所选的SIP账户名称时,就会转到该设置的详细设置页面。SIP账户设置的列表页面如图5所示。

图5 设置列表

SIP账户的详细设置主要有认证用户名称、密码、服务器和域的设置与查看,让用户知道如何设置才能顺利连接上服务器,以及连接使用的端口是多少,最重要的是还能查看支持的VoIP类型。

4.3 认证用户名模块

因为连接服务器的Android客户端可能有很多,所以必须进行认证,只有认证合法了才能进行友好回话,否则不予以连接,或者连接中断。用户可进行多种选择。该页面如图6所示。

图6 认证用户名列表页面

4.4 Wi-Fi模块

Wi-Fi模块的列表页面可列出当前能够使用的各个网络的连接方式名称,用户可从中进行选择。当点击所选的连接网络方式名称时,就会转到该详细页面。该页面如图7所示。

在Wi-Fi模块详细页面主要设置如何使用Android手机连接SIP服务器,同时还提供优先拨打功能。该设置信息一目了然。该页面如图8 所示。

图7 Wi-Fi模块页面

这样设置完成后,就可以拨打电话,然后通话了。

5 结 语

本文从Android手机出发,针对SIP软交换系统的原理,在Android手机上进行合理的设置与开发,实现了基于Android的SIP软交换系统。同时通过对SIP软交换系统的扩展,使其在Android客户端上也能使用,最终在一定程度上实现了对系统的改良。

图8 详细展示设置

参 考 文 献

[1] 张扬. 基于SIP的软交换在集群通信系统中的设计与实现[J].计算机系统应用,2010,19(1):31-35.

[2] 刘习义.基于SIP协议VoIP软终端的研究与实现[J].信息安全与技术,2011(10):33-35.

[3] 杨磊,林海泉,朱剑锋.SIP软交换系统群呼的实现[J].软件,2012,33(3):44-46.

[4] 刘德山,金百东,张建华.Java 程序设计[M].北京:科学出版社,2012.

[5] 隆益民.Android应用开发[M].广州:中山大学出版社,2010.

SIP soft switch system base on Android

SU Jing, BAN Zheng-yu

(College of Information and Electrical Engineering, Qiongzhou University, Sanya 572022, China)

Abstract: Aiming at the function of SIP soft switch system and some related problem, the system is extended in combination of the SIP soft switch system structure, which added support for Android system and ensured that the system in response to normal business at the same time. A set of Android client based on SIP protocol is designed in combination of NDK development framework.

Keywords: SIP; soft switch; NDK development framework;Android client