文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)10-0117-03
隨著Internet 和語(yǔ)音壓縮技術(shù)的發(fā)展, 針對(duì)傳統(tǒng)電話網(wǎng)通話成本高的弊端,人們提出了VoIP(Voice over Internet Protocol)技術(shù), 該技術(shù)可將語(yǔ)音數(shù)據(jù)在分組交換網(wǎng)絡(luò)中傳輸, 提供比傳統(tǒng)業(yè)務(wù)更多更好的服務(wù), 并大大降低了語(yǔ)音業(yè)務(wù)的成本,。目前主流的VoIP 協(xié)議包括1998 年ITU-T 提出的H.323 協(xié)議族、1999年由IETF 定義的會(huì)話初始協(xié)議SIP (Session Initial Protocol)和媒體網(wǎng)關(guān)控制協(xié)議MGCP (Media Gateway Control Protocol)標(biāo)準(zhǔn),。MGCP 協(xié)議是在吸收H.323 經(jīng)驗(yàn)的基礎(chǔ)上,。
目前國(guó)內(nèi)外基于MGCP 協(xié)議的開(kāi)發(fā)仍較有限, 伴隨著VoIP的不斷發(fā)展, 開(kāi)發(fā)能夠處理MGCP通信信令的協(xié)議棧以及在協(xié)議棧基礎(chǔ)上開(kāi)發(fā)MGCP的應(yīng)用越來(lái)越受到人們的關(guān)注,。然而通常MGCP協(xié)議主要是由軟件實(shí)現(xiàn)的, 在具體實(shí)現(xiàn)過(guò)程中要耗費(fèi)大量的CPU 處理時(shí)間, 處理速度比較慢, 而通過(guò)硬件實(shí)現(xiàn)協(xié)議棧則可以大大減輕系統(tǒng)的網(wǎng)絡(luò)處理負(fù)荷,。本文基于嵌入式操作系統(tǒng),采用DSP實(shí)現(xiàn)了改進(jìn)的MGCP協(xié)議——WMGCP協(xié)議的設(shè)計(jì)。該協(xié)議使運(yùn)行于局域網(wǎng)的VoIP電話通信系統(tǒng)在完成基本呼叫控制的同時(shí)還能實(shí)現(xiàn)群呼,、全呼和擴(kuò)音呼叫,,并使信令傳榆和交換過(guò)程簡(jiǎn)單、系統(tǒng)運(yùn)行穩(wěn)定,,節(jié)省了系統(tǒng)資源,、降低了系統(tǒng)成本,。
1 MGCP協(xié)議簡(jiǎn)介
MGCP協(xié)議由簡(jiǎn)單網(wǎng)關(guān)控制協(xié)議(SGCP) 和IP 設(shè)備控制規(guī)范(IPDC) 融合而成,是一個(gè)分布式IP電話網(wǎng)關(guān)系統(tǒng)的內(nèi)部協(xié)議,用于控制來(lái)自外部呼叫控制單元的IP語(yǔ)音(VoIP)網(wǎng)關(guān)[1-2],。MGCP定義了媒體網(wǎng)關(guān)控制器(MGC)和媒體網(wǎng)關(guān)(MG)之間的操作,。MGC又可稱(chēng)為軟交換或呼叫代理(CA-Call Agent) , 主要負(fù)責(zé)處理控制信令, 根據(jù)接收到的信令控制媒體網(wǎng)關(guān)的連接建立和釋放。MG對(duì)應(yīng)的媒體網(wǎng)關(guān)包括中繼網(wǎng)關(guān)(TG),、接入網(wǎng)關(guān)(AG)和接入設(shè)備(IAD)等,分別負(fù)責(zé)橋接相應(yīng)類(lèi)型的網(wǎng)絡(luò),。MGCP的要點(diǎn)是對(duì)網(wǎng)關(guān)命令的發(fā)布,以及網(wǎng)關(guān)在這些命令上的操作和發(fā)送返回信號(hào),。這些命令的目的是控制網(wǎng)關(guān)中連接創(chuàng)建和終止的操作,,并使呼叫代理了解到發(fā)生在網(wǎng)關(guān)端點(diǎn)上的事件,。
MGCP 協(xié)議消息采用UDP 協(xié)議傳送,以加快消息傳送速度,。但由于UDP 本身只能提供不可靠的傳送服務(wù),所以MGCP采用了重發(fā)定時(shí)機(jī)制、“至多執(zhí)行一次”功能,、消息捎帶機(jī)制和臨時(shí)響應(yīng)機(jī)制,以保證消息的可靠傳送和正確處理[3],。MGCP 協(xié)議消息分為命令和響應(yīng)兩類(lèi), 每個(gè)命令需要接收方回送響應(yīng), 并采用“三次握手”方式證實(shí)?;贛GCP的VoIP電話網(wǎng)關(guān)系統(tǒng)如圖1所示,。
2 協(xié)議需求分析
本VoIP電話通信系統(tǒng)應(yīng)用于石油、化工和煤炭等生產(chǎn)企業(yè)的生產(chǎn)調(diào)度,,它利用企業(yè)現(xiàn)有的局域網(wǎng)絡(luò)實(shí)現(xiàn)網(wǎng)內(nèi)和網(wǎng)間電話通信,,用戶間可以實(shí)現(xiàn)單呼、群呼,、全呼和擴(kuò)音呼叫,。該系統(tǒng)采用的媒體網(wǎng)關(guān)控制協(xié)議是改進(jìn)的MGCP協(xié)議—WMGCP協(xié)議,系統(tǒng)由電話終端,、呼叫控制器MGC,、中繼網(wǎng)關(guān)TMG和網(wǎng)管系統(tǒng)組成,系統(tǒng)組成框圖如圖2所示,。其中,電話終端中實(shí)現(xiàn)了MG和電話機(jī)功能,,簡(jiǎn)化了系統(tǒng)結(jié)構(gòu);TMG負(fù)責(zé)與外部PSTN電話網(wǎng)絡(luò)的對(duì)接,;網(wǎng)管系統(tǒng)負(fù)責(zé)電話通信系統(tǒng)的網(wǎng)絡(luò)管理,;呼叫控制器(MGC)內(nèi)部包含了MGCP服務(wù)器,提供了基本的呼叫控制業(yè)務(wù);IP分組傳輸網(wǎng)為局域網(wǎng)[4],。
在MGCP協(xié)議中,,規(guī)定了呼叫方網(wǎng)關(guān)、呼叫代理和被呼叫方網(wǎng)關(guān)間的所有交互命令和消息,,而要實(shí)現(xiàn)這一整體協(xié)議過(guò)程,,需要一定的軟件資源和硬件條件,。本系統(tǒng)采用TMS320C5402芯片實(shí)現(xiàn)MGCP協(xié)議棧,由于DSP系統(tǒng)資源有限,,因此需要對(duì)MGCP協(xié)議進(jìn)行改進(jìn),。考慮本局域網(wǎng)VoIP系統(tǒng)的實(shí)際需求后, 從以下幾方面進(jìn)行改進(jìn):
(1) 由于系統(tǒng)容量較小,,電話終端的IP地址與電話號(hào)碼有固定的計(jì)算關(guān)系,所以設(shè)計(jì)時(shí)將IP地址與電話號(hào)碼綁定,,不需要龐大的映射表。
(2) 語(yǔ)音的編解碼方式指定為G.711A率,,因此不需要設(shè)計(jì)EPCF程序,。
(3) 每一個(gè)MG上只有一個(gè)終結(jié)點(diǎn)(電話機(jī)),MG和MGC記錄的終結(jié)點(diǎn)狀態(tài)和連接認(rèn)為是同步的,因此呼叫控制器(MGC)不需要通過(guò)審計(jì)終結(jié)點(diǎn)命令查詢MG特定終結(jié)點(diǎn)的狀態(tài)和檢查指定連接的各種信息,,所以不需要設(shè)計(jì)AUEP和AUCX程序,。
(4) 在完成一對(duì)一呼叫的同時(shí),協(xié)議中增加了擴(kuò)音呼叫、群呼及全呼控制,,增加了系統(tǒng)功能,。
改進(jìn)后的WMGCP協(xié)議棧既實(shí)現(xiàn)了MGCP協(xié)議的基本功能,又減少了設(shè)計(jì)上的復(fù)雜程度,同時(shí)由于上層協(xié)議(如UDP等)的設(shè)計(jì)相對(duì)獨(dú)立, 對(duì)其影響也非常小,。
3 WMGCP協(xié)議的設(shè)計(jì)
3.1 分層設(shè)計(jì)
WMGCP協(xié)議采用分層設(shè)計(jì),與RFC2705中定義的分層結(jié)構(gòu)略有不同[2],。按照系統(tǒng)中WMGCP消息的實(shí)際處理過(guò)程將層次分為:傳輸適配層,編,、解碼層,,事務(wù)層和應(yīng)用層API。它們?cè)诖怪狈较蛏嫌忻黠@的上下層關(guān)系,,實(shí)現(xiàn)自上而下的調(diào)用,。分層結(jié)構(gòu)如圖3 所示。
傳輸適配層調(diào)用UDP 套接字發(fā)送WMGCP 數(shù)據(jù),,或者從UDP層接收WMGCP 數(shù)據(jù),。WMGCP 協(xié)議端口默認(rèn)值為2427/2727。
編,、解碼層用于實(shí)現(xiàn)WMGCP消息的構(gòu)建和解析,。WMGCP 消息的構(gòu)建是指將事務(wù)層提供的WMGCP事務(wù)結(jié)構(gòu)格式按照需要生成起始行、頭域和消息體等有用信息,,并將這些信息轉(zhuǎn)換成WMGCP協(xié)議消息格式,。WMGCP消息的解析是指將WMGCP協(xié)議消息解碼為WMGCP事務(wù)結(jié)構(gòu),提供給WMGCP事務(wù)層,。
事務(wù)層負(fù)責(zé)創(chuàng)建和取消事務(wù),處理各種WMGCP命令和響應(yīng),,維護(hù)事務(wù)狀態(tài)機(jī)。WMGCP協(xié)議是事務(wù)型協(xié)議,,采用事務(wù)號(hào)來(lái)標(biāo)識(shí)和定位每個(gè)命令消息,。WMGCP協(xié)議提供6種命令消息,分別是:RQNT,、CRCX、DLCX,、MDCX,、NTFY和RSIP。其中RQNT,、CRCX,、DLCX、MDCX 4種命令可以由軟交換發(fā)起,;NTFY,、DLCX、RSIP 3種命令可以由MG發(fā)起,。同時(shí),,WMGCP協(xié)議提供響應(yīng)消息,通過(guò)響應(yīng)消息的響應(yīng)碼可以對(duì)收到的命令進(jìn)行正確響應(yīng)或者錯(cuò)誤響應(yīng),。
應(yīng)用層API向WMGCP任務(wù)提供各種會(huì)話的控制API,用于完成摘機(jī),、應(yīng)答,、掛斷,、保持等事件引發(fā)的MGCP處理。
3.2 狀態(tài)機(jī)
電話終端的狀態(tài)采用狀態(tài)機(jī)的方法實(shí)現(xiàn)[5],。本系統(tǒng)就是通過(guò)事件和消息的觸發(fā)來(lái)改變狀態(tài)機(jī)的狀態(tài),。事件是指對(duì)電話產(chǎn)生的動(dòng)作(如摘機(jī)、撥號(hào),、掛機(jī)等),;消息是指系統(tǒng)進(jìn)行狀態(tài)轉(zhuǎn)換時(shí)發(fā)出的命令、請(qǐng)求,、響應(yīng)等信號(hào),。主叫與被叫分別維護(hù)各自的狀態(tài)機(jī)。
主,、被叫狀態(tài)轉(zhuǎn)移圖分別如圖4,、圖5所示。在空閑狀態(tài)下,主叫用戶摘機(jī),,MG向MGC報(bào)告,,MGC通知MG向主叫送出撥號(hào)音;主叫用戶撥號(hào),,MG號(hào)碼收齊后向MGC報(bào)告,;MGC進(jìn)行號(hào)碼分析,如號(hào)碼為單呼號(hào)碼且被叫用戶已經(jīng)注冊(cè)并處于空閑狀態(tài),,則向被叫MG發(fā)出連接命令,,連接形式為“只接收”,;MGC收到被叫MG的響應(yīng)后,向主叫MG發(fā)出連接命令,,連接形式為“只發(fā)送”,,此時(shí)為擴(kuò)音態(tài),主叫用戶即可通過(guò)媒體端口向被叫用戶發(fā)送語(yǔ)音,;被叫用戶摘機(jī),,被叫MG向MGC報(bào)告,MGC向主被叫雙方MG發(fā)送修改連接命令,,連接形式為“發(fā)送和接收”,;通話完畢,任一方掛機(jī),,向MGC報(bào)告,,MGC向掛機(jī)方發(fā)出刪除連接命令,將其狀態(tài)置為空閑,,向另一方發(fā)出刪除連接命令,,并要求其送出忙音,等其掛機(jī)后,,將其狀態(tài)也置為空閑,。如果被叫處于擴(kuò)音狀態(tài),主叫掛機(jī),,MGC向雙方發(fā)送刪除連接命令,,并將雙方狀態(tài)置為空閑。如果所播號(hào)碼為群呼或全呼組號(hào),,則MGC依次向?qū)儆谠撊航M的用戶或全部用戶發(fā)送創(chuàng)建連接命令,,連接方式為“只接收”。此時(shí)MGC只需得到其中一個(gè)用戶的應(yīng)答就向主叫發(fā)送創(chuàng)建連接命令,,連接方式為“只發(fā)送”,;主叫用戶使用廣播分組發(fā)送語(yǔ)音數(shù)據(jù),網(wǎng)絡(luò)上所有終端均接收這個(gè)分組,,但只有處于被叫連接狀態(tài)的終端才處理這個(gè)分組,。
4 精簡(jiǎn)MGCP協(xié)議的實(shí)現(xiàn)
4.1 基于DSP的工作方式
本系統(tǒng)的DSP為T(mén)I公司的TMS320VC5402 16位定點(diǎn)處理器芯片,其采用哈佛體系結(jié)構(gòu),、流水線技術(shù)和獨(dú)立的硬件乘法器,操作速度最高為100 MIPS,。TMS320VC5402內(nèi)部有16 KB的SRAM,一部分用于引導(dǎo)Flash程序的運(yùn)行,另一部分用于堆棧,、存放中斷向量,、DSP中DMA模塊所需的數(shù)據(jù)和少量常用變量;片外數(shù)據(jù)和指令的可存,、取空間分別為64 KB和1 MB,,分別采用了SST39VF400A Flash和IS61LV25616 SRAM存儲(chǔ)器,;實(shí)際運(yùn)行時(shí)可執(zhí)行的指令和數(shù)據(jù)分別為64 KB。 TMS320VC5402的處理速度完全可以滿足系統(tǒng)的運(yùn)算要求,非實(shí)時(shí)性的MGCP協(xié)議棧指令可以在片外Flash上運(yùn)行,,數(shù)據(jù)在片外SRAM上運(yùn)行,,其瓶頸在于可執(zhí)行的指令和數(shù)據(jù)空間受限。本系統(tǒng)采用的網(wǎng)絡(luò)芯片為DM9000,,設(shè)置為100 Mb/s網(wǎng)速,、16 bit數(shù)據(jù)收發(fā)模式和全雙工工作方式。
在16 bit DSP中,文本數(shù)據(jù)存儲(chǔ)占用低8 bit,,高8 bit補(bǔ)0,,造成50%數(shù)據(jù)帶寬的浪費(fèi)。本系統(tǒng)采用16 bit存儲(chǔ)方式,,即每?jī)蓚€(gè)文本數(shù)據(jù)合并成一個(gè)16 bit數(shù)據(jù),,奇數(shù)字節(jié)放在高8 bit,偶數(shù)字節(jié)放在低8 bit,,數(shù)據(jù)帶寬利用率接近100%,。MGCP消息由很多信息段組合而成,這些信息段既有按照文本方式存儲(chǔ),也有些按照16 bit字段方式存儲(chǔ),,MGCP消息的構(gòu)建需要調(diào)用8 bit/16 bit轉(zhuǎn)換函數(shù),,最終生成的MGCP消息是由16 bit存儲(chǔ)的。
MGCP消息的解析采用“懶漢”算法,,即將收到的MGCP消息按照起始行,、頭域和消息體等內(nèi)容拆開(kāi)并分別存儲(chǔ)。在解析時(shí)對(duì)每部分內(nèi)容分別解析,,獲取其中有用的信息。
4.2 WMGCP任務(wù)
在TMS320C5402 DSP上使用μC/OS-Ⅱ操作系統(tǒng)建立WMGCP任務(wù),。WMGCP任務(wù)通過(guò)接收操作系統(tǒng)消息調(diào)用相應(yīng)WMGCP協(xié)議棧應(yīng)用層API,包括:WMGCP_Register()用戶注冊(cè)消息,;WMGCP_RSIP()重啟命令;WMGCP_ RQNT()通知請(qǐng)求命令,;WMGCP_NTFY()通知命令,;WMGCP_CRCX()創(chuàng)建連接命令;WMGCP_MDCX()修改連接命令,;WMGCP _DLCX()刪除連接命令,;WMGCP_RESP()響應(yīng)命令; WMGCP_UDPHandle()解析UDP 上傳的MGCP消息,;WMGCP_TimerHandle()負(fù)責(zé)協(xié)議棧計(jì)時(shí)處理,。以上WMGCP協(xié)議棧應(yīng)用層API由WMGCP任務(wù)消息觸發(fā),WMGCP任務(wù)在完成某一函數(shù)調(diào)用后,通過(guò)OSQPend()等待新的消息到來(lái),。
4.3 實(shí)現(xiàn)尺寸
本文實(shí)現(xiàn)了應(yīng)用于局域網(wǎng)VoIP的WMGCP協(xié)議棧,,在TMS320C5402芯片上編譯的數(shù)據(jù)和代碼如表1所示,。WMGCP協(xié)議的全部代碼在片外Flash中運(yùn)行,所有數(shù)據(jù)在片外SRAM中運(yùn)行,,運(yùn)行速度滿足要求,。
本文針對(duì)TMS320C5402的特點(diǎn)設(shè)計(jì)實(shí)現(xiàn)了運(yùn)行于局域網(wǎng)VoIP的WMGCP協(xié)議棧,該WMGCP協(xié)議棧既能夠滿足基本呼叫功能,,又能夠?qū)崿F(xiàn)群呼,、全呼和擴(kuò)音呼叫,實(shí)現(xiàn)了局域網(wǎng)VoIP電話通信系統(tǒng)的應(yīng)用,。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)實(shí)現(xiàn)的精簡(jiǎn)MGCP協(xié)議棧具有良好的運(yùn)行穩(wěn)定性,。
參考文獻(xiàn)
[1] GOKULAKRISHNAN T, LEFFEW J,,SHREINIVASAN S, et al. Standardizing call control in voice over internet app plications:A MGCP approach[C]. Fourth IEEE International Caracas Conference on Devices:Circuits and Systems,Aruba, 2002:91-111.
[2] Network working group. Media Gateway Control Protocol Version1.0 RFC2705[S], 1999.
[3] GREENE N. Media gateway control protocol architecture and requirements[S]. RFC2805,2000.
[4] Network working group. Megaco Protocol Version 1.0 RFC3015[S].2000.
[5] ANDREASEN F, FOSTER B. Media gateway control protocol version 1.0[S]. RFC3435, 2003.