文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)10-0117-03
隨著Internet 和語音壓縮技術(shù)的發(fā)展, 針對傳統(tǒng)電話網(wǎng)通話成本高的弊端,人們提出了VoIP(Voice over Internet Protocol)技術(shù), 該技術(shù)可將語音數(shù)據(jù)在分組交換網(wǎng)絡(luò)中傳輸, 提供比傳統(tǒng)業(yè)務(wù)更多更好的服務(wù), 并大大降低了語音業(yè)務(wù)的成本。目前主流的VoIP 協(xié)議包括1998 年ITU-T 提出的H.323 協(xié)議族、1999年由IETF 定義的會話初始協(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ǔ)上。
目前國內(nèi)外基于MGCP 協(xié)議的開發(fā)仍較有限, 伴隨著VoIP的不斷發(fā)展, 開發(fā)能夠處理MGCP通信信令的協(xié)議棧以及在協(xié)議?;A(chǔ)上開發(fā)MGCP的應(yīng)用越來越受到人們的關(guān)注。然而通常MGCP協(xié)議主要是由軟件實(shí)現(xiàn)的, 在具體實(shí)現(xiàn)過程中要耗費(fèi)大量的CPU 處理時間, 處理速度比較慢, 而通過硬件實(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í)現(xiàn)群呼、全呼和擴(kuò)音呼叫,并使信令傳榆和交換過程簡單、系統(tǒng)運(yùn)行穩(wěn)定,節(jié)省了系統(tǒng)資源、降低了系統(tǒng)成本。
1 MGCP協(xié)議簡介
MGCP協(xié)議由簡單網(wǎng)關(guān)控制協(xié)議(SGCP) 和IP 設(shè)備控制規(guī)范(IPDC) 融合而成,是一個分布式IP電話網(wǎng)關(guān)系統(tǒng)的內(nèi)部協(xié)議,用于控制來自外部呼叫控制單元的IP語音(VoIP)網(wǎng)關(guān)[1-2]。MGCP定義了媒體網(wǎng)關(guān)控制器(MGC)和媒體網(wǎng)關(guān)(MG)之間的操作。MGC又可稱為軟交換或呼叫代理(CA-Call Agent) , 主要負(fù)責(zé)處理控制信令, 根據(jù)接收到的信令控制媒體網(wǎng)關(guān)的連接建立和釋放。MG對應(yīng)的媒體網(wǎng)關(guān)包括中繼網(wǎng)關(guān)(TG)、接入網(wǎng)關(guān)(AG)和接入設(shè)備(IAD)等,分別負(fù)責(zé)橋接相應(yīng)類型的網(wǎng)絡(luò)。MGCP的要點(diǎn)是對網(wǎng)關(guān)命令的發(fā)布,以及網(wǎng)關(guān)在這些命令上的操作和發(fā)送返回信號。這些命令的目的是控制網(wǎng)關(guān)中連接創(chuàng)建和終止的操作,并使呼叫代理了解到發(fā)生在網(wǎng)關(guān)端點(diǎn)上的事件。
MGCP 協(xié)議消息采用UDP 協(xié)議傳送,以加快消息傳送速度。但由于UDP 本身只能提供不可靠的傳送服務(wù),所以MGCP采用了重發(fā)定時機(jī)制、“至多執(zhí)行一次”功能、消息捎帶機(jī)制和臨時響應(yīng)機(jī)制,以保證消息的可靠傳送和正確處理[3]。MGCP 協(xié)議消息分為命令和響應(yīng)兩類, 每個命令需要接收方回送響應(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ī)功能,簡化了系統(tǒng)結(jié)構(gòu);TMG負(fù)責(zé)與外部PSTN電話網(wǎng)絡(luò)的對接;網(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é)議過程,需要一定的軟件資源和硬件條件。本系統(tǒng)采用TMS320C5402芯片實(shí)現(xiàn)MGCP協(xié)議棧,由于DSP系統(tǒng)資源有限,因此需要對MGCP協(xié)議進(jìn)行改進(jìn)。考慮本局域網(wǎng)VoIP系統(tǒng)的實(shí)際需求后, 從以下幾方面進(jìn)行改進(jìn):
(1) 由于系統(tǒng)容量較小,電話終端的IP地址與電話號碼有固定的計(jì)算關(guān)系,所以設(shè)計(jì)時將IP地址與電話號碼綁定,不需要龐大的映射表。
(2) 語音的編解碼方式指定為G.711A率,因此不需要設(shè)計(jì)EPCF程序。
(3) 每一個MG上只有一個終結(jié)點(diǎn)(電話機(jī)),MG和MGC記錄的終結(jié)點(diǎn)狀態(tài)和連接認(rèn)為是同步的,因此呼叫控制器(MGC)不需要通過審計(jì)終結(jié)點(diǎn)命令查詢MG特定終結(jié)點(diǎn)的狀態(tài)和檢查指定連接的各種信息,所以不需要設(shè)計(jì)AUEP和AUCX程序。
(4) 在完成一對一呼叫的同時,協(xié)議中增加了擴(kuò)音呼叫、群呼及全呼控制,增加了系統(tǒng)功能。
改進(jìn)后的WMGCP協(xié)議棧既實(shí)現(xiàn)了MGCP協(xié)議的基本功能,又減少了設(shè)計(jì)上的復(fù)雜程度,同時由于上層協(xié)議(如UDP等)的設(shè)計(jì)相對獨(dú)立, 對其影響也非常小。
3 WMGCP協(xié)議的設(shè)計(jì)
3.1 分層設(shè)計(jì)
WMGCP協(xié)議采用分層設(shè)計(jì),與RFC2705中定義的分層結(jié)構(gòu)略有不同[2]。按照系統(tǒng)中WMGCP消息的實(shí)際處理過程將層次分為:傳輸適配層,編、解碼層,事務(wù)層和應(yīng)用層API。它們在垂直方向上有明顯的上下層關(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ù)號來標(biāo)識和定位每個命令消息。WMGCP協(xié)議提供6種命令消息,分別是:RQNT、CRCX、DLCX、MDCX、NTFY和RSIP。其中RQNT、CRCX、DLCX、MDCX 4種命令可以由軟交換發(fā)起;NTFY、DLCX、RSIP 3種命令可以由MG發(fā)起。同時,WMGCP協(xié)議提供響應(yīng)消息,通過響應(yīng)消息的響應(yīng)碼可以對收到的命令進(jìn)行正確響應(yīng)或者錯誤響應(yīng)。
應(yīng)用層API向WMGCP任務(wù)提供各種會話的控制API,用于完成摘機(jī)、應(yīng)答、掛斷、保持等事件引發(fā)的MGCP處理。
3.2 狀態(tài)機(jī)
電話終端的狀態(tài)采用狀態(tài)機(jī)的方法實(shí)現(xiàn)[5]。本系統(tǒng)就是通過事件和消息的觸發(fā)來改變狀態(tài)機(jī)的狀態(tài)。事件是指對電話產(chǎn)生的動作(如摘機(jī)、撥號、掛機(jī)等);消息是指系統(tǒng)進(jìn)行狀態(tài)轉(zhuǎn)換時發(fā)出的命令、請求、響應(yīng)等信號。主叫與被叫分別維護(hù)各自的狀態(tài)機(jī)。
主、被叫狀態(tài)轉(zhuǎn)移圖分別如圖4、圖5所示。在空閑狀態(tài)下,主叫用戶摘機(jī),MG向MGC報告,MGC通知MG向主叫送出撥號音;主叫用戶撥號,MG號碼收齊后向MGC報告;MGC進(jìn)行號碼分析,如號碼為單呼號碼且被叫用戶已經(jīng)注冊并處于空閑狀態(tài),則向被叫MG發(fā)出連接命令,連接形式為“只接收”;MGC收到被叫MG的響應(yīng)后,向主叫MG發(fā)出連接命令,連接形式為“只發(fā)送”,此時為擴(kuò)音態(tài),主叫用戶即可通過媒體端口向被叫用戶發(fā)送語音;被叫用戶摘機(jī),被叫MG向MGC報告,MGC向主被叫雙方MG發(fā)送修改連接命令,連接形式為“發(fā)送和接收”;通話完畢,任一方掛機(jī),向MGC報告,MGC向掛機(jī)方發(fā)出刪除連接命令,將其狀態(tài)置為空閑,向另一方發(fā)出刪除連接命令,并要求其送出忙音,等其掛機(jī)后,將其狀態(tài)也置為空閑。如果被叫處于擴(kuò)音狀態(tài),主叫掛機(jī),MGC向雙方發(fā)送刪除連接命令,并將雙方狀態(tài)置為空閑。如果所播號碼為群呼或全呼組號,則MGC依次向?qū)儆谠撊航M的用戶或全部用戶發(fā)送創(chuàng)建連接命令,連接方式為“只接收”。此時MGC只需得到其中一個用戶的應(yīng)答就向主叫發(fā)送創(chuàng)建連接命令,連接方式為“只發(fā)送”;主叫用戶使用廣播分組發(fā)送語音數(shù)據(jù),網(wǎng)絡(luò)上所有終端均接收這個分組,但只有處于被叫連接狀態(tài)的終端才處理這個分組。
4 精簡MGCP協(xié)議的實(shí)現(xiàn)
4.1 基于DSP的工作方式
本系統(tǒng)的DSP為TI公司的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存儲器;實(shí)際運(yùn)行時可執(zhí)行的指令和數(shù)據(jù)分別為64 KB。 TMS320VC5402的處理速度完全可以滿足系統(tǒng)的運(yùn)算要求,非實(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ù)存儲占用低8 bit,高8 bit補(bǔ)0,造成50%數(shù)據(jù)帶寬的浪費(fèi)。本系統(tǒng)采用16 bit存儲方式,即每兩個文本數(shù)據(jù)合并成一個16 bit數(shù)據(jù),奇數(shù)字節(jié)放在高8 bit,偶數(shù)字節(jié)放在低8 bit,數(shù)據(jù)帶寬利用率接近100%。MGCP消息由很多信息段組合而成,這些信息段既有按照文本方式存儲,也有些按照16 bit字段方式存儲,MGCP消息的構(gòu)建需要調(diào)用8 bit/16 bit轉(zhuǎn)換函數(shù),最終生成的MGCP消息是由16 bit存儲的。
MGCP消息的解析采用“懶漢”算法,即將收到的MGCP消息按照起始行、頭域和消息體等內(nèi)容拆開并分別存儲。在解析時對每部分內(nèi)容分別解析,獲取其中有用的信息。
4.2 WMGCP任務(wù)
在TMS320C5402 DSP上使用μC/OS-Ⅱ操作系統(tǒng)建立WMGCP任務(wù)。WMGCP任務(wù)通過接收操作系統(tǒng)消息調(diào)用相應(yīng)WMGCP協(xié)議棧應(yīng)用層API,包括:WMGCP_Register()用戶注冊消息;WMGCP_RSIP()重啟命令;WMGCP_ RQNT()通知請求命令;WMGCP_NTFY()通知命令;WMGCP_CRCX()創(chuàng)建連接命令;WMGCP_MDCX()修改連接命令;WMGCP _DLCX()刪除連接命令;WMGCP_RESP()響應(yīng)命令; WMGCP_UDPHandle()解析UDP 上傳的MGCP消息;WMGCP_TimerHandle()負(fù)責(zé)協(xié)議棧計(jì)時處理。以上WMGCP協(xié)議棧應(yīng)用層API由WMGCP任務(wù)消息觸發(fā),WMGCP任務(wù)在完成某一函數(shù)調(diào)用后,通過OSQPend()等待新的消息到來。
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)行速度滿足要求。
本文針對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)的精簡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.