APP下载

基于Asterisk的SIP/H.323视频网关研究

2013-01-14孙少鹏赵旨忠

无线电工程 2013年6期
关键词:信令互通网关

孙少鹏,赵旨忠

(中国电子科技集团公司第五十四研究所,河北石家庄050081)

0 引言

H.323协议是国际电信联盟第16研究工作组于1996年提出了基于包交换网络不保证服务质量的多媒体会议标准,是IP语音技术发展中的一块里程碑,它一度得到了业界的广泛接受,尤其在视频会议领域有独特的优势和广泛的应用,研制生产和装备了许多基于H.323协议的设备。SIP是IETF提出来的一个应用控制(信令)协议,可用来创建、修改以及终结多个参与者参加的多媒体会话进程。参与会话的成员可以通过组播方式、单播连网或者两者结合的形式进行通信。SIP由于其简单易用、通用性好的特性被广为使用,并被认为是未来发展的主流协议。但是SIP也存在和目前已经大量装备的H.323装备的互通(尤其是视频方面的互通)难题。

Asterisk是一款实现IP-PBX功能的影响力最大的开源软件,它能够提供完善的PBX功能,支持多种主流的VoIP协议和系统接口。可以借助其解决SIP和H.323的视频互通问题。

1 Asterisk软件

Asterisk是一种开源、集中式语音平台,首先设计运行于Linux系统[1]。但是实际上要根据自身的需求,在Asterisk上定制开发,才会真正达到所要的目标。据不完全统计,全球在Asterisk上做开发的公司应该在1 000家以上,其开源的代码和开放的架构以及丰富的业务基础,让很多小厂家找到了可以做复杂业务的平台[2]。

图1所示为Asterisk的源码目录结构(未列出config、sounds等配置和音频等文件)。目录结构与软件的一些功能相对应。其中agi(Asterisk Gatewav Interface)目录为外部程序提供了控制dialplan(拨号方案)的标准接口。通常AGI脚本用于复杂业务逻辑,数据库连接以及存取其他外部资源;apps目录包含了Asterisk的dialplan应用函数的实现,如回音echo,放音play以及呼叫dial等。这些应用函数注册到asterisk的核心模块并完成预定操作;cdr目录是指呼叫数据记录(Call Data Record),通过这部分可以将记录存入不同类型的数据库或CSV文本。如MYSQL或PGSQL等数据库;Channels目录里面放置了通道驱动(Channel Driver),封装了 SIP、H.323和IAX等协议,对应的通道为chan_sip、chan_h323等。但是具体的channel接口定义在main文件夹中。所有的呼叫都是通过一种Channel呼入到asterisk的核心的。Codecs和formats目录分别包含音频、视频编码部分,其中音频支持 ilbc、g.726、alaw、ulaw和speex等格式,还可以通过增加编解码函数来增加Asterisk支持的编码格式。视频支持H.264、H.263、jpeg等视频编码格式;funcs目录下封装了一些数学、时间等函数;include目录下是Asterisk使用的头文件;Main目录是Asterisk的核心模块,包含asterisk.c,pbx.c等核心文件;doc目录包含一些txt使用说明文档;utils目录下包含了一些静音、短消息等常用功能;另外,还包含Addon目录之下存储的一些附加功能如其中ooh323协议栈用于取代了之前使用的oh323等协议栈。

图1 Asterisk的目录结构图

Asterisk的功能划分为内部核心和外围动态可加载模块。内部核心包括的模块是:PBX交换核心、调度与I/O管理、应用调用器、编解码转换、动态模块装载和CDR核心组成。

外围动态可加载模块包括以 App_开始的Applications、以 unc_开始的 Functions、以 res_开始的Resources、以 chan_开始的 Channels和以 codec_开始的Codec编解码模块等。

2 协议介绍

H.323协议是国际电信联盟(International Telecommunication Union,ITU)第16研究工作组于1996年提出的基于包交换网络不保证服务质量的多媒体会议标准[3],是IP语音技术发展中的重要里程碑,它得到了业界的广泛接受并曾获得过广泛的应用。

H.323协议是一个协议簇,其中包括有H.323、H.225.0、H.245、H.450 和 RTP/RTCP(使用 IETF的定义)等协议[3]。具体完成:协议消息的接收与发送;协议消息的ASN.1编解码;消息中关键信息的提取和存储;H.245协商状态机处理;H.450.x系列业务流程处理等。H.323协议层向业务层提供与上述处理相关的服务。

H.323业务层负责H.323系统的初始化、呼叫事件的接收、各种任务的调度以及基于用户自定义的呼叫流程控制任务等,包括一系列完成具体呼叫流程的子状态机,分别完成用户输入号码、用户认证、地址解析、呼叫建立、通话质量管理、话路释放以及各种补充业务等处理流程的具体实现。对于各业务流程中与H.323相关的消息处理和过程,业务层将请求其下的协议层提供具体服务。

SIP协议是由IETF提出来的一个应用控制协议。用来创建、修改以及终结多个参与者参加的多媒体会话进程[4]。参与会话的成员可以通过组播方式、单播连网或者两者结合的形式进行通信。

SIP协议借鉴了 HTTP、SMTP等协议,支持代理、重定向和登记定位用户等功能,支持用户移动,与 RTP/RTCP(Real-time Transport Protocol)、SDP(Session Description Protocol)和RTSP(Real Time Streaming Protocol)等协议配合,支持话音、视频、数据、Email、呈现、IM 和 Chat等应用。

