admin管理员组

文章数量:1532440

2024年4月30日发(作者:)

基于H323的VoIP客户端网关系统软件设计

刘一闻,王亚非,温向明

北京邮电大学通信网络综合技术研究所,北京 (100876)

E-mail:airlyw@

摘 要:本文简单介绍了H.323协议的语音呼叫流程,给出了一种采用VxWorks实时操作

系统,基于Objective System Open H.323 for C(ooh323c)开源协议栈的客户端网关系统软件设

计方案。

关键词:H.323,VxWorks,VoIP,网关

中图分类号: TN919

1. 引言

随着计算机技术与通信技术的飞速发展,IP网络的应用也已经从最初的数据应用向多

媒体应用转变,其中基于IP技术的语音通信(VoIP)成为研究的热点之一,是NGN(下一

代网络)的重要组成部分

[1]

。本文给出了一种用户驻地IP语音网关的系统软件设计方案,

该网关提供4个对外交换站(FXS)端口,可与4部普通电话相连,并通过ADSL,Cable Modem

或LAN连接到Internet,为用户提供高质量的IP语音服务。

2. H.323协议介绍

2.1 H.323的基本组件及其功能

2.1.1 终端 Terminal

终端用来实现和另外一个H.323终端,网关,或多点控制单元的实时,双向通信

[4]

2.1.2 网关 Gateway

网关提供分组交换网络和电路交换(SCN)互通的接口,实现传输格式和通信流程的转

换,同时完成在网络侧和SCN侧的呼叫建立和清除

[4]

2.1.3 网守 Gatekeeper

网守提供对H.323实体的接入管理,呼叫控制和地址转换服务

[4]

2.1.4 多点控制单元 MCU

MCU用来提供多点会议的支持

[4]

2.2 H.323的基本呼叫流程

2.2.1 RAS

图1 网守发现

- 1 -

图2 终端注册

2.2.2 呼叫建立

图3 呼叫建立(两个终端都注册到网守,且网守路由呼叫信令)

2.2.3 能力集交换

通信双方在交换完呼叫建立消息之后,将建立H.245控制信道。该信道用来传输能力集

交换信令和打开逻辑媒体信道信令。

终端系统利用H.245的terminalCapabilitySet消息来交换能力集,这个能力集消息应该是

第一个传输的H.245消息。然后,进行master-slave判决过程

[4]

2.2.4 建立媒体通信

H.245过程为了不同的信息流打开逻辑信道。将要在H.245建立的逻辑信道中传输的音

- 2 -

频和视频流使用不可靠的协议

[4]

2.2.5 呼叫终止

图4 呼叫终止

3. 系统软件设计

3.1 OOH323介绍

OOH323协议栈是一个单线程的应用,多路的输入输出由UNIX select 命令来完成,这

条命令监听所有的激活的I/O信道。协议栈提供两种用户应用程序和协议栈的接口:协议栈

命令(Stack command)和回调函数(Callback function)

[5]

3.1.1 协议栈命令

用户应用程序调用协议栈API初始化一个栈内处理过程。一个典型的初始化函数是

ooMakeCall,用来初始化一个呼叫。这个函数一旦被调用,当交换不同的H.323消息来建立

信道时,协议栈将会调用不同的回调函数

[5]

表1 协议栈提供的顶层API

协议栈命令

ooMakeCall

ooAnswerCall

ooHangCall

ooForwardCall

3.1.2 回调函数

描述

初始化一个呼叫

接听一个呼入

终止一个呼叫

重定向呼叫

协议栈是事件驱动的,通过调用注册的回调函数对I/O或定时器事件做出反应。有三种

类型的回调函数,H.323回调函数(呼叫级),H.225回调函数(H.225信令级),和信道

回调函数(打开和关闭媒体传输或接收信道)

[5]

3.2 软件模块架构

该语音网关的软件系统主要包括嵌入式操作系统VxWorks,驱动程序,H.323协议族,

和其他用户程序,如系统有限状态机(FSM),进行网关参数设置的命令行配置程序。VxWorks

- 3 -

系统下的软件可以分为两个大部分:板级支持包BSP和应用程序代码。VxWorks采用模块

化设计方法,把依赖于硬件环境的东西独立出来,放入称为BSP的组件中

[2] [3]

在完成H.323的信令交互,语音收发以及其他控制的过程中,涉及4个软件模块和2

个消息队列(MsgQ)它们分别是:

