时间:2023-03-10 15:05:29
导言:作为写作爱好者,不可错过为您精心挑选的10篇sip协议,它们将为您的写作提供全新的视角,我们衷心期待您的阅读,并希望这些内容能为您提供灵感和参考。
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)25-0035-02
1 引言
第三代合作伙伴3GPP选择sip协议作为第三代移动通信系统的IP多媒体子系统(IMS)心灵协议,是因其具有灵活、无缝和可扩展性,它将逐渐成为下一代网络NGN中关键控制协议之一。它可以满足多媒体通信与网络电话的要求,所以很多的通讯公司均先后研发出了支持SIP的服务产品与终端产品。为充分适应这些技术的发展,SIP协议需要进行进一步的完善与扩充,但是如果协议在设计环节出现任何问题都会给系统带来难以预料的影响,所以为保证协议的稳定性和安全性,应在早期开发时尽可能挖掘其隐蔽的问题并找出解决方案。
目前研究SIP协议主要涉及以下几方面:基于SIP的应用于服务[3];SIP测试工具和方法;其他协议与SIP协同工作。因时间着色Petri网TCPN[2]在描述带有较复杂的交互动作和时间约束的系统过程中具有明显的优势,故本文以TCPN为模型分析工具进行SIP协议分层TCPN模型的构造,并在不同状态下实现分层建模。
2 SIP协议事务处理
SIP协议通过事务进行会话控制,其主要事务有INVITE、non_INVITE事务。INVITE事务完成会话的创建,non_INVITE事务则完成会话的保持与关闭。SIP端系统(User Agent,UA)是连接服务器从而发送服务请求的一种应用程序。因UA向服务器发送服务请求并接收来自服务器的响应,故一个UA有UAS(用户服务器)和UAC(用户客户端)两部分,这两部分就是SIP协议中的两个最关键的参与者,UAC创建呼叫请求,UAS接受呼叫给出响应。
在SIP的请求消息中,最常用的有INVITE、REGISTER、CANCEL和BYE。其响应消息有1xx、2xx、3xx、4xx、5xx、6xx6种。SIP的呼叫方式有3种:从UAC到UAS的直接呼叫、从UAC发出的重定向呼叫、服务器发起呼叫。本文主要针对应用最广的直接呼叫进行分层建模。
3 SIP协议TCPN分层建模
本文应用CPN Tools[4]进行INVITE事务的分层建模,并在不同的抽象层次上描述协议行为细化模型。这种方法在一个层次中描述协议细节,有利于优化或局部完善协议模型,也能有效把握模型规模,便于确认模型与分析协议性质。
SIP协议的TCPN分层模型中的10个模型页分别处于不同的层次,每页所描述的是对应抽象级别上的协议功能,低级别页作为高级别页的替代变迁子页。各层次模型页功能描述如下表1。各层内部模块细化是依据UAS与UAC在INVITE事务执行过程中具备的不同状态进行的,因在terminated状态下协议无行为,而仅表示终止事务,故没有单独描述此状态。
3.1 总体流程建模
SIP协议分层TCPN模型的top page(顶级页)如下图1所示,它总体描述了协议运行的网络拓扑,其中使用了2个替代变迁对NET、UAS和UAC在协议运行过程中的交互行为进行描述。UAC通过NET向UAS发送REQUEST型数据,UAS将RESPONSES型数据通过NET回传给UAC。
Client页用以描述UAC的行为,下图2所示为其页模型。图中的3个替代变迁对应的子页能够更加细致地描述处于不同状态的UAC端行为。库所Scene用以描述UAC的行为,变迁TransErr可以模拟协议在不同条件下出现传输层错误时所采取的处理方式。
3.2 网络层建模
下图3所示为NET页模型,描述的是由UAC到UAS的网络传输建模。库所Schannel_Em记录的是有多少个消息被成功地传送到了UAS端,其初值为0。库所CollectorCTS用以收集不可靠链路丢失的消息。变迁RCTS与CTOS用以模拟不可靠链路。不可靠链路的具体建模方式如表2所示。
通过上述时间类型、弧表达式及防卫表达式的应用,可模拟存在重复数据包、延迟、丢包的不可靠链路。若对其某些参数做适当的修改,便可动态调整其链路的可靠性,以此来真实地模拟不可靠链路。
3.3 具体行为建模
本文表1中的Sproceeding、Ccalling、Cproceeding等底层模型页描述UAS和UAC在不同状态下处理事件的过程,也就是对协议的具体行为建模。下文以UAC端处于Ccalling状态时的应答消息处理行为为例,阐述具体行为的模型描述方式。
下图4所示为UAC处于Ccalling状态时处理INVITE消息的模型,即Ccalling页模型。图中CallTimer表示UAC处于超时状态时消息的处理过程,CallResp表示UAC收到UAS应答时对消息的处理过程。库所TimerAorB用以控制A与B两个定时器的触发。融合库所cloneCs用队列存放UAC每次状态的变化,其队首为UAC的当前状态,Scenec记录UAC的当前状态和导致UAC变为此状态的事件。Message存放初始条件下从SIP协议上层收到的INVITE请求。Channel_Em用以记录当前是否收到UAS的应答,其初值为0。
当收到UAS会送的响应消息时,变迁CallResp被点火执行,即运行其对应的函数代码。此函数代码中sta与st均为SCENEC型变量,st是处理消息前UAC的状态,sta为处理消息后UAC的状态。Action部分调用函数call_resp(st,resp)完成UAC对不同类型响应消息的处理,该函数代码如下:
由上述代码可知,处理类型为r2xx的应答消息后UAC处于TERM状态,处理类型为r3xx的应答消息后处于COMP状态,处理类型为r1xx的应答消息后处于PROC状态。
4 总结
本文给出了SIP协议处理INVITE事务的TCPN分层模型,对该协议总体流程、网络层、UAS与UAC间的具体行为在不同模型层次上分别进行建模。该层次模型规模可控、功能划分直观、数据结构完备,为建模后期协议的验证与改进提供了较完善的模型基础。
参考文献:
[1] 姜秀玉,杨峰,崔再惠.SIP协议实现中消息解析的研究[J].计算机工程与设计,2010(7).
【中图分类号】TP3 11.1 【文献标识码】A 【文章编号】1672-5158(2013)01―0085―02
1 引言
VOIP(基于网络的语音传送)是语音通信发展的趋势。大多数电信厂商均认为,虽然目前VOIP在语音通信流量中只占很少的比例,但随着时间的推移和技术的发展,VOIP电话语音所占比例正快速增长。作为实现VOIP系统的软交换协议,会话控制协议(SIP)和H.323、XMPP协议就是其中的三大主流技术,其中,SIP信令控制协议正越来越受到人们的关注。
2 SIP协议
SIP最早源于二十世纪九十年代中期哥伦比亚大学提出的研究成果,后经IETF的一个标准化应用控制(信令)协议。众所周知,它可用来建立、修改以及终止多个参与者参加的多媒体会话进程。参与会话的成员可以通过单播连网、组播方式或者两者结合的形式进行通信。并能动态调整和修改会话属性(如会话带宽要求、传输的媒体类型、媒体编解码格式等)。
SIP协议中有客户机和服务器之分。客户机是向服务器发送sIP请求并能够与服务器建立连接的终端应用程序。用户(User Agent)和(Proxy)中都包含客户机的应用。服务器是一个逻辑实体,它响应客户机发出的SIP请求,提供接收、拒绝和重定向等服务,并回送应答的应用程序,主要包括用户服务器、服务器、重定向服务器、注册服务器等四类服务器:
SIP协议最初规定了六种信令:REGISTER、INVITE、ACK、BYE、CANCEL、OPTIONS。其中REGISTER用于客户端向注册服务器等级和绑定用户的位置等消息;INVITE和ACK用于创建会话呼叫,成功建立呼叫会话,或者用于改变已经建立以后会话属性;BYE用以终结和断开已经建立的会话;CANCEL用于终止已经发起但还未完全建立会话的请求;OPTIONS用于查询其它用户和服务器能力。
SIP在设计上充分考虑了对其它协议的扩展适应性。它支持许多种地址描述和寻址,包括用户名@主机地址;被叫号码@PSTN网关地址;Tel:010-5 9988888普通电话的描述等。这样,SIP主叫按照被叫地址就可以识别出被叫在模拟电话网络上的位置,然后通过一个与模拟电话网络相连的语音网关发起请求呼叫。
SIP主要支持三种方式建立呼叫,包括:由用户客户机(UAC)直接向用户服务器(UAS)发起的呼叫,由用户客户机在重定向服务器的协助下进行的重定向呼叫和由服务器代表用户客户机向被叫发起呼叫。图1是由SIP建立呼叫的模型。
3 SIP和H.323、XMPP协议的比较
SIP和H.323、XMPP协议都是作为多媒体通信的应用层控信令协议设计的。H.323试图用VOIP电话替换传统的模拟通信,且只是传输方式由原来的电路交换变成了分组交换,就如同模拟传输变成数字传输。XMPP(可扩展通讯和表示协议)以Jabber协议为基础,可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。而SIP协议侧重于将IP电话作为因特网上的一个应用,相比较于较其它协议(如FTP,E-mail等),虽然都利用RTP作为媒体传输的协议,但H.323是一个相对复杂的协议,增加了信令和QoS的要求。
H.323采用基于抽象语法标记ASN.1和压缩编码规则的简洁的二进制编码规则发送其各种形式的信息。XMPP是基于可扩展标记语言(XML)的协议,它继承了在XML环境中灵活的扩展性,因此,基于XMPP的应用具有超强的可扩展性。而SIP以文本形式描述的协议,类似于HTTP。基于文本的编码协议,能够显而易见的表示其头域的意义,如From、To、Subject等域名。过去的实践,已经充分证明了这种不需要复杂文档说明的标准的优越性。
在电话会议支持方面,由于H.323协议中规定由多点控制单元(MCU)集中控制会议各种功能,要求所有参加会议终端都将控制消息发送到MCU,MCU极有可能成为电话会议的瓶颈;另外H.323协议只支持信令的单播功能,而不支持组播功能,限制了协议的可扩展性,同时也降低了可靠性。虽然XMPP是支持组播的消息类型,但协议本身仍需为创建方便和高效的多人视频会议进行完善。而SIP协议设计之初就设立了分布式的呼叫机制,其组播功能不仅能够便于会议控制,而且简化了用户的定位、邀请群组等,并且节约了宽带的占用。
H.323中专门定义了用于增值业务的协议,比如H.450.1、H.450.2和H.450.3等。XMPP协议经过扩展以后,可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容系统和基于地址的服务等应用程序。同样,SIP协议也可以非常方便地支持补充业务或智能业务。只要充分利用SIP已定义的方法和头域,就可以轻松实现对这些业务的支持。对于无法通过现有的方法和头域实现的业务,因SIP本身就是一种可扩展的协议,所以也可以通过扩展特定的方法和头域实现相应的智能业务,并在体系结构中增加业务,提供一些补充服务或与智能网设备的接口。
在H.323中,呼叫建立过程涉及到三条信令信道的协调,呼叫建立所需的时间很长。XMPP使用订阅协议管理多方通信中的带内通信(主要是多方数据通信),并为带外多方通信提供基础平台。在SIP中,会话请求过程是和媒体信道协商过程等一起建立的。尽管第二版的H.323协议,已经优化了呼叫请求的过程,缩短了呼叫建立会话的时间,但仍无法与SIP只需要1.5个回路时延建立呼叫相提并论。并且,H.323的呼叫信令通道和H.245控制信道需要依赖可靠的传输协议。而SIP独立于低层协议,一般使用UDP协议,通过利用自己信令层的可靠性机制来保证消息的可靠传输。
4 企业SIP电话设计方案
考虑SIP在企业网中的实际应用,本文按照SIP协议规范提出了一套VOIP电话系统设计方案,SIP终端不仅可以在企业内部网络正常应用,也可以透过企业防火墙借助互联网进行应用,图2其系统结构示意图。也就是说,企业IP电话网络中使用私有地址的SIP终端可以作为被叫被外界SIP终端呼叫。这样VOIP在企业网络的应用才有意义。
4.1 系统基本工作流程
用户注册:用户通过客户机自动向SIP服务器端发送注册信息;该服务器的SIP注册服务模块接收注册信息后,要先对客户端进行身份验证,确认其合法后再对该用户的状态信息、IP地址信息等进行更新。
会话建立:用户A准备发起一次与用户B通话时,首先A通过其用户客户机将会话请求传至SIP服务器,之后通过该服务器进一步查找用户B的有关信息,并进行精确定位,服务器判定用户B是否具有接通能力,如果可以则将用户A的呼叫请求直接转发给用户B,否则服务器直接向A返回拒绝信息。
通话过程:如果A和B之问的通信链路建立成功,则他们之间直接进行通信直至会话结束,通话结束时向服务器发送会话结束请求。
4.2 系统协议结构
由于SIP仅是会话初始化协议,不能像H.323协议的通信系统那样提供全部的语音会话业务,必须协同其他协议共同来建立一个完整的多媒体业务体系结构,本方案采用的协议结构如图3。在应用层,SIP协议主要负责会话的建立、管理以及性能协商等任务,由于SIP协议本身提供了可靠的响应机制,故在传输层选用UDP协议也能保证信令的正确传输。实时流协议(RTSP)用于控制“一点到多点”的多媒体数据流。系统采用了资源预留协议(RSVP)和实时传输控制协议(RTCP),以确保系统具有较高的服务质量。资源预留协议规定和分配了IP网络的资源保护技术,可将资源预留给一个或多个给定的会话,并且该会话优先于任何试图参与双方之间的其它媒体交换;实时传输控制协议用来检测并潜在地解决发送问题,从而监控会话质量和检测网络问题以达到对QoS的监控。
实时传输协议(RTP)用来实现端到端的语音数据的实时传输业务。由于使用UDP协议,得到了端到端的QoS支持,基于SIP协议的IP电话系统,在网络带宽被其它业务负载较重时,可以降低在超时连接时导致呼叫建立的延迟,因此本方案在传输层选用无状态的UDP来传送语音信息。这里以将RTP看作是在UDP协议上运行应用服务,构成支持实时数据传递所需的传输功能的不同部分。
5 国内外SIP协议的应用
自2000年6月,瑞典举行的Voice On the Net 2000展示会以来,VOIP主流通信协议的发展和变化一直为人们所重点关注。
目前,采用H.323的VOIP服务对终端设备的要求较高。XMPP协议是IETF近期的标准,有待进一步完善。而SIP协议优势非常明显,它简单灵活、分布控制,而且极易与其它服务集成。因此,在开发VOIP产品的同时,要关注SIP的发展,借鉴其有用之处。不可否认,在整个电信网络中,一直存在采用H.323协议统一VOIP实现的呼声,不过,电信厂商和运营公司均承认SIP的灵活性,并已采取行动利用SIP协议开发相关应用产品。
微软公司:早在2000年,微软公司就推出了基于SIP协议的即时通信产品,经过不断优化和升级,其最新的版本是LYNC 2013,LYNC 2013提供了在线状态、即时消息、语音、视频、WEB会议等功能,已经占据了国际统一通信大部分市场。
AVAYA:从2004年就已经开始着手基于SIP的产品及解决方案的研发,而Avaya在SIP上的定位也非常明确,所以在解决方案的规划上,Avaya力求把SIP和原有的应用层解决方案紧密融合。并在原有应用的基础上扩展由于SIP的引入而增加的新的功能。CCS服务器是Avaya最新的SIP服务集成解决方案,CCS服务器集成了SIP中几乎所有的主要服务器功能,为企业基于SIP的通信网络提供集成的服务。
华为公司:近年来,华为公司认为随着基于SIP的VoIP实现门槛越来越低,语音业务将逐步退出主导地位,成为一种最基本的业务。因此,华为公司不仅仅了基于SIP的语音网关产品,如:迅时MX51系列语音网关;还推出了基于SIP的融合通信产品eSpace。
中图分类号:TN915.04 文献标识码:A文章编号:1007-9599 (2011) 09-0000-01
SIP Protocol and Application Analysis in The IMS
Zheng Zhijun
(China Tietong Telecommunications Corporation,Hengshui Branch,Hengshui053000,China)
Abstract:IMS is a 3GPP Release 5 version of the proposed support for IP Multimedia Subsystem services,SIP is an application layer control protocol for creating,modifying and terminating one or many of the multimedia sessions,SIP is the basic control of IMS agreement.This paper briefly describes IMS and SIP protocol,SIP protocol and then introduce the basic IMS applications and extended application.
Keywords:SIP;IMS;Application
一、SIP介绍
SIP(Session Initiation Protocol)是一个会话层的信令控制协议,它独立于底层协议,用于建立、修改和终止IP网上的双方或多方的多媒体会话。1999年由IETF组织提出,它是一个在基于IP网络中,实现实时通信应用的一种协议。SIP支持、重定向、登记定位用户等功能,支持用户移动,与RTP/RTCP、SDP、RTSP、DNS等协议配合,可支持和应用于语音、视频、数据等多媒体业务,同时可以应用于presence(呈现)、instant message(即时消息)等特色业务。它的应用非常灵活。
SIP有下面五个基本功能:
(一)确定用户位置:确定被叫SIP用户所在的位置。SIP的最强大之处就是用户定位功能,它可以利用SIP终端在注册服务器上的注册信息实现用户定位,也可以利用其他定位服务器,如DNS、LDAP等提供的定位服务来增强其定位功能。
(二)确定用户可用性:确定被叫会话终端是否可以参加此会话。SIP支持多种地址描述和寻址方式,包括SIP-URI、Tel-URL和SIPS-URI。这样,SIP主叫根据被叫地址,就可以识别出被叫是否在传统电话网上,然后通过一个与传统电话网相连的网关向被叫发起并建立呼叫。
(三)确定用户能力:确定被叫终端可用于参加会话的媒体类型及媒体参数。SIP终端在消息交互过程中携带自身的媒体类型和媒体参数,这使得会话双方都可以明确对方的会话能力。
(四)建立会话:建立主被叫双方的会话。SIP会话双方通过协商媒体类型和媒体参数,最终选择双方都具有的能力建立起会话。
(五)管理会话:可以更改会话参数或中止会话。SIP本身已经从最初致力于P2P通信发展成为了下一代网络(NGN)综合协议体系的核心。
二、IMS系统
IMS(IP Multimedia Subsystem)是IP多媒体子系统,本质上说是一种网络结构。核心思想是在3G核心网中支持多媒体会话及其他基于SIP协议的业务,目的将蜂窝移动通信和互联网技术结合起来,能提供综合业务的下一代通信网络,它独立于接入和承载技术,即IMS的核心特点是采用SIP协议和与接入的无关性。
三、SIP协议在IMS中的应用
IMS的主要功能实体包括呼叫/会话功能实体(CSCF)、原籍用户服务器(HSS)、媒体网关控制实体(MGCF)和媒体网关(MGW)等。其中最重要的实体是CSCF和HSS。CSCF主要负责对多媒体会话进行处理,其功能包括多媒体会话控制、地址翻译以及对业务协商进行服务转换等,相当于SIP服务器。CSCF分为CSCF(P-CSCF)、查询CSCF(I-CSCF)和服务CSCF(S-CSCF)。P-CSCF是IMS系统中用户的第一个接触点,所有的SIP信令都必须通过P-CSCF。I-CSCF提供到归属网络的入口,将归属网络的拓扑隐藏起来,并可通过归属用户服务器HSS灵活选择S-CSCF,并将SIP信令路由到S-CSCF。S-CSCF是IMS的核心,它位于归属网络,提供UE会话控制和注册服务。在SIP会话中他是SIP的服务器。HSS类似于现在移动网络的HLR,它是IMS中所有与用户和服务相关的数据的主要存储器。存储在HSS中的数据主要包括用户身份、注册信息、接入参数和服务触发信息等。
SIP信令消息从移动用户发起,经UMTS(通用移动通信系统)陆地无线接入网络进入核心网,通过SGSN(GPRS服务支持节点)和GGSN(GPRS网关支持节点)到达CSCF,经过处理后送往其他IMS网络、MGCF/MGW网络或外部IP网络。在此过程中,SGSN和GGSN仅查看消息的目的IP地址,不分析消息的内容,起到路由器的作用。
当3GPP RS在规划IMS时,由于SIP的灵活性和可扩展性,决定采用SIP机制作为IMS网络的会话初始化协议。3G网络被分为3个不同的域:电路交换域、分组交换域和IP多媒体交换域。其中IP多媒体子系统域是3G中最重要的域,这个域采用SIP作为主要的信令协议向用户提供基于因特网的多媒体服务。从逻辑上讲,所有的3G终端都包含一个SIP用户,IP多媒体网络节点就是SIP规范中所提到的。
一、前言
随着企业生产自动化程度不断加深,管理效率不断上升,企业逐步由分层管理向扁平化管理转变。而伴随着企业管理方式的转变,企业通信系统也开始向融合智能化发展。这是因为传统的有线对讲系统、调度系统、广播系统、监控系统等是多个独立的系统,其重复布网、维护复杂等问题无法有效得到解决。为了解决这些问题,首先需要将这些系统统一到一个网络中来,然后通过一个系统将用户使用的电话、对讲等语音终端进行管理。管理大容量的语音终端比较成熟的是软交换技术,同时可以发挥网络灵活接入的特点,完成各种系统统一接入的要求。
二、问题提出
传统的语音通信系统主要包括调度系统、有线对讲系统、应急通信系统等利用程控技术设计出不同操作模式的语音交换系统。这些系统由于主机与终端的差异导致骨干网络无法共用,导致运维复杂等。现在主流的语音交换技术为软交换技术,而软交换技术最为灵活的协议为SIP协议簇。但是SIP协议簇主要定义了终端基本的注册、呼叫、应答等基本状态内容,对于设备终端的属性及过程控制没有进行详细定义,因此导致了各个厂家SIP协议簇扩展内容的大不相同。在IP调度系统中,不同设备间交互的协议种类多,导致不同厂商的调度控制终端和软交换服务器间不能通用。如果通过扩展标准SIP协议簇来实现IP调度系统功能,并且简化IP调度系统协议种类,让不同IP调度系统设备厂商的设备实现通用。这将改变目前用户对多种网关设备无法统一管理的现状。传统设备不同操作模式的语音通信系统便可在同一软交换上实现。
三、扩展协议设计
基于IP的工业综合通信系统是标准软交换系统融合了调度、对讲系统特点在工业领域应用特点,通过对RFC3621的SIP协议簇进行补充实现的。标准的软交换系统设计了终端用户的管理、交换管理、状态管理等基本管理,调度系统系统则需要提供强插、强拆、监听、摘挂机状态、会议等等特殊功能。(图1)
SIP请求消息分为请求行、.消息头域及消息体三部分。消息头域中包含许多个消息头,分别携带着IP终端的各种信息。将在SIP请求消息的消息头域中加入自定义的消息头。增加的消息头表示调度控制终端需要让软交换服务器执行的调度功能。在消息头后加入需要参与该调度功能的话机号码。同时预留一个区域,供用户传送备用信息,如设备相关的型号,协议的版本等。当然自定义消息头遵从标准的SIP协议消息头格式,能够和标准的SIP消息头用相同的方法封装和解析,最终形成一个具有自定义消息头的SIP请求消息。
四、系统实际应用
基于SIP协议簇扩展的应用在企业通信系统中最为常见,如调度系统、有线对讲系统、广播系统等。但是各种语音通信系统的操作模式不同,导致SIP协议簇扩展信息的结构及内容的不同。
基于软交换的调度系统,主要功能是完成电话终端的两方通话、三方通话、强插、强拆等等功能。协助调度系统完成这些功能的终端叫调度台。调度台通过标配的键权电话来操作调度台,完成各项功能的实现。
当键权电话提机后,可操作键盘发送键权电话的操作指令。该指令的结构为:
长度是对整个信息长度一个说明,保证信息的完整性;键盘编号进行多键盘的区分;命令是不同操作功能的标识,命令主要是强插、强拆、三方通话、监听等等;包标识符是对本信息包类型进行说明,包标示符主要标注请求(REQUEST),回应(RESPONSE),事件通知(EVENT),命令(COMMAND)四种;序列号用来标识一次请求和回应;结束符标识说明本命令执行完毕结束;数据包内容是实际的内容。
例如:键权话机提机通过键盘向软交换提出呼叫一个用户的命令,首先构造一个INVITE请求,并把键盘发送的操作指令嵌入到协议中,然后这个请求会由Proxy层层转发,最后到达一个或者多个可能处理这个邀请的UAS,即调度服务器。一旦调度服务器收到这个消息并进行处理,那么通过发送2XX进行应答,如果拒绝则发送其他相应的标准SIP拒绝协议。这样,键盘通过发送扩展的sip协议完成对多个终端的控制,完成用户的调度功能需求。
另外,扩展SIP协议同样可以应用在有线对讲系统中。对讲系统主要功能特点是按键呼叫,松键终止语音,同时向相关岗位传送本机的工作状态。那么主要将本机状态发送到对讲主机,然后由主机向相关终端发送消息以便显示与之相关的终端状态。主要在包标识符中增加一个状态(STATE),然后在数据包内容中标识本机号码即可。
通过扩展SIP协议簇实现的基于软交换的调度系统、有线对讲系统功能在工业现场得到了广泛的应用。解决了工业语音网融合的问题,为用户设计整个企业的网络提供了技术保障。
引言
目前传统的公众交换电话网(PSTN)上传送着许多数据业务,由于快速增长的数据业务给并不适合传送数据业务的电话网造成了很大的压力。因此,基于分组技术的数据网与电路交换网最终必将走向融合,产生下一代由业务驱动的网络。软交换是下一代网络交换的核心,如果说传统电信网络是基于程控交换机的网络,而下一代网络则是基于软交换的网络。
1系统开发的技术基础
1.1软交换的概念
我国信息产业部电信传输研究所对软交换的定义是:“软交换是网络演进以及下一代分组网络的核心设备之一,它独立于传送网络,主要完成呼叫控制、资源分配、协议处理、路由、认证、计费等主要功能,同时可以向用户提供现有电路交换机所能提供的所有业务,并向第三方提供可编程能力。”
1.2 SIP协议介绍
会话初始化协议SIP(Session Initiation Protocol)是一个面向Internet 会议和电话的简单信令协议,SIP最初由IETF MMUSIC (Multiparty Multimedia Session Control) 工作组提出。它的主要目的是为了解决IP网中的
信令控制,以及同软交换机的通信,从而构成新一代的通信平台。
2 系统的总体设计和实现
2.1系统的层次结构
软交换采用业务与交换分离的设计思想,在系统设计结构上将软交换技术应用设计为三层结构,底层为用户接入层,中间为交换支撑层,最上面是业务实现层。系统的层次结构如图1所示。
2.2呼叫管理服务器的设计与实现
呼叫管理服务器处于该体系结构中的网络控制层,它是软交换系统的核心部分。呼叫管理服务器除了完成呼叫控制、连接控制和协议处理功能外,还将提供原来由网守设备提供的资源管理、路由以及认证、计费等功能。
软交换系统的运行需要SIP协议栈和SDP协议栈。客户端应该能够产生INVITE和ACK请求,能够产生和解析Call-ID,Content-Length,Content-Type,Cseq,From和To头部字段。呼叫管理服务器应该能够接收INVITE,ACK,BYE,CANCEL和REGISTER请求,应该能够产生和解析Call-ID,Content-Length,Content-Type,Cseq,Expires,From,Max-Forwards,Via和To头部字段。为了能够使客户端和服务端能够使用RTP传输语音流,SDP协议应该能够产生和解析v,o,s,c,t,m和a头部字段。
本系统以面向对象的方法设计了一个满足系统要求的最小SIP和SDP协议栈。SIP协议栈支持INVITE,ACK,BYE,REGISTER和CANCEL请求,支持100,180,200,300,400,500和600状态应答,支持Subject,Contact,Call-ID,Content-Length,Content-Type,Cseq,Expires,From,Max-Forwards,Via和To头部字段。SDP协议栈支持v,o,s,c,t,m和a头部字段。SIP和SDP中的头部字段都是以类的形式实现的,所支持的头部字段都是从一个抽象类Header继承而来。抽象类Header的定义如下:
class Header
{
public:
Header();
virtual ~Header() = 0;
virtual string encode() const = 0;
virtual void decode(const string& headerString) = 0;
virtual string getName() const = 0;
};
其中最主要的方法为decode,主要用来对相应的头部字段进行解析,getName方法返回当前的头部字段类的类名,encode方法用来产生相应的头部字段的字符串。
其中SIP协议栈的结构如图2所示:
解析层是对SIP消息进行解析和构造。解析层实现的关键在于各个头部字段类的设计及其相应decode方法的实现。解析层的实现借鉴了VOCAL开放源码中SipStack的头部字段类的设计方法,VOCAL的SipStack对RFC2543完全支持,但协议栈非常的庞大,设计的过程中参考了VOCAL的SipStack的头部字段类的设计形式实现了一个简洁,实用的SIP协议栈,SIP协议栈的大小还不到VOCAL的SipStack的1/10。
3 结束语
总之,基于SIP协议软交换系统的前景非常广阔,在这个领域,有许多技术难题等待人们去解决。相信在大家的共同推动之下,软交换系统的应用将得到快速的发展。
参考文献
[1]强磊等编著.基于软交换的下一代网络组网技术[M].人民邮电出版社,2005
中图分类号:TP393.0
文献标识码:A
DOI: 10.3969/j.issn.1003-6970.2015.07.025
0 SIP简介
SIP(会话初始协议,RFC3261)是IETF定义的通过IP网络建立和管理多媒体会话的协议,它采用的是众所周知的客户机服务器模式,它借鉴了SMTP(简单邮件传送协议,RFC2821)以及HTTP(超文本传送协议,RFC2616)的原理,而这两个协议是因特网上最成功的协议,同时,SIP是一个基于文本的协议,这意味着它更易于扩展、纠错和构建各种业务。因此,在IMS(IP多媒体子系统)中,选择SIP作为其会话控制协议,更易于建立具有更大承载能力的业务。
根据协议标准定义及实际研制经验,协议平台的SIP协议分析划分为以下几部分内容: SIP事务用户层(TU,Transaction User),事务层(TR,TRansaction),传输层(TP,TransPort),编解码模块(SIP PARSER/SDPPARSER,SIP协议编解码及SDP编解码),信令压缩模块(SIGCOMP)几个协议主体部分。除了这几个协议主体以外,SIP还需要实现和上层业务、数据库以及底层承载之间的接口,方便进行数据以及消息的交互。
SIP协议的TU层是SIP协议主体的重要组成部分,它的功能包含几个方面:(1)负责SIP消息到上层应用进程的消息分发;对上层应用屏蔽底层协议实现和分布式处理的细节;(2)对于需要创建对话的,维护对话的生命周期,管理对话的事务列表;(3)完成UAC, UAS或者pro xy的协议栈行为。
SIP采用的是一种offer/answer模型来描述会话。一个UA发起一个会话描述,称为offer,另一个UA以另一个会话描述来进行响应则为answer,一个offer/answer在一个Dialog上下文中进行交互,因为在具体实现SIP协议栈时,TU需要建立数据区来维护对话Dialog的相关信息,如图1所示,TU是通过建立leg模型来维护dialog的,TU建立的数据区称作leg,leg将会保存对于会话创建、会话释放,处理请求、处理响应所需要的一些关键信息,而这些信息是通过SIP消息从相应的头部中进行提取,和会话相关的主要头部From,To以及Call-ID中的信息将都会保存在leg中。
数据区的创建根据协议栈的行为分为UA和proxy两种情况。
Proxy方式下会存在一人一出两个Leg对象,人呼侧由TU收到事务层的初始请求而创建人呼侧Leg对象,消息通过人呼侧Leg处理后上报上层应用,上层应用处理结束后,转发初始请求到TU的出呼侧,TU进而创建出呼侧Leg对象以及下发SIP消息。
UA方式下,作为被叫网元,TU协议栈收到事务的初始请求后,创建人呼Leg后,通过初始请求消息上报上层业务,上层业务处理完业务逻辑后,通过人呼Leg回送响应到事务层。后续请求和响应都是通过人呼Leg传送。作为主叫网元,上层应用调用发送初始请求接口到TU,TU创建出呼侧Leg后,初始请求消息通过该Leg发送至事务层,后续请求和响应都是通过出呼侧Leg传递。
1 forking功能
fork即常说的分叉,一个请求可以分叉为发往多个目标地址的请求。假定B用户为一号多机用户,即一个SIP用户可以同时在很多终端上注册,每种终端可以实现不同的功能,比如便携PC支持视频而固定SIP电话可能功能简洁,B用户多个终端同时在线,当A用户呼叫B用户时,那么B用户的多个终端都会收到呼叫请求,它的任意终端都可以去响应这个呼叫。A最终会选择一个终端创建会话。
在IMS中实现fork功能涉及到的网元类型分为终端(UA行为)以及服务器(proxy)行为,根据协议的描述,梳理不同网元的处理原则。
1.1 终端处理原则
(1)请求
根据协议的描述,只有初始对话(独立事务)请求才会发生fork。终端可以在初始请求INVITE的码流中的通过添加Request-Disposition头部中指示进行fork的相关处理。同时,当被叫终端注册了多个时,主叫终端可以添加Accept-Contact,Reject-Contact参数,指示选择符合用户偏好的被叫以及优先级更高的被叫。
(2)响应
当fork发生时,多个被叫终端都会对主叫产生响应,未创建对话前,主叫终端可以接受或拒绝任何被叫终端的Fork应答,如果终端拒绝fork临时应答,那么必须发送cancel或者bye请求,这些请求是针对每个终端即每一个fork的分支都需要发出。
主叫终端如果接收到被叫终端一个fork分支的成功应答即2xx响应,开始创建会话;应该释放其他fork分支的早对话和非早对话,具体释放的方式根据各个fork分支的不同而不同。其中对于已经收到了临时响应的fork分支,不管是否建立起了早对话,则发送CANCEL请求来释放;对于没有收到任何的临时响应的fork分支,则不能发送CANCEL请求,通过TU设置的保护定时器超时,来释放该分支的相关资源。
主叫终端只能收到一条最终响应,如果收到2xx响应,则建立对话,如果为2xx以上的响应,则认为无法建立呼叫,则需要释放呼叫。
1.2 处理原则
(1)请求
提取码流中fork和用户喜好相关的字段,处理fork请求,比如到被叫的归属的服务器,需要将初始INVITE请求分叉为多个发送到被叫终端,对于非初始请求,需要进行转发。
(2)响应
立即转发除100(Trying)以外的任何临时响应。立即转发能成功建立对话的第一条2xx成功响应,如果其中任意一个地址接收呼叫,该网络服务器应该向其它地址发送CANCEL消息,如果由于网络时延而导致在服务器接收到多个200消息,服务器应当将后续的200消息拒绝掉,不应当后向转发,这样能保证只有一个终端能够建立对话。
对于3xx类以上的非成功响应,根据响应码的具体含义进行处理,比如3xx需要优先传到主教终端进行重定向,而对于4xx、5xx、6xx等非成功相应,即先保存这些响应,如果最后没有收到任何2xx响应,则根据协议规定的优选的原则选择响应码发送到主叫终端,结束整个会话。
2 SIP中fork的实现原理
SIP协议实现fork的基本逻辑功能:包括fo rk呼叫状态维护,管理多个临时响应创建的对话,并在会话创建之前维持多个早对话出/人呼侧消息的正确关联关系。上层业务维护多个Contact的上下文与分叉呼叫之间的关系,分别对早对话进行承载控制。
2.1 确定是否发生fork
当被叫终端注册了多个Contact地址时,SIP协议需要去提取码流中的相关字段,通过Accept-Contact,Reject-Contact参数确定好被叫目标集,并按照优先级将多个被叫终端进行排序,进一步的提取Request-Disposition头部的关键信息,对是否需要进行fork进行确定,该头部的内容如下:
proxy-directive=”proxy”
fork-directive="fork"/"no-fork"
parallel-directive="parallel"/"sequential"
其中proxy-directive确定当前的网元是否为proxy,fork-directive是用来指示是否需要fork,当指示为”no-fork”时,虽然被叫有多个,但是初始请求只会发送给优先级最高的被叫终端并不会产生分叉,如果指示为”fork”时,则进一步的读取parallel-directive指示的值,parallel-directive若为“parallel”为并行fork,并行fork则需要被叫归属的服务器将初始的INVITE请求同时发送给多个被叫终端,既并行呼叫;若为“sequential”为串行fork,串行fork则不需要服务器将初始请求同时发送给多个被叫终端,而是逐个的发送,先发给第一个优先级最高的被叫,如果接通,则不需要进行后续处理,如果没有成功接续,则继续发送给第二个被叫,依次类推。
2.2 TU中会话的维护
从前面SIP的简介我们得知,TU需要去维护会话dialog,而对于dialog的维护,TU需要创建数据区Leg去保存相应的信息,fork情况下,可能存在同时发起多路fork分支的呼叫,而多个被叫终端的对话信息是不完全相同的,如果把所有的信息都保存在简单情况下的一个Leg数据区里,则容易引起一些误操作,逻辑很不清楚,所以,可以采用TU维护多对数据区的方式来解决。
普通呼叫情况下,SIP的TU层只需要维护人呼侧和出呼侧的一对Leg即可,这样所有的消息都通过这一对Leg来进行关键信息的记录以及转发。而fork情况下,由于终端有多个,而每个终端都可以传送不同的请求和响应到主叫终端,为了对每个终端的信息进行彼此独立的进行保存,TU为每一个终端建立对应的数据区Leg,具体如图2所示,图2和图1比较可以看出,fork情况下,TU的人呼侧和出呼侧分别有多个Leg,而且人呼侧和出呼侧是一一对应的,比如In Leg(0)和Out Leg(0)是对应第一个被叫终端,用来记录第一个别叫终端和主叫之间的会话信息,并进行这一分支呼叫的消息转发,而In Leg(l)和Out Leg(l)是为主叫终端和第二个被叫终端服务的。当然,不管是fork的第一个分支还是第二个分支和主叫发生联系,这都是属于当前的这一个完整的会话,因此两路分支之间也可能有信息的交互,此时可以通过CALL这样的一个空间来保存两者的数据区索引,方便通过一个人呼叫的Leg能很快的访问到另一个分支的Leg。
3 具体流程
SIP的具体流程要分为并行和串行两种情形,分别进行介绍:
3.1 并行流程
在并行流程中主叫的请求会同时被发送给两个别叫用户,具体流程如图3所示,其中User AgentA为主叫用户,User Agent B,C为被叫用户,Proxy Server是IMS系统中的某个具体的网元,是服务器,主要是起到消息转发以及完成fork功能的作用。
各步骤的具体含义如下:
主叫用户A发起请求INVITE到服务器,对应图上消息(1);
假定此服务器是被叫归属地的网元,它能检测到有多个被叫联系contact地址,同时通过Request-Disposition确定为发生并行fork,于是,向两个被叫用户B和C发起INVITE请求,对应图上消息(2)和(3);
两个被叫用户收到INVITE请求后,提示用户并振铃,都发送180( Ringing)消息通过服务器传给主叫用户,主叫用户能同时听到两个被叫的回铃音,对应图上消息(4)(5)(6)(7),此时,两路别叫的180消息中的To头部的tag值是不一样的,这样服务器中实现SIP的TU层就可以维护两个leg,来保存两路的不同会话信息;
两个被叫用户都会送响应,上图中被叫用户B接通呼叫,产生2000K的应答,而被叫用户C则回送4XX消息,显示忙,服务器接收到两个被叫的不同应答,需要进行处理,它主动地对被叫用户C回送ACK,以结束被叫用户C之间的呼叫,同时将被叫用户B的200 OK转发到主叫侧,具体对应图上的(8)(9)(10)(11);
主叫收到成功响应后,回送ACK消息到被叫用户B予以证实,呼叫建立,对应图上的(12)和(13);
主叫挂机,发送BYE消息,被叫回应200 0K响应,整个通话结束,对应图上的(14)(15)(16)(17)。
3.2 串行流程
在并行流程中主叫的请求会按照优先级先后发送给两个被叫用户,具体流程如图4所示:
各步骤的具体含义如下:
主叫用户A发起请求INVITE到服务器,对应图上消息(1);
假定此服务器是被叫归属地的网元,它能检测到有多个被叫联系co ntact地址,同时通过Request-Disposition确定为发生串行fork,就需要根据两个被叫用户的优先级,优先级通过Accept-Contact,Reject-Contact等参数按照RFC3841协议规定的原则进行权值的计算,假定用户B的优先级高于用户C,服务器现将INVITE转发给用户B,对应图上消息(2);
被叫用户B收到INVITE请求后,提示用户并振铃,并发送180(Ringing)消息通过服务器传给主叫用户,主叫用户能听到被叫用户B的回铃音,对应图上消息(3)(4);
被叫用户B忙,因此回送4XX消息,服务器接收后,由于是fo rk情况,因此不将此失败响应发送给主叫用户,直接给被叫用户回送ACK确认,并将此初始请求消息INVITE继续发送到第二个用户C,对应图上消息(5)(6)(7);
被叫用户C收到INVITE请求后,提示用户并振铃,并发送180(Ringing)消息通过服务器传给主叫用户,并进一步的发送200 0K响应接续通话,对应图上消息(8)(9)(10)(11);
主叫收到成功响应后,回送ACK消息到被叫用户B予以证实,呼叫建立,对应图上的(12)和(13);
一、IMS-NGN网络概况
IMS(IP Multimedia Subsystem)是IP多媒体系统, 是新一代的通信理念,它能够满足现在的终端客户更新颖、更多样化多媒体业务的需求,也是解决移动与固网融合,引入语音、数据、视频三重融合等差异化业务的重要方式。IMS把原有的垂直型的网络架构演进成了水平的网络架构,并且独立出了业务应用层,从而使得不同的业务应用之间的互操作性和共享性更为灵活。SIP(Session Initiation Protoca1)称为会话初始协议,是用于在IP网络中建立、修改和终止多媒体会话的一种应用层控制协议。SIP是由IETF组织于1999年提出的一个在基于IP网络中,特别是在Internet结构的网络环境中,实现实时通信应用的一种信令协议。
3GPP组织在Release 5及Release 6阶段对IP多媒体应用领域进行了详细的分析研究,Release 5完成了IP多媒体子系统(IMS)核心网的组网框架、公共组件及基本业务流程定义,Release 6在对Release 5相关部分进一步扩展更新基础上,增加了对IMS关键业务能力、QoS保障、网络互通以及IMS/CS融合等方面的定义。这个由3GPP组织提出的IMS架构和思路被业界公认为是比较完善的针对IP多媒体领域的解决方案,面向CDMA2000接入的3GPP2标准组、面向固网的TISPAN(Telecommunications and Internet converged Services and Protocols for Advanced Networking)标准组均以3GPP IMS模型作为基础和参照进行了相应IP多媒体网络架构和业务体系的定义。
图1、IMS网络的演进
NGN通过控制承载分离,构成一个分布的系统结构。使整体建网成本大大降低,网络升级容易,便于加快新业务和新应用的开发和部署,快速实现低成本全网统一业务覆盖。简化了网络层次结构提高了网络资源利用率,减少了传统电路交换机中继互联的复杂性和降低了承载网的成本。
二、IMS的网络架构:
图2、3GPP IMS网络架构示意图
IMS网络架构,利用SIP的灵活性,可支持无线网络中大量的电话和非电话业务。该体系按其逻辑功能可分成3层:即传送网络层(包括终端网关等)、会话控制层和应用服务层,因而体系结构采用控制和承载相分离的方式如图3所示,分为接入互联层、会话控制层、和应用层。
图3、IMS网络功能实体
接入互联层完成的主要功能包括各类SIP终端SIP会话的发起终结;实现IP分组承载各种承载类型之间的转换;根据业务部署和会话层的控制实现各种QoS策略;完成与传统PSTN/PLMN间的互联互通等功能。
会话层完成基本会话的控制,完成用户注册、SIP会话路由控制、和应用服务器交互执行应用业务中的会话、维护管理用户数据、管理业务QoS策略等功能,和应用层一起为所有用户一致的业务环境。会话层包括CSCF(Call Server Control Function)、MRFC(Multimedia Resource Function Controller)、BGCF(Breakout Gateway Control Function)、IM-SSF(IP Multimedia Service Switching Function)等功能实体。其中CSCF包括P-CSCF(Proxy CSCF)、I-CSCF(Interrogating CSCF)、S-CSCF(Serving CSCF)等类型,在物理上可以是合一的,也可以分别设置。P-CSCF是UE接入IMS系统的入口,实现了在SIP协议中的Proxy和User Agent功能。S-CSCF在IMS核心网中处于核心的控制地位,负责对UE的注册鉴权和会话控制,执行针对主叫端及被叫端IMS用户的基本会话路由功能,并根据用户签约的IMS触发规则,在条件满足时进行到AS(Application Server)的增值业务触发及业务控制交互。I-CSCF在IMS核心网中起到关口节点的作用,提供本域用户服务节点分配、路由查询以及不同IMS域间拓扑隐藏等功能。
应用层,向用户提供业务逻辑,包括实现传统的基本电话业务,如呼叫前转、呼叫等待、会议等业务;实现CS和PS已有的智能业务、基于SIP的非传统电信业务等丰富的娱乐、游戏业务。
三、IMS的业务流程:
IMS控制层通过SIP(RFC 3261)基本协议建立、改变或结束多媒体会话及媒体协商。SIP协议具备以下优点:
(1)与媒体无关的会话控制可以使SIP支持丰富的多媒体通信。
(2)SIP地址与终端位置的无关性使SIP用户天生具有移动性。
(3)协议简单,易于扩展,使SIP协议能够支持许多新业务;对不支持业务信令的透明封装,可以继承多种已有的业务。
(4)使用SIP智能终端可以将网络设备的复杂性推向边缘,简化网络核心部分。
下面介绍SIP协议在IMS业务流程控制中的应用。
图4、IMS呼叫流程简化结构
如图所示,当A用户想要与B用户进行会话时,UE A就生成一个SIP INVITE请求,并且通过GM参考点将该请求发送给P-CSCF。P-CSCF会对用户A进行鉴权,若A为合法用户且签订了相应租约,P-CSCF通过Mw参考点转发给S-CSCF。S-CSCF继续处理这个请求,执行服务控制,包括与应用服务器(AS)的交互,并且通过SIP INVITE请求中的用户B的身份最终确定用户B的归属运营商的入口点。I-CSCF会通过Mw参考点收到该请求,并且通过Cx参考点来联系HSS,以找到正在为用户B提供服务的S-CSCF。该S-CSCF负责处理这个终结的会话,包括与服务器AS的交互,并最终通过Mw参考点将这个请求发送给P-CSCF。经过进一步处理后(例如压缩和隐私检查),P-CSCF通过Gm参考点将这个SIP INVITE请求发送给UE B。 UE B生成一个183响应,该响应经过与INVITE消息相同路径反向传回给UE A。再经过几次往返协商后,UE A和UE B完成会话建立。
会话结束时,UE A(或UE B)发起SIP BYE请求,该请求沿着INVITE相同路径传送给UE B(或UE A),UE B返回一个200(OK)响应,沿途的CSCF和所有的AS都会清除与本次会话有关的所有对话状态信息,SIP就完成了一次IMS业务流程控制。
四、结束语:
SIP及基于SIP的IMS业务体系为NGN的开发打下了基础,显示出巨大的潜力,全球已有50%的运营商部署了IMS。基于IMS架构的移动固定融合网络是能够得到普遍认同的最佳解决方案。
参考文献:
[1]《3G IP多媒体子系统IMS--融合移动网与因特网》 (芬)Gonzalo Camarillo,Miguel A.García-Martin张同须译 人民邮电出版社 2009
[2]《IMS技术原理及应用》 胡乐明 曹磊 陈洁 电子工业出版社 2008
通过采用AJAX及SIP通讯协议,设计一个WebService并以Web为接口的端对端异步通信实例,阐释WebService双向通讯的建构方式,同时对AJAX技术、SIP通讯协议的原理与应用作简要介绍。
1.1WebService双向通信机制
如图1所示[1],建立Client/Server双向通信的松散连接及紧密连接架构,WebService双向通信包含了一个Client的主动请求和一个Server端的前项式Push或事件通知。这是从服务互动的观点来设计的,最少会包含这3种型态,而每一个端点都像这样具备Client与Server的功能设计。
(1)TYPEI是一个常见的单向WebService交互式样板;Rc:表示Client端初始化一个请求,这个请求可以接收响应或是不需要响应。
(2)TYPEII是一个ServertoClient的异步Reply与EventNotification的交互式样板,实际上异步Reply常被塑造成EventNotification的模式,有ACK就响应,否则就是Notification;Es:表示Server的事件通知,可以要求具有ACK的响应,也可以是一个事件通知。
(3)TYPEIII与TYPEI相反;Rs:表示Server端初始化一个请求,这个请求可以接收响应或是不需要响应。
图1中实心的箭头是初始化请求,虚线则是选择性的信息响应,TYPEIServer必须提供适当的WSDL,通过SOAP传递给Client来使用,TYPEII和TYPEIII在Client必须提供适当的WSDL,通过SOAP传递给Server来使用,而WebService人需同时具备TYPEI~TYPEIII的行为能力,在一个WebService的端点中同时存在Client/Server的角色时就会出现状态协调性的问题,如果协调性出现问题就会出现错误,传统WSDL是One-way方式,要实现WebService双向通信就要做动态的设计。
1.2AJAX技术
AJAX的全名为AsynchronousJavaScriptandXML,是JavaScript及XML等技术的结合体,另外AJAX也包含浏览器端如何呼叫服务器端WebService的HTTPRequest技术[3]。从AJAX全名的字义中可以了解,AJAX就是异步的JavaScript与XML,它突破了传统网页开发技术的限制,使得网页更具互动性。
1.3SIP通讯协议的原理与应用
SIP是一个应用层的控制通讯协议,可以建立、修改或结束多媒体联机[4]。以OSI定义的网络七层来分类,SIP应该属于会话层,但是也有人将其归类在广义的应用层。
SIP目前共定义九大逻辑组件[5],因该文仅使用到ProxyServer这个组件,利用该组件的原理,将该组件的部分功能设计成WebService。ProxyServer是一个中介组件,同时具有Server与Client的双重角色,相当于H.323中的Gatekeeper,通常SIPUserAgent发出请求时并不知道对方的地址,需要ProxyServer从中协助,当ProxyServer无法取得SIPUserAgent所要求的联机对象的地址时,ProxyServer会通过预设的路由选择方式转送给其他ProxyServer代为解析,此时转送请求的ProxyServer便会成为Client端。如图2所示,以INVITE为例,假设Smith要用SIPPhone与John通话,首先Smith与John的SIPPhone要先分别向各自的SIPProxy注册,接着Smtih的SIPPhone发出INVITERequest,其中INVITERequest中会有几个标头字段:Via、To、From、Call-ID、CSeq、Contact、Max-Forward、Content-Type、Content-Length。因为Smith的SIPPhone并不知道John的地址或是John所注册的SIPProxy地址,Smith会将INVITERequest送到自己所注册的SIPProxy(Smith’sProxy),Smith’sProxy会回传100(Trying)给Smith的SIPPhone,100(Trying)表示Proxy已经收到并处理INVITERequest,而Smith’sProxy会根据IP或是域名找到John的SIPPhone所注册的Proxy,在把INVITERequest传送出去之前,Smith’sProxy会先将自己的地址填在Via字段,加到INVITERequest的标头,然后送到John的SIPPhone所注册的Proxy(John’sProxy),而John’sProxy则会在收到INVITE讯息后回传100(Trying)给Smith’sProxy,表示已经收到并处理INVITERequest,此时John’sProxy会查询数据库,找到John目前所在的IP地址,之后John’sProxy会将自己的地址填在Via字段,加到INVITERequest的标头并将INVITERequest传送给John的SIPphone。在收到INVITE信息后,John的SIPPhone会进入Ringing的状态,并依照先前所纪录的Via字段,依照路径回传180(Ringing)讯息给Smith的SIPPhone并告知John有来电。当Smith的SIPPhone收到180(Ringing)信息后,可以显示某些信息并等待John接起电话,若John接起电话,表示John允许建立联机,John的SIPPhone响应200(OK)信息给Smith的SIPPhone,而200(OK)的讯息中,可以携带John希望建立RTP封包联机的相关信息和参数(IP地址与Port)的SDP给Smith,其中SDP是附加在SIPMessage后面。此时Smith的SIPPhone因应200(OK)的信息响应ACK给John的SIPPhone,两端SIP联机就算是建立完成,此时便可以利用之前Message所攜带的SDP里的相关参数,开始传输RTP封包。若John拒绝受话,则John的SIPPhone就会传送一个CANCEL讯息给Smith的SIPPhone。
2结语
过去在浏览器上运行需要单向、双向,全双工、半双工的服务(如聊天室、语音通话、视讯等)都存在一些问题,网页聊天室采用共通的Session或全局变量来达成信号沟通的目的,而浏览器也会定时PostBack,造成Client端浏览器换页的动作产生,也会存在一些Session中断或是无法清除的问题,对于实时的讯号交换是一个瓶颈,许多运行顺畅的语音或视讯软件,都是以ActiveX或是Applet的组件嵌入方式安装在Client端浏览器中,运用了AJAX的方式呼叫CallBack机制后,寻找可用的WebService,结合SIP通信协议,让信息或软件可以快速地组合出新的服务,也可以达到信号实时交换的需求,另外提供了一种快速开发以浏览器为用户端软件系统的新方式,而Client浏览器不再需要一直进行更新网页的动作,也不需要嵌入任何组件,这对目前很多使用者因嵌入不明组件造成中毒或是黑客入侵,有实质上的帮助,提高信息安全的防护。
参考文献
[1] ZhenshengWu.AWayofUsingWebServicebyAJAX[C]//Proceedingsof2008InternationalSymposiumonDistributedComputingandApplicationsforBusinessEngineeringandScience.2005.
[2] WuChou,FengLiu.WebServiceforTele-Communication[C]//ProceedingsoftheAdvancedInternationalConferenceonTelecommunicationsandInternationalConferenceonInternetandWebApplicationsandServices.2006.
[3] 谢延红,钱爱增.利用Ajax技术开发无刷新聊天室系统[J].长春师范学院学报,2007,26(6):86-89.
[4] 施昌伟.基于SIP协议的即时通讯系统的研究与实现[D].南京邮电大学,2012.
1 引言
基于SIP协议的即时通信系统在企事业单位使用较多,而随着单位保密意识的提高,对数据安全和网络安全的重视,人们对防火墙访问规则等安全策略的要求越来越严格,同时也限制了其基于计算机的各种应用,阻碍了其业务的发展。本文采用HTTP Tunnel实现对防火墙的穿越,将TCP、UDP等非HTTP数据类型进行HTTP伪装和加密,在不改变单位的防火墙等安全策略的前提下,以隐蔽通信的方式完成应用程序的数据传输。
本文重点探讨了HTTP Tunnel技术在以SIP协议为基础的即时通信系统中的应用,并提出相应解决方案和参考应用框架。旨在提升HTTP Tunnel技术的应用范围,加强应用业务的数据安全与网络安全。
2 应用系统框架
HTTP Tunnel被称之为HTTP暗道,原理是将数据伪装成 HTTP的数据形式来穿过防火墙。
基于SIP协议的即时通信系统是以SIP为信令交互协议的即时通信系统,其应用包括HTTP访问、即时消息、语音通信、视频通信等。该系统通过HTTP Tunnel可以不用改变防火前的安全策略,即可实现自由通信。其框架基本包括四个主要方面:
1) 基于SIP协议的即时通信系统,该系统实现基于TCP、UDP、HTTP等协议的即时通信功能;
2) Sock2HTTP服务器,该服务器实现非HTTP协议数据包的HTTP格式转换,通信端口映射,拥塞控制等功能;
3) HTTP Tunnel系统,该系统实现基于HTTP协议的双向的虚拟数据连接,从而穿越防火墙;
4) HTTP2Sock服务器,该服务器实现需要转换为其他格式的HTTP数据,通信端口的映射,拥塞控制等。
其拓扑图如图1:
图1.基于SIP协议的即时通信系统的HTTP Tunnel应用
3应用系统设计
3.1基于SIP协议的即时通信系统
基于SIP协议的即时通信系统主要有两部分组成。OpenSIPS服务器和oSIP客户端。
3.1.1 OpenSIPS
OpenSIPS是成熟的开源SIP服务器,结构非常灵活,其核心路由功能完全通过脚本来实现,可灵活定制各种路由策略,可灵活应用于语音、视频通信、IM以及Presence等多种应用。
其主要功能如下:
SIP注册服务器/服务器/重定向服务器
SIP presence agent
SIP IM Server
3.1.2 oSIP
oSIP是使用标准c编写的SIP协议栈。
主要包括两部分的内容:状态机模块、解析器模块。
状态机模块的功能:完成对某个事务(注册过程,呼叫过程等等)状态记录,并在特定状态下触发相应的事件或回调函数。
解析器模块的功能:该模块主要完成对SIP消息结构剖析、SDP消息的结构剖析以及URI结构的剖析;
图2.oSIP结构
oSIP为SIP协议的客户端,OpenSIPS为SIP协议的服务器,二者共同搭建基于SIP协议的即时通信系统。
3.2 Sock2HTTP服务器和HTTP2Sock服务器
当位于内网的SIP终端访问外网,则终端建立连接的端口不一定被防火墙开放,尤其是UDP端口,若使TCP与UDP等消息穿越防火墙则需要相应的协议转换服务器,即Sock2HTTP和HTTP2Sock。
图3.Sock2HTTP与HTTP2Sock
3.2.1功能描述
主要负责分配对应的UDP端口;接收HTTP消息、解码、以UDP的形式发送至目的地址;接收UDP消息、编码、接收终端分配UDP端口的HTTP消息,返回生成的UDP端口;UDP端口与终端的对应管理机制。
3.2.2设计说明
a.建立TCP套接字,与某端口绑定(可配置),监听该端口;
b.接收到请求后,fork子进程处理该请求,请求包括要求分配端口的请求和其他请求两类;
c.处理要求分配端口的请求,将分配的端口返回给终端,保持该TCP链接不断开,直至通话结束或者终端注销。
4结论
基于SIP协议的即时通信系统使用HTTP Tunnel技术,在企事业单位网内外实现自由通信。该应用不仅提升HTTP Tunnel技术的应用范围,更加强应用业务的数据安全与网络安全。系统采用分布式设计,为系统升级和集成提供很好的构架基础,是企事业单位业务和数据穿越防火墙的一种安全和高效的应用。
参考文献
[1] RFC 2543 3261SIP: Session Initiation Protocol.
1、在高跟鞋中1厘米等于25px , 所以175px就是7厘米。所以高跟鞋175px是指跟高跟鞋跟高有7厘米。
2、高跟鞋的“健康极限”在7厘米,如果超过了7厘米就会导致身体前倾,脚部的负担也会增加,会引发很多骨科疾病。所以,鞋跟的高度最好在7厘米以下。
(来源:文章屋网 )