广告招募

当前位置:欧亚贸易网 > 技术中心 > 所有分类

OpenH323实现流程

2023年06月12日 12:53:16      来源:南宁汇研科技有限公司 >> 进入该公司展台      阅读量:12

分享:

1、RAS
原理:
RAS是端点和网守之间执行的协议,基本上是管理功能,它包含以下几个过程:
1)、 网守搜寻
用于端点搜寻其归属网守,采用多播机制完成。其后所有RAS消息均限定在端点和其归属网守之间传送。
2)、 端点登记:用于端点向网守登记其自身信息,主要是别名和呼叫控制信道运输层地址。包括去除登记过程。
3)、 端点定位:用于端点或网守向相应的网守询问某一端点的呼叫控制信道的运输层地址。
4)、 呼叫接纳:起呼叫时的步操作,询问网守是否允许该呼叫发起。
5)、 呼叫退出:呼叫结束后通知网守,该端点已经退出呼叫。
6)、 带宽管理:支持端点在呼叫过程中提出带宽改变要求,由网守做决定。
7)、 状态查询:主要是用于网守询问终端的开机/关机状态。
8)、 网关资源指示:向网守通告该网关的可用资源。
RAS消息如表:
过程
消息
消息名
网守搜寻
GRQ
网守搜寻请求
GCF
网守搜寻证实
GRJ
网守搜寻拒绝
端点登记
RRQ
端点登记请求
RCF
端点登记证实
RRJ
端点登记拒绝
URQ
去除登记请求
URJ
去除登记拒绝
UCF
去除登记证实
端点定位
LRQ
端点定位请求
LCF
端点定位证实
LRJ
端点定位拒绝
呼叫接纳
ARQ
呼叫接纳请求
ACF
呼叫接纳证实
ARJ
呼叫接纳拒绝
呼叫退出
DRQ
呼叫退出请求
DCF
呼叫退出证实
DRJ
呼叫退出拒绝
带宽管理
BRQ
带宽管理请求
BCF
带宽管理证实
BRJ
带宽管理拒绝
状态查询
IRQ
信息请求
IRR
信息证实
网关资源指示
RAI
网关资源可用性指示
RAC
网关资源可用性证实
消息过程都比较简单,一般是一端发出一个消息,另一方在收到消息后,如果需要响应,则发送一个响应消息完成一个过程。可以参考下图中的登记和去除登记消息。
RAS消息在呼叫开始和结束的时间都起着非常重要的作用,在呼叫开始时,向网守发送ARQ,当网守确认该呼叫时,将会返回包含端点的H.225信道的TCP地址(如果是网守选路方式,返回网守的H.225信道地址)。终端便可以根据该地址连接呼叫,而在呼叫结束的时候,在H.225和H245信道关闭后,也会发送DRQ/DCF消息以释放占用的带宽等资源。
在通话过程中,可能会有带宽的变化,这就需要用到BRQ/BCF消息,至于其如何与H245消息结合起来操作的:
具体的实现:
1)、 创建RAS侦听(处理)线程
在网守初始化函数中,通过调用H323GatekeeperServer:AddListener函数创建RAS侦听线程,便可以开始处理RAS消息了,而普通终端的UDP线程可以在设置网守时(H323EndPoint::SetGatekeeper函数)才建立,也可以启动时即建立(人工创建)。
2)、 处理RAS的PDU的过程
处理RAS的函数,对应不同的类(H323gatekeeper和H323GatekeeperListener),调用的处理函数。在应用程序中,当调用AddListener时,通过调用H.225_RAS::StartRasChnnel()函数创建了后台线程——以HandleRasChannel()函数为主体,而在HandleRasChannel()函数中,有一个不断循环,从RAS信道中读出数据,交由H.225_RAS::HandleRasPDU()函数处理,而后者H.225_RAS::HandleRasPDU()函数则是根据接收到的PDU的类型,转给不同的处理函数。
3)、 如何在应用程序中调用
在应用程序中如果只是实现呼叫或者等待呼叫时,其实根本不需要直接与RAS相关处理类交互。发起呼叫调用终端类的MakeCall过程中,协议栈类库将呼叫涉及到的过程和函数调用已经封装的相当完善,无需干涉。当然,前提是在应用程序开始的时候要先创建RAS侦听线程。等待呼叫则是只需要保证应用程序已经创建RAS侦听线程即可。在接收到H.225的Setup消息后,应用程序自然会调用RAS线程的相关处理函数,向网守发送ARQ消息。
2、H.245控制信令
1).能力交换过程
原理
这是H.225呼叫 建立成功后首先要执行的一个过程,他使通行双方了解对方接受和发送信号的能力。每个逻辑信道限定传送某种媒体信息,采用一定的编码算法,具有一定的带宽,因此在信道建立之前,收发双方必须就这些参数进行协商,确定双方可接受的参数范围,这就是H.245的能力交换过程。
H.245协议采用接收方控制的原则建立逻辑信道,发送方只能在接收方规定的范围内确定信道特性参数。能力交换的主要功能就是通过适当的消息向对方通告本端的接受能力。该消息也允许通告发送能力,但其作用只是表示本端的一种选择意向,希望对方在确定其接收能力时予以考虑。当获得对方的接受能力后,本端就在此范围内确定其发送方式,启动逻辑信道打开过程。
能力集的主要参数是接受能力,对方(发送方)必须知道本端的接受能力才能建立逻辑信道。如果能力集不含接受能力,表示本端只能发送不能接受。发送能力的作用是供对方(接收方)使用,对方可以在本端给出的发送能力范围内提出它所希望的发送方式。如果本端不希望对方干预自己的发送方式,则可以在能力集中不提供发送能力,这并不表示它不具备发送能力。
描述终端接受能力或发送能力的终端能力集消息不但给出终端可以支持的各种媒体信号的操作模式而且给出终端同时处理多种信号可能的组合操作模式。消息中包含一个能力表,该表列出了终端所允许的操作模式,每种模式对应能力表中的一个表项,赋予相应的序号。若干个能力号构成了可选能力集(altemative capability set)数据结构,表示该终端可以按其中一种方式工作。实际上能力集描述了终端的一个媒体信道的能力。
若干个可选能力又构成一个“同时能力(Simultaneous Capabilities)”数据结构,表示该终端可以同时使用一组能力进行工作。最后若干同时能力又可构成一个“能力描述语集”(capability descriptors)数据结构,他包括一组能力描述语,每个描述语由一个同时能力和一个能力描述语序号组成。该数据结构给出了终端的总体能力。之所以要定义多个描述语,是因为终端选用多种组合方式工作,在不同的组合方式下,各个信道的允许操作模式可以不一样,以满足所需的要求。
下图终端能力集消息的嵌套式数据结构,其中,序号有有证实消息返回,发送端数据可以确定与该证实消息匹配的终端能力集消息。协议标识指明H.245版本号,复用能力主要指示该终端的多点通信能力,用于通信。能力表每个表项的内容不只是简单的编译码标准还包含许多相关的参数。
终端能力集消息至少包含一个能力描述语。在通信过程中,允许终端发送新增或修改描述语,以动态增加或删除终端能力。
2).主从确定过程
主从确定过程用于避免信令过程中的冲突现象。主要应用于会议通信中的MC仲裁。由于一个会议呼叫只能有一个MC,如果两个参会的H.323实体都含有MC,则必须确定其中一个是主MC。同样的过程也使用与双向信道的建立时主从终端的确定。在建立信道连接之前必须首先解决主从关系。
每个H.323端点应该既能工作在主机模式也能工作在从机模式。在执行过程时,每个端点需要生成一个随机数称为状态确定号,其取值范围为0~2(24)-1,每个端点对于呼叫只能确定一个随机数。为了确定主从消息,任一个端点可以向对方发送一个主从确定消息,该消息包括两个参数:状态确定号和终端类型。
对方收到确定消息后,执行确定计算过程。确定的规则:首先比较两个端点的终端类型值,大者为主机:如果相同,在比较两个端点的状态确定号,大者为主机。如果仍相同,则判断为不可确定,则回送拒绝消息。再次启动主从确定过程。
如果两个实体为不同类型有MC功能的高于无MC功能的实体;若没有MC,则网关高于终端;若都有MC,则优先级别自高到低顺序为:MCU、网守、网关、终端。
3).逻辑信道信令过程
原理
逻辑信道的信令过程包括逻辑信道的打开和关闭。其设计思路是首先建立连接,确定接收方能够接收并已准备好接受由对方发送来的数据后,才开始媒体数据的传输,在接纳新的逻辑信道时,接受方必须确保原有逻辑信道的通信不受影响。
该协议过程还包括双向信道的打开。为了防止双方终端同时打开信道,引起冲突,需将其中一方定义为主终端,另一方定义为从终端。
逻辑信道的关闭一般也是有发送方发起。
(1)单向信道打开过程
信道打开恒由发送方启动。它向接受方发送打开逻辑信道消息,消息包含前向逻辑信道号和信道参数。其中,信道号必须发送方赋值,证实消息返回此值,以和请求消息匹配。信道参数包括数据类型、媒体信息是否需要确保传送、是否执行抑制、目的地终端标记等。如果该信道用来传送RTP封装的实时媒体消息,则信道参数还应该包括会话标记、关联会话标识、媒体信道、媒体控制信道。这样,经过此过程,两端点间建立前向RTP信道和双向RTCP信道。
(2)双向信道打开过程
双向信道打开过程和单向信道基本相同,其中主要的差别在与消息中还包含反向信道参数。因此一次消息交换同时建立两个方向的信道。此外,请求方接受到对方的证实消息后,还需回发一个确定消息,表示反向信道的建立成功,可以开始传送信号。如果对方不能支持本端要求的反向信道,则回送拒绝消息,然后立即启动双向信道打开过程,其反向信道参数等于本端发送的前向信道参数,其前向信道参数取为双方都能支持的参数值。
4).呼叫释放过程
原理
通信的任何一方都可发起呼叫释放。为简单说明,假设呼叫信令和H.245控制信令都采用直接选路方式,其释放步骤为:
(1). 端点1停止在逻辑信道上传送信息,关闭所有逻辑信道。然后在H.245控制信道上向端点2发送结束会话的命令消息,告诉对方要结束该呼叫,其后停止发送H.245消息。
(2). 端点2收到上述消息后,关闭所有逻辑信道,向端点1回送结束会话命令消息。至此,H.245控制信道关闭。
(3). 如果呼叫信令信道尚未关闭,端点1向端点2发送H.225。Release Complete消息关闭此信道。至此,呼叫已释放。
(4). 端点1和端点2分别向其网守发送RAS消息DRQ,告之该呼叫占用的带宽资源可予以释放。
(5). 网守向端点回送DCF。其中,端点将不在向网守发送未经过请求的IRR消息。至此,完成全部释放过程。
如果是会议呼叫,则必须首先用H.245“退出会议”消息明确终止会议,然后各个端点等待MC自动呼叫释放过程。
3、H.225呼叫信令
原理:H.225基本呼叫控制消息取自于Q.931和Q.932消息。但是由于其本身不承担链接控制的任务,所以许多消息不在H.225中出现。
虽然H.225呼叫信令模型取自于Q.931,但不同之处在于,Q.931用于ISDNUNI,两端分别是用户和网络,一般是不对称的应用,而在H323系统中,呼叫是对称应用的。
H323端点之间建立通信关系一般要经过三个过程:
1):呼叫接收控制。
执行RAS协议(H.225),控制信道为RAS信道(不可靠信道),网守同意接纳后在端点和网守或端点之间建立起呼叫信令信道,进入呼叫建立。
2):呼叫控制
执行呼叫信令协议(H.225),控制信令为信令信道(可靠信道),呼叫建立成功后,在端点之间建立H245控制信道。
3)连接控制
执行H245控制协议,控制信道为媒体控制信道,简称控制信道(可靠信道),在端点之间建立起具有一定带宽的一个或多个逻辑信道,实时通行的逻辑信道都是不可靠。


推荐文章:


标签:


版权与免责声明:
1.凡本网注明"来源:欧亚贸易网"的所有作品,版权均属于欧亚贸易网,转载请必须注明欧亚贸易网。违反者本网将追究相关法律责任。
2.企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
3.本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。 4.如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系。