首页 > 新闻 > 专家观点 >

利用基于原语的H.323协议栈开发VoIP系统

2013-11-18 17:11:21   作者:   来源:EET电子工程专辑   评论:0  点击:


    开发H.323协议栈是通信设计过程中的一项极其艰巨的任务,难点主要在于:复杂的协议栈开发需要投入数年的工程设计资源,而且掌握这些复杂的标准还需要一个知识的积累和学习过程,本文将探讨开发H.323协议栈和VoIP应用系统遇到的问题、歧义、困难等。

    利用基于原语(primitive)的H.323协议栈开发IP承载话音(VoIP)应用系统不是一项小任务,因为创建一个鲁棒的应用系统,需要花很多时间去研究含糊的标准和复杂的状态机。

    本文用例子说明流程的实现以及原语(primitive)的定义,用以说明如何构建一个基于原语接口的应用系统和一个基于简单接口的替代方案。在开发协议栈之前,建议浏览一下H.323的基本标准。H.323是国际电信联盟(ITU)颁布的标准,由一系列特定协议组成,包括Q.931、H.225、H.245和ASN.1。为了提供呼叫信令功能,H.323部分融合了H.225和Q.931标准。H.245定义了多个流程,以便于进行能力信息互换(exchange capability)、主从判断(master-slave determination)和信道(channel)信令。最后,ASN.1规定了数据格式,使兼容H.323的端点能够互通。

    基本概念

    使用H.323时,正确理解原语和流程这两个术语很关键。原语用来描述应用层和H.323协议栈下层之间传递的结构或消息。H.323定义了多个原语,有四种类型:请求、指示、响应和确认。每个原语的参数的数量是可变的,这由相关流程决定。这些参数表示应用层和协议栈下层的通信信息。

    在H.323协议族中的每个协议定义了一组流程。每个流程代表一个状态机,在大多数情况下,该状态机用原语的形式规定一组消息,这些消息以特定的顺序发送和接收。这些原语便于应用层和下层的通信。

    流程提供具体的功能,可以异步启动或终止,或启动后在整个对话过程中保持激活状态。例如,H.245流程包括主从判断、能力信息互换、单向和双向信道信令。其中,只有信令信道在实际的对话过程中保持激活。其它只是激活后发送和接收数据,然后就终止了。Q.931/H.225流程包括呼叫建立和拆除。图1表示一个完整的H.323协议栈的实现。值得指出的是,该实现依赖于网络协议栈和实时操作系统(RTOS)。多数应用系统需要RTOS以便同时处理多个流程和/或呼叫。

    呼叫信令

    如上所述,H.323融合了Q.391和H.225协议,可提供呼叫信令功能。实际上,Q.931是ISDN相关的协议,用于建立和拆除呼叫。尽管从来没有打算应用于VoIP应用系统,但是通过在该协议上增加信息,可以为H.323提供比较类似的相关功能。

    Q.931分组(packet)包含多个称为信息单元(information element)的参数。例如,Q.931分组可以包含一个用户信息单元。H.323规定用户信息单元必须包含一条H.225消息。H.323的附加信息存于此。有关网关、网守(gatekeeper)和协商的大部分信息由H.225承载。

    Q.931和H.225定义呼叫信令,而H.245定义许多呼叫业务。最常用的业务包括主从判断、能力信息互换、信道信令。当Q.931建立起呼叫,这些流程启动。此时,两个终端已经同意互连,但是还没有收发多媒体数据。

    主从判断流程协商决定哪个终端是主,哪个是从。该流程可应用于:将一次协商中相同类型的媒体数据流联系起来;避免和解决由于编解码器间的依赖关系造成的冲突。

    能力(capability)信息互换流程告知远程终端的音频、视频或数据能力。这可以避免能力猜测过程(即建立一个信道并发送远程终端可能无法识别的数据)。

分享到: 收藏

专题