開(kāi)發(fā)H.323協(xié)議棧是通信設(shè)計(jì)過(guò)程中的一項(xiàng)極其艱巨的任務(wù),難點(diǎn)主要在于:復(fù)雜的協(xié)議棧開(kāi)發(fā)需要投入數(shù)年的工程設(shè)計(jì)資源,而且掌握這些復(fù)雜的標(biāo)準(zhǔn)還需要一個(gè)知識(shí)的積累和學(xué)習(xí)過(guò)程,本文將探討開(kāi)發(fā)H.323協(xié)議棧和VoIP應(yīng)用系統(tǒng)遇到的問(wèn)題、歧義、困難等。
利用基于原語(yǔ)(primitive)的H.323協(xié)議棧開(kāi)發(fā)IP承載話音(VoIP)應(yīng)用系統(tǒng)不是一項(xiàng)小任務(wù),因?yàn)閯?chuàng)建一個(gè)魯棒的應(yīng)用系統(tǒng),需要花很多時(shí)間去研究含糊的標(biāo)準(zhǔn)和復(fù)雜的狀態(tài)機(jī)。
本文用例子說(shuō)明流程的實(shí)現(xiàn)以及原語(yǔ)(primitive)的定義,用以說(shuō)明如何構(gòu)建一個(gè)基于原語(yǔ)接口的應(yīng)用系統(tǒng)和一個(gè)基于簡(jiǎn)單接口的替代方案。在開(kāi)發(fā)協(xié)議棧之前,建議瀏覽一下H.323的基本標(biāo)準(zhǔn)。H.323是國(guó)際電信聯(lián)盟(ITU)頒布的標(biāo)準(zhǔn),由一系列特定協(xié)議組成,包括Q.931、H.225、H.245和ASN.1。為了提供呼叫信令功能,H.323部分融合了H.225和Q.931標(biāo)準(zhǔn)。H.245定義了多個(gè)流程,以便于進(jìn)行能力信息互換(exchange capability)、主從判斷(master-slave determination)和信道(channel)信令。最后,ASN.1規(guī)定了數(shù)據(jù)格式,使兼容H.323的端點(diǎn)能夠互通。
基本概念
使用H.323時(shí),正確理解原語(yǔ)和流程這兩個(gè)術(shù)語(yǔ)很關(guān)鍵。原語(yǔ)用來(lái)描述應(yīng)用層和H.323協(xié)議棧下層之間傳遞的結(jié)構(gòu)或消息。H.323定義了多個(gè)原語(yǔ),有四種類(lèi)型:請(qǐng)求、指示、響應(yīng)和確認(rèn)。每個(gè)原語(yǔ)的參數(shù)的數(shù)量是可變的,這由相關(guān)流程決定。這些參數(shù)表示應(yīng)用層和協(xié)議棧下層的通信信息。
在H.323協(xié)議族中的每個(gè)協(xié)議定義了一組流程。每個(gè)流程代表一個(gè)狀態(tài)機(jī),在大多數(shù)情況下,該狀態(tài)機(jī)用原語(yǔ)的形式規(guī)定一組消息,這些消息以特定的順序發(fā)送和接收。這些原語(yǔ)便于應(yīng)用層和下層的通信。
流程提供具體的功能,可以異步啟動(dòng)或終止,或啟動(dòng)后在整個(gè)對(duì)話過(guò)程中保持激活狀態(tài)。例如,H.245流程包括主從判斷、能力信息互換、單向和雙向信道信令。其中,只有信令信道在實(shí)際的對(duì)話過(guò)程中保持激活。其它只是激活后發(fā)送和接收數(shù)據(jù),然后就終止了。Q.931/H.225流程包括呼叫建立和拆除。圖1表示一個(gè)完整的H.323協(xié)議棧的實(shí)現(xiàn)。值得指出的是,該實(shí)現(xiàn)依賴于網(wǎng)絡(luò)協(xié)議棧和實(shí)時(shí)操作系統(tǒng)(RTOS)。多數(shù)應(yīng)用系統(tǒng)需要RTOS以便同時(shí)處理多個(gè)流程和/或呼叫。
呼叫信令
如上所述,H.323融合了Q.391和H.225協(xié)議,可提供呼叫信令功能。實(shí)際上,Q.931是ISDN相關(guān)的協(xié)議,用于建立和拆除呼叫。盡管從來(lái)沒(méi)有打算應(yīng)用于VoIP應(yīng)用系統(tǒng),但是通過(guò)在該協(xié)議上增加信息,可以為H.323提供比較類(lèi)似的相關(guān)功能。
Q.931分組(packet)包含多個(gè)稱(chēng)為信息單元(information element)的參數(shù)。例如,Q.931分組可以包含一個(gè)用戶信息單元。H.323規(guī)定用戶信息單元必須包含一條H.225消息。H.323的附加信息存于此。有關(guān)網(wǎng)關(guān)、網(wǎng)守(gatekeeper)和協(xié)商的大部分信息由H.225承載。
Q.931和H.225定義呼叫信令,而H.245定義許多呼叫業(yè)務(wù)。最常用的業(yè)務(wù)包括主從判斷、能力信息互換、信道信令。當(dāng)Q.931建立起呼叫,這些流程啟動(dòng)。此時(shí),兩個(gè)終端已經(jīng)同意互連,但是還沒(méi)有收發(fā)多媒體數(shù)據(jù)。
主從判斷流程協(xié)商決定哪個(gè)終端是主,哪個(gè)是從。該流程可應(yīng)用于:將一次協(xié)商中相同類(lèi)型的媒體數(shù)據(jù)流聯(lián)系起來(lái);避免和解決由于編解碼器間的依賴關(guān)系造成的沖突。
能力(capability)信息互換流程告知遠(yuǎn)程終端的音頻、視頻或數(shù)據(jù)能力。這可以避免能力猜測(cè)過(guò)程(即建立一個(gè)信道并發(fā)送遠(yuǎn)程終端可能無(wú)法識(shí)別的數(shù)據(jù))。