專(zhuān)利名稱(chēng):媒體網(wǎng)關(guān)控制協(xié)議消息可靠傳送機(jī)制的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及IP網(wǎng)絡(luò)電話(huà)中媒體網(wǎng)關(guān)控制協(xié)議(Meadia Gateway ControlProtocolMGCP),特別是媒體網(wǎng)關(guān)控制協(xié)議消息可靠傳送機(jī)制的實(shí)現(xiàn)方法。
MGCP協(xié)議應(yīng)用在媒體網(wǎng)關(guān)控制器(Meadia Gateway ControllerMGC)和媒體網(wǎng)關(guān)(Meadia GatewayMG)之間,并且分離網(wǎng)關(guān)結(jié)構(gòu)對(duì)于IP電話(huà)的大規(guī)模應(yīng)用,特別是IP電話(huà)進(jìn)入家庭具有十分重要的意義,因此,MGCP協(xié)議正受到廣泛的重視。IETF網(wǎng)關(guān)控制工作組(MEAGCO)在該協(xié)議的基礎(chǔ)提出了MEAGCO協(xié)議,ITU-T SG16也在該協(xié)議的基礎(chǔ)上指定了相應(yīng)的建議(H.248)。
在媒體網(wǎng)關(guān)控制協(xié)議(Meadia Gateway Control Protocol,以下稱(chēng)MGCP協(xié)議)的RFC2705建議中提到,由于MGCP協(xié)議是在UDP上傳送,MGCP消息可能會(huì)丟失。如果沒(méi)有及時(shí)收到響應(yīng),MGCP會(huì)重發(fā)命令。對(duì)于大多數(shù)命令來(lái)說(shuō),重復(fù)執(zhí)行此命令會(huì)產(chǎn)生混亂,例如,多次執(zhí)行創(chuàng)建連接命令會(huì)使網(wǎng)關(guān)狀態(tài)成為不可預(yù)測(cè)。為此,命令傳輸過(guò)程必須保證同一命令只執(zhí)行一次。在RFC文檔中,定義該特性為“At Most Once”。
本發(fā)明的實(shí)現(xiàn)方法是在媒體網(wǎng)關(guān)控制協(xié)議棧中至少增設(shè)尚未收到響應(yīng)的媒體網(wǎng)關(guān)控制器(MGC)命令表、正在處理的媒體網(wǎng)關(guān)(MG)命令表和已發(fā)出響應(yīng)的媒體網(wǎng)關(guān)(MG)命令表當(dāng)MGCP發(fā)送模塊發(fā)送命令時(shí),將該命令記錄于媒體網(wǎng)關(guān)控制器(MGC)命令表中,當(dāng)MGCP發(fā)送響應(yīng)消息時(shí),將其記錄于已發(fā)出響應(yīng)的媒體網(wǎng)關(guān)(MG)命令表中,并刪除正在處理的媒體網(wǎng)關(guān)(MG)命令表中的相應(yīng)項(xiàng);當(dāng)MGCP消息接收模塊接收到MGCP命令時(shí),首先在已發(fā)出響應(yīng)的媒體網(wǎng)關(guān)(MG)命令表中進(jìn)行查找,如果有匹配項(xiàng)則根據(jù)該匹配項(xiàng)內(nèi)容重發(fā)響應(yīng)消息,否則再對(duì)正在處理的媒體網(wǎng)關(guān)(MG)命令表進(jìn)行查找,如果正在處理的媒體網(wǎng)關(guān)(MG)命令表中有匹配項(xiàng)則放棄該命令,否則在該表記錄該項(xiàng);當(dāng)MGCP消息接收模塊接收到MGCP響應(yīng)消息時(shí),則在尚未收到響應(yīng)的媒體網(wǎng)關(guān)控制器(MGC)命令表查找,如果找到匹配項(xiàng)則傳遞該響應(yīng)消息,否則放棄該消息。
通過(guò)本發(fā)明,實(shí)現(xiàn)了以下幾點(diǎn)同一個(gè)MGCP消息最多執(zhí)行一次。MGCP發(fā)送端在發(fā)送MGCP命令之后,正確處理MGCP接收端回送的響應(yīng)。MGCP接受端在接收到MGCP命令之后,正確處理該命令,并且回送正確響應(yīng)。由于本發(fā)明簡(jiǎn)單,而且實(shí)現(xiàn)了對(duì)MGCP消息的高效率處理,可支持電信級(jí)設(shè)備大容量通信。
表二和表三分別是正在處理的MG命令表和已發(fā)出響應(yīng)的MG命令表,這兩張表的存儲(chǔ)結(jié)構(gòu)都是采用以事務(wù)ID為索引的鏈表結(jié)構(gòu),如圖2所示。這種結(jié)構(gòu)有一個(gè)事先分配好的,大小為65535(事務(wù)ID的最大值)的數(shù)組結(jié)構(gòu)。此數(shù)組中每一個(gè)元素的值是指向一個(gè)鏈表頭的指針,而這個(gè)元素的數(shù)組下標(biāo)正好等于此事務(wù)ID。如果空閑,指針為NULL。這樣可以根據(jù)MG的事務(wù)ID做索引直接找到對(duì)應(yīng)的鏈表,然后以IP地址做主鍵,在鏈表中找到對(duì)應(yīng)的結(jié)構(gòu)。在下面的例子中,數(shù)組下標(biāo)等于M和N的數(shù)組元素指向兩個(gè)不同的鏈表頭,這兩個(gè)鏈表的事務(wù)ID分別等于M和N。
對(duì)上述三個(gè)表的操作如下當(dāng)MGCP處理模塊從上層模塊接收到MGCP消息之后,對(duì)該消息進(jìn)行編碼,編碼完成之后發(fā)送給消息的接收方。然后,判斷該消息的類(lèi)型,如果該消息是MGCP命令,則向表一插入一個(gè)表項(xiàng);如果該消息為MGCP響應(yīng)消息,則以TransID和IP地址為主鍵,刪除表二中相應(yīng)的表項(xiàng),在表三插入新的表項(xiàng),表示已處理完接收的命令并給該命令的發(fā)送方發(fā)送響應(yīng)消息。
當(dāng)MGCP消息接收模塊從網(wǎng)絡(luò)中接收到MGCP消息包時(shí),首先進(jìn)行解碼,解碼完成之后,判斷消息類(lèi)型A、如果是MGCP命令,則以TransID和源IP地址為主鍵查表三。如果在表三有匹配項(xiàng),則表示該命令已被處理完但命令的發(fā)送方未收到響應(yīng)消息而重發(fā)的命令,因此,不再處理該命令,而是根據(jù)表三中的內(nèi)容重發(fā)響應(yīng),結(jié)束處理流程;如果在表三中沒(méi)有匹配項(xiàng),則以TransID和源IP地址為主鍵查表二,如果在表二中有匹配項(xiàng),表示該命令已接收過(guò)且正在處理中,因此放棄該命令消息,結(jié)束消息處理流程;如果在表二中沒(méi)有匹配項(xiàng),則可以判斷,該消息是一個(gè)新命令消息,則在表二中插入一個(gè)新表項(xiàng),并將該消息傳遞給上層消息模塊,結(jié)束消息處理流程。
B、如果是響應(yīng)消息,則以TransID為索引查找表一,如果在表一中沒(méi)有匹配項(xiàng),則說(shuō)明該消息為錯(cuò)誤消息,放棄;如果在表一中有匹配,則可以判斷該消息為合法的響應(yīng)消息,將該消息傳遞給上層協(xié)議棧調(diào)用模塊,結(jié)束處理。
對(duì)于表一中的MGCP命令項(xiàng),如果在規(guī)定的時(shí)間內(nèi)未收到響應(yīng)消息,則按重發(fā)機(jī)制重發(fā)相應(yīng)的命令。對(duì)其中已超過(guò)設(shè)定時(shí)間的表項(xiàng)給予刪除。
權(quán)利要求
1.一種媒體網(wǎng)關(guān)控制協(xié)議(MGCP)消息可靠傳送機(jī)制的實(shí)現(xiàn)方法,其特征在于在媒體網(wǎng)關(guān)控制協(xié)議棧中至少增設(shè)尚未收到響應(yīng)的媒體網(wǎng)關(guān)控制器(MGC)命令表、正在處理的媒體網(wǎng)關(guān)(MG)命令表和已發(fā)出響應(yīng)的媒體網(wǎng)關(guān)(MG)命令表當(dāng)MGCP發(fā)送模塊發(fā)送命令時(shí),將該命令記錄于媒體網(wǎng)關(guān)控制器(MGC)命令表中,當(dāng)MGCP發(fā)送響應(yīng)消息時(shí),將其記錄于已發(fā)出響應(yīng)的媒體網(wǎng)關(guān)(MG)命令表中,并刪除正在處理的媒體網(wǎng)關(guān)(MG)命令表中的相應(yīng)項(xiàng);當(dāng)MGCP消息接收模塊接收到MGCP命令時(shí),首先在已發(fā)出響應(yīng)的媒體網(wǎng)關(guān)(MG)命令表中進(jìn)行查找,如果有匹配項(xiàng)則根據(jù)該匹配項(xiàng)內(nèi)容重發(fā)響應(yīng)消息,否則再對(duì)正在處理的媒體網(wǎng)關(guān)(MG)命令表進(jìn)行查找,如果正在處理的媒體網(wǎng)關(guān)(MG)命令表中有匹配項(xiàng)則放棄該命令,否則在該表記錄該項(xiàng);當(dāng)MGCP消息接收模塊接收到MGCP響應(yīng)消息時(shí),則在尚未收到響應(yīng)的媒體網(wǎng)關(guān)控制器(MGC)命令表查找,如果找到匹配項(xiàng)則傳遞該響應(yīng)消息,否則放棄該消息。
2.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)方法,其特征在于尚未收到響應(yīng)的媒體網(wǎng)關(guān)控制器(MGC)命令表采用鏈表結(jié)構(gòu),其中的記錄項(xiàng)用處理事務(wù)標(biāo)識(shí)符(TransactionID)做索引。
3.根據(jù)權(quán)利要求1或2所述的實(shí)現(xiàn)方法,其特征在于尚未收到響應(yīng)的媒體網(wǎng)關(guān)控制器(MGC)命令表中的項(xiàng)在超過(guò)設(shè)定時(shí)間時(shí)被刪除。
4.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)方法,其特征在于正在處理的媒體網(wǎng)關(guān)(MG)命令表和已發(fā)出響應(yīng)的媒體網(wǎng)關(guān)(MG)命令表采用鏈表結(jié)構(gòu),其中的記錄項(xiàng)用事務(wù)標(biāo)識(shí)符做索引。
全文摘要
本發(fā)明公開(kāi)了一種媒體網(wǎng)關(guān)控制協(xié)議(MGCP)消息可靠傳送機(jī)制的實(shí)現(xiàn)方法,該方法是在媒體網(wǎng)關(guān)控制協(xié)議棧中增設(shè)尚未收到響應(yīng)的MGC命令表、正在處理的MG命令表和已發(fā)出響應(yīng)的MG命令表。當(dāng)MGCP發(fā)送模塊發(fā)送命令時(shí),將該命令記錄于MGC命令表中,當(dāng)MGCP發(fā)送響應(yīng)消息時(shí),將其記錄于已發(fā)出響應(yīng)的MG命令表中;當(dāng)接收到MGCP命令時(shí)先在已發(fā)出響應(yīng)的MG命令表中查找匹配項(xiàng),根據(jù)查表的不同結(jié)果進(jìn)行不同的處理;當(dāng)接收到MGCP響應(yīng)消息時(shí),則在尚未收到響應(yīng)的MGC命令表查找,如果找到匹配項(xiàng)則傳遞該響應(yīng)消息,否則放棄該消息。本發(fā)明保證了同一個(gè)MGCP消息最多執(zhí)行一次,而且實(shí)現(xiàn)了對(duì)MGCP消息的高效率處理,可支持電信級(jí)設(shè)備大容量通信。
文檔編號(hào)H04M11/06GK1457182SQ0211899
公開(kāi)日2003年11月19日 申請(qǐng)日期2002年5月10日 優(yōu)先權(quán)日2002年5月10日
發(fā)明者冒曉鳴 申請(qǐng)人:北京艾尼通科技有限公司