《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于DSP的WMGCP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)
基于DSP的WMGCP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2011年第10期
郭翠娟, 苗長云, 武志剛
(天津工業(yè)大學(xué) 信息與通信工程學(xué)院,天津300160)
摘要: 基于DSP技術(shù)設(shè)計(jì)實(shí)現(xiàn)了一種運(yùn)行于局域網(wǎng)VoIP電話通信系統(tǒng)的WMGCP協(xié)議棧。采用分層結(jié)構(gòu)和會話狀態(tài)機(jī)設(shè)計(jì),完成基本呼叫、群呼、全呼和擴(kuò)音呼叫功能,實(shí)現(xiàn)WMGCP消息的構(gòu)建、存儲和解析,利用μC/OS-Ⅱ嵌入式實(shí)時操作系統(tǒng)創(chuàng)建WMGCP任務(wù)。實(shí)驗(yàn)表明該協(xié)議棧運(yùn)行穩(wěn)定,節(jié)省了系統(tǒng)資源和成本。
中圖分類號: TP 393.1
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)10-0117-03
Design and implementation of WMGCP stack based on DSP
Guo Cuijuan, Miao Changyun, Wu Zhigang
School of Information and Commnication Engineering, Tianjin Polytechnic University, Tianjin 300160, China
Abstract: A DSP-based WMGCP stack running on LAN IP telephony system is implemented in this paper. The WMGCP stack adopts layered structure and session state machine, and accomplishes some functions such as individual calling, group calling, full calling, amplifying calling, storage and parse for WMGCP messages. The WMGCP task is created with μC/OS-II embedded operating system, which shows the good stability and low cost in practice.
Key words : soft switch; MGCP protocol; WMGCP stack; VoIP


    隨著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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。