根据RFC3261定义,SIP应用有如下几个功能实体,不同的功能实体组成全部的SIP应用。

userAgentclient:发起请求的逻辑实体。

userAgentserver:接收请求的逻辑实体。

proxyserver:代表客户端转发请求或响应的网络逻辑实体,包括路由、呼叫控制、业务提供和计费认证授权等。

RedirectServer:将请求中的地址映射为零个或多个新的地址返回给客户端,完成路由功能。

Registerserver:接收注册请求,提供定位服务。

3 视频网关的实现

SIP/H.323视频网关是实现SIP和H.323信令之间的互通的功能实体,作为H.323用户端点设备实现H.323信令的呼叫发起和终结,并能够完成到网守的注册,将SIP域的号码注册到网守,使网守路由呼叫时将到SIP域的呼叫路由到视频网关。同时,网关也能够作为一个SIP终端设备能够发起和终结SIP呼叫。总之,网关需要完成SIP和H.323系统之间信令转换、媒体协商和媒体流转发等主要功能。

如图2所示,SIP/H.323视频网关位于SIP网和H.323网之间,完成H.323音频/视频电话与SIP音频/视频电话的互通功能。由于Astersik软件支持SIP的视频呼叫但是不能支持H.323系统的视频呼叫,因此需要修改的主要是H.323通道的视频支持。

图2 视频网关系统结构

如前所述,Asterisk软件中对各种协议的支持全部放置在Channels目录下,其中包含了通道驱动(Channel Driver),封装了 SIP、H.323和 IAX等协议,对应的通道为 chan_sip、chan_h323等。目前H.323协议的通道已经放弃了chan_h323及oh323等通道,而是选用OOH323模块,其位于Asterisk软件的Addon目录下,该通道基于Objective公司开发的开源H.323协议栈实现。该协议栈h323目录下存放的是根据asn.1编码编译而成的c代码用于asn.1的封装。Src目录下包含了协议栈的消息及状态处理等c文件。

根据增加视频功能的需求修改OOH323通道时需要给通道增加如下的能力:

①视频能力协商的支持,H.245进行能力协商时,需要增加本地视频能力的支持声明;

②媒体中的视频通道;

③呼叫接通后对视频包的正确转发;

④保留对音频通话的正确支持;

⑤呼叫请求信令中将呼叫类型改为从音频呼叫改为视频呼叫。

如图3所示,表示H.323终端设备发起的呼叫流程[6],在发起呼叫之前的初始化过程中网关设定了默认的音频和视频编码支持类型。呼叫流程[2,3]为:

①H.323端点发起Setup消息;

②视频网关收到Setup后向H.323系统的网守发送ARQ消息并接收ACF消息用于确认呼叫的合法性;

③网关向SIP终端设备发送携带默认视频及音频编码支持类型的INVITE消息;

④网关收到SIP终端的100 TRYING消息后向H.323端点设备回复Call proceeding消息;

⑤网关收到SIP终端设备的180 RINGING消息后向H.323端点发送Alerting消息表示被叫设备振铃;

⑥随后网关与H.323终端进行主从决定、能力协商及打开逻辑通道等过程[5],该过程在H.323的第4版之后在Connect之前可完成;

⑦SIP终端用户摘机,SIP终端发送200 OK消息到网关,网关发送Connect消息到H.323端点设备并回复ACK到SIP终端,同时开始进行媒体流的双向转发,包括视频和音频流2个通道。

SIP侧发起视频互通呼叫流程如图4所示。

图3 H323侧发起视频互通呼叫流程

在完成呼叫信令和H.245d主从决定、能力协商及打开逻辑通道等过程后,开始进行媒体流的双向转发,包括视频和音频流2个通道。在Asterisk软件中需要设置视频为转发模式,网关将双方视频包进行转发完成视频互通。

4 结束语

介绍了Asterisk软件及特点,给出了SIP和H.323协议的简单说明。在此基础上提出了使用Asterisk实现音视频通话互通的流程和方法。按照以上方法,经过编写、调试的实现和测试过程,最终网关在实际使用中能够准确完成H.323会议系统和SIP终端之间的互联互通,互通双方画面流畅、声音清晰。并且呼叫建立和拆除过程迅速、利落。证明本文提出的SIP和H.323协议解决方案正确、高效,能够满足音视频的实际互通要求,并且该方法基于现有成熟软件,其系统稳定可靠,且需修改部分的工作量较小,因此该方法具有相当高的工程实现价值。

[1] MEGGELEN J V,MADSEN L,ASTERISK J S.The Future of Telephony(第2版)[M].O’Reilly Media,Inc,2007.

[2]李红伟.基于Asterisk网关的研究[D].北京:北京邮电大学,2010.

[3] ITU-T,H.323v7:Packet-based Multimedia Communications Systems[S],2009.

[4] IETF, RFC3261, SIP:Session Initiation Protocol[S],2002.

[5] ITU-T,H.225.0v7:Call Signalling Protocols and Media Stream Packetization for Packet-based Multimedia Communication Systems[S],2009.

[6]张智江,张云勇,刘韵洁.SIP协议及其应用[M].北京:电子工业出版社,2005.

猜你喜欢

信令互通网关
SLS字段在七号信令中的运用
编读互通
中日ETF互通“活水来”
编读互通
移动信令在交通大数据分析中的应用探索
信号系统网关设备的优化
基于信令分析的TD-LTE无线网络应用研究
面向VDC组网的VXLAN控制面互通方案探讨
LTE网络信令采集数据的分析及探讨
LTE Small Cell网关及虚拟网关技术研究