版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章視頻會(huì)議通信控制技術(shù)
8.1會(huì)議終端通信協(xié)議及過程8.2視頻數(shù)據(jù)實(shí)時(shí)傳輸控制技術(shù)8.3網(wǎng)守控制的會(huì)議終端通信過程8.4網(wǎng)守的設(shè)計(jì)與實(shí)現(xiàn) 8.1會(huì)議終端通信協(xié)議及過程
8.1.1終端間通信原理
兩個(gè)H.323會(huì)議終端間一次完整的通信過程包括5個(gè)階段:呼叫建立過程、能力交換和主從確定過程、媒體信道建立過程、媒體流傳輸過程和呼叫中止過程。
呼叫建立過程可以不經(jīng)過網(wǎng)守,直接在兩個(gè)終端間進(jìn)行。在多點(diǎn)視頻會(huì)議中,由于會(huì)議終端數(shù)量較多且能力不同,因而會(huì)議終端管理及呼叫建立過程一般通過網(wǎng)守進(jìn)行。呼叫建立過程使用H.225.0呼叫信令協(xié)議。能力交換和主從確定過程使用H.245協(xié)議。能力交換過程用來(lái)保證傳輸?shù)拿襟w信號(hào)是能夠被接收端接收的。這要求每一個(gè)終端的接收和解碼能力必須被對(duì)方終端知道。終端不需具備所有的能力,對(duì)于不能處理的要求可以不予理睬。終端通過發(fā)送它的能力集合使對(duì)方知道自己的接收和解碼能力,接收方可以從中選擇某種方式。主從確定過程通過主從終端判斷來(lái)保證當(dāng)一個(gè)呼叫中出現(xiàn)兩個(gè)終端同時(shí)初始化一個(gè)相同事件時(shí)不會(huì)產(chǎn)生沖突。終端的狀態(tài)一旦確定,在整個(gè)呼叫過程期間都不會(huì)改變。在能力交換過程完成后,主叫和被叫之間就可以根據(jù)對(duì)方的接收能力發(fā)起媒體信道建立過程,包括單向信道打開過程和雙向信道打開過程。媒體信道建立過程主要涉及RTP/RTCP協(xié)議。
媒體流傳輸過程主要是指在媒體信道上傳輸媒體信息流(包括音頻、視頻和數(shù)據(jù)流)。媒體流是直接在終端與終端之間或終端與MCU之間傳輸?shù)?不涉及網(wǎng)守,但在H.323系統(tǒng)跨越代理通信時(shí)需要重定向媒體流。在通信過程中,網(wǎng)守可以利用IRQ消息查詢終端的狀態(tài),也可以在RCF消息或ACF消息中要求終端定期發(fā)送IRR消息以便網(wǎng)守查詢終端狀態(tài)。在通信過程中還可以利用H.245控制消息實(shí)現(xiàn)改變信道結(jié)構(gòu)、能力、接收模式等功能。例如,可以通過BRQ消息改變邏輯信道的帶寬。8.1.2
H.225.0呼叫信令協(xié)議及呼叫建立過程
1.H.225.0呼叫信令協(xié)議
H.225.0呼叫信令協(xié)議是以ISDN的Q.931/Q.932為基礎(chǔ)制訂的,其中尤以Q.931最為重要。Q.931是ISDN用戶-網(wǎng)絡(luò)接口(UNI)的第三層信令協(xié)議,用于基本呼叫控制。它和網(wǎng)絡(luò)-節(jié)點(diǎn)接口(NNI)的7號(hào)信令I(lǐng)SDN用戶部分(ISUP)配合,完成從主叫用戶到被叫用戶的端到端連接的建立、維護(hù)和釋放。對(duì)于補(bǔ)充業(yè)務(wù),ISDNUNI制訂了通用功能協(xié)議Q.932,規(guī)定了各種補(bǔ)充業(yè)務(wù)的一般控制機(jī)制及相應(yīng)的消息和信息單元。與之對(duì)應(yīng),H.323系統(tǒng)也采用同樣的體系來(lái)處理補(bǔ)充業(yè)務(wù)。呼叫信令由多個(gè)信令消息組成,而消息中又包含了多個(gè)不同的信息單元。H.225.0呼叫信令消息和信息單元取自于Q.931和Q.932消息和信息單元。H.225.0與它們的主要差別是H.225.0對(duì)各個(gè)消息中用戶-用戶信息單元的內(nèi)容根據(jù)H.323系統(tǒng)作了新的增補(bǔ)定義,另外對(duì)某些信息單元的個(gè)別字段的編碼和含義作了一些擴(kuò)充和界定。
由于H.323呼叫不承擔(dān)連接控制的任務(wù),許多Q.931和Q.932中的消息在H.225.0中已經(jīng)失去意義,因此H.225.0消息是對(duì)Q.931和Q.932消息的一種精簡(jiǎn)。H.225.0呼叫信令消息如表8-1所示。表8-1
H.225.0呼叫信令消息
H.225.0消息可以分為四大類:呼叫建立消息、呼叫清除消息、其他消息和Q.932消息。其中前三大類消息繼承于Q.931消息。對(duì)于每個(gè)消息的含義和用途可參閱相關(guān)資料。H.225.0呼叫信令消息的一般結(jié)構(gòu)如圖8-1所示。圖8-1
H.225.0呼叫信令消息的一般結(jié)構(gòu)公共的消息頭部由三個(gè)部分組成:協(xié)議標(biāo)志符、呼叫引用值(CallReferenceValue,CRV)和消息類型。其中協(xié)議標(biāo)志符固定為80H,一個(gè)字節(jié)長(zhǎng)度,表示是Q.931協(xié)議。CRV長(zhǎng)度為2個(gè)字節(jié),其值由主叫方產(chǎn)生并且保證惟一性,用于標(biāo)識(shí)呼叫,僅在呼叫段上局部有效。例如,呼叫信令采用網(wǎng)守選路方式傳送,則主叫終端-網(wǎng)守和網(wǎng)守-被叫終端這兩個(gè)信令段的CRV值一般是不同的。若采用直接呼叫方式,則主叫終端和被叫終端的CRV值相同。為了予以區(qū)分,增設(shè)一個(gè)CRV標(biāo)志位F,規(guī)定主叫側(cè)發(fā)出的信令消息恒置F=0,被叫側(cè)發(fā)出的信令消息恒置F=1。消息類型由Q.931統(tǒng)一編碼,在H.225.0中也規(guī)定了一些擴(kuò)展值。除了上述固定的消息頭部外,每一個(gè)消息中包含了若干個(gè)信息單元(InformationElement,IE),其中某些是必備的,某些是任選的。H.225.0的信息單元共有16個(gè),其中從Q.931繼承了14個(gè),從Q.932繼承了2個(gè)。各信息單元名稱與相應(yīng)的功能如表8-2所示。表8-2
H.225.0信息單元及其功能
2.呼叫建立過程
呼叫建立過程包括呼叫控制和連接控制兩部分。
(1)呼叫控制:執(zhí)行呼叫信令協(xié)議(屬于H.225.0),控制信道為呼叫信令信道(可靠信道)。呼叫建立成功后,在終端之間建立起H.245控制信道。
(2)連接控制:執(zhí)行H.245控制協(xié)議,控制信道為媒體控制信道,簡(jiǎn)稱控制信道(可靠信道)。在終端之間建立起具有一定帶寬的一個(gè)或多個(gè)邏輯信道,如音頻邏輯信道、視頻邏輯信道。實(shí)時(shí)通信的邏輯信道均為不可靠信道,采用UDP連接。圖8-2直接傳遞信令消息的呼叫建立過程兩個(gè)會(huì)議終端直接傳遞信令消息的呼叫建立過程如圖8-2所示。
終端1(主叫終端)首先根據(jù)終端2的IP地址和呼叫信令信道公認(rèn)的TCP端口(終端默認(rèn)為1720)向終端2發(fā)起呼叫,建立其至終端2的TCP連接,即建立起可靠的呼叫信令信道。
終端1在此呼叫信令信道上發(fā)送Setup消息。
終端2回送CallProceeding消息,指示呼叫已經(jīng)抵達(dá),正在處理之中。
終端2向終端1回送Alerting消息,等待用戶應(yīng)答。用戶應(yīng)答后,終端2向終端1發(fā)送Connect消息,消息中帶有終端2的H.245控制信道TCP端口號(hào)。至此,呼叫建立完成。
之后,終端1會(huì)根據(jù)終端2發(fā)送的H.245控制信道TCP端口號(hào),與終端2建立H.245通道。至此,呼叫信令信道建立完畢。8.1.3
H.245媒體控制協(xié)議及過程
1.H.245媒體控制協(xié)議
H.245是通用的多媒體通信控制協(xié)議,主要針對(duì)會(huì)議通信設(shè)計(jì)。H.323系統(tǒng)采用H.245協(xié)議作為媒體控制協(xié)議,用于控制通信信道的建立、維護(hù)和釋放。在H.245中定義了兩類信道:控制信道和通信信道。其中,控制信道也稱為H.245信道,位于H.323實(shí)體上的兩個(gè)H.245對(duì)等信令實(shí)體通過該信道傳送H.245消息,以控制媒體信道的建立和釋放。通信信道也稱為邏輯信道,在其上傳送用戶通信信息。一般來(lái)說(shuō),兩個(gè)實(shí)體間可有多條邏輯信道,可分別傳送音頻、視頻、數(shù)據(jù)。在呼叫建立過程中,被叫終端向主叫終端回送Connect消息,傳遞被叫終端H.245控制信道TCP端口號(hào)。主叫終端通過該端口與被叫終端建立H.245控制信道,每個(gè)呼叫有且只有一個(gè)H.245控制信道,它伴隨著呼叫信令信道的存在而存在,直到通信結(jié)束后才釋放。在控制信道中,終端通過互相發(fā)送消息進(jìn)行能力協(xié)商(CapabilityExchange),確定雙方的接收能力和發(fā)送能力,即交換雙方所能支持的編解碼器類型信息,然后根據(jù)協(xié)商的結(jié)果,分別打開相應(yīng)的邏輯信道,在邏輯信道上傳送相應(yīng)的音視頻流。結(jié)束通信時(shí),由發(fā)送方關(guān)閉邏輯信道,雙方關(guān)閉H.245控制信道和呼叫信令信道。
H.245消息可以分為4種類型:請(qǐng)求、響應(yīng)、命令和指示。請(qǐng)求和響應(yīng)消息由協(xié)議實(shí)體使用,構(gòu)成協(xié)議過程。請(qǐng)求消息要求接收方執(zhí)行所要求的動(dòng)作,并立即返回響應(yīng)。響應(yīng)消息是對(duì)請(qǐng)求消息的回復(fù),可以是證實(shí)、拒絕和返回請(qǐng)求的結(jié)果。命令消息也要求接收方執(zhí)行指定的動(dòng)作,但不要求其回送響應(yīng)。指示消息通常是終端的狀態(tài)信息,它只傳送信息,不要求接收方執(zhí)行動(dòng)作,也不要求其回復(fù)響應(yīng)。
H.245幾個(gè)主要協(xié)議過程中使用的H.245消息如表8-3所示。其中每個(gè)過程都有相應(yīng)的請(qǐng)求消息。例如,能力集協(xié)商過程中,終端能力集請(qǐng)求消息,對(duì)應(yīng)的有終端能力集證實(shí)(Acknowledge)和拒絕(Reject)兩種響應(yīng)消息,而Release消息是發(fā)出請(qǐng)求后超時(shí)未收到任何響應(yīng)時(shí),請(qǐng)求方發(fā)出的撤除該請(qǐng)求的指示消息。打開邏輯信道確認(rèn)消息用于雙向信道建立,因?yàn)檫@是一個(gè)三次握手過程。維護(hù)環(huán)路命令關(guān)閉消息是通知對(duì)方環(huán)路測(cè)試結(jié)束的命令消息。表8-3
H.245協(xié)議過程中所用的消息
H.245基本命令消息見表8-4。其中流量控制消息的功能是限制一個(gè)邏輯信道的比特率或者所有邏輯信道總的比特率。發(fā)送終端能力集命令的作用是在發(fā)生中斷或其他不確定問題的情況下,請(qǐng)求遠(yuǎn)端終端發(fā)送能力集消息告知其發(fā)送和接收能力。加密命令用來(lái)交換加密能力,命令遠(yuǎn)端在信道上發(fā)送初始矢量。結(jié)束會(huì)話命令表示結(jié)束,終止H.245消息傳輸,通常是呼叫控制過程中的最后一個(gè)消息。表8-4
H.245基本命令消息表8-5
H.245基本指示消息
2.H.245主要協(xié)議過程
H.245控制信道建立以后,需要進(jìn)行能力協(xié)商以確定應(yīng)該打開哪些類型的邏輯信道,根據(jù)情況的不同,需要采用不同的協(xié)議過程。以下主要介紹H.245的幾個(gè)最重要的協(xié)議過程:能力協(xié)商(交換)過程、主從確定過程和邏輯信道信令過程。
1)能力協(xié)商過程
能力協(xié)商過程是H.245控制信道建立后首先要執(zhí)行的一個(gè)過程,它使通信雙方了解對(duì)方接收和發(fā)送信號(hào)的能力。接收能力限定了對(duì)端發(fā)送信號(hào)的模式,發(fā)送能力給定了對(duì)端請(qǐng)求信號(hào)希望模式的協(xié)商范圍。描述終端接收和發(fā)送能力的終端能力集消息不但給出終端可支持的各種媒體信號(hào)的操作模式,而且還給出了終端同時(shí)處理多種媒體信號(hào)的可能的組合操作模式。圖8-3給出了終端能力集消息的數(shù)據(jù)結(jié)構(gòu)。其中,序號(hào)由證實(shí)消息返回,發(fā)送終端據(jù)此可以確定與該證實(shí)消息匹配的終端能力集消息。協(xié)議標(biāo)識(shí)指明H.245版本號(hào)。復(fù)用能力主要指示該終端的多點(diǎn)通信能力,用于會(huì)議通信。能力表(CapabilityTable)列出了終端所允許的操作模式,如G.711音頻、G.722音頻、H.261CIF視頻等,每種模式對(duì)應(yīng)能力表中的一個(gè)表項(xiàng),賦予相應(yīng)的序號(hào),稱之為能力序號(hào)。圖8-3終端能力集消息的數(shù)據(jù)結(jié)構(gòu)一個(gè)能力描述語(yǔ)集(CapabilityDescriptorSet)由若干個(gè)能力描述語(yǔ)(CapabilityDescriptor)組成,每個(gè)能力描述語(yǔ)由一個(gè)能力描述語(yǔ)序號(hào)(CapabilityDescriptorNumber)和一個(gè)同時(shí)能力(SimultaneousCapabilities)組成。同時(shí)能力由若干個(gè)可選能力集(AlternativeCapabilitySet)組成,可選能力集由若干個(gè)能力序號(hào)(CapabilityNumber)組成。對(duì)于可選能力集,終端可以按照其中的任何一種方式工作,如可選能力集{G.711,G.723,G.728}表示終端可以采用其中任何一種音頻編碼方式,但不同時(shí)使用多種工作模式。而對(duì)于同時(shí)能力,終端可以同時(shí)使用一組能力進(jìn)行工作。例如,同時(shí)能力由可選能力集{H.261,H.263}和{G.711,G.723,G.728}組成,則表示終端可同時(shí)工作于一個(gè)視頻信道和一個(gè)音頻信道,視頻信道有H.261和H.263兩種可選模式,音頻信道有G.711、G.723和G.728三種可選操作模式。若干個(gè)同時(shí)能力構(gòu)成了能力描述語(yǔ)集,使得終端可能選用多種組合方式工作。在不同的組合方式下,各個(gè)信道允許的操作模式可能不一樣,以滿足不同的需求。例如,終端的能力描述語(yǔ)集中,一個(gè)同時(shí)能力為上述的{{H.261,H.263},{G.711,G.723,G.728}},另一個(gè)同時(shí)能力為{{H.262},{G.711}},它表示該終端的視頻信道也可以采用H.262編解碼,但此時(shí)音頻只能采用G.711。
2)主從確定過程
主從確定過程確定哪個(gè)終端是主終端,哪個(gè)是從終端,避免信令過程中的沖突現(xiàn)象。其主要應(yīng)用是會(huì)議通信中的MC仲裁。一個(gè)會(huì)議呼叫中只能有一個(gè)MC,如果兩個(gè)參會(huì)的H.323實(shí)體都含有MC,則必須通過一定的規(guī)則確定其中一個(gè)是主MC。該協(xié)議過程也適用于雙向信道建立時(shí)的主從終端確定。主從狀態(tài)確定后,在整個(gè)呼叫中將保持不變。
在執(zhí)行主從確定過程時(shí),每個(gè)終端需生成一個(gè)隨機(jī)數(shù),稱為狀態(tài)確定號(hào)(StatusDeterminationNumber),其取值范圍為0~224-1。為了確定主從關(guān)系,任一終端可向?qū)Ψ桨l(fā)送一個(gè)主從確定消息,該消息中包含兩個(gè)參數(shù):狀態(tài)確定號(hào)和終端類型。終端類型亦為一個(gè)整型數(shù),其值按表8-6的規(guī)定確定。表8-6用于主從確定過程的H.323終端類型取值對(duì)方收到主從確定消息后,執(zhí)行主從確定計(jì)算。確定主從終端的規(guī)則是:首先比較兩個(gè)終端的終端類型值,大者為主;如果終端類型值相同,再比較兩個(gè)終端的狀態(tài)確定號(hào),大者為主;如果仍然相同,則判定為不可確定。一般主從終端是可以確定的,此時(shí)對(duì)方回送確定消息,告知判定結(jié)果;如果不可確定,則回送確定拒絕消息,告知理由為數(shù)字相同,此時(shí),本地終端重新生成一個(gè)狀態(tài)確定號(hào),再次啟動(dòng)主從確定過程。
3)邏輯信道信令過程
能力協(xié)商完成后,終端就可根據(jù)對(duì)方的接收能力發(fā)起邏輯信道建立過程。以單向信道為例,其建立過程如圖8-4所示。圖8-4單向邏輯信道建立過程信道打開由發(fā)送方啟動(dòng),它向接收方發(fā)送打開邏輯信道消息,消息中包含前向邏輯信道號(hào)和信道參數(shù)。其中,信道號(hào)必須由發(fā)送方賦值,證實(shí)消息返回此值,以和請(qǐng)求消息匹配。信道參數(shù)包括數(shù)據(jù)類型、媒體信息是否需要確保傳送、是否執(zhí)行靜音抑制、目的地終端標(biāo)記等。
對(duì)方接收到打開邏輯信道消息并確認(rèn)后,回送打開邏輯信道證實(shí)消息,消息中包含前向邏輯信道號(hào)和前向復(fù)用證實(shí)參數(shù)。至此,兩終端間建立起了前向邏輯信道,開始傳送信號(hào)。這里,“前向”指的是打開邏輯信道消息發(fā)送方至接收方的方向。雙向信道信令過程和單向信道基本相同,其主要差別在于消息中還包含反向信道參數(shù)。因此,一次消息交換同時(shí)建立兩個(gè)方向的信道。此外,請(qǐng)求方收到對(duì)端的證實(shí)消息后,還需回發(fā)一個(gè)確認(rèn)消息,表示反向信道建立成功,可以開始傳送信號(hào)。
通信的雙方都可以發(fā)起呼叫釋放,但關(guān)閉邏輯信道只能由發(fā)送方完成。接收方如果遇到無(wú)法解碼等特殊情況,可以向發(fā)送方發(fā)送關(guān)閉邏輯信道請(qǐng)求。
8.2視頻數(shù)據(jù)實(shí)時(shí)傳輸控制技術(shù)
8.2.1
RTP/RTCP協(xié)議結(jié)構(gòu)
兩個(gè)終端間呼叫信令信道建立之后,H.245控制信道建立起來(lái),然后通過能力協(xié)商,打開相應(yīng)的H.245邏輯信道,其中傳輸視頻數(shù)據(jù)的視頻信道就是一種H.245邏輯信道。在視頻會(huì)議系統(tǒng)中,如何提高音視頻數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和通信的QoS,這是一個(gè)技術(shù)重點(diǎn)也是一個(gè)難點(diǎn)。在H.323視頻會(huì)議系統(tǒng)中,采用了IETF提出的RTP(Real-timeTransportProtocol,實(shí)時(shí)傳輸協(xié)議)來(lái)保證QoS。
RTP為具有實(shí)時(shí)特性的音頻視頻通信提供了傳輸服務(wù)。它實(shí)際上包含兩個(gè)協(xié)議:RTP本身和RTCP。RTP用以傳送實(shí)時(shí)數(shù)據(jù),提供凈荷類型指示、數(shù)據(jù)分組序號(hào)、數(shù)據(jù)發(fā)送時(shí)間戳和數(shù)據(jù)源標(biāo)識(shí)等。RTCP用于傳送實(shí)時(shí)信號(hào)傳遞的質(zhì)量參數(shù),提供QoS監(jiān)測(cè)機(jī)制,同時(shí)還可以傳送會(huì)議通信中的參會(huì)者信息,為會(huì)議通信提供控制機(jī)制。本節(jié)將分別介紹RTP、RTCP及其頭部結(jié)構(gòu)。
1.RTP
RTP通常運(yùn)行在UDP之上,二者共同完成傳輸層的功能。UDP提供復(fù)用及校驗(yàn)和服務(wù),也就是通過分配不同的端口來(lái)傳送多個(gè)RTP流。協(xié)議規(guī)定,RTP流應(yīng)使用偶數(shù)(2n)端口號(hào),相應(yīng)的RTCP應(yīng)使用相鄰的奇數(shù)(2n+1)端口號(hào)。
RTP分組頭部固定結(jié)構(gòu)如圖8-5所示。其各個(gè)字段的含義簡(jiǎn)單介紹如下,有關(guān)具體解釋和說(shuō)明可參閱協(xié)議規(guī)范文獻(xiàn)。圖8-5
RTP分組頭部結(jié)構(gòu)
V:版本號(hào),2比特,用于標(biāo)識(shí)RTP的版本號(hào),其值一般為2。
P:填充指示位,1比特。如果P位置“1”,表示分組結(jié)尾含有1個(gè)或多個(gè)填充字節(jié)。兩種情況下需要填充,一種是某些加密算法要求數(shù)據(jù)塊大小固定;二是在一個(gè)低層協(xié)議數(shù)據(jù)包中載有多個(gè)RTP分組。
X:擴(kuò)展指示位,1比特。如果X位置“1”,則固定頭部后還有一個(gè)擴(kuò)展頭部。擴(kuò)展頭部提供各種應(yīng)用,傳送和凈荷格式無(wú)關(guān)的附加的公共信息,建議不要使用。
CC:CSRC計(jì)數(shù),4比特,指示固定頭部后部的CSRC標(biāo)識(shí)的個(gè)數(shù)。
M:標(biāo)志位(Marker),1比特。標(biāo)志位的含義一般由應(yīng)用文檔解釋。例如,其在H.261視頻流的應(yīng)用中,一般作為幀邊界標(biāo)志。
PT:凈荷類型(PayloadType),7比特。該字段標(biāo)識(shí)RTP的凈荷類型,值為0標(biāo)識(shí)傳輸G.711u數(shù)據(jù);值為8標(biāo)識(shí)傳輸G.711A數(shù)據(jù);值為4標(biāo)識(shí)傳輸G.723數(shù)據(jù);值為18標(biāo)識(shí)傳輸G.729數(shù)據(jù);值為31標(biāo)識(shí)傳輸H.261數(shù)據(jù)。其值也可以由具體應(yīng)用定義。一般在會(huì)話過程中,RTP源可以改變凈荷類型。序號(hào)(SequenceNumber):16比特。每發(fā)送一個(gè)RTP分組,序號(hào)加1。序號(hào)可供接收方檢測(cè)分組丟失和恢復(fù)分組順序。序號(hào)的初值應(yīng)為隨機(jī)數(shù),使得數(shù)據(jù)加密后不易受到攻擊。
時(shí)間戳(Timestamp):32比特。時(shí)間戳指示的是RTP數(shù)據(jù)分組第一個(gè)字節(jié)的取樣時(shí)刻。如同序號(hào)一樣,時(shí)間戳的初始值也是隨機(jī)數(shù)。如果幾個(gè)相鄰的RTP分組是同時(shí)產(chǎn)生的,則它們的時(shí)間戳值應(yīng)相同,例如屬于同一幀的數(shù)據(jù)時(shí)間戳相同。
SSRC(SynchronousSource):同步源標(biāo)識(shí),32比特。SSRC用于標(biāo)識(shí)信號(hào)的同步源,其值隨機(jī)產(chǎn)生,但要保證同一個(gè)RTP會(huì)話中任意兩個(gè)同步源的SSRC標(biāo)識(shí)都不相同。
CSRC(ContributingSource):分信源標(biāo)識(shí),32比特。CSRC標(biāo)識(shí)由混合器插入,其值就是組成復(fù)合信號(hào)的每個(gè)分信號(hào)的SSRC標(biāo)識(shí),用于標(biāo)識(shí)各個(gè)組成分信號(hào)的信源。CSRC的個(gè)數(shù)由CC字段指定,最多包含15個(gè)。采用RTP協(xié)議傳送視頻時(shí),用UDP分組傳送,每個(gè)數(shù)據(jù)包并不一定按照先后順序到達(dá),甚至?xí)霈F(xiàn)數(shù)據(jù)包丟失的現(xiàn)象。此時(shí),可以利用序號(hào)字段來(lái)判斷是否有數(shù)據(jù)丟失,如有丟失,則需要進(jìn)行相應(yīng)的處理。另外,利用序號(hào)字段也可以對(duì)數(shù)據(jù)包進(jìn)行重新排序。根據(jù)M標(biāo)志位字段,可以快速判斷視頻數(shù)據(jù)包是否到了幀的結(jié)尾。根據(jù)時(shí)間戳字段,可以統(tǒng)計(jì)出每幀數(shù)據(jù)采樣的時(shí)間差,從而計(jì)算出發(fā)送端視頻數(shù)據(jù)的采樣速率。因此,采用RTP協(xié)議能快速得到一些統(tǒng)計(jì)信息,以便接收端采取相應(yīng)的措施,保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和正確性。
2.RTCP
RTCP的基本思想是采用和數(shù)據(jù)分組同樣的配送機(jī)制向RTP會(huì)話中的所有與會(huì)者周期性地傳送控制分組,從而提供數(shù)據(jù)傳送QoS的監(jiān)測(cè)手段,并獲知與會(huì)者的身份信息。RTCP主要有4大功能:提供數(shù)據(jù)傳送質(zhì)量的反饋信息,這是RTCP最主要和最基本的功能;傳送RTP源傳輸層永久標(biāo)識(shí),此標(biāo)識(shí)稱為規(guī)范名(CanonicalName,CNAME),接收方可根據(jù)CNAME跟蹤每個(gè)與會(huì)者;確定RTCP分組發(fā)送速率,一方面保證能及時(shí)提供監(jiān)測(cè)信息,另一方面使RTCP分組不會(huì)多到影響音視頻信號(hào)的傳送;傳送少量會(huì)話控制信息,如與會(huì)者標(biāo)識(shí)等。
RTCP中定義了如下幾個(gè)分組類型:發(fā)送者報(bào)告(SenderReport,SR)、接收者報(bào)告(ReceiverReport,RR)、源描述項(xiàng)(SourceDescription,SDES)、BYE(退出會(huì)話)和APP(應(yīng)用特定功能)。每個(gè)RTCP分組由固定頭部和若干個(gè)可變長(zhǎng)度的數(shù)據(jù)單元組成。分組長(zhǎng)度必定是32比特字的整數(shù)倍,且頭部有長(zhǎng)度字段,因此多個(gè)RTCP分組可以組裝成一個(gè)復(fù)合RTCP分組,各分組間無(wú)需分界指示。
SR是由數(shù)據(jù)發(fā)送者發(fā)出的發(fā)送和接收統(tǒng)計(jì)數(shù)據(jù),RR是由非數(shù)據(jù)發(fā)送者發(fā)出的接收統(tǒng)計(jì)數(shù)據(jù)。對(duì)于復(fù)合RTCP分組,第一個(gè)RTCP分組必須是SR或RR。即使尚未發(fā)送和接收任何數(shù)據(jù),也必須發(fā)送一個(gè)空的RR。
(1)頭部:長(zhǎng)度為8個(gè)字節(jié)。頭部包含以下字段:
·版本號(hào)V,2比特。這個(gè)字段標(biāo)識(shí)RTP的版本號(hào),其值一般為2。
·填充指示P,1比特,含義同RTP分組頭。
·接收?qǐng)?bào)告計(jì)數(shù)RC,5比特,指示分組中包含的接收?qǐng)?bào)告塊個(gè)數(shù),可以為0。
·凈荷類型PT,8比特。SR的凈荷類型值為200,RR的凈荷類型值為201。
·長(zhǎng)度,16比特,其值加1表示RTCP分組的長(zhǎng)度。長(zhǎng)度單位為32比特字,包括頭部和填充字節(jié)。
·發(fā)送方SSRC,32比特,為發(fā)送該SR分組站點(diǎn)的同步源標(biāo)識(shí)。
(2)發(fā)送方信息:長(zhǎng)度為20字節(jié),是SR分組的必備部分。發(fā)送方信息包含以下字段:
·NTP(NetworkTimeProtocol)時(shí)間戳,64比特,指出該SR分組發(fā)出的絕對(duì)時(shí)間,它表示相對(duì)于1990.1.1零點(diǎn)的時(shí)間差值,單位為秒。前32比特高位字為整數(shù)部分,后32比特低位字為小數(shù)部分。根據(jù)此值和由其他接收端回送的NTP時(shí)間戳,就能測(cè)出至這些接收端的往返傳播時(shí)延。
·RTP時(shí)間戳,32比特,它所指示的時(shí)間與NTP時(shí)間戳指示的時(shí)間相同,但時(shí)間單位和初始值與數(shù)據(jù)分組中的RTP時(shí)間戳相同。此值可用于NTP同步的不同信源之間的同步。
·發(fā)送方RTP分組計(jì)數(shù)值,32比特。其值為發(fā)送者自開始發(fā)送以來(lái)直至本SR分組生成為止發(fā)送的RTP數(shù)據(jù)分組總數(shù)。
·發(fā)送方RTP字節(jié)計(jì)數(shù)值,32比特。其值為發(fā)送者自開始發(fā)送以來(lái)直至本SR分組生成時(shí)為止發(fā)送的RTP數(shù)據(jù)分組的凈荷字節(jié)數(shù)(不含頭部和填充字節(jié)),該值可用來(lái)估算平均凈荷數(shù)據(jù)速率。
(3)接收?qǐng)?bào)告塊:每個(gè)報(bào)告塊提供來(lái)自指定同步源的接收數(shù)據(jù)的統(tǒng)計(jì)信息。接收?qǐng)?bào)告塊包含以下字段:
·SSRC-n,32比特,本報(bào)告塊信息所屬信源的SSRC標(biāo)識(shí)。
·丟失率,8比特,自上次SR發(fā)送以來(lái),由SSRC-n發(fā)來(lái)的RTP數(shù)據(jù)分組的丟失比率。
·累計(jì)丟失分組數(shù),24比特,指示從開始接收以來(lái)丟失的來(lái)自SSRC-n的RTP數(shù)據(jù)分組總數(shù)。
·擴(kuò)展的已接收最高序號(hào),32比特,該值減去收到的初始序號(hào)就是期望收到的分組數(shù)。
·到達(dá)時(shí)延抖動(dòng),32比特,是一對(duì)分組接收端接收間隔和發(fā)送端發(fā)送間隔之差值的平均偏差。
·最末SR時(shí)間戳,32比特,為最近收到的來(lái)自SSRC-n的SR分組中NTP時(shí)間戳的中間32比特。
·最末SR后的時(shí)延,32比特,為收到最近一個(gè)來(lái)自SSRC-n的SR分組至發(fā)送本接收?qǐng)?bào)告塊的時(shí)延,單位為1/65535秒。
2)QoS性能監(jiān)測(cè)
SR和RR中有許多有用的信息可供信號(hào)發(fā)送者、接收者和第三方監(jiān)測(cè)QoS性能和診斷網(wǎng)絡(luò)問題,并及時(shí)調(diào)整發(fā)送模式。這些信息可分為三類:累計(jì)信息、即時(shí)信息和時(shí)間信息。通過計(jì)算兩個(gè)接收?qǐng)?bào)告累計(jì)信息之差可以監(jiān)測(cè)長(zhǎng)期性能指標(biāo);由即時(shí)信息可以測(cè)量短期性能;時(shí)間信息可以用來(lái)計(jì)算比特率指標(biāo)。例如,兩個(gè)接收?qǐng)?bào)告的累計(jì)丟失分組數(shù)之差給出了在這段時(shí)間中的丟失分組數(shù);擴(kuò)展最高序號(hào)之差為這段時(shí)間內(nèi)的期望接收分組數(shù);二者之比為這段時(shí)間內(nèi)的分組丟失率。丟失分組數(shù)除以兩個(gè)報(bào)告的NTP時(shí)間戳之差為每秒分組丟失率。期望接收分組數(shù)減去丟失分組數(shù)即為這段時(shí)間內(nèi)收到的分組數(shù)。由期望接收分組數(shù)還可以判斷丟失統(tǒng)計(jì)指標(biāo)的可信度。由于上述測(cè)量都是基于兩個(gè)接收?qǐng)?bào)告之差的,因此即使曾發(fā)生報(bào)告丟失也不會(huì)影響測(cè)量結(jié)果。第三方即使沒有接收實(shí)際音視頻數(shù)據(jù),通過收到的發(fā)送者信息也可計(jì)算出這段時(shí)間內(nèi)的平均凈荷數(shù)據(jù)率和平均分組發(fā)送率,兩者之比即給出平均凈荷大小。假定分組丟失率和分組大小無(wú)關(guān),則由某個(gè)接收站接收分組數(shù)乘以平均凈荷大小就得出該接收站的吞吐量。
H.323系統(tǒng)利用RTCP的SR和RR監(jiān)測(cè)QoS。SR主要用于多RTP流,如音頻和視頻流的同步。與流同步的相關(guān)字段是RTP時(shí)間戳和NTP時(shí)間戳。RR用于監(jiān)測(cè)QoS指標(biāo),包括長(zhǎng)時(shí)間指標(biāo)和短時(shí)間指標(biāo)。如果分組丟失率高于設(shè)定值,就應(yīng)降低媒體速率。如果接收?qǐng)?bào)告間隔超過設(shè)定值,則根據(jù)RR分組中的丟失率判斷是否網(wǎng)絡(luò)擁塞。若是,應(yīng)降低媒體速率或者進(jìn)行其他相關(guān)的處理,如降低圖像幀速率、關(guān)閉不重要的媒體等。需要注意的是,RTP和RTCP為音頻、視頻等實(shí)時(shí)數(shù)據(jù)提供端到端的傳遞服務(wù),可以向接收終端傳送實(shí)時(shí)信號(hào)必需的定時(shí)和順序信息,并向收發(fā)雙方和網(wǎng)絡(luò)運(yùn)營(yíng)者提供QoS監(jiān)測(cè)手段。但是,RTP本身并不提供任何保證QoS的機(jī)制,要確保通信的實(shí)時(shí)性還需要IP網(wǎng)絡(luò)本身具有這方面的增強(qiáng)能力。8.2.2
H.261視頻數(shù)據(jù)的RTP封裝
1.RTP封裝原理
針對(duì)具體的音視頻標(biāo)準(zhǔn)的RTP封裝,IETF制訂了相應(yīng)的凈荷格式規(guī)范。現(xiàn)以H.261視頻格式為例,分析如何對(duì)視頻進(jìn)行RTP封裝。經(jīng)過RTP封裝后的H.261數(shù)據(jù)分組是一個(gè)如圖8-7所示的三層結(jié)構(gòu)。圖8-7
RTP數(shù)據(jù)分組圖8-8
H.261頭部結(jié)構(gòu)
H.261頭部結(jié)構(gòu)如圖8-8所示,長(zhǎng)度為4個(gè)字節(jié),32位。每個(gè)字段含義如下:
·SBIT(StartbitPosition,開始位位置),3比特,H.261數(shù)據(jù)中第一個(gè)字節(jié)需要被忽略的位數(shù),從第一位開始計(jì)算。
·EBIT(EndbitPosition,結(jié)束位位置),3比特,H.261數(shù)據(jù)中最后一個(gè)字節(jié)需要被忽略的位數(shù),從最后一位開始計(jì)算。
·I為幀內(nèi)編碼標(biāo)志,1比特。若數(shù)據(jù)流僅僅只有幀內(nèi)編碼塊數(shù)據(jù),則置“1”,否則置“0”。
·V為運(yùn)動(dòng)矢量標(biāo)志,1比特。如果數(shù)據(jù)流使用了運(yùn)動(dòng)矢量,則置“1”,否則置“0”。
·GOBN為塊組號(hào),4比特,分組中開始數(shù)據(jù)所在的塊組號(hào)。若分組以塊組頭開始,則置“0”。
·MBAP為宏塊地址預(yù)測(cè),5比特。
·QUANT為量化因子,5比特。若分組數(shù)據(jù)以塊組頭開始,最后5個(gè)字段值均置0。
·HMVD為水平運(yùn)動(dòng)矢量,5比特。若分組數(shù)據(jù)以塊組頭開始,最后5個(gè)字段值均置0。
·VMVD為垂直運(yùn)動(dòng)矢量,5比特。若分組數(shù)據(jù)以塊組頭開始,最后5個(gè)字段值均置0。如果每幀H.261數(shù)據(jù)都可以封裝在一個(gè)RTP分組中進(jìn)行傳輸,則RTP封裝問題將會(huì)很簡(jiǎn)單,可以將一幀數(shù)據(jù)封裝在一個(gè)RTP分組中。然而,由于一個(gè)RTP分組最大為2048字節(jié),而通常一幀數(shù)據(jù)甚至是一個(gè)塊組的數(shù)據(jù)都可能大到無(wú)法封裝在一個(gè)RTP分組中進(jìn)行傳輸。因此,需要將一幀數(shù)據(jù)分割成多個(gè)較小的數(shù)據(jù)包,再封裝在RTP分組中進(jìn)行傳輸。在國(guó)際標(biāo)準(zhǔn)中規(guī)定將宏塊作為RTP分組封裝不可分割的最小單位,多個(gè)宏塊可以封裝在同一個(gè)RTP分組中,并且只要分組大小允許,多個(gè)塊組甚至多個(gè)幀都可以封裝在一個(gè)RTP分組中。因?yàn)楫?dāng)數(shù)據(jù)量很小時(shí),這樣做可以減少數(shù)據(jù)包發(fā)送的頻率。需要注意的是,不可將幀頭和該幀中第一個(gè)塊組分開封裝在不同的RTP分組中,也不可將塊組頭和該塊組中第一個(gè)宏塊分開封裝在不同的RTP分組中。另外,有時(shí)宏塊并不是以整字節(jié)開始和結(jié)束的,而RTP封裝是以宏塊為最小分割單位的,所以在每個(gè)分組的H.261頭中包含了兩個(gè)3比特的整數(shù)SBIT和EBIT,分別標(biāo)識(shí)封裝后的H.261數(shù)據(jù)的第一個(gè)字節(jié)和最后一個(gè)字節(jié)中未被使用的比特位的個(gè)數(shù)。這些未被使用的位是用于補(bǔ)充成整字節(jié)的填充位。
2.RTP封裝具體實(shí)現(xiàn)算法
在一般的H.261視頻數(shù)據(jù)RTP封裝中,均以宏塊為最小分割單位。但是,在低帶寬情況下,可以以塊組為最小分割單位進(jìn)行RTP分組,這種方法與以宏塊為最小分割單位的方法原理相同,但是執(zhí)行效率較高。
對(duì)H.261數(shù)據(jù)流進(jìn)行RTP封裝可以分為以下三步進(jìn)行,其算法流程描述如圖8-9所示。圖8-9
H.261視頻數(shù)據(jù)RTP封裝的算法流程
(1)找?guī)^和塊組頭,并進(jìn)行分組。當(dāng)編碼器產(chǎn)生H.261數(shù)據(jù)流后,將該數(shù)據(jù)流保存到源緩沖區(qū)m_srcBuffer中,并將連0計(jì)數(shù)器m_zeroCounter置0,目標(biāo)緩沖區(qū)m_dstBuffer賦全0。根據(jù)H.261幀結(jié)構(gòu)可知,幀起始碼為00000000000000010000,共20位,塊組起始碼和塊組號(hào)連接在一起為0000000000000001xxxx,也是20位(其中xxxx的值為塊組號(hào),從1變化到12)。變量m_zeroCounter標(biāo)識(shí)連0的個(gè)數(shù),當(dāng)出現(xiàn)14個(gè)以上連0(H.261編碼時(shí)保證了純數(shù)據(jù)不會(huì)出現(xiàn)14個(gè)以上連0)且最后出現(xiàn)1時(shí),則認(rèn)為是找到了幀頭或塊組頭,而1后面的4比特位(將其值保存到變量m_gobNum中)決定了是幀頭還是塊組頭。當(dāng)m_gobNum等于0時(shí),則為幀頭;若m_gobNum大于0且小于等于12時(shí),則為塊組頭,且m_gobNum的值即為塊組號(hào);若m_gobNum值大于12,則認(rèn)為是出錯(cuò)。在找?guī)^和塊組頭的同時(shí),編碼器不斷從m_srcBuffer中讀出下一比特位的值,賦給臨時(shí)變量m_tmpBitValue,經(jīng)過判斷后將m_tmpBitValue寫入到m_dstBuffer(目標(biāo)緩沖區(qū))對(duì)應(yīng)的字節(jié)中對(duì)應(yīng)的比特位,以完成從源緩沖區(qū)到目標(biāo)緩沖區(qū)的數(shù)據(jù)拷貝。最終,m_dstBuffer中保存的值就是進(jìn)行找?guī)^和塊組頭后的分組數(shù)據(jù)。
(2)分組后的H.261數(shù)據(jù)加入H.261頭。此時(shí)需要在m_dstBuffer的分組數(shù)據(jù)前加入4個(gè)字節(jié)的H.261頭,H.261頭各個(gè)字段值由具體的數(shù)據(jù)內(nèi)容所決定。由于m_dstBuffer是從第0個(gè)字節(jié)的第0位開始拷貝的,所以將字段SBIT的值置為000;而字段EBIT的值則由m_dstBuffer的最后一個(gè)字節(jié)有幾個(gè)無(wú)效位(填充位)決定,其值在000~111之間變化。由于一般都采用幀內(nèi)和幀間編碼相結(jié)合的方式,所以字段I的值置0;H.261編碼中一般采用運(yùn)動(dòng)檢測(cè),字段M置1。采用塊組作為最小分割單位時(shí),GOBN、MBAP、QUANT、HMVD、VMVD幾個(gè)字段均置全0。
(3)在加入H.261頭的基礎(chǔ)上加入RTP頭。H.261分組數(shù)據(jù)加上H.261頭后,需要再添加RTP頭。當(dāng)找到幀頭時(shí),可以認(rèn)為是上一幀數(shù)據(jù)的結(jié)束,則將m_markFlag(幀結(jié)束標(biāo)志)置為1(修改RTP頭的Mark標(biāo)志位的值為1),再將加入H.261頭的m_dstBuffer加入相應(yīng)的RTP頭。當(dāng)找到塊組1時(shí),由于不能將幀頭和塊組1分開,所以在此處不作處理,繼續(xù)找塊組2的起始碼。當(dāng)找到塊組2到12時(shí),將m_markFlag(幀結(jié)束標(biāo)識(shí))置為0(修改RTP頭的Mark標(biāo)志位的值為0),再將加入H.261頭的m_dstBuffer加入相應(yīng)的RTP頭。最后將加上H.261頭和RTP頭的H.261分組數(shù)據(jù)從視頻邏輯信道中發(fā)送出去,在接收端按照與上述相反的過程去掉RTP頭和H.261頭即可得到視頻數(shù)據(jù)。至此,完成視頻會(huì)議系統(tǒng)中視頻數(shù)據(jù)的實(shí)時(shí)傳輸。
在低帶寬情況下,以塊組為最小分割單位時(shí)能極大提高程序運(yùn)行的效率;當(dāng)帶寬較大時(shí),需要以宏塊為最小分割單位,以此來(lái)保證傳輸?shù)膱D像質(zhì)量。當(dāng)將塊組作為最小分割單位時(shí),若視頻編碼率小于384kb/s,則圖像較為理想,基本不出現(xiàn)馬賽克現(xiàn)象。當(dāng)視頻編解碼速率大于768kb/s時(shí),圖像會(huì)出現(xiàn)比較嚴(yán)重的馬賽克現(xiàn)象(因?yàn)樘幚頃r(shí)將大于2048字節(jié)的塊組丟棄)。當(dāng)視頻編碼率速率較高時(shí),每個(gè)塊組數(shù)據(jù)量很大,會(huì)超過2048字節(jié),此時(shí)不能將一個(gè)塊組數(shù)據(jù)封裝在一個(gè)RTP包中,需要對(duì)塊組進(jìn)行拆分,將其分成多個(gè)宏塊進(jìn)行RTP封裝。
8.3網(wǎng)守控制的會(huì)議終端通信過程
由網(wǎng)守控制的H.323終端之間建立通信一般要經(jīng)過以下三個(gè)控制過程。
(1)呼叫接納控制:執(zhí)行RAS協(xié)議(屬于H.225.0),控制信道為RAS信道(不可靠信道)。網(wǎng)守同意接納后在終端和網(wǎng)守之間建立起呼叫信令信道,進(jìn)入呼叫建立。
(2)呼叫控制:執(zhí)行呼叫信令協(xié)議(屬于H.225.0),控制信道為呼叫信令信道(可靠信道)。呼叫建立成功后,在終端之間建立起H.245控制信道。
(3)連接控制:執(zhí)行H.245控制協(xié)議,控制信道為媒體控制信道,簡(jiǎn)稱控制信道(可靠信道)。在終端之間建立起具有一定帶寬的一個(gè)或多個(gè)邏輯信道,如音頻邏輯信道、視頻邏輯信道。實(shí)時(shí)通信的邏輯信道均為不可靠信道,采用UDP連接。8.3.1網(wǎng)守的功能
在H.323標(biāo)準(zhǔn)中,網(wǎng)守(GateKeeper,有時(shí)又稱網(wǎng)閘)提供對(duì)端點(diǎn)和呼叫的管理功能,它是一個(gè)任選部件,但是對(duì)于公用網(wǎng)上實(shí)際運(yùn)行的視頻會(huì)議系統(tǒng)來(lái)說(shuō),網(wǎng)守是一個(gè)不可缺少的重要組件。在邏輯上,網(wǎng)守是一個(gè)獨(dú)立于端點(diǎn)的功能單元,然而在物理實(shí)現(xiàn)時(shí),它可以裝備在終端、MCU或網(wǎng)關(guān)中。網(wǎng)守相當(dāng)于H.323網(wǎng)絡(luò)中的虛擬交換中心,其功能是向H.323節(jié)點(diǎn)提供呼叫控制服務(wù)。當(dāng)系統(tǒng)中存在網(wǎng)守時(shí),它必須提供以下基本功能:
(1)地址翻譯。根據(jù)端點(diǎn)在網(wǎng)守注冊(cè)時(shí)建立的翻譯數(shù)據(jù)庫(kù)表,將被叫終端或網(wǎng)關(guān)的別名地址翻譯為傳輸層地址。網(wǎng)守運(yùn)行期間,翻譯數(shù)據(jù)庫(kù)表不斷地根據(jù)注冊(cè)信息更新。別名可以是一些便于記憶的名字,比如昵稱或電子郵件地址等,但更常用的別名是E.164地址(電話號(hào)碼)。
(2)呼叫接入控制。當(dāng)端點(diǎn)發(fā)起呼叫時(shí),首先給網(wǎng)守發(fā)送接入請(qǐng)求消息(ARQ)。網(wǎng)守根據(jù)用戶的權(quán)限和此時(shí)的可用網(wǎng)絡(luò)帶寬等條件判定是否允許該次呼叫請(qǐng)求,相應(yīng)地回送接入證實(shí)(ACF)或接入拒絕(ARJ)消息。
(3)帶寬管理。網(wǎng)守支持BRQ/BRJ/BCF消息,網(wǎng)守根據(jù)終端類型和網(wǎng)絡(luò)帶寬利用率對(duì)域中帶寬的使用情況進(jìn)行控制,并且可以根據(jù)端點(diǎn)的請(qǐng)求情況和網(wǎng)絡(luò)實(shí)際運(yùn)行情況動(dòng)態(tài)地重新分配帶寬。
(4)區(qū)域管理。域中所有的設(shè)備都要在網(wǎng)守上注冊(cè),網(wǎng)守提供對(duì)整個(gè)域(包括終端、網(wǎng)關(guān)、MCU、MC以及非H.323設(shè)備)的管理功能。
(5)呼叫控制。H.323協(xié)議規(guī)定終端至終端的呼叫信令有兩種傳送方式:一是經(jīng)由網(wǎng)守轉(zhuǎn)接的網(wǎng)守轉(zhuǎn)發(fā)呼叫信令方式,雙方不知道對(duì)端的地址,有利于保護(hù)用戶的隱私權(quán),網(wǎng)守介入呼叫信令過程;另一種是端到端的直接路由呼叫信令,網(wǎng)守只在初始的RAS過程中提供被叫的呼叫信令信道傳輸層地址,其后不再介入呼叫信令過程。
(6)呼叫管理。例如,網(wǎng)守可以保存一份正在進(jìn)行的H.323呼叫清單,據(jù)此來(lái)判定被叫終端是否忙,并向帶寬管理模塊提供帶寬使用信息。
(7)網(wǎng)絡(luò)管理。網(wǎng)守可以向計(jì)費(fèi)中心提供計(jì)費(fèi)基礎(chǔ)數(shù)據(jù),向管理中心提供話務(wù)統(tǒng)計(jì)基礎(chǔ)數(shù)據(jù)。
(8)其他功能,如終端帶寬預(yù)留、目錄服務(wù)、信息庫(kù)管理等。8.3.2網(wǎng)守的層次結(jié)構(gòu)
公用視頻會(huì)議系統(tǒng)采用兩級(jí)體系結(jié)構(gòu),即頂級(jí)網(wǎng)守和一級(jí)網(wǎng)守。在業(yè)務(wù)量大的地區(qū)可根據(jù)需要增加二級(jí)網(wǎng)守,形成三級(jí)體系結(jié)構(gòu)。公用視頻會(huì)議系統(tǒng)網(wǎng)守的體系結(jié)構(gòu)如圖8-10所示。圖8-10公用視頻會(huì)議系統(tǒng)網(wǎng)守體系結(jié)構(gòu)頂級(jí)網(wǎng)守云可以包含多個(gè)頂級(jí)網(wǎng)守,頂級(jí)網(wǎng)守之間的連接、一級(jí)網(wǎng)守與頂級(jí)網(wǎng)守之間的連接以及不同運(yùn)營(yíng)者之間的連接由各運(yùn)營(yíng)者根據(jù)各自的情況自行確定其方式。當(dāng)運(yùn)營(yíng)者網(wǎng)絡(luò)規(guī)模不是很大時(shí),頂級(jí)網(wǎng)守的功能可由其中一個(gè)一級(jí)網(wǎng)守完成。
(1)頂級(jí)網(wǎng)守。頂級(jí)網(wǎng)守負(fù)責(zé)管理屬于該運(yùn)營(yíng)者的一級(jí)網(wǎng)守,主要負(fù)責(zé)一級(jí)網(wǎng)守之間的地址解析、不同運(yùn)營(yíng)者視頻會(huì)議網(wǎng)之間的互通和地址交換;也負(fù)責(zé)國(guó)際業(yè)務(wù)的管理,即國(guó)際呼叫的建立和拆除。
(2)一級(jí)網(wǎng)守。一級(jí)網(wǎng)守主要負(fù)責(zé)該一級(jí)網(wǎng)守所管轄的全部二級(jí)網(wǎng)守以及IP電話終端代理間的地址解析工作。在兩級(jí)網(wǎng)的情況下,二級(jí)網(wǎng)守的功能全部歸入一級(jí)網(wǎng)守。
(3)二級(jí)網(wǎng)守。二級(jí)網(wǎng)守主要負(fù)責(zé)所屬區(qū)域內(nèi)用戶的地址解析和認(rèn)證,防止非法用戶的接入和非法網(wǎng)關(guān)的登記;負(fù)責(zé)向所屬網(wǎng)關(guān)提供路由信息,包括被叫網(wǎng)關(guān)的端口信息等。
(4)網(wǎng)守之間的互通。網(wǎng)守之間的通信完成不同區(qū)域之間的呼叫建立。頂級(jí)網(wǎng)守與一級(jí)網(wǎng)守之間,或一級(jí)網(wǎng)守與二級(jí)網(wǎng)守之間的互通采用RAS協(xié)議,主要傳送用戶地址解析信息。
(5)網(wǎng)守與網(wǎng)關(guān)之間的互通。網(wǎng)守與網(wǎng)關(guān)之間使用RAS協(xié)議進(jìn)行通信,RAS信令采用H.225.0消息在網(wǎng)守與端點(diǎn)之間完成注冊(cè)、接入控制、帶寬轉(zhuǎn)換、狀態(tài)信息傳送和切斷等操作。RAS信令信道與呼叫信令信道和H.245呼叫控制信道無(wú)關(guān)。RAS信令信道為非可靠信道,使用UDP方式傳送信令。8.3.3網(wǎng)守的RAS協(xié)議及過程
1.RAS協(xié)議
RAS協(xié)議是H.225.0協(xié)議的一部分,故又稱H.225.0RAS協(xié)議。RAS協(xié)議為網(wǎng)守專用,故又稱網(wǎng)守RAS協(xié)議。
RAS協(xié)議用于端點(diǎn)和網(wǎng)守或網(wǎng)守與網(wǎng)守之間,主要實(shí)現(xiàn)呼叫的設(shè)備管理、地址解析、計(jì)費(fèi)和認(rèn)證信息的傳遞。具體的RAS消息如表8-7所示。表8-7
RAS消息表8-7
RAS消息
RAS協(xié)議的管理功能主要包括設(shè)備的管理、呼叫管理和資源管理三部分。
設(shè)備管理分為搜索、登錄和注銷三個(gè)流程。搜索有動(dòng)態(tài)搜索和靜態(tài)配置兩種,靜態(tài)配置無(wú)需進(jìn)行設(shè)備發(fā)現(xiàn)申請(qǐng),直接通過設(shè)備間事先的手工配置進(jìn)行。動(dòng)態(tài)搜索則需要設(shè)備進(jìn)行動(dòng)態(tài)的發(fā)現(xiàn)流程,即請(qǐng)求上級(jí)設(shè)備提供可接入的設(shè)備的IP地址,同時(shí)交換雙方的安全信息,協(xié)商加密算法,協(xié)商共享密碼。呼叫管理包括接入控制序列、拆線序列和地址解析序列,主要用在網(wǎng)關(guān)和網(wǎng)守之間。接入控制序列由網(wǎng)守檢查網(wǎng)關(guān)接入呼叫的信息,分為帶卡流程和不帶卡流程兩種;拆線序列實(shí)現(xiàn)呼叫的釋放、計(jì)費(fèi)信息的提取和保護(hù);地址解析序列根據(jù)被叫信息解析被叫對(duì)端網(wǎng)關(guān)的地址。
資源管理包括帶寬管理、信息查詢、資源可用性匯報(bào)序列。
2.RAS協(xié)議過程
RAS信道是不可靠傳輸信道(在IP網(wǎng)絡(luò)上使用UDP),用于承載注冊(cè)、認(rèn)證、狀態(tài)等RAS消息。RAS信道使用周知端口UDP1719。
1)網(wǎng)守查找
H.323提供一種自動(dòng)查找網(wǎng)守的方法。終端廣播一條網(wǎng)守請(qǐng)求消息GRQ,接收到GRQ消息的網(wǎng)守向該終端發(fā)出網(wǎng)守確認(rèn)消息GCF;當(dāng)網(wǎng)守不希望終端向其注冊(cè)時(shí)就發(fā)出網(wǎng)守拒絕消息GRJ,如圖8-11所示。如果一個(gè)終端收到多個(gè)GCF消息,它可以選擇其中一個(gè)網(wǎng)守注冊(cè)。圖8-11網(wǎng)守查找
2)終端注冊(cè)
注冊(cè)是一個(gè)終端加入一個(gè)域并告知網(wǎng)守其傳輸層地址和別名地址的過程。終端發(fā)起呼叫之前必須先向網(wǎng)守注冊(cè)。終端向網(wǎng)守發(fā)送登記請(qǐng)求消息RRQ,網(wǎng)守返回注冊(cè)確認(rèn)消息RCF或注冊(cè)拒絕消息RRJ,如圖8-12所示。圖8-12終端注冊(cè)終端可以向網(wǎng)守發(fā)送注銷注冊(cè)消息URQ以注銷其注冊(cè)。網(wǎng)守以注銷注冊(cè)確認(rèn)消息UCF響應(yīng)。當(dāng)終端并未在該網(wǎng)守注冊(cè)時(shí),網(wǎng)守返回注銷注冊(cè)拒絕消息URJ。注銷注冊(cè)使終端可以改變其別名地址和傳輸層地址的關(guān)聯(lián)。網(wǎng)守也可以通過發(fā)送URQ消息來(lái)注銷終端的注冊(cè),這時(shí)終端必須返回UCF消息。此后終端應(yīng)重新注冊(cè)。終端重新注冊(cè)時(shí)可以向另外一個(gè)網(wǎng)守注冊(cè)。注銷注冊(cè)過程如圖8-13所示。圖8-13注銷注冊(cè)過程
3)終端定位
當(dāng)一個(gè)終端或網(wǎng)守知道另一個(gè)終端的別名地址并想取得它的聯(lián)系信息時(shí),可以發(fā)出定位請(qǐng)求消息LRQ。LRQ消息可以發(fā)往指定網(wǎng)守的RAS信道,也可以向GRQ消息一樣廣播出去。另一個(gè)終端所注冊(cè)的網(wǎng)守應(yīng)發(fā)送定位確認(rèn)消息LCF,該LCF消息包含了該終端或該終端所屬的網(wǎng)守的聯(lián)系信息。聯(lián)系信息包括與該終端聯(lián)系的呼叫信令信道和RAS信道地址。
當(dāng)網(wǎng)守在其RAS信道上收到LRQ消息,而目標(biāo)終端未向其注冊(cè)時(shí),網(wǎng)守應(yīng)返回定位拒絕消息LRJ;當(dāng)網(wǎng)守在其廣播地址上收到LRQ消息,而目標(biāo)終端未向其注冊(cè)時(shí),網(wǎng)守不必做出響應(yīng)。
4)認(rèn)證、帶寬改變和脫離
RAS信道也用于傳送認(rèn)證、帶寬改變、狀態(tài)和脫離等消息。這些消息在終端和網(wǎng)守之間提供認(rèn)證控制和帶寬管理的功能。
認(rèn)證請(qǐng)求消息ARQ制訂了所需的呼叫帶寬,這是發(fā)送和接收的媒體信道除去RTP頭、RTP載荷、網(wǎng)絡(luò)載荷以及其他開銷的總的比特率上限。數(shù)據(jù)和控制信道不包括在此上限中。網(wǎng)守可以在認(rèn)證確認(rèn)消息ACF中降低呼叫帶寬。終端應(yīng)確保其發(fā)送和接收的媒體流的總比特率不高于呼叫帶寬。終端或網(wǎng)守可以通過帶寬更改請(qǐng)求消息BRQ來(lái)修改呼叫帶寬。8.3.4網(wǎng)守轉(zhuǎn)發(fā)呼叫信令過程
在沒有網(wǎng)守的網(wǎng)絡(luò)中,呼叫信令消息在主叫和被叫終端之間直接傳送。主叫終端應(yīng)知道被叫終端的呼叫信令信道傳輸層地址,以使它們能直接通信。呼叫信令信道可以使用周知端口TCP1720。
在包含網(wǎng)守的網(wǎng)絡(luò)中,初始的認(rèn)證消息在主叫終端和網(wǎng)守之間通過網(wǎng)守的RAS信道交換,網(wǎng)守在ACF消息中指示主叫終端呼叫信令是直接發(fā)往被叫終端還是通過網(wǎng)守轉(zhuǎn)發(fā)。
1)呼叫信令信道路由
呼叫信令有兩種傳送方式:一種方式是網(wǎng)守轉(zhuǎn)發(fā)呼叫信令,呼叫信令消息通過網(wǎng)守在兩個(gè)終端之間轉(zhuǎn)發(fā),如圖8-14所示;另一種方式是終端直連呼叫信令,呼叫信令消息在兩個(gè)終端之間直接傳送,如圖8-15所示。采用哪種方式由網(wǎng)守決定。圖8-14網(wǎng)守轉(zhuǎn)發(fā)呼叫信令圖8-15終端直連呼叫信令
2)H.245控制信道路由
當(dāng)采用網(wǎng)守轉(zhuǎn)發(fā)呼叫信令方式時(shí),有兩種方法轉(zhuǎn)發(fā)H.245控制信令:一種是在兩個(gè)終端之間直接建立H.245信道,如圖8-16所示;另一種方法是在終端和網(wǎng)守之間建立H.245信道,由網(wǎng)守轉(zhuǎn)發(fā)H.245控制消息,如圖8-17所示。采用哪種方式由網(wǎng)守來(lái)選擇。當(dāng)采用終端直接呼叫信令方式時(shí),H.245控制信道只能在終端之間直接建立。圖8-16終端直接建立H.245控制信道圖8-17網(wǎng)守轉(zhuǎn)發(fā)H.245控制信道8.3.5呼叫中止信令過程
通信的任何一方都可以發(fā)起呼叫終止過程,而且網(wǎng)守也可以終止一個(gè)呼叫。
1)終端中止呼叫
終端中止呼叫的步驟如下:
(1)關(guān)閉所有媒體信道。
(2)在H.245控制信道中發(fā)送結(jié)束會(huì)話消息(EndSessionCommand),通知遠(yuǎn)端斷開媒體信道連接,然后停止H.245控制消息的傳輸。
(3)等待接收遠(yuǎn)端的結(jié)束會(huì)話消息,然后關(guān)閉H.245控制信道。
(4)若呼叫信令信道是打開的,則發(fā)送ReleaseComplete消息并關(guān)閉此信道。
(5)如果終端已在網(wǎng)守注冊(cè),則還要向網(wǎng)守發(fā)送H.225.0脫離請(qǐng)求消息DRQ,網(wǎng)守以脫離證實(shí)消息DCF響應(yīng)。這是因?yàn)榫W(wǎng)守需要知道帶寬釋放的情況。DRQ/DCF消息在RAS信道上發(fā)送。
如果未發(fā)出結(jié)束會(huì)話消息的終端收到了結(jié)束會(huì)話消息,它將執(zhí)行上述除第(3)步外的其他4步,無(wú)需等待遠(yuǎn)端發(fā)送結(jié)束會(huì)話消息。
2)網(wǎng)守中止呼叫
網(wǎng)守可以向一個(gè)端點(diǎn)發(fā)送DRQ來(lái)中止呼叫。此終端應(yīng)立即執(zhí)行如下步驟:
(1)關(guān)閉所有媒體信道。
(2)在H.245控制信道中發(fā)送結(jié)束會(huì)話消息通知遠(yuǎn)端斷開媒體信道連接,然后停止H.245控制消息的傳輸。
(3)等待接收遠(yuǎn)端的結(jié)束會(huì)話消息,然后關(guān)閉H.245控制信道。
(4)如果呼叫信令信道是打開的,則發(fā)送ReleaseComplete消息并關(guān)閉此信道。
(5)網(wǎng)守發(fā)送DCF消息。8.3.6快速協(xié)議過程
為加快邏輯信道的建立速度和節(jié)省資源,在H.323v4版本之中定義了快速連接(FastStart)方式和隧道機(jī)制(Tunneling)。
1)快速連接
常規(guī)的H.323系統(tǒng)協(xié)議過程是首先利用H.225.0信令建立呼叫,然后進(jìn)行能力交換,最后才打開傳輸媒體流的邏輯信道,其過程比較繁雜??焖龠B接的特點(diǎn)是將信道建立過程和呼叫建立過程融合在一起,且省略了能力交換過程,從而有效地縮短了連接建立時(shí)間??焖龠B接的過程如下:主叫在Setup消息中置入“快速啟動(dòng)”(FastStart)數(shù)據(jù)單元,該單元由若干個(gè)“打開邏輯信道”(OLC)數(shù)據(jù)結(jié)構(gòu)組成,每個(gè)OLC描述主叫提議的一個(gè)發(fā)送或接收媒體信道,包括立即打開此信道并在此信道上傳輸媒體信息所需的所有參數(shù)。如果被叫愿意執(zhí)行快速連接過程,則可在主叫提議的OLC中選取它同意并能夠支持的一個(gè)信道構(gòu)成返回快速啟動(dòng)數(shù)據(jù)單元,置入后向消息(CallProceeding、Alerting或Connect等)之中返回給主叫,這樣,凡是選中的信道就認(rèn)為已經(jīng)被打開。被叫在給主叫返回了包含返回快速啟動(dòng)數(shù)據(jù)單元的后向消息后,就立即可以開始在自己打開的反向信道上發(fā)送媒體信息,并準(zhǔn)備好在它同意接受的前向信道上接收媒體信息。于此相應(yīng),主叫在發(fā)出Setup消息后必須準(zhǔn)備在它提議的任一個(gè)反向信道上接收數(shù)據(jù)。如果被叫不能執(zhí)行或者不愿執(zhí)行快速啟動(dòng),則可以拒絕使用此過程。方法是不在Connect及其以前的后向消息中包含任何返回快速啟動(dòng)數(shù)據(jù)單元。另外,如果主叫未在Setup消息中發(fā)送快速啟動(dòng)數(shù)據(jù)單元,被叫也不能自己生成返回快速啟動(dòng)數(shù)據(jù)單元。快速連接過程只能由主叫發(fā)起。
2)隧道機(jī)制
為了節(jié)省資源、融合呼叫信令和呼叫控制并縮短呼叫建立時(shí)間,H.323v4設(shè)計(jì)了在H.225.0呼叫信令信道上傳送H.245消息的隧道機(jī)制。
隧道機(jī)制在呼叫信令消息之中新增一個(gè)“H.245隧道”單元,將H.245消息作為字符串復(fù)制、封裝在該單元中。一個(gè)信令消息可以封裝多個(gè)H.245消息,接收方按順序逐個(gè)處理。如果在需要傳送H.245消息時(shí)沒有信令消息要發(fā)送,則用Facility消息封裝傳送。如果主叫要使用隧道機(jī)制,則應(yīng)置Setup消息中的“H.245隧道”單元為真,其后所有信令消息中的該單元都須置真。如果被叫支持并愿意使用隧道機(jī)制,也要在響應(yīng)Setup的所有后向消息中置“H.245隧道”單元為真。一旦某消息置此單元為假,則自此以后隧道機(jī)制失效。被叫可以用將此單元置假的方法來(lái)拒絕使用隧道機(jī)制。隧道機(jī)制不能和快速連接方式同時(shí)使用,因?yàn)樗淼纻魉偷腍.245消息可以強(qiáng)制覆蓋快速連接過程。
快速連接方式和隧道機(jī)制在H.323系統(tǒng)跨越代理通信的情形之中也要求能夠理解其連接建立過程,并能夠處理相應(yīng)的消息。 8.4網(wǎng)守的設(shè)計(jì)與實(shí)現(xiàn)
8.4.1網(wǎng)守的系統(tǒng)設(shè)計(jì)
網(wǎng)守的結(jié)構(gòu)如圖8-18所示。這是一種較為完整的結(jié)構(gòu),適合大規(guī)模系統(tǒng)應(yīng)用。此處我們只討論能夠?yàn)樗羞B接到LAN上的H.323端點(diǎn)提供基本服務(wù)的網(wǎng)守的實(shí)現(xiàn)問題。
1)標(biāo)準(zhǔn)性要求
網(wǎng)守設(shè)計(jì)應(yīng)符合ITU-T制訂的H.323協(xié)議和中國(guó)通信行業(yè)標(biāo)準(zhǔn)《IP電話網(wǎng)守設(shè)備技術(shù)要求》的要求,支持H.225.0、H.245、LAN通信協(xié)議(IEEE802.3或IEEE802.3u)、TCP/IP等;使用面向?qū)ο蟮木幊碳夹g(shù),使系統(tǒng)具有清晰的邏輯層次結(jié)構(gòu),系統(tǒng)應(yīng)具有較強(qiáng)的兼容性,易于維護(hù)和二次開發(fā);能夠和符合H.323協(xié)議的各種設(shè)備(網(wǎng)守、終端、MCU、網(wǎng)關(guān))相兼容,并且可以為它們提供相應(yīng)的服務(wù)。
2)功能性要求
網(wǎng)守應(yīng)實(shí)現(xiàn)H.323規(guī)定的基本功能和部分可選附加功能,實(shí)現(xiàn)相關(guān)的所有協(xié)議,應(yīng)具有記錄網(wǎng)守運(yùn)行日志的能力,能夠提供計(jì)費(fèi)所使用的原始通信紀(jì)錄,實(shí)現(xiàn)計(jì)費(fèi)功能,或提供運(yùn)營(yíng)商所需的計(jì)費(fèi)接口。根據(jù)H.323協(xié)議中關(guān)于網(wǎng)守功能的規(guī)定,可將網(wǎng)守劃分為五個(gè)功能模塊:
·呼叫控制和管理(CallControlandManagement)
·地址翻譯(AddressTranslation)
·帶寬控制和管理(BandwidthControlandMangement)
·用戶認(rèn)證、授權(quán)和計(jì)費(fèi)(Authentication,Authorization&Account,AAA)
·計(jì)費(fèi)信息的采集(CallDetailRecordConvergence,CDRConvergence)
3)運(yùn)行環(huán)境要求
系統(tǒng)要最大限度地適用于多種平臺(tái)環(huán)境,兼容性要好,一般要求能夠在Windows9x、Windows2000、WindowsXP、WindowsCE、UNIX等平臺(tái)下運(yùn)行。
4)使用維護(hù)要求
要求系統(tǒng)兼容性較強(qiáng),結(jié)構(gòu)簡(jiǎn)單,維護(hù)方便,升級(jí)容易,功能較強(qiáng),組網(wǎng)靈活,成本較低。圖8-18網(wǎng)守的結(jié)構(gòu)8.4.2網(wǎng)守的實(shí)現(xiàn)方法
網(wǎng)守實(shí)現(xiàn)基于面向?qū)ο蟮木幊谭椒?用VC++語(yǔ)言作為開發(fā)系統(tǒng),采用Pwlib和OpenH323兩個(gè)SDK動(dòng)態(tài)連接類庫(kù)。
軟件實(shí)現(xiàn)平臺(tái)采用Pwlib和OpenH323兩個(gè)動(dòng)態(tài)連接類庫(kù)的原因在于:
(1)這兩個(gè)庫(kù)中封裝了大量的通信類庫(kù)以處理信令交互和報(bào)文收發(fā),整個(gè)平臺(tái)的設(shè)計(jì)遵循開放性原則(MozillaPublicLicense),能夠很好地支持H.323協(xié)議。
(2)類庫(kù)Pwlib是一個(gè)適度大小的類庫(kù),它的發(fā)展已有很長(zhǎng)一段時(shí)間了,其最初的主要目的是形成一種同時(shí)可在MicrosoftWindows、UNIX、Linux等多種操作系統(tǒng)平臺(tái)上運(yùn)行的具有通用性的類庫(kù)系統(tǒng),然而它以后的發(fā)展卻遠(yuǎn)遠(yuǎn)超越了最初的目的。I/O的封裝類、多線程類、UNIX后臺(tái)郵件收發(fā)類、基于NT平臺(tái)的服務(wù)器類,幾乎所有的互聯(lián)網(wǎng)協(xié)議類均被逐漸地增加進(jìn)來(lái),同時(shí)遵循了開放性原則,因此Pwlib非常適合作為開發(fā)H.323系統(tǒng)的基礎(chǔ)類庫(kù)。
(3)類庫(kù)OpenH323基于類庫(kù)Pwlib之上,也是一種開放源代碼的、可供互操作的、具備完整特性的、適度大小的、面向整個(gè)H.323協(xié)議棧的基礎(chǔ)類庫(kù),是由澳大利亞一家叫EquivalencePtyLtd的公司發(fā)展起來(lái)的。在遵循開放性原則的前提下,所有對(duì)其感興趣的團(tuán)體、商業(yè)、個(gè)人均可免費(fèi)使用該類庫(kù)。
(4)開發(fā)人員可以通過互聯(lián)網(wǎng)在開放性原則下共同使用這兩個(gè)類庫(kù),相互交流,共同開發(fā),共同提高,這使得我們可以最大限度地降低開發(fā)成本和減少開發(fā)周期,也使得網(wǎng)守與類庫(kù)可實(shí)現(xiàn)同時(shí)升級(jí)。
網(wǎng)守的開發(fā)系統(tǒng)采用VisualC++6.0,數(shù)據(jù)庫(kù)使用微軟的Access。對(duì)于一個(gè)電信級(jí)會(huì)議系統(tǒng),由于用戶數(shù)很多,數(shù)據(jù)量很大,安全性要求很高,必須使用大型的數(shù)據(jù)庫(kù)來(lái)完成各種信息的存取,通??墒褂肧QLServer、Oracle、Sybase等。使用Microsoft的Access數(shù)據(jù)庫(kù),主要基于以下考慮:
(1)微軟在Windows和VisualStudios系列中對(duì)Access數(shù)據(jù)庫(kù)的支持,讓我們可以方便地操作Access數(shù)據(jù)庫(kù),并且它的效率也較高。
(2)面向小規(guī)模應(yīng)用所設(shè)計(jì)的網(wǎng)守,數(shù)據(jù)量相對(duì)還不是很大,Access數(shù)據(jù)庫(kù)完全滿足應(yīng)用要求。
(3)Access數(shù)據(jù)庫(kù)的整個(gè)數(shù)據(jù)存放在一個(gè)文件中,移動(dòng)和拷貝比較方便。
(4)采用適當(dāng)?shù)姆庋b之后,在以后需要升級(jí)到大規(guī)模的應(yīng)用數(shù)據(jù)庫(kù)時(shí),可以方便地從訪問Access數(shù)據(jù)庫(kù)向訪問SQLServer或者Oracle數(shù)據(jù)庫(kù)過渡轉(zhuǎn)變。當(dāng)然,如果使用ODBC數(shù)據(jù)庫(kù)引擎訪問數(shù)據(jù)庫(kù),這種轉(zhuǎn)變將不再是問題。8.4.3網(wǎng)守的實(shí)現(xiàn)
1.模塊說(shuō)明
根據(jù)以上對(duì)網(wǎng)守功能結(jié)構(gòu)的分析,我們?cè)趯?shí)現(xiàn)時(shí)把網(wǎng)守分解為以下幾個(gè)主要的功能模塊:RAS協(xié)議過程實(shí)現(xiàn)模塊、呼叫信令路由模塊、端點(diǎn)注冊(cè)信息鏈表模塊、計(jì)費(fèi)模塊、H.245協(xié)議處理模塊等,如圖8-19所示。圖8-19網(wǎng)守主要模塊的信息傳遞結(jié)構(gòu)圖
RAS協(xié)議過程實(shí)現(xiàn)模塊用來(lái)處理RAS協(xié)議過程,它包括網(wǎng)守搜尋(采用多播機(jī)制完成)、端點(diǎn)登記、呼叫接納、呼叫退出、帶寬管理等過程,并且把相應(yīng)的端點(diǎn)信息傳送到端點(diǎn)注冊(cè)信息鏈表模塊。
呼叫信令路由模塊用來(lái)與終端之間進(jìn)行H.225.0呼叫信令過程,它包括呼叫建立、呼叫清除、Q.932消息處理等過程,并且支持呼叫轉(zhuǎn)移功能,既可以進(jìn)行一般的連接過程,又支持快速連接過程。建立呼叫路由之前首先要從端點(diǎn)注冊(cè)信息鏈表模塊中取得端點(diǎn)信息,在合法的情況下再去建立呼叫路由,然后再把呼叫信息傳送到當(dāng)前呼叫信息鏈表模塊中,直至呼叫清除時(shí)再次傳送信息給當(dāng)前呼叫信息鏈表模塊和計(jì)費(fèi)模塊去處理。端點(diǎn)注冊(cè)信息鏈表模塊用來(lái)儲(chǔ)存注冊(cè)終端的詳細(xì)信息,包括別名、呼叫信令傳輸層地址、RAS端口地址、終端ID、終端類型、制造廠商代碼等;還提供端點(diǎn)的插入、刪除、更新、查詢、類型判斷、超時(shí)處理等大量的用戶接口功能。
當(dāng)前呼叫信息鏈表模塊用來(lái)儲(chǔ)存當(dāng)前正在進(jìn)行呼叫和通話的每一對(duì)呼叫的詳細(xì)信息,包括主叫和被叫ID、呼叫ID、呼叫引用值、分配帶寬、呼叫的發(fā)起時(shí)間等信息,同樣也包括呼叫的插入、刪除、更新、查詢等大量的用戶接口功能。計(jì)費(fèi)模塊從呼叫信令路由模塊中取得呼叫信息,對(duì)每次的呼叫原始計(jì)費(fèi)信息進(jìn)行詳細(xì)記錄。這些信息至少包括呼叫起始時(shí)間、終止時(shí)間、主被叫E.164別名地址、主被叫IP地址、使用帶寬等信息。
2.網(wǎng)守主程序
一個(gè)處于運(yùn)行狀態(tài)中的網(wǎng)守,其各個(gè)功能模塊的瞬時(shí)運(yùn)行狀態(tài)都是隨機(jī)并發(fā)的,每個(gè)模塊內(nèi)部又要同時(shí)處理若干個(gè)端點(diǎn)的請(qǐng)求或連接。因此網(wǎng)守最適合于使用多線程的編程方法來(lái)實(shí)現(xiàn)。網(wǎng)守在實(shí)現(xiàn)時(shí),首先由主程序創(chuàng)建RAS處理線程、呼叫信令處理線程、多播接收處理線程這三個(gè)線程來(lái)啟動(dòng)相應(yīng)的功能處理模塊,然后在各線程內(nèi)部當(dāng)每接收一個(gè)請(qǐng)求或連接時(shí),該模塊便向系統(tǒng)申請(qǐng)所需的資源,然后在其內(nèi)部產(chǎn)生一個(gè)專門用來(lái)處理此次請(qǐng)求或連接的子線程,直至此次請(qǐng)求或連接結(jié)束時(shí),該子線程將自動(dòng)停止運(yùn)行,釋放所占用的系統(tǒng)資源以備系統(tǒng)重新分配使用。網(wǎng)守的主程序完成的任務(wù)主要是生成網(wǎng)守的主控制臺(tái)界面窗口,實(shí)現(xiàn)網(wǎng)守運(yùn)行前的初始化過程,搜集所需的各項(xiàng)環(huán)境參數(shù),建立終端注冊(cè)表(EndpointTable)、當(dāng)前呼叫信息表(CallDetailTable)等各功能塊運(yùn)行所必需的信息鏈表,啟動(dòng)網(wǎng)守各功能模塊的相應(yīng)線程,以及隨時(shí)根據(jù)系統(tǒng)管理員發(fā)出的控制臺(tái)命令對(duì)網(wǎng)守當(dāng)前工作狀態(tài)、運(yùn)行日志進(jìn)行查詢、關(guān)閉或結(jié)束網(wǎng)守等動(dòng)作。圖8-20是網(wǎng)守的主控制臺(tái)界面。圖8-20網(wǎng)守的主控制臺(tái)界面網(wǎng)守的主控制臺(tái)界面主要包括四部分:菜單欄、圖形按鈕、網(wǎng)守所在主機(jī)IP地址顯示窗、網(wǎng)守工作信息顯示窗。菜單欄內(nèi)包含很多命令,用于啟動(dòng)或關(guān)閉網(wǎng)守,查看注冊(cè)終端表、當(dāng)前呼叫信息表、工作日志等。圖形按鈕是最常用的菜單命令的快捷按鈕。網(wǎng)守所在主機(jī)IP地址顯示窗是網(wǎng)守啟動(dòng)后顯示主機(jī)IP地址的窗口,該地址供各終端設(shè)置時(shí)查詢使用。網(wǎng)守工作信息顯示窗用于顯示網(wǎng)守的工作狀態(tài)以及各表項(xiàng)參數(shù)。
網(wǎng)守主程序的簡(jiǎn)要工作流程如圖8-21所示。圖8-21網(wǎng)守主程序簡(jiǎn)要工作流程下面是網(wǎng)守主程序中啟動(dòng)各功能塊的關(guān)鍵語(yǔ)句以及簡(jiǎn)要說(shuō)明,它們完成了各數(shù)據(jù)鏈表的建立和各工作線程的啟動(dòng):
//建立注冊(cè)終端信息表
MyEnviron.EPTable=newEndpointTable(MyEnviron);
//建立當(dāng)前呼叫信息表
MyEnviron.CTable=newCallTable(MyEnviron);
//建立RAS日志
MyEnviron.Log=newOpengateLog;
//創(chuàng)建呼叫信令處理線程
CallThread*CThread=newCallThread(MyEnviron);
MyEnviron.MyCallAddr=CThread->GetMyCallSignallingAddr();
//創(chuàng)建RAS信令處理線程
RasThread*RThread=newRasThread(MyEnviron);
//創(chuàng)建Multicastreceiver線程
MulticastThread*MCThread=newMulticastThread(MyEnviron);
3.RAS消息處理線程
RAS消息處理線程(RasThread)完成的功能實(shí)際就是RAS協(xié)議過程,它包括網(wǎng)守搜尋、端點(diǎn)登記等過程。RAS協(xié)議是端點(diǎn)和網(wǎng)守之間執(zhí)行的協(xié)議,基本上實(shí)現(xiàn)管理功能。
網(wǎng)守賦予了一個(gè)公認(rèn)TSAP標(biāo)識(shí)(對(duì)于IP網(wǎng)絡(luò)來(lái)說(shuō)就是TCP/UDP端口號(hào))作為RAS信道的TSAP標(biāo)識(shí),對(duì)于IP網(wǎng)絡(luò)來(lái)說(shuō)就是端口1719。一般的端點(diǎn)在啟動(dòng)時(shí)首先要向網(wǎng)守注冊(cè)登記,因此必須事先知道網(wǎng)守的RAS協(xié)議的傳輸層地址(網(wǎng)絡(luò)層地址+TSAP標(biāo)識(shí)),也稱為RAS地址。圖8-22是RAS消息處理線程的簡(jiǎn)要流程。圖8-22
RAS消息處理線程簡(jiǎn)要流程流程圖中處理RAS消息是該線程的核心部分,完成了RAS協(xié)議的主要功能,包括端點(diǎn)登記、呼叫接納和退出帶寬管理等功能。
1)網(wǎng)守搜索
網(wǎng)守搜索有兩種方式:人工方式和自動(dòng)方式。自動(dòng)方式是通過搜尋多播地址發(fā)送GRQ消息來(lái)實(shí)現(xiàn)的。人工方式通過對(duì)端點(diǎn)的配置來(lái)完成,將其歸屬的網(wǎng)守傳輸層地址預(yù)置入端點(diǎn)的配置文件或初始化文件中。
自動(dòng)方式允許端點(diǎn)和歸屬網(wǎng)守的關(guān)系可以隨時(shí)間而改變,當(dāng)原有網(wǎng)守出故障時(shí)可以自動(dòng)切換到替換網(wǎng)守上去,當(dāng)所屬網(wǎng)守改變后無(wú)需在每個(gè)終端上修改其配置文件。在自動(dòng)方式中,端點(diǎn)采用搜尋多播地址發(fā)送GRQ消息,詢問“誰(shuí)是我的網(wǎng)守”??梢杂幸粋€(gè)或多個(gè)網(wǎng)守回送GCF消息,表示“我可以是你的網(wǎng)守”,并在消息中告知其RAS地址。不愿意該端點(diǎn)在其上登記的網(wǎng)守則返回GRJ消息。如果有多個(gè)網(wǎng)守回送GCF消息,端點(diǎn)可在其中任選一個(gè)作為其歸屬網(wǎng)守。如果超時(shí)仍未收到網(wǎng)守的響應(yīng),端點(diǎn)可重發(fā)GRQ消息,但兩次相鄰GRQ之間的時(shí)間間隔不能小于5秒。如果仍未收到響應(yīng),則改用人工搜尋。當(dāng)然如果事先知道網(wǎng)守的IP地址,則可以直接使用人工搜尋。端點(diǎn)發(fā)送的GRQ消息包含端點(diǎn)類型、端點(diǎn)自身的RAS地址、希望在其上登記的網(wǎng)守標(biāo)識(shí)等參數(shù)。若未含網(wǎng)守標(biāo)識(shí)參數(shù),就表示端點(diǎn)愿意在任何一個(gè)網(wǎng)守上登記。網(wǎng)守返回的GCF消息除了包含該網(wǎng)守標(biāo)識(shí)和RAS地址外,還可包含“替換網(wǎng)守”序列參數(shù)并指定優(yōu)先級(jí)順序。如果至該網(wǎng)守的請(qǐng)求未予響應(yīng)或被拒絕
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度個(gè)人教育貸款合同擔(dān)保及學(xué)業(yè)信用管理協(xié)議3篇
- 2024版中式快餐店租賃管理服務(wù)合同
- 2024年度建筑水電安裝與消防工程施工合同
- 2024年度供應(yīng)鏈管理合同的詳細(xì)條款3篇
- 2024年10kv線路施工期安全生產(chǎn)責(zé)任書
- 內(nèi)蒙古大學(xué)創(chuàng)業(yè)學(xué)院《數(shù)字音頻創(chuàng)作》2023-2024學(xué)年第一學(xué)期期末試卷
- 大學(xué)生寢室心理活動(dòng)
- 內(nèi)蒙古大學(xué)《工業(yè)機(jī)器人技術(shù)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度新型建筑材料委托加工合同3篇
- 2024版?zhèn)€人住房租賃連帶責(zé)任保證擔(dān)保合同3篇
- 現(xiàn)代教育技術(shù)智慧樹知到期末考試答案章節(jié)答案2024年濟(jì)寧學(xué)院
- 現(xiàn)代通信技術(shù)導(dǎo)論智慧樹知到期末考試答案章節(jié)答案2024年北京科技大學(xué)
- 英國(guó)簽證戶口本翻譯模板(共4頁(yè))
- 列管式換熱器設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書
- 電鍍生產(chǎn)工序
- 初中語(yǔ)文課外古詩(shī)文董仲舒《春秋繁露》原文及翻譯
- (完整)(電子商務(wù)軟件研發(fā)及產(chǎn)業(yè)化建設(shè)項(xiàng)目)監(jiān)理月報(bào)(201202)
- 旅游出行安全告知書
- 一線員工技能等級(jí)評(píng)定方案
- 輸電線路鐵塔基礎(chǔ)施工質(zhì)量控制
評(píng)論
0/150
提交評(píng)論