毕业论文基于SIP协议局域网内通话的实现.docx
《毕业论文基于SIP协议局域网内通话的实现.docx》由会员分享,可在线阅读,更多相关《毕业论文基于SIP协议局域网内通话的实现.docx(30页珍藏版)》请在冰豆网上搜索。
毕业论文基于SIP协议局域网内通话的实现
2014届本科毕业论文(设计)
题目:
基于SIP协议局域网内通话的实现
二○一四年六月制
目录
第一部分设计说明书(或毕业论文)
一、设计说明书(或毕业论文)……………………………()
第二部分过程管理资料
二、毕业论文(设计)课题任务书()
三、本科毕业论文(设计)开题报告()
四、本科毕业论文(设计)中期报告()
五、毕业论文(设计)指导教师审阅表()
六、毕业论文(设计)评阅教师评阅表()
七、毕业论文(设计)答辩评审表()
2014届本科生毕业设计说明书(论文)
基于SIP协议外线通话的实现
2014年5月
基于SIP协议局域网内通话的实现
摘要
软交换(Softswitching)是利用把呼叫控制功能与媒体网关分开的方法来沟通公用电话交换网(PSTN)与IP电话(VoIP)的一种交换技术。
在研究基于SIP(SessionInitiationProtocol)的软交换系统时,发现了SIP软交换系统的缺陷,诸如在系统的可移植性,健壮性,稳定性,脆弱性,安全性等方面。
本次设计结合SIP软交换系统的结构,针对SIP软交换系统的这些缺陷及相关问题,对系统做出改良,确保系统在响应正常业务的同时,又能识别非正常业务对系统引发的诸如安全等方面的风险问题,并且达到避让风险的目的。
在可移植性方面,本次设计将系统部分C系列语言开发的模块全部改用跨平台的Java来编写;在健壮性和稳定性方面,对基于SIP的IP数据包进行分析,结合系统本身结构,针对性的提出以太网数据包的过滤策略,完善了数据包解析模块;在脆弱性和安全性方面,对系统的认证模块进行分析,指出存在的缺陷,提出改良的意见。
另外,在实现外网通话的过程中,对引入外网网关(Gateway)之后引发的一系健壮性方面的问题,通过这些缺陷的集群效应,分析了引发这类缺陷的原因,针对系统环境和附属设备本身缺陷所引发的系统缺陷,提出了应对措施及改善方案。
本次论文的意义在于对SIP软交换系统品质改良的同时,还从发现问题,分析问题,提出解决方案,最终解决问题的角度提出了对软件品质进行改良的思路和具体实现过程。
关键字:
SIP;数据包过滤;可移植性;健壮性;安全性;脆弱性
SIPProtocolCallsintheLANBasedontheRealization
Author:
XuJun
Tutor:
Zhujianfeng
ABSTRACT
SoftswitchingistousethecallcontrolfunctionisseparatedfromthemediagatewaytocommunicatePublicSwitchedTelephoneNetwork(PSTN)andtheexchangeofanIPtelephony(VoIP)technology.InresearchbasedontheSIP(SessionInitiationProtocol)ofsoftswitchsystem,foundtheSIPsoftswitchsystemdefects,suchasthesystemofportability,robustness,stability,andvulnerabilities,security,etc.ThisdesigncombinedwiththeSIPsoftexchangesystemstructure,thesedefectstotheSIPsoftswitchsystemandrelatedproblems,tomakeimprovementtothesystem,ensuresysteminresponsetonormalbusiness,atthesametimealsocanidentifyabnormaloperationsonthesystemcausedbyriskssuchassecurityproblem,andachievethegoalofriskavoidance.
Intermsofportability,thisdesignwillbepartoftheClanguageseriessystemsdevelopedbyallmodulesconvertcross-platformJavatowrite;Intermsofrobustnessandstability,basedontheSIPIPpacketsareanalyzed,combinedwiththestructuralsystemitself,putstheEthernetpacketfilteringstrategy,improvethepacketparsingmodule;Intermsofvulnerabilityandsecurity,authenticationmoduleofthesystemwereanalyzed,pointsoutthedefects,putforwardtheimprovementopinion.Inaddition,intheprocessofrealizethetelephony,fortheintroductionofthenetworkGatewayfollowedbyaseriesofrobustnessissues,throughtheclustereffectofthesedefects,analyzesthecausesofthesedefects,inviewofthesystemenvironmentandtheaccessoryequipmentitselfdefectscausedbysystemdefects,andputsforwardthecountermeasuresandimprovementplan.
ThemeaningofthisthesisliesinthequalityimprovementofSIPsoftswitchingsystematthesametime,alsofromfindingproblems,analyzingproblems,proposesolutions,andeventuallytheAngleputforwardtosolvetheproblemofsoftwarequalityimprovementideaandconcreterealizationprocess.
Keywords:
SIP;Packetfiltering;Portability;Robustness;Security;vulnerability
目录
1绪论
1.1系统开发背景
随着Internet的规模不断扩大和信息通信产业的的迅速发展,以软交换为核心的下一代网络已经成为电信网络演进的主流方向。
在电路交换向分组交换演进的过程中,一系列先进的软交换系统也随之运运而生,越来越多的电信业务得以在软交换系统中实现,以此同时,人们对软交换系统服务质量的要求也越来越高。
Internet的迅速发展,使得网络越来越复杂,在以太网中传输的数据也越来越复杂,大量无用的数据将导致内存的虚耗,加之“黑客”、病毒和DoS(DenialofService)等众多安全因素的威胁,众多应用系统已不堪重负,最终导致系统奔溃。
在错综复杂的Internet环境中,如何保证系统正常运转并对用户提供高效的服务,确保系统安全运行同样也成为了构筑SIP软交换系统的一大难题。
针对以上问题,论文主要讨论如何结合SIP软交换系统和SIP数据包的结构,对从以太网获得的数据包进行解析过滤,将“非法”的数据包和可能引发系统异常的数据包及时丢弃,将“安全隐患”拒之门外,节省处理异常数据包的时间开销和内存开销,保证系统安全运行,提高SIP软交换系统的健壮性,保证服务质量。
2SIP的概要
2.1SIP协议简介
计算机之所以能在Internet自由的交换数据,是因为它们都遵循了共同的协议。
SIP(SessionInitationProtcol)协议和这些协议一样,同样允许使用Internet端点(用户代理)来寻找参与者并且允许建立一个可共享的会话描述。
SIP允许创建基础的networkhosts(代理服务器),让终端用户注册,发出会话邀请等请求。
SIP本身并不提供服务,而是提供了一个基础,用来实现不同的服务,在SIP的基础上可以建立其它协议,与SIP一起协调工作,对终端用户提供完整的服务。
也可把SIP看做是一个轻形的,多用途的工具,可以用来创建,修改和终止会话,它独立运作于通讯协议之下,并且不依赖建立的会话类型。
SIP协议在IETF多媒体数据及控制体系协议栈结构的位置,如图1-1所示。
图1-1SIP协议栈位置
2.2SIP协议的基本概念
2.2.1多媒体会话
根据RFC3261的定义(SIP协议基本概念均参考RFC3261及相关文档),多媒体会话(MultimediaSession)是指一组多媒体发送者和接受者,以及从发送者到接受者的数据流。
例如一个多媒体会议就是一个多媒体会话。
一个会话由一组用户名称、会话ID、网络类型、地址类型以及各个单元的地址来确定。
2.2.2用户代理
用户代理(UA,UserAgent)也称SIP终端,是指支持SIP协议的多媒体会话终端。
一般使用支持SIP协议的路由器作为SIPUA。
UA包括用户代理客户机(UAC,UserAgentClient)和用户代理服务器(UAS,UserAgentServer)。
一般说的UA均是指二者的总称,因为一个SIP终端既要做UAC发起呼叫,同时也要做UAS接收呼叫。
用户代理客户机是指在SIP会话建立过程中主动发送会话请求的设备,例如,主叫SIP终端。
当代理服务器向被叫终端发送会话请求时,它就成为用户代理客户机。
用户代理服务器是指在SIP会话建立过程中接收会话请求的设备,例如,被叫SIP终端。
当代理服务器接收主叫终端发送会话请求时,也作为用户代理服务器。
2.2.3代理服务器
目的:
接收请求,决定将这些请求传送到何处,并且将它们传送到下。
代理服务器(ProxyServer)的作用就是传递主叫UA发送的会话请求到被叫UA,然后将被叫UA的响应传递回主叫UA,它相当于主叫UA和被叫UA之间传递会话消息的一座桥梁。
代理服务器在接收到主叫UA的会话请求后。
首先要向注册服务器请求查找被叫UA的位置以及主、被叫UA的呼叫策略信息,只有找到被叫UA并且此呼叫是允许的,代理服务器才会向被叫UA发送会话请求。
代理服务器一般在SIP会话中都是需要的。
3类代理:
(1)保留呼叫状态的代理(CallStatefulProxy):
存储从INVITE到BYE的一个会话所有状态信息。
(2)保留事务状态的代理((Transaction)StatefulProxy)事务状态代理,存储一个指定事务相关的状态信息直到这个事务结束。
(3)不保留状态的代理(CallStatefulProxy)不保留状态代理不保存任何状态信息。
它们接收一个请求,将它发往下一跳,并且立即删除与那个请求相关的所有状态信息。
当不保留状态代理收到一个应答时,它仅仅基于通过Via标题头(Viaheader)的分析来决定路径,并且它不为之维持状态。
2.2.4重定向服务器
为了减少负责路由请求的代理服务器的负荷,Proxy在重定向时只是返回用户有可能出现的位置列表,由用户代理去进行用户定位的所有尝(位置列表将放置在Contact头域中)。
重定向服务器返回的状态码是3xx,响应的3xx类有:
“300”:
MultipleChoices
“301”:
MovedPermanently
“302”:
MovedTemporarily
“305”:
UseProxy
“380”:
AlternativeService
重定向服务器(RedirectServer)是向主叫UA指明重新呼叫被叫UA的位置的设备。
如果主叫UA呼叫被叫UA,当重定向服务器收到主叫UA发送的会话请求消息后,查找被叫UA的位置信息,然后将其返回给主叫UA,使主叫UA重新向该位置发起会话请求,此位置可以是被叫UA的位置,也可以是一个代理服务器的位置,接下来主叫UA如同直接呼叫被叫UA或者向代理服务器呼叫的流程一样。
一个重定向服务器通常返回一个可选择的用户可能出现的地址,这个重定向服务器实际上返回一个统一资源定位器。
2.2.5位置服务器
位置服务器(LocationServer)是为代理服务器和重定向服务器等提供UA信息的设备,位置服务器记录了注册服务器接收到的UA的信息,位置服务器与注册服务器通常在同一个设备上。
2.2.6注册服务器
注册服务器(RegistrarServer)接受用户注册,注册的内容(如本地号码等信息)一般是存储在位置服务器上,供后续查询使用。
二者都是逻辑组件,一般存在于同一台服务器上。
2.3SIP协议功能概况
SIP是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话或者会议,也可以邀请参与者参加已经存在的会话,比如多方会议。
媒体可以在一个已经存在的会话中方便的增加或者删除。
SIP透明地支持名字映射和重定向服务,用户可以使用一个唯一的外部标志而不用关心他们的实际网络地点。
2.3.1SIP在建立和维持终止多媒体会话协议上,支持5个方面
户定位:
确定终端用户的位置,用于通讯
用户可达性:
确定用户参与会话的意愿程度
用户能力:
确定通信媒体和媒体的使用参数
会话创建:
建立呼叫方和被叫方的会话参数
会话管理:
发送和终止会话,修改会话参数,激活服务等等
2.4SIP的消息
SIP协议是一个基于文本的协议,使用UTF-8字符集。
一个SIP消息既可以是一个从客户端到服务器端的请求,也可以是一个从服务器端到客户端的一个应答。
即消息分为两类:
请求消息:
UA发送到ProxyService的请求消息
状态消息:
ProxyService应答UA的状态消息
基于SIP协议的IP(IPv4)数据包格式如图2-1所示:
2.4.1请求消息
请求消息的一般格式:
请求消息=Request-Line(请求起始行)
MessageHeader(消息头:
通用头部,请求头部,实体头部)
CRLF(空行)
MessageBody[消息体]
一个SIP请求消息由请求行开始,请求行由一个方法符号(Method)、一个Request-URL和一个SIP版本指示(SIP-Version)组成,请求的三个部分通过空格符分隔,行的结束用CRLF(回车换行)符号表示,起始行、每一个包头行,空行、都必须由CRLF组成。
即使消息正文没有,也必须有一个CRLF。
请求头的格式如下:
Request-Line=
Method(空格)Request-URL(空格)SIP-VersionCRLF
首部长度
区分服务
总长度
标识
片位移
协议
首部检验和
填充
目的端口号
数据检验和
方法(Method)类型:
这个规范规定了6中方法:
REGISTER用于登记联系信息,INVITE,ACK,CANCEL用于建立会话,BYE用于结束会话,OPTIONS用于查询服务器负载。
SIP扩展、标准RFC追加可能包含扩展的方法。
Request-URL:
它标志了这个请求所用到的用户或者服务的地址。
Request-URI禁止包含空白字符或者控制字符,并且禁止用”<>”括上。
SIP-Version:
SIP的版本号(SIP/2.0)。
2.4.2状态消息
状态消息和请求消息的区别在于在START-LINE中是否包含一个STATUS-LINE。
一个status-line在由数字表达的status-code之前,是一个协议的版本串,每一个元素之间用一个单个空格分开
请求消息的一般格式
Status-Line=
SIP-Version(空格)Statue-Code(空格)Reasong-PhraseCRLF
Statue-Code:
是一个3位的数字(100-600),用来标志处理请求的一个结果。
2.5消息头
Via,Route,Record-Route,Proxy-Require,Max-Forwards,Proxy-Authorization,以上信息必须包含在消息报头中具体内容将在后面章节阐述。
而一个合法的SIP请求必须至少包含如下头域:
TO,FROM,Cseq,Call-ID,Max-Forwards,Via。
这6个字段是SIP消息的基本组成部分,他们提供了用于路由用的核心信息,包含了消息的地址,响应的路由,消息传递次数,详细的顺序,事务的唯一标志。
关于包头的详细内容将在后面的安全性章节阐述,下面是包头示例:
Via:
SIP/2.0/UDP192.168.6.5:
10325;rport;branch=z9hG4bKc3fd93ae60
From:
"201"201@192.168.6.180>;tag=6bf47056
To:
202@192.168.6.180>
Call-ID:
705f33547a23096e124053673d23988d@192.168.6.5
Contact:
201@192.168.6.5:
10325>
CSeq:
1INVITE
Max-Forwards:
70
Allow:
INVITE,CANCEL,ACK,BYE,NOTIFY,REFER,OPTIONS,INFO,MESSAGE,UPDATE
Supported:
replaces
Content-Type:
application/sdp
User-Agent:
DGP306-O(1012090)
Content-Length:
221
v=0
o=CMI-SIPUA316760INIP4192.168.6.5
s=SIPCALL
c=INIP4192.168.6.5
t=00
m=audio20008RTP/AVP08418101
a=rtpmap:
101telephone-event/8000
a=fmtp:
1010-15
a=fmtp:
18annexb=no
a=rtcp:
20009
a=sendrecv
3SIP软交换系统分析
3.1SIP软交换系统开发背景
开发环境:
Linux5
开发工具:
Eclipse,JDK1.6,Tomcat5.5,PostgreSQL8.4.6
开发语言:
Java,C
3.2SIP软交换系统功能分析
数据(*.xml)的读取与解析
在ProxyServer启动之前,需要预先对ProxyServer进行设置,如SIP栈的名称,IP,端口,路由等参数的设置,考虑到系统移植和维护的方便性,把这些信息写在配置文件中(configuration.xml),在系统启动的时候读取,便于移植和维护。
SIP版权认证
系统启动时,应对系统的版权进行验证,只有合法授权的系统才能。
主要认证最大用户数(max),失效日期(expiration),系列号(serial),网卡物理地址(mac),密钥(key),同样这些信息也是写在了配置文件中(license.xml)。
创建SIP协议栈
栈是一种数据结构,是只能在一端进行插入和删除的线性表,按照后进先出的存取规则。
创建SIP协议栈后,在接收到一个以太网数据帧时,数据可以方便的从协议栈中由底向上升,同时去掉各层协议上的报文首部。
每层协议都方便的检查报文首部的协议标识,以确定接收数据的上层协议,并按事先定制的规则分析出需要的内容,如数据包的源IP、目的IP、源端口号等等。
用户注册、定位、认证、能力
ProxyServer启动以后,要获得代理的服务,必须先注册成为ProxyServer的用户,用户信息存放在后台数据库中,包含用户名,密码,服务器地址等等。
要对用户进行代理,必须能定位用户位置,对用户身份进行认证,确认后把呼叫方和被叫方的地址,媒体参数等提供给对方,以完成会话的创建。
会话管理
包括发送和终止会话,修改会话参数,激活服务等等。
数据包的接收、解析、过滤、组装与应答
系统在收到以太网的数据包后,对数据包进行解析,过滤掉“非法”数据包,获取“合法”的正常业务信息,组装数据包进行交互。
proxy行为
当ProxyServer收到一个请求时,在做代理之前,首先应该判断自己是否需要响应该请求,是否非法或者没有(信任书)需要认证,是应该按有状态还是无状态的方式处理。
无状态,即proxy只是简单的转发到下一个ProxyServer,之后就会丢弃该请求的相关资料。
有状态的proxy会保留这些信息(尤其是事务信息),保留每一个接收的请求和每一个接收请求的应答的相关信息。
它保留这些信息用于处理与这个请求相关的后续消息。
增值业务
视频电话、群呼、呼叫保留、呼叫传送、外线呼叫、三方通话等功能,具体内容参考3.4SIP软交换系统的工作模式。
3.3SIP软交换系统需改良的模块分析
根据2.3.1SIP软交换系统的功能分析,本次对SIP软交换的改良主要涉及到版权认证模块,数据解析模块,安全认证模块。
其中数据解析模块有涉及XML文件解析模块,报文解析模块,报文解析有分为请求消息解析,应答消息解析等模块。
安全认证主要是终端与Proxy的认证,重要与HTTP摘要认证为主。
3.4SIP软交换系统的工作模式
3.4.1ProxyServer的运作模式
以图2-2为例,A(201@192.168.6.5)先送出一个INVITE讯息呼叫B(201@192.168.6.5),proxyserver收到之后便会去做查询,查询完成之后便得知目前B实际的地址在202@192.168.6.1.3,于是proxyserver便会以202@192.168.6.1.3发出INVITE讯息。
B在回复200OK的时候,会将200OK的response响应给proxyserver,再由proxyserver转送给A。
图3-1代理服务器运作模式
3.4.2SIP内线呼叫运作模式
具体流程如图3-2所示:
关键步骤分析:
F1、INVITE
终端代理201@192.168.6.5作为主叫向代理服务器192.168.6.180发送INVITE请求。
F2、407ProxyAuthenticationReq