H.323协议用于发起会话,它能控制多个参与者参加的多媒体会话的建立和终结,并能动态调整和修改会话属性,如会话带宽要求、传输的媒体类型(语音、视频等)、媒体的编解码格式、广播的支持等。
H.323协议采用Client/Server模型,主要通过网关(Gateway)与网守(Gatekeeper)之间的通信来完成用户呼叫的建立过程。
H.323协议栈是在应用层实现的,主要描述在不保障服务质量(QoS)的IP网上用于多媒体通信的终端、设备和业务。它包括G.729、G.723.1、G.711、H.261、H.263、T.120系列、RTP、RTCP、H.245、H.225.0(包含Q.931和RAS协议)等协议。
H.245、H.225.0等协议为信令控制协议,G.711、G.729、G.723.1、G.723.A是音频编解码协议,H.261、H.263是视频编解码协议,T.120系列(包括T.123、T.124、T.125、T.126、T.127、T.324等协议)是多媒体数据传输协议。
RTP(Real-Time Transfer Protocol,实时传输协议)和它的控制协议RTCP(Real-Time Transfer Control Protocol,实时传输控制协议)共同确保了语音信息传送的实时性。RTP的功能通过RTCP获得增强,RTCP的主要作用是提供对数据分发质量的反馈信息,应用系统可利用这些信息来适应不同的网络环境。RTCP有关传输质量的反馈信息对故障定位和诊断也十分有用。
图1 H.323协议栈
ITU-T RAS协议遵循H.323 v2协议,用于网关与网守之间进行信息交互。在RAS协议中,一般模式都是网关向网守发送一个请求,然后网守返回接受或拒绝消息。H.323协议栈用于RAS通信的缺省端口号为1719。RAS消息具体内容参见表1。
表1 RAS协议的主要消息
操作 | 消息 |
注册登记消息 | RRQ、RCF、RRJ |
注销消息 | URQ、UCF、URJ |
修改消息 | MRQ、MCF、MRJ |
接入认证授权消息 | ARQ、ACF、ARJ |
地址解析消息 | LRQ、LCF、LRJ |
拆线消息 | DRQ、DCF、DRJ |
状态消息 | IRQ、IRR、IACK、INAK |
带宽改变消息 | BRQ、BCF、BRJ |
网关资源可利用性消息 | RAI、RAC |
RAS定时器修改消息 | RIP |
H.323语音网络一般由语音网关、网守、多点控制单元(MCU,multipoint control unit)、终端等设备组成。网守是可选组件,如果H.323网络中具有一个网守,那么这个网守所控制的终端、网关以及多点控制器等就组成了一个域。根据ITU-T规范定义,网守(GateKeeper,简称GK)能够对局域网或广域网的H.323终端、网关或多点控制单元(MCU)提供以下功能。
l 地址翻译;
l 访问许可;
l 带宽控制和管理;
l 区域管理和安全检查;
l 呼叫控制信令以及呼叫管理;
l 路由控制和计费功能。
一个简单的H.323语音网络如图2所示。在一个由网守管理的区域内,对所有呼叫来说,网守不仅提供呼叫业务控制并且起到了中心控制点的作用。网关实体通常以路由器作为硬件载体,通过命令行接口完成对路由器IP语音网关功能的配置。网关通过ITU-T H.225.0协议中的RAS(Registration,Admission and Status)消息与网守进行交互通信。
目前,网守功能通常在SUN工作站或服务器上提供,路由器提供网关功能。出于可靠性考虑,需要网守提供备份服务功能,即当主用网守通信异常(如超时)或主用网守不可用时,网关可以通过RAS消息向备用网守发起注册请求。
图2 H.323协议栈
一个端点想与另一个端点建立呼叫,首先要寻找可以为它服务并对它进行控制的网守,这个过程叫做网守发现。端点和网守之间使用RAS协议信令进行交互操作。主叫端点会发送网守请求消息给某一个特定的网守或广播发送,收到消息的网守响应主叫端点,发送消息表明接受请求还是拒绝请求。
当端点收到网守发来的确认消息后,将向网守发送注册请求,请求加入网守所在的控制域。如果网守接受注册,则发送注册确认消息,否则发送注册拒绝消息。注册成功后,端点和网守都可以发送注册取消消息,网守可以决定是否取消注册而端点只能以取消注册确认消息响应,并取消注册。
如果主叫端点只知道被叫端点的别名,而不知道被叫端点的呼叫信令地址时,主叫端点就会向网守发送位置请求消息来取得被叫端点的呼叫信令地址。
有了被叫端点的地址,主叫端点将向网守发送接入请求消息,网守将决定是否允许此端点加入一个呼叫过程,这是网守的接入控制功能。通过许可请求消息,主叫端点可以向网守申请直接向被叫端点发送呼叫信令,如图3,或是通过网守发送,如图4。最终采用哪种方式将由网守决定,并通过许可确认消息告知主叫端点。
当主叫端点接收到Gatekeeper发出的接入许可确认后,主叫端点将发出呼叫信令来请求建立呼叫。以主叫端点直接向被叫端点发送呼叫信令为例,主叫端点首先发送呼叫建立请求信令(Setup),以表明主叫呼叫被叫的要求。
被叫端点收到呼叫建立请求消息Setup后,可以发送呼叫处理中消息(Call Proceeding)来告知主叫端点正在处理该呼叫建立请求,当然也可以不发送此信息。
接下来,被叫端点可以向主叫端点发送激活消息(Alerting),表明被叫端点已经处于激活状态,比如电话在振铃,此消息也是可选的。
如果被叫端点接受了主叫端点发起的呼叫,被叫端点将发送连接消息(Connect),此消息是必须发送的。
当主叫端点收到被叫端点发来的连接消息后,两个端点之间的媒体会话将由H.245控制信令管理。首先,通话双方将进行能力交换,了解对方的通话能力,比如媒体格式等信息。
然后,通话双方会建立一条或多条逻辑通道,即由IP地址和端口号组成的二元组,媒体流将在这些逻辑通道中被传送。通话结束后,逻辑通道将会被关闭。
最后,任何一方都可以发出完全释放的呼叫信令来释放资源。
端点向各自的网守发送拆线请求,网守将根据实际情况决定是否同意拆线。网守也可以给端点发送拆线请求,而端点只能确认并拆线。
有网守参与的呼叫的建立和拆除流程如图5所示。