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所示。