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