1、RAS
原理:
RAS是端點(diǎn)和網(wǎng)守之間執(zhí)行的協(xié)議,基本上是管理功能,它包含以下幾個(gè)過程:
1)、 網(wǎng)守搜尋
用于端點(diǎn)搜尋其歸屬網(wǎng)守,采用多播機(jī)制完成。其后所有RAS消息均限定在端點(diǎn)和其歸屬網(wǎng)守之間傳送。
2)、 端點(diǎn)登記:用于端點(diǎn)向網(wǎng)守登記其自身信息,主要是別名和呼叫控制信道運(yùn)輸層地址。包括去除登記過程。
3)、 端點(diǎn)定位:用于端點(diǎn)或網(wǎng)守向相應(yīng)的網(wǎng)守詢問某一端點(diǎn)的呼叫控制信道的運(yùn)輸層地址。
4)、 呼叫接納:起呼叫時(shí)的第一步操作,詢問網(wǎng)守是否允許該呼叫發(fā)起。
5)、 呼叫退出:呼叫結(jié)束后通知網(wǎng)守,該端點(diǎn)已經(jīng)退出呼叫。
6)、 帶寬管理:支持端點(diǎn)在呼叫過程中提出帶寬改變要求,由網(wǎng)守做決定。
7)、 狀態(tài)查詢:主要是用于網(wǎng)守詢問終端的開機(jī)/關(guān)機(jī)狀態(tài)。
8)、 網(wǎng)關(guān)資源指示:向網(wǎng)守通告該網(wǎng)關(guān)的可用資源。
RAS消息如表:
過程 | 消息 | 消息名 |
網(wǎng)守搜尋 | GRQ | 網(wǎng)守搜尋請(qǐng)求 |
GCF | 網(wǎng)守搜尋證實(shí) | |
GRJ | 網(wǎng)守搜尋拒絕 | |
端點(diǎn)登記 | RRQ | 端點(diǎn)登記請(qǐng)求 |
RCF | 端點(diǎn)登記證實(shí) | |
RRJ | 端點(diǎn)登記拒絕 | |
URQ | 去除登記請(qǐng)求 | |
URJ | 去除登記拒絕 | |
UCF | 去除登記證實(shí) | |
端點(diǎn)定位 | LRQ | 端點(diǎn)定位請(qǐng)求 |
LCF | 端點(diǎn)定位證實(shí) | |
LRJ | 端點(diǎn)定位拒絕 | |
呼叫接納 | ARQ | 呼叫接納請(qǐng)求 |
ACF | 呼叫接納證實(shí) | |
ARJ | 呼叫接納拒絕 | |
呼叫退出 | DRQ | 呼叫退出請(qǐng)求 |
DCF | 呼叫退出證實(shí) | |
DRJ | 呼叫退出拒絕 | |
帶寬管理 | BRQ | 帶寬管理請(qǐng)求 |
BCF | 帶寬管理證實(shí) | |
BRJ | 帶寬管理拒絕 | |
狀態(tài)查詢 | IRQ | 信息請(qǐng)求 |
IRR | 信息證實(shí) | |
網(wǎng)關(guān)資源指示 | RAI | 網(wǎng)關(guān)資源可用性指示 |
RAC | 網(wǎng)關(guān)資源可用性證實(shí) |
消息過程都比較簡(jiǎn)單,一般是一端發(fā)出一個(gè)消息,另一方在收到消息后,如果需要響應(yīng),則發(fā)送一個(gè)響應(yīng)消息完成一個(gè)過程。可以參考下圖中的登記和去除登記消息。
RAS消息在呼叫開始和結(jié)束的時(shí)間都起著非常重要的作用,在呼叫開始時(shí),向網(wǎng)守發(fā)送ARQ,當(dāng)網(wǎng)守確認(rèn)該呼叫時(shí),將會(huì)返回包含端點(diǎn)的H.225信道的TCP地址(如果是網(wǎng)守選路方式,返回網(wǎng)守的H.225信道地址)。終端便可以根據(jù)該地址連接呼叫,而在呼叫結(jié)束的時(shí)候,在H.225和H245信道關(guān)閉后,也會(huì)發(fā)送DRQ/DCF消息以釋放占用的帶寬等資源。
在通話過程中,可能會(huì)有帶寬的變化,這就需要用到BRQ/BCF消息,至于其如何與H245消息結(jié)合起來操作的:
具體的實(shí)現(xiàn):
1)、 創(chuàng)建RAS偵聽(處理)線程
在網(wǎng)守初始化函數(shù)中,通過調(diào)用H323GatekeeperServer:AddListener函數(shù)創(chuàng)建RAS偵聽線程,便可以開始處理RAS消息了,而普通終端的UDP線程可以在設(shè)置網(wǎng)守時(shí)(H323EndPoint::SetGatekeeper函數(shù))才建立,也可以啟動(dòng)時(shí)即建立(人工創(chuàng)建)。
2)、 處理RAS的PDU的過程
處理RAS的函數(shù),對(duì)應(yīng)不同的類(H323gatekeeper和H323GatekeeperListener),調(diào)用的處理函數(shù)。在應(yīng)用程序中,當(dāng)調(diào)用AddListener時(shí),通過調(diào)用H.225_RAS::StartRasChnnel()函數(shù)創(chuàng)建了后臺(tái)線程——以HandleRasChannel()函數(shù)為主體,而在HandleRasChannel()函數(shù)中,有一個(gè)不斷循環(huán),從RAS信道中讀出數(shù)據(jù),交由H.225_RAS::HandleRasPDU()函數(shù)處理,而后者H.225_RAS::HandleRasPDU()函數(shù)則是根據(jù)接收到的PDU的類型,轉(zhuǎn)給不同的處理函數(shù)。
3)、 如何在應(yīng)用程序中調(diào)用
在應(yīng)用程序中如果只是實(shí)現(xiàn)呼叫或者等待呼叫時(shí),其實(shí)根本不需要直接與RAS相關(guān)處理類交互。發(fā)起呼叫調(diào)用終端類的MakeCall過程中,協(xié)議棧類庫(kù)將呼叫涉及到的過程和函數(shù)調(diào)用已經(jīng)封裝的相當(dāng)完善,無需開發(fā)者干涉。當(dāng)然,前提是在應(yīng)用程序開始的時(shí)候要先創(chuàng)建RAS偵聽線程。等待呼叫則是只需要保證應(yīng)用程序已經(jīng)創(chuàng)建RAS偵聽線程即可。在接收到H.225的Setup消息后,應(yīng)用程序自然會(huì)調(diào)用RAS線程的相關(guān)處理函數(shù),向網(wǎng)守發(fā)送ARQ消息。
2、H.245控制信令
1).能力交換過程
原理
這是H.225呼叫 建立成功后首先要執(zhí)行的一個(gè)過程,他使通行雙方了解對(duì)方接受和發(fā)送信號(hào)的能力。每個(gè)邏輯信道限定傳送某種媒體信息,采用一定的編碼算法,具有一定的帶寬,因此在信道建立之前,收發(fā)雙方必須就這些參數(shù)進(jìn)行協(xié)商,確定雙方可接受的參數(shù)范圍,這就是H.245的能力交換過程。
H.245協(xié)議采用接收方控制的原則建立邏輯信道,發(fā)送方只能在接收方規(guī)定的范圍內(nèi)確定信道特性參數(shù)。能力交換的主要功能就是通過適當(dāng)?shù)南⑾驅(qū)Ψ酵ǜ姹径说慕邮苣芰?。該消息也允許通告發(fā)送能力,但其作用只是表示本端的一種選擇意向,希望對(duì)方在確定其接收能力時(shí)予以考慮。當(dāng)獲得對(duì)方的接受能力后,本端就在此范圍內(nèi)確定其發(fā)送方式,啟動(dòng)邏輯信道打開過程。
能力集的主要參數(shù)是接受能力,對(duì)方(發(fā)送方)必須知道本端的接受能力才能建立邏輯信道。如果能力集不含接受能力,表示本端只能發(fā)送不能接受。發(fā)送能力的作用是供對(duì)方(接收方)使用,對(duì)方可以在本端給出的發(fā)送能力范圍內(nèi)提出它所希望的發(fā)送方式。如果本端不希望對(duì)方干預(yù)自己的發(fā)送方式,則可以在能力集中不提供發(fā)送能力,這并不表示它不具備發(fā)送能力。
描述終端接受能力或發(fā)送能力的終端能力集消息不但給出終端可以支持的各種媒體信號(hào)的操作模式而且給出終端同時(shí)處理多種信號(hào)可能的組合操作模式。消息中包含一個(gè)能力表,該表列出了終端所允許的操作模式,每種模式對(duì)應(yīng)能力表中的一個(gè)表項(xiàng),賦予相應(yīng)的序號(hào)。若干個(gè)能力號(hào)構(gòu)成了可選能力集(altemative capability set)數(shù)據(jù)結(jié)構(gòu),表示該終端可以按其中一種方式工作。實(shí)際上能力集描述了終端的一個(gè)媒體信道的能力。
若干個(gè)可選能力又構(gòu)成一個(gè)“同時(shí)能力(Simultaneous Capabilities)”數(shù)據(jù)結(jié)構(gòu),表示該視頻會(huì)議終端可以同時(shí)使用一組能力進(jìn)行工作。最后若干同時(shí)能力又可構(gòu)成一個(gè)“能力描述語集”(capability descriptors)數(shù)據(jù)結(jié)構(gòu),他包括一組能力描述語,每個(gè)描述語由一個(gè)同時(shí)能力和一個(gè)能力描述語序號(hào)組成。該數(shù)據(jù)結(jié)構(gòu)給出了終端的總體能力。之所以要定義多個(gè)描述語,是因?yàn)榻K端選用多種組合方式工作,在不同的組合方式下,各個(gè)信道的允許操作模式可以不一樣,以滿足所需的要求。
下圖終端能力集消息的嵌套式數(shù)據(jù)結(jié)構(gòu),其中,序號(hào)有有證實(shí)消息返回,發(fā)送端數(shù)據(jù)可以確定與該證實(shí)消息匹配的終端能力集消息。協(xié)議標(biāo)識(shí)指明H.245版本號(hào),復(fù)用能力主要指示該終端的多點(diǎn)通信能力,用于視頻會(huì)議通信。能力表每個(gè)表項(xiàng)的內(nèi)容不只是簡(jiǎn)單的編譯碼標(biāo)準(zhǔn)還包含許多相關(guān)的參數(shù)。
終端能力集消息至少包含一個(gè)能力描述語。在通信過程中,允許終端發(fā)送新增或修改描述語,以動(dòng)態(tài)增加或刪除終端能力。
2).主從確定過程
主從確定過程用于避免信令過程中的沖突現(xiàn)象。主要應(yīng)用于會(huì)議通信中的MC仲裁。由于一個(gè)會(huì)議呼叫只能有一個(gè)MC,如果兩個(gè)參會(huì)的H.323實(shí)體都含有MC,則必須確定其中一個(gè)是主MC。同樣的過程也使用與雙向信道的建立時(shí)主從終端的確定。在建立信道連接之前必須首先解決主從關(guān)系。
每個(gè)H.323端點(diǎn)應(yīng)該既能工作在主機(jī)模式也能工作在從機(jī)模式。在執(zhí)行過程時(shí),每個(gè)端點(diǎn)需要生成一個(gè)隨機(jī)數(shù)稱為狀態(tài)確定號(hào),其取值范圍為0~2(24)-1,每個(gè)端點(diǎn)對(duì)于呼叫只能確定一個(gè)隨機(jī)數(shù)。為了確定主從消息,任一個(gè)端點(diǎn)可以向?qū)Ψ桨l(fā)送一個(gè)主從確定消息,該消息包括兩個(gè)參數(shù):狀態(tài)確定號(hào)和終端類型。
對(duì)方收到確定消息后,執(zhí)行確定計(jì)算過程。確定的規(guī)則:首先比較兩個(gè)端點(diǎn)的終端類型值,大者為主機(jī):如果相同,在比較兩個(gè)端點(diǎn)的狀態(tài)確定號(hào),大者為主機(jī)。如果仍相同,則判斷為不可確定,則回送拒絕消息。再次啟動(dòng)主從確定過程。
如果兩個(gè)實(shí)體為不同類型有MC功能的高于無MC功能的實(shí)體;若沒有MC,則網(wǎng)關(guān)高于終端;若都有MC,則優(yōu)先級(jí)別自高到低順序?yàn)椋篗CU、網(wǎng)守、網(wǎng)關(guān)、終端。
3).邏輯信道信令過程
原理
邏輯信道的信令過程包括邏輯信道的打開和關(guān)閉。其設(shè)計(jì)思路是首先建立連接,確定接收方能夠接收并已準(zhǔn)備好接受由對(duì)方發(fā)送來的數(shù)據(jù)后,才開始媒體數(shù)據(jù)的傳輸,在接納新的邏輯信道時(shí),接受方必須確保原有邏輯信道的通信不受影響。
該協(xié)議過程還包括雙向信道的打開。為了防止雙方終端同時(shí)打開信道,引起沖突,需將其中一方定義為主終端,另一方定義為從終端。
邏輯信道的關(guān)閉一般也是有發(fā)送方發(fā)起。
(1)單向信道打開過程
信道打開恒由發(fā)送方啟動(dòng)。它向接受方發(fā)送打開邏輯信道消息,消息包含前向邏輯信道號(hào)和信道參數(shù)。其中,信道號(hào)必須發(fā)送方賦值,證實(shí)消息返回此值,以和請(qǐng)求消息匹配。信道參數(shù)包括數(shù)據(jù)類型、媒體信息是否需要確保傳送、是否執(zhí)行靜音抑制、目的地終端標(biāo)記等。如果該信道用來傳送RTP封裝的實(shí)時(shí)媒體消息,則信道參數(shù)還應(yīng)該包括會(huì)話標(biāo)記、關(guān)聯(lián)會(huì)話標(biāo)識(shí)、媒體信道、媒體控制信道。這樣,經(jīng)過此過程,兩端點(diǎn)間建立前向RTP信道和雙向RTCP信道。
(2)雙向信道打開過程
雙向信道打開過程和單向信道基本相同,其中主要的差別在與消息中還包含反向信道參數(shù)。因此一次消息交換同時(shí)建立兩個(gè)方向的信道。此外,請(qǐng)求方接受到對(duì)方的證實(shí)消息后,還需回發(fā)一個(gè)確定消息,表示反向信道的建立成功,可以開始傳送信號(hào)。如果對(duì)方不能支持本端要求的反向信道,則回送拒絕消息,然后立即啟動(dòng)雙向信道打開過程,其反向信道參數(shù)等于本端發(fā)送的前向信道參數(shù),其前向信道參數(shù)取為雙方都能支持的參數(shù)值。
4).呼叫釋放過程
原理
通信的任何一方都可發(fā)起呼叫釋放。為簡(jiǎn)單說明,假設(shè)呼叫信令和H.245控制信令都采用直接選路方式,其釋放步驟為:
(1). 端點(diǎn)1停止在邏輯信道上傳送信息,關(guān)閉所有邏輯信道。然后在H.245控制信道上向端點(diǎn)2發(fā)送結(jié)束會(huì)話的命令消息,告訴對(duì)方要結(jié)束該呼叫,其后停止發(fā)送H.245消息。
(2). 端點(diǎn)2收到上述消息后,關(guān)閉所有邏輯信道,向端點(diǎn)1回送結(jié)束會(huì)話命令消息。至此,H.245控制信道關(guān)閉。
(3). 如果呼叫信令信道尚未關(guān)閉,端點(diǎn)1向端點(diǎn)2發(fā)送H.225。Release Complete消息關(guān)閉此信道。至此,呼叫已釋放。
(4). 端點(diǎn)1和端點(diǎn)2分別向其網(wǎng)守發(fā)送RAS消息DRQ,告之該呼叫占用的帶寬資源可予以釋放。
(5). 網(wǎng)守向端點(diǎn)回送DCF。其中,端點(diǎn)將不在向網(wǎng)守發(fā)送未經(jīng)過請(qǐng)求的IRR消息。至此,完成全部釋放過程。
如果是會(huì)議呼叫,則必須首先用H.245“退出會(huì)議”消息明確終止會(huì)議,然后各個(gè)端點(diǎn)等待MC自動(dòng)呼叫釋放過程。
3、H.225呼叫信令
原理:H.225基本呼叫控制消息取自于Q.931和Q.932消息。但是由于其本身不承擔(dān)鏈接控制的任務(wù),所以許多消息不在H.225中出現(xiàn)。
雖然H.225呼叫信令模型取自于Q.931,但不同之處在于,Q.931用于ISDNUNI,兩端分別是用戶和網(wǎng)絡(luò),一般是不對(duì)稱的應(yīng)用,而在H323系統(tǒng)中,呼叫是對(duì)稱應(yīng)用的。
H323端點(diǎn)之間建立通信關(guān)系一般要經(jīng)過三個(gè)過程:
1):呼叫接收控制。
執(zhí)行RAS協(xié)議(H.225),控制信道為RAS信道(不可靠信道),網(wǎng)守同意接納后在端點(diǎn)和網(wǎng)守或端點(diǎn)之間建立起呼叫信令信道,進(jìn)入呼叫建立。
2):呼叫控制
執(zhí)行呼叫信令協(xié)議(H.225),控制信令為信令信道(可靠信道),呼叫建立成功后,在端點(diǎn)之間建立H245控制信道。
3)連接控制
執(zhí)行H245控制協(xié)議,控制信道為媒體控制信道,簡(jiǎn)稱控制信道(可靠信道),在端點(diǎn)之間建立起具有一定帶寬的一個(gè)或多個(gè)邏輯信道,實(shí)時(shí)通行的邏輯信道都是不可靠。