摘 要 以軟交換為核心的下一代網(wǎng)絡(luò)發(fā)展迅速,對傳統(tǒng)PSTN網(wǎng)絡(luò)的融合更展示了其內(nèi)在優(yōu)勢。本文通過對軟交換中的MGCP協(xié)議的分析與研究,提出了MGCP體系實(shí)現(xiàn)模型并對其中各模塊進(jìn)行重點(diǎn)描述。
關(guān)鍵詞 媒體網(wǎng)關(guān)控制協(xié)議 媒體網(wǎng)關(guān)控制器 媒體網(wǎng)關(guān) VoIP
1 概述
以軟交換為核心、IP為骨干網(wǎng)的下一代網(wǎng)絡(luò)將是一種融合的網(wǎng)絡(luò),它不僅能夠?qū)崿F(xiàn)傳統(tǒng)的電信網(wǎng)絡(luò)、計算機(jī)網(wǎng)絡(luò)和有線電視網(wǎng)的融合,也將實(shí)現(xiàn)固定和移動網(wǎng)絡(luò)的融合?;谲浗粨Q的下一代網(wǎng)絡(luò)的最大特點(diǎn)就是將業(yè)務(wù)、傳送媒體和控制相互分離。通過媒體網(wǎng)關(guān)接入終端設(shè)備,使呼叫信令通過IP網(wǎng)來承載,可以大大降低通話的成本和費(fèi)用。因此研究基于媒體網(wǎng)關(guān)控制協(xié)議的VoIP成為當(dāng)前一個熱點(diǎn)。
2 基于MGCP的媒體網(wǎng)關(guān)控制器系統(tǒng)結(jié)構(gòu)
2.1 MGCP協(xié)議
媒體網(wǎng)關(guān)控制協(xié)議MGCP(Media Gateway Control Protocol),顧名思義是用于控制來自外部呼叫控制單元的IP語音(VoIP)網(wǎng)關(guān)。MGCP定義了一種呼叫控制結(jié)構(gòu),在該結(jié)構(gòu)中,呼叫控制與業(yè)務(wù)承載分離。呼叫控制功能獨(dú)立在MG(Media Gateway)外部,由稱為MGC ( Media Gateway Controller)或CA(Call Agent)的外部呼叫控制單元處理。MG需要執(zhí)行MGC發(fā)出的命令,所以,從本質(zhì)上說MGCP協(xié)議是一個主/從協(xié)議。
2.2 媒體網(wǎng)關(guān)控制器
媒體網(wǎng)關(guān)控制器MGC(Media Gateway Controler)也稱為呼叫代理(Call Agent)提供信令和呼叫處理功能。具體來說,媒體網(wǎng)關(guān)控制器接受來自網(wǎng)關(guān)的事件,指示網(wǎng)關(guān)如何處理電話的接續(xù),并將語音分組發(fā)送到對應(yīng)的網(wǎng)關(guān)上。媒體網(wǎng)關(guān)控制器應(yīng)該既能夠處理來自寬帶IP網(wǎng)的呼叫,由能夠處理傳統(tǒng)PSTN網(wǎng)絡(luò)的呼叫。
2.3 媒體網(wǎng)關(guān)
媒體網(wǎng)關(guān)(Media Gateway)是一種網(wǎng)絡(luò)單元,負(fù)責(zé)傳統(tǒng)網(wǎng)絡(luò)上的語音信號和IP網(wǎng)上的分組數(shù)據(jù)之間的轉(zhuǎn)換。根據(jù)其所在網(wǎng)絡(luò)中的位置不同用于實(shí)現(xiàn)不同體系結(jié)構(gòu)的網(wǎng)絡(luò)之間的互聯(lián)互通,其類型有中繼媒體網(wǎng)關(guān),接入媒體網(wǎng)關(guān)等。
3 基于MGCP的VoIP系統(tǒng)研究
3.1 MGCP系統(tǒng)的實(shí)現(xiàn)模型。
MGC和MG是通過MGCP協(xié)議進(jìn)行通訊的,而MGCP協(xié)議又是基于UDP(User Datagram Protocol)傳輸?shù)摹?MGC向MG發(fā)送指令,從而控制MG將電路交換的語音轉(zhuǎn)換為分組流,或者反之,也能夠?qū)碜酝獠烤W(wǎng)絡(luò)的分組或信元數(shù)據(jù)流連接封裝為RTP(Real- time Transport Protocol)格式的分組或信元流。因此,MGCP系統(tǒng)實(shí)現(xiàn)主要涉及三個模塊:MGC模塊、MG模塊和UDP模塊。
本文考慮的MGCP系統(tǒng)實(shí)現(xiàn)由一個媒體網(wǎng)關(guān)控制器、一個媒體網(wǎng)關(guān)和UDP組成,其中,媒體網(wǎng)關(guān)控制器由MGC模塊表示,媒體網(wǎng)關(guān)由MG模塊表示,UDP由 UDP模塊表示。MGC模塊有一個mgc_udp接口,該接口的主要功能是MGC下發(fā)消息給MG或者回應(yīng)MG發(fā)給MGC的消息。MG模塊有三個接口:一個 mg_udp接口、一個mg_media_udp接口和一個mg_user接口,mg_udp接口用來發(fā)送MGC下發(fā)消息的響應(yīng)消息或者上報消息給 MGC,mg_media_udp接口用于發(fā)送通話過程中的媒體流比如語音或者其他數(shù)據(jù),mg_user接口功能則是MG檢測用戶摘、掛機(jī)等事件和信號以及時上報給MGC或者M(jìn)GC控制MG對用戶進(jìn)行放音信號等的下發(fā)(例如撥號音)等。UDP模塊有三個接口:一個udp_mgc接口、一個udp_mg的接口和一個udp_media_mg。前兩個接口的功能主要是提供MGC和MG交互的平臺,最后一個接口是完成MG側(cè)的媒體流和MGC側(cè)的分組信元的轉(zhuǎn)換。
圖1 MGCP系統(tǒng)實(shí)現(xiàn)模型
媒體網(wǎng)關(guān)控制器(MGC)和媒體網(wǎng)關(guān)(MG)之間共有九種MGCP消息,總體來說分為兩類:命令和響應(yīng)。當(dāng)消息發(fā)送到MG或MGC時,稱之為命令;當(dāng)命令的證實(shí)消息從MG或MGC送回時,稱之為響應(yīng)。命令包括連接處理和端點(diǎn)處理命令,響應(yīng)為整數(shù)碼,接受到所有的命令都要回響應(yīng),已表示命令完成或遇到錯誤。同一MG下兩個用戶A(主叫用戶)和B(被叫用戶)完成一次完整的呼叫流程如下:MGC通過下發(fā)RQNT命令請求MG檢視A狀態(tài)。當(dāng)A摘機(jī)時, MG通過NTFY上報MGC,MGC收到NTFY消息后通知MG根據(jù)其撥號方案收集撥打的號碼并送撥號音。A撥被叫B號碼,MG收號完成后通過NTFY通知MGC,MGC下發(fā)CRCX和A用戶相連的端點(diǎn)建立連接,同時MGC根據(jù)收到的被叫號碼找到和B用戶連接的端點(diǎn)并發(fā)送CRCX創(chuàng)建和B用戶端點(diǎn)之間的連接。之后MGC下發(fā)RQNT通知MG給用戶B放振鈴音,同時下發(fā)RQNT給用戶A放回鈴音。這時如果用戶B摘機(jī),MG會檢測到并以NTFY上報給MGC。 MGC發(fā)MDXC給用戶B相連的端點(diǎn),將用戶A相連端點(diǎn)連接參數(shù)給B,同時命令MG停止B振鈴,之后MGC發(fā)MDXC給用戶A相連的端點(diǎn),將B相連端點(diǎn)的連接參數(shù)給A,同時命令MG給A停放回鈴音,至此,MGC通過修改先前分別和A、B用戶相連端點(diǎn)的連接,將A、B連接參數(shù)各自傳給彼此而使得A、B之間建立連接,這時用戶A和B可以雙向通話了。在上述過程中,每收到一個命令都會有響應(yīng)表示收到命令以防止命令的重發(fā),在此為了敘述簡潔略去了。
3.2 MGC模塊
MGC模塊主要功能是負(fù)責(zé)呼叫控制,提供信令和呼叫處理。MGC模塊通過mgc_udp接口和網(wǎng)絡(luò)通信,通過該接口經(jīng)UDP模塊向MG發(fā)送MGCP命令,從而實(shí)現(xiàn)對MG的控制。其中MGC模塊中又包含兩個子模塊:
(1) 呼叫控制(Call Control):呼叫控制的主要功能是用來協(xié)調(diào)MG創(chuàng)建連接,MGC能命令MG對不同媒體流所應(yīng)監(jiān)視的事件及其相關(guān)的信號進(jìn)行檢測,并將其報告給MGC。同樣,MGC也能通知MG解除對信號的監(jiān)視。
(2) 事務(wù)處理控制(Transaction Control):事務(wù)處理控制模塊用于管理事務(wù)處理,它能夠保存當(dāng)前正在執(zhí)行的事務(wù)處理清單以及通過tc_cc接口已經(jīng)發(fā)送給呼叫控制模塊的最近的事務(wù)處理的響應(yīng)清單。如果發(fā)現(xiàn)輸入命令消息的事務(wù)處理標(biāo)識符不在清單中,就將該消息轉(zhuǎn)發(fā)到呼叫控制模塊中,否則重發(fā)該命令的響應(yīng)。此外,事物處理控制模塊負(fù)責(zé)將呼叫控制模塊通過cc_tc接口發(fā)給它的MGCP消息通過mgc_udp接口轉(zhuǎn)發(fā)到網(wǎng)絡(luò)中。在發(fā)生異常時對模塊進(jìn)行保護(hù)這時要用到定時器。事務(wù)處理模塊通過對定時器的管理在超時未收到響應(yīng)消息的情況下重發(fā)命令消息。
圖2 MGC模塊
呼叫控制模塊和事務(wù)處理模塊工作原理如下:呼叫控制模塊通過事務(wù)處理模塊收到來自MG的NTFY消息時,首先檢查被叫號碼的有效性,若無效則命令MG放提示音給主叫,若有效就向MG發(fā)送CRCX消息,創(chuàng)建和主叫端點(diǎn)的連接。同時呼叫控制模塊等待收到正確的響應(yīng)消息后,將向該MG下的被叫端點(diǎn)發(fā)送 CRCX消息,用于創(chuàng)建和被叫端點(diǎn)的連接。如果呼叫控制模塊接收到來自被叫端點(diǎn)的正確響應(yīng)消息,則要檢查主叫端點(diǎn)的狀態(tài),如果主叫端點(diǎn)的狀態(tài)處于連接狀態(tài),則向主叫端點(diǎn)發(fā)送RQNT消息命令MG向主叫用戶放回鈴音。用戶掛機(jī)時MG上報NTFY消息經(jīng)過事務(wù)處理模塊轉(zhuǎn)發(fā)到呼叫控制模塊,則向該MG返回一個 DLCX并檢查屬于同一個呼叫識別符的另一個端點(diǎn)的狀態(tài),然后向該端點(diǎn)發(fā)送DLCX或RQNT消息。
3.3 MG模塊
MG模塊有三個接口:mg_udp接口和mg_media_udp接口用于和網(wǎng)絡(luò)通信,mg_user接口用于和端點(diǎn)通信,從而和接在某端點(diǎn)上的用戶通訊。MG可以檢測和端點(diǎn)相連的用戶事件(如摘機(jī)事件)、發(fā)送呼叫信號(如振鈴信號)或者從端點(diǎn)接收數(shù)據(jù)。MG模塊包括三個子模塊:
(1) 事務(wù)處理控制(Transaction control):MG模塊中的事務(wù)處理控制和MGC模塊中事務(wù)處理控制功能類似也是用于管理事務(wù)處理,能夠保存已經(jīng)被發(fā)送到最近的事務(wù)處理的響應(yīng)清單以及當(dāng)前正在執(zhí)行的事務(wù)處理清單。如果發(fā)現(xiàn)輸入命令消息的事務(wù)處理標(biāo)識符不在清單中,就將該消息轉(zhuǎn)發(fā)到連接控制模塊中,否則重發(fā)該命令的響應(yīng)。另外,事物交易控制模塊負(fù)責(zé)將來自連接控制模塊的MGCP消息轉(zhuǎn)發(fā)到網(wǎng)絡(luò)中,也能夠管理定時器并在超時的情況下重發(fā)命令消息。
(2) 連接控制(Connect control):用于檢測來自和端點(diǎn)相連用戶的事件并通過cc_tc接口將事件發(fā)給事務(wù)處理模塊,經(jīng)它處理后向MGC發(fā)送通知命令。連接控制模塊能夠維護(hù)MG側(cè)的端點(diǎn)狀態(tài),也可以將連接建立消息通過cc_dc接口轉(zhuǎn)發(fā)到數(shù)據(jù)控制模塊中。
(3) 數(shù)據(jù)控制(Data control):用于響應(yīng)和連接有關(guān)的命令,這些命令來自攜帶有連接標(biāo)識符和連接地址的連接控制、去往連接控制模塊。此外,數(shù)據(jù)控制也負(fù)責(zé)將來自網(wǎng)絡(luò)的數(shù)據(jù)轉(zhuǎn)發(fā)到端點(diǎn),或者將端點(diǎn)事件信號打包后發(fā)到網(wǎng)絡(luò)中。
圖3 MG模塊
當(dāng)事務(wù)處理控制模塊收到一個命令消息時,根據(jù)事務(wù)處理識別符檢查最近接收到的事件清單,如果沒有相應(yīng)的事務(wù)處理,則將其作為一個新的事務(wù)處理存儲在事件清單中,并轉(zhuǎn)發(fā)給連接控制模塊。如果發(fā)現(xiàn)相應(yīng)的事務(wù)處理,則將對應(yīng)的響應(yīng)置于事件清單中并重發(fā)該響應(yīng)。當(dāng)連接控制模塊檢測到處于“請求事件”狀態(tài)中的端點(diǎn)事件時,就向事務(wù)處理控制模塊發(fā)送NTFY消息,由事務(wù)處理控制模塊將該消息封裝成UDP分組并轉(zhuǎn)發(fā)給MGC。隨后,連接控制過程進(jìn)入通知狀態(tài)。在通知狀態(tài)下,連接控制模塊不會發(fā)送另一個NTFY消息,也不能通過事務(wù)處理控制模塊處理來自MGC的RQNT消息。來自MGC的響應(yīng)消息和RQNT消息可能是亂序的,但連接控制模塊將在收到RQNT消息后,首先將其暫存起來,直至收到響應(yīng)消息后才會退出通知狀態(tài)。此后,連接控制模塊對RQNT消息進(jìn)行處理并通過響應(yīng)消息進(jìn)行回應(yīng)。當(dāng)連接控制模塊收到CRCX、MDCX或DLCX消息后,會將其轉(zhuǎn)發(fā)到數(shù)據(jù)控制模塊中,由數(shù)據(jù)控制模塊負(fù)責(zé)檢查資源限制并通過對應(yīng)的連接標(biāo)識符和地址進(jìn)行響應(yīng)。
3.4 UDP模塊
UDP模塊的功能就是用來承載信元包的轉(zhuǎn)發(fā),用來將一個信元分組從源地址轉(zhuǎn)發(fā)到目的地址。該過程能夠仿真網(wǎng)絡(luò)的一些屬性,如隨機(jī)丟棄部分分組或者以亂序的方式發(fā)送分組。
在MGCP系統(tǒng)中分別向MGC和MG提供接口。udp_mgc接口和udp_mg接口協(xié)助完成MGC和MG之間信令的交互,udp_media_mg接口主要協(xié)助實(shí)現(xiàn)MG用戶端點(diǎn)側(cè)的媒體流和MGC側(cè)分組信元之間的格式轉(zhuǎn)換。
4 結(jié)束語
本文針對基于MGCP的VoIP系統(tǒng)實(shí)現(xiàn)進(jìn)行了詳細(xì)說明,總體分為三個模塊,對其中關(guān)鍵技術(shù)模塊MGC模塊和MG模塊進(jìn)行深入分析。然而現(xiàn)實(shí)中開發(fā)產(chǎn)品應(yīng)用還需要考慮其他方面的因素,如服務(wù)安全質(zhì)量QoS,網(wǎng)絡(luò)地址轉(zhuǎn)換NAT,計費(fèi)等等。這些因素都還需要進(jìn)一步的研究。
參考文獻(xiàn):
[1] IETF.Media Gateway Control Protrol.RFC2705,1999
[2] 糜正琨,王文鼐.軟交換技術(shù)與協(xié)議,人民郵電出版社,2003
[3] 魏航,楊學(xué)良.下一代網(wǎng)絡(luò)(ngn)的體系結(jié)構(gòu)與軟交換協(xié)議,計算機(jī)應(yīng),2003.12第12期