模块1 驱动模块。

模块2 RTP模块。

模块3 H.323协议栈模块。

模块4 有限状态机模块。

消息队列1 有限状态机创建的消息队列。用来接收驱动模块发送的用户摘挂机等操作

和本地用户的语音包。

消息队列2 驱动程序创建的消息队列。用来接收有限状态机和H.323协议栈中回调函

数发送的控制消息。

各模块的组织结构如图5所示。

图5 模块结构

3.2.1 驱动模块

该模块只启动一个任务(Task),作用:

1.用轮循的方式监听摘挂机,拨号等用户操作,并把这些操作打包成消息通过消息队

列传给状态机模块,用以改变该路电话的状态;

2.把本地用户的语音数据打包成消息通过消息队列传给状态机模块,再由后者发送到

网络;

3.接收RTP模块从网络上收到的通话对方的语音包,处理后,发给硬件。

3.2.2 RTP模块

该模块启动了5个任务,其中,为每一路电话启动一个任务,接收各自的通话对端发

送的语音数据,剩下的一个任务用来在周期性的把接收到的语音数据打包成消息发送给驱动

模块。

3.2.3 H323协议栈模块

该模块用来完成RAS,Q.931,和H.245消息的交互,并通过回调函数,向驱动模块发送

消息,告知硬件何时开始接收和发送语音数据。

- 4 -

3.2.4 有限状态机模块

从图5可得,该模块处于中心控制点的位置。通过向RTP模快发送信号量,来控制从

网络上收语音包和向硬件发送语音数据的时间;通过调用H323协议栈命令来初始化一个呼

叫;通过向驱动模块发送消息,控制硬件的状态。

该模块用数组的方式为每路电话保持一个状态,并对用户的操作和网络上的H323消息

做出相应的状态改变。

3.3 一次成功通话的典型流程

图6 通话流程图

图6是当本地用户主叫时,一个完成的程序流程。当Driver检测到用户摘机,(1)向

FSM的消息队列发送hookoff消息,通知FSM,已完成一些初始化工作;用户拨号,(2)

用户所拨的号码被发送到FSM;(3)用户拨号完毕,FSM调用协议栈命令ooMakeCall(),

开始建立一次通话,参数就是用户所播的号码;当协议栈收到对方发来的alerting消息,调

用注册的回调函数,(4)向FSM发送Alerting消息;FSM收到该消息后,(5)向Driver

发送Alerting消息,告知硬件发送铃流;协议栈收到openlogicchannel消息后,(6)调用回

调函数,向FSM发送Ontalk消息;FSM收到该消息后,(7)向Driver发送Ontalk消息,

通知硬件打开语音通道,(8)向RTP模块发送信号量,通知其可以开始接收语音包;从网

络上接收的语音包(9)被打包成消息发送给Driver;往外发送的语音数据,(10)被打包

成消息发送给FSM,再由FSM发送到网络;当Driver检测到本地用户挂机,(11)向FSM

发送hookon消息;FSM接收到这个消息后,(12)调用协议栈命令ooHangCall(),结束本次

通话,(13)向Driver发送idle 消息,重置硬件。

- 5 -

4. 结论

本文给出了一种采用VxWorks嵌入式操作系统,基于H.323协议的语音网关的软件设

计方案,实际系统运行稳定,通话质量良好。

参考文献

[1]

[2]

[3]

[4]

[5]

陈建亚,余浩.《软交换与下一代网络》[M],北京:北京邮电大学出版社,2003.2.

孔祥营.《嵌入式实时操作系统VxWorks及其开发环境Tornado》[M],北京:中国电力出版社,2002.1.

邝坚.《Tornado/VxWorks入门与提高》[M],北京:科学出版社,2004.11.

H.323v4-2001,Packet-based multimedia communication system [S],ITU-T Recommendation

Objective Systems,Inc. Objective Open H.323 for C User’s Guide [OL].

/open/, March 2005

Software Design of VoIP Client Gateway Based on H323

Liu Yiwen,Wang Yafei,Wen Xiangming

Institute of Communication Networks Integrated technique,Beijing University of Posts and

Telecommunications,Beijing (100876)

Abstract

This paper introduces the H323 call walkthrough simply,then presents a type of software design of a

VoIP client gateway,which is based on the ooh323c opensource stack and the embbed OS VxWorks

Keywords:VoIP,VxWorks,H323,gateway

- 6 -

本文标签: 消息模块语音协议发送