專利名稱:一種h.248消息分級編解碼的實現方法
技術領域:
本發明涉及一種消息編解碼的實現方法,具體地說,涉及通信領域中NGN(下一代網絡,如WCDMA/CDMA2000/TD-SCDMA/SOFTSWITCH)系統中MGC(媒體網關控制器)和MGW(媒體網關)上H.248消息編解碼的實現方法。
背景技術:
H.248協議被3GPP/3GPP2等組織采用,作為NGN網絡承載和控制分離的協議標準,主要用于MGC和MGW之間的網關控制以及承載建立控制。
MGC與MGW之間通過H.248通信,消息可以選擇文本方式或二進制方式進行編碼。在H.248文本編碼中,H.248消息長度通常在100到300字節之間。沒有經過編碼的消息結構如圖1所示,H.248的消息從外向內嵌套依次是事務(Transaction)/動作(Action)/命令(Command),一個消息可以包含多個事務,各個事務之間不必順序執行。
事務事務由若干動作組成,事務具有完整性,同一個事務中的動作和命令要求順序執行。
動作動作由若干命令組合而成,動作一般有具體的含義,特殊情況下,一個動作由一條命令組成。動作實際上是一組命令的集合。
命令命令是MGC和MGW實現交互信息的基本單位,命令中包括各種命令參數。命令的操作對象是上下文(Context),上下文以上下文標識(Context ID)區分。上下文與呼叫對應,維護參與呼叫的終結點(Termination)狀態。
一個完整的呼叫過程,將會在MGC和MGW之間交互20~60次H.248命令,以完成對同一個上下文的呼叫控制操作,每次命令交互封裝到事務中形成H.248消息發送給對方。
H248編解碼模塊對網關和網關控制器之間的交互消息進行編解碼,即對收到的消息進行解碼,把H248標準消息翻譯成網關內部實現的結構;對發向網關控制器的消息進行編碼,把網關內部的結構轉換為H248標準消息。H248消息有兩種格式二進制格式和文本格式,本發明僅支持H.248文本格式。
通用的解碼流程詳見附圖2,包括以下步驟在解碼初始化時,為了加快解碼的速度,先構造解碼的需要識別關鍵詞的數據結構,一般是組織成快速搜索的樹型數據結構,步驟100;然后進入工作態,步驟110;如果收到的H.248消息,步驟120;進行基本的合法性檢查,判斷其是否合法,如果是,執行下一步,否則返回步驟110,步驟130;對H.248消息進行詞法分析,步驟140;對H.248消息進行語法分析,最終生成H.248內部消息的數據結構,步驟150;最后輸出內部消息,返回步驟110;一般來講,由于H.248文本文法比較靈活,定義了較多的關鍵詞,而且在解碼過程中,需要頻繁進行內存操作,所以解碼所需的運算量比較大,運行時間比較長。
H.248通用的編碼過程是解碼逆過程,把H.248內部結構翻譯成字符串。一般H.248消息的內部結構都類同于H.248協議中推薦的二進制編碼結構的組織方式,具體的編碼方式涉及到H.248的文本語法的定義,編碼所做的工作只是把H.248的內部結構按照H.248文本編碼的語法翻譯成字符串的形式。相對于解碼來講,所需的運算負荷比較小。
在目前常用的H.248協議處理系統中,H.248協議的編解碼處理模塊和協議處理模塊在同一物理模塊上處理。隨著需求的增加,網關需要處理的呼叫數量也不斷增加,而同時單模塊處理能力又有所限制,則必須設計一種可以平滑升級的大容量H.248協議處理系統。在這個處理框架下,需要多個處理模塊來協同完成H.248來完成,呼叫上下文數據區將被保存在不同的處理模塊上,無論這種多模塊的機制如何組織,都需要在不同的模塊的處理單元之間分發H.248消息。
但是僅僅簡單地增加處理模塊并不能平滑地擴展系統處理能力,如果整個消息的解碼運算仍由一個處理模塊完成,也不能充分利用多模塊的處理能力,影響系統的處理效率。此外,因為H.248的消息在沒有解碼前不知道消息對應的處理模塊,如果接口模塊隨意的將接收的H.248消息發給某個處理模塊解碼,必然導致大量的解碼完的消息不屬于本板處理,由此帶來的頻繁的消息轉發會消耗大量處理器資源和內部通信帶寬。
發明內容
有鑒于此,本發明要解決的技術問題是提供一種H.248消息分級編解碼的實現方法,能夠合理地利用多模塊的處理能力,提高編解碼處理能力,并減少模塊之間命令傳輸的負擔。
為了解決上述技術問題,本發明提供了一種H.248消息分級解碼的實現方法,包括消息預解碼、事務預解碼和動作解碼過程,其中,所述消息預解碼包括以下步驟(a)判斷消息長度是否合法,如果是,執行下一步,否則退出;(b)對消息頭解碼;(c)對事務類型及事務ID解碼;(d)搜索事務字符串;(e)將事務字符串分發給相應的事務預解碼單元;(f)判斷是否已對消息中的所有事務解碼,如果是,結束消息預解碼,否則返回步驟(c);所述事務預解碼包括以下步驟(g)對動作的上下文ID解碼;(h)搜索動作字符串;(i)將動作字符串分發給相應的動作解碼單元;(j)判斷是否已對事務中的所有動作解碼,如果是,結束事務預解碼,否則返回步驟(g);所述動作解碼包括以下步驟(k)對動作字符串解碼,生成H.248的內部消息。
為了進行合理的分發,可以在所述步驟(c)后加上步驟判斷事務類型是否屬于事務請求,如果是,對事務第一個上下文ID或事件ID解碼后執行步驟(d),否則直接執行(d),在所述步驟(e)中,將非請求類事務的字符串分發到其事務ID所在的處理模塊,對請求類事務,則根據事務第一個上下文ID或事件ID進行分配。
當H.248消息支持處理H.248簽權頭時,在所述步驟(a)之后還包括步驟對簽權頭進行解碼,并判斷是否合法,如果是,執行步驟(b),否則退出。
為了加快搜索,在所述步驟(f)之前包括以下步驟對字符串進行預處理,去除字符串中的注釋以及多余的空格和空行。
為了解決以上技術問題,本發明還提供了一種H.248消息分級編碼的實現方法,包括以下步驟(a)對動作內容編碼,把H.248的內部結構翻譯成字符串的形式,加上其操作的上下文ID,發送到所屬事務的編碼單元;(b)將事務包含的各已編碼的動作字符串按序組合成事務字符串(包含了字符串長度信息),加上事務ID及事務類型,發送到所屬消息的編碼單元;(c)將消息包含的各已編碼的事務組合,并加上消息頭,得到H.248消息。
當H.248消息支持處理H.248簽權頭時,在所述步驟(c)中,還對簽權數據或/及版本信息進行編碼,并加在消息頭和事務之間。
由上可知,本發明提出的分級編解碼實現方法,可以配合不同網關分布式處理策略,合理利用整個網關的資源,加快了整個系統的編解碼的處理能力。并減少模塊之間命令的傳輸負擔。
圖1是H.248的消息結構示意圖。
圖2是H.248的通用解碼過程的流程圖。
圖3是本發明分級編解碼模塊在MGW處理系統中的位置示意圖。
圖4是本發明實施例分布式處理網關的結構示意圖。
圖5是本發明實施例消息預解碼對象的數據結構的示意圖。
圖6是本發明實施例消息預解碼的流程圖。
圖7是本發明實施例搜索事務字符串算法的流程圖。
圖8是本發明實施例事務預解碼對象的數據結構的示意圖。
圖9是本發明實施例事務預解碼的流程圖。
圖10是本發明實施例編碼方法的流程圖。
具體實施例方式
圖3示出了本發明分級編解碼模塊在MGW處理系統中的位置,MGC將消息編碼后,經Mc接口發送到MGW,MGW上的分級解碼模塊進行解碼,轉換為網關內部的結構,然后由H.248分布處理模塊進行處理。圖中的分級編解碼模塊是一個邏輯模塊,它可以由多個分布式的編解碼單元共同組成,而在物理實體上可以獨立,也可以與接口模塊或處理模塊的實體相結合。
為了便于理解,圖4中示出了本實施例基于的分布式處理媒體網關的結構示意圖,如圖所示,該分布式處理媒體網關由多個H.248接口板、多個H.248分布式處理模塊和H.248集中維護處理模塊構成,各接口板、處理模塊之間通過內部通信網絡通信,詳細內容見中國專利申請(申請號03126453.0,專利申請名稱一種大容量H.248協議分布式處理系統和方法)。需要說明的是,本發明方法并不局限于某種具體的系統結構。
本發明實施例的解碼實現方法分為三個子流程,分別是對H.248消息的預解碼、對事務的預解碼及對動作的解碼。對應于三個功能模塊,即消息預解碼模塊、事務預解碼模塊和動作解碼模塊,分別由若干個對應的分布式解碼單元組成。
MGW或MGC接收到的H.248消息是一種分層嵌套式的數據結構。其中,消息預解碼模塊的解碼對象是消息,其數據結構如圖5所示,由消息頭(即發送者網關的地址標記)、版本信息和事務組成,如果H.248消息支持處理H.248簽權頭,則在版本消息前加上一個簽權頭。消息由若干數據結構相同的事務組成,圖中只示出了一個事務的數據結構。在事務的數據結構中,第一個子段是事務類型,分為請求事務、應答事務及處理等待事務;第二個子段是事務ID,由四個字節組成;第三個子段是事務第一個上下文對應的ID(此處指事務包含的第一個動作針對的上下文ID);第四和第五個子段分別是事務字符串的長度及事務字符串的內容,事務字符串中又包含有若干的動作。H.248消息中所包含的事務個數不確定,要將預解碼的結果最終組織成鏈表的形式,鏈表的每一個節點是圖5所示的數據結構。
消息預解碼的處理流程如圖6所示,包括以下步驟判斷消息長度是否合法,如果是,執行下一步,否則退出,步驟200;對消息字符串進行預處理(去除字符串中的注釋以及多余的空格和空行),步驟210;對消息頭和版本信息解碼,步驟220;對事務類型解碼,步驟230;對事務ID解碼,步驟240;判斷事務類型是否屬于事務請求,如果是,執行下一步,否則直接執行步驟270,步驟250;對事務第一個上下文ID解碼,步驟260;搜索事務字符串(包括字符串長度和內容),即解出事務字符串的開始位置和結束位置,步驟270;將事務字符串分發給相應的事務預解碼單元,步驟280;判斷是否已對消息中的所有事務解碼,如果是,則結束,否則返回步驟230,步驟290。
如果在上述步驟220、230、240、260中解碼失敗,就退出。
如果H.248消息支持處理H.248簽權頭的處理,則在步驟210后,還包括一個步驟對簽權頭進行解碼,并判斷是否合法消息,如果是,執行步驟220,否則退出。
在步驟270中,根據H.248文法,事務字符串開始于字符左大括號“{”,結束于右大括號“}”,在步驟210進行字符串預處理時已經將字符串中的注釋去掉了(可簡化搜索算法),所以這時不用考慮注釋中的左右大括號,但對于包含于字符串變量中的左右大括號還需處理,雙引號是一個字符串變量的標記。本實施例的搜索算法就是以此為基礎設計的,如圖7所示,包括以下步驟(程序開始時已經讀入了一個左大括號)設置大括號總數為1(wLBRKTNum)=1),字符串變量標記的值為假(bIsDQUOTE=False),步驟300;讀入一個字符,步驟310;判斷該字符串是否不為空或者大括號總數不為0,如果是,執行下一步,否則,執行步驟400,步驟320;判斷當前字符是否雙引號,如果是,執行下一步,否則執行步驟350(即不統計),步驟330;將字符串變量標記的值置為其反值,步驟340;判斷字符串變量標記是否為假,如果是,執行下一步,否則,返回步驟310,步驟350;判斷該字符是否為左大括號,如果是,執行下一步,否則,執行步驟380,步驟360;將大括號總數加一,返回步驟310,步驟370;判斷該字符是否為右大括號,如果是,執行下一步,否則,返回步驟310,步驟380;將大括號總數減一,返回步驟310(即對其它字符不處理),步驟390;判斷大括號總數是否為0,如果是,執行步驟280,否則作出錯處理,步驟400。
本實施例中,步驟280中的分發是根據標志性ID來進行的,如果在步驟230中解出的事務類型不是事務請求,則其事務ID是由本地分配的,將其事務字符串直接分發到原來處理模塊上的事務預解碼單元(在預解碼和消息分發點上設有事務ID和處理模塊的對照表);如果是事務請求,繼續解出其第一個上下文ID,如果該上下文標識為新建或空,指定一個分布式處理模塊的事務預解碼單元處理,如果該上下文標識符合某個分布式處理模塊的上下文區間范圍,則發給該分布式處理模塊上的事務預解碼單元處理。
在分發事務字符串時,如果是在本模塊處理,只需記錄事務在H.248的開始和結束標記即可,若在其它模塊處理,則需進行拷貝操作(本實施例屬于后一種情況)。
事務字符串的數據結構由多個數據結構相同的動作組成,圖8中示出了一個動作的數據結構,由上下文ID、動作字符串的長度及動作字符串的內容組成,其中上下文ID稱為該動作所對應的標記性ID。一個事務中所包含的動作個數不確定,故最終將事務預解碼的結果也組成鏈表的方式。
在接收到分發的事務字符串及事務類型后,事務預解碼單元對其進行預解碼的處理流程如圖9所示,包括以下步驟對上下文ID解碼,步驟500;搜索動作字符串(包括字符串長度和內容),即解出動作字符串的開始位置和結束位置,步驟510;將動作字符串分發給相應的動作解碼單元,步驟520;判斷是否已對事務中的所有動作解碼,如果是,則結束,否則返回步驟500,步驟530。
其中步驟510的搜索算法與消息預解碼中的搜索算法相同,只是搜索的內容是事務的某一個動作字符串。步驟520中分發根據該動作的上下文ID所在的上下文區間進行,或指定。
分級解碼的第三個子流程是對動作字符串的解碼,動作解碼單元按照H.248文法,采用通用的解碼算法進行處理,即采用通用的詞法分析,采用標準的H.248文本語法對接收的動作字符串進行分析,生成H.248的內部消息(詳見圖2),從而完成整個解碼過程。
與解碼相對應,本實施例的編碼是由動作編碼模塊、事務編碼模塊和消息編碼模塊構成,各模塊分別由對應的分布式的若干編碼單元組成。編碼的流程如圖10所示,包括以下步驟對動作內容編碼,把H.248的內部結構翻譯成字符串的形式,加上其操作的上下文ID,發送到所屬事務的編碼單元,步驟600;將事務包含的各已編碼的動作字符串按序組合成事務字符串,加上事務第一個上下文ID(即事務中第一個動作的上下文ID)、事務ID及事務類型,發送到所屬消息的編碼單元,步驟610;將消息包含的各已編碼的事務字符串組合,并加上版本信息和消息頭,得到H.248消息,步驟620。
上述的動作、事務或消息編碼單元可能在同一處理模塊上,也可以在不同的處理模塊上。在步驟620中若需要簽權,對簽權數據進行編碼,并加在版本信息上。
在本實施例中,消息預解碼單元獨立于系統中的分布式處理模塊,可以作為一個預解碼板或者與各接口板合而為一。而事務預解碼單元和動作解碼單元則分布在各分布式處理模塊上。這樣可以通過消息預解碼的標志性ID對各事務進行合理地分發,譬如通過對事務類型和事務ID的判斷,可以將應答類的事務分發到其原處理模塊上,減少處理模塊之間的轉發操作,或者可通過事務第一個上下文ID所屬區間來分發,達到負荷均衡的效果。
本發明并不局限于某種分發原則,相應的,編碼或解碼的具體過程也可能有所不同,例如,在分發請求類事務時,也可以根據事務ID直接按就近原則,或負荷均衡原則進行,相應的,在編碼的數據結構中不必加入事務第一個上下文ID,消息預解碼時也不必繼續解到事務第一個上下文ID了;此外,根據上下文ID的分發也并不局限于區間判斷,還可以采用輪發,就近等策略。
本發明所基于的分布式處理系統和各編解碼單元的分布也不局限于上述實施例,例如,由于預解碼的運算比較簡單,也可以將各預解碼單元集中在一個處理模塊上處理。而上述的各種編解碼單元,作為邏輯單元可以應用于任何結構的分布式處理MGW中。
本發明實施例在事務和動作字符串中包括字符串長度字節,是一種冗余的設計,是為了提高系統間傳遞消息的可靠性,當然也可以不使用。數據結構中的版本信息也非必須,相應的編解碼處理也可省略。
實施例中雖然是由MGW為例,但本發明的分級編解碼方法也同樣適用于分布式處理MGC中。其編解碼的方法和消息的數據結構都是基本相同的,只是MGC在進行分布式處理的預解碼時,需要解出請求事件ID,因為這個ID是MGC發出的,MGC上的多模塊系統可以在事件ID中包含模塊信息。因此,對于MGC發出的編碼消息和MGW到MGC的應答消息的編碼結構中,還應當有事件ID,可加入在事務ID之后,相應的在MGC上的消息預解碼的流程中,可以將對事務第一個上下文ID解碼的步驟改成對事件ID的解碼,如請求檢測事件ID,并依據該ID在分配表中找到對應的處理模塊分發。當然,MGC也可以采用其它方式進行多模塊處理,本發明對此并不做限制。
綜上所述,本發明的分級編解碼的實現方法使得在各H.248處理模塊之間傳送消息時,無需將整個H.248消息傳送,避免在另一個處理模塊上重復對這個消息進行解碼。可以配合不同網關分布式處理策略,合理利用整個網關的資源,加快整個系統的編解碼的處理能力。并減少模塊之間命令傳輸的負擔。
在本發明基本精神上對上述實施例所做的各種變換,都應在本發明的保護范圍之內。
權利要求
1.一種H.248消息分級解碼的實現方法,包括消息預解碼、事務預解碼和動作解碼過程,其中,所述消息預解碼包括以下步驟(a)判斷消息長度是否合法,如果是,執行下一步,否則退出;(b)對消息頭解碼;(c)對事務類型及事務ID解碼;(d)搜索事務字符串;(e)將事務字符串分發給相應的事務預解碼單元;(f)判斷是否已對消息中的所有事務解碼,如果是,結束消息預解碼,否則返回步驟(c);所述事務預解碼包括以下步驟(g)對動作的上下文ID解碼;(h)搜索動作字符串;(i)將動作字符串分發給相應的動作解碼單元;(j)判斷是否已對事務中的所有動作解碼,如果是,結束事務預解碼,否則返回步驟(g);所述動作解碼包括以下步驟(k)對動作字符串解碼,生成H.248的內部消息。
2.如權利要求1所述的分級解碼的實現方法,其特征在于,在所述步驟(c)后還包括步驟判斷事務類型是否屬于事務請求,如果是,對事務第一個上下文ID或事件ID解碼后執行步驟(d),否則直接執行(d),在所述步驟(e)中,將非請求類事務的字符串分發到其事務ID所在的處理模塊,對請求類事務,則根據事務第一個上下文ID或事件ID進行分配。
3.如權利要求1所述的分級解碼的實現方法,其特征在于,所述步驟(a)之后還包括步驟對簽權頭進行解碼,并判斷是否合法,如果是,執行步驟(b),否則退出。
4.如權利要求1所述的分級解碼的實現方法,其特征在于,在所述步驟(b)中還對版本消息解碼。
5.如權利要求1所述的分級解碼的實現方法,其特征在于,在所述步驟(f)之前還包括步驟對字符串進行預處理,去除字符串中的注釋以及多余的空格和空行。
6.如權利要求5所述的分級解碼的實現方法,其特征在于,所述步驟(d)及(h)中,是通過識別事務字符串或動作字符串的起始左大括號和結束右大括號,來確定事務字符串的起始和結束位置的。
7.一種H.248消息分級編碼的實現方法,包括以下步驟(a)對動作內容編碼,把H.248的內部結構翻譯成字符串的形式,加上其操作的上下文ID,發送到所屬事務的編碼單元;(b)將事務包含的各已編碼的動作字符串按序組合成事務字符串(包含了字符串長度信息),加上事務ID及事務類型,發送到所屬消息的編碼單元;(c)將消息包含的各已編碼的事務組合,并加上消息頭,得到H.248消息。
8.如權利要求7所述的分級編碼的實現方法,其特征在于,在所述步驟(b)中,還加上了事務第一個上下文ID或事件ID。
9.如權利要求7所述的分級編碼的實現方法,其特征在于,在所述步驟(c)中,還對簽權數據或/及版本信息進行編碼,并加在消息頭和事務之間。
全文摘要
本發明公開了一種H.248文本消息分級編解碼的方法。在承載與控制分離的網絡中實現一個大容量可平滑擴容的網關時,需要合理地在不同的處理器上分擔H.248文本消息編解碼的運算負荷,本發明針對H.248消息的特點,將H.248消息的編解碼分成不同的級別,消息預解碼,事務預解碼和動作解碼。采用本發明所述方法,可以配合不同網關分布式處理策略,合理利用整個網關的資源,加快了整個系統的編解碼的處理能力。
文檔編號H04L12/66GK1545280SQ200310113479
公開日2004年11月10日 申請日期2003年11月12日 優先權日2003年11月12日
發明者寧冬子, 周自春, 秦長鵬 申請人:中興通訊股份有限公司