專利名稱:一種在sip多處理器系統(tǒng)中實現(xiàn)會話調度的方法
技術領域:
本發(fā)明涉及通訊領域的會話調度技術,尤其涉及多處理器系統(tǒng)中的會話調度技術。
背景技術:
隨著互聯(lián)網(wǎng)和寬帶技術的發(fā)展,基于IP網(wǎng)絡的語音傳輸(VOIP)技術在企業(yè)網(wǎng)和公共網(wǎng)絡中得到了越來越多的應用,其中SIP網(wǎng)絡體系由于SIP協(xié)議簡單,易擴充等特性,從而在通訊網(wǎng)中得到越來越多的應用。對于電信級的通訊網(wǎng)絡來說,其必然需要具備大容量的處理能力,而如何實現(xiàn)大容量處理能力,分布式多處理器處理技術正是解決這個問題的一個好方法。
現(xiàn)有技術中,在SIP多處理器系統(tǒng)中實現(xiàn)會話調度的方法是將每個會話與處理器對應關系存放起來,根據(jù)對應關系進行調度分發(fā)處理,這種方式比較消耗系統(tǒng)的存儲資源,調度效率和可靠性也不是很高,并且對于多處理器之間的負荷均衡也沒有考慮,需要改進的方法來解決這些問題。
發(fā)明內(nèi)容
本發(fā)明要解決的問題是克服現(xiàn)有技術存在的系統(tǒng)資源利用率低和處理器負荷均衡性差的缺陷,進而提供一種在SIP多處理器系統(tǒng)中實現(xiàn)會話調度的方法,提高系統(tǒng)的穩(wěn)定性和可靠性,并能實現(xiàn)系統(tǒng)資源的高效利用。
本發(fā)明采用以下技術方案一種在SIP多處理器系統(tǒng)中實現(xiàn)會話調度的方法,包括以下步驟
步驟一SP將SIP消息解碼,獲取對應的會話標識,將會話標識分別映射到各UAP列表上,所獲取的UAP形成下一跳UAP列表;步驟二SP將SIP消息轉發(fā)給下一跳UAP列表中第一UAP處理,并將其余下一跳UAP信息通知該第一UAP;步驟三該第一UAP收到SIP消息后,檢查是否處理該SIP消息對應的會話;步驟四如果該第一UAP不處理,則SP根據(jù)獲得的下一跳UAP信息,繼續(xù)將該SIP消息轉發(fā)給下一跳UAP列表中第二UAP處理,并將其余下一跳UAP信息通知此第二UAP,直到下一跳UAP列表信息為空。
進一步地,UAP處理完SIP消息后,需發(fā)送響應給SP;若需回復消息給外部UA,則SP發(fā)送回復消息給外部UA。
進一步地,上述的UAP列表形成UAP列表池;在該UAP列表池中,最上面的UAP列表存放當前可用的所有UAP,即當前可用UAP列表,當某個UAP發(fā)生狀態(tài)變化時,除了池底的UAP列表被丟棄外,SP將池中其他各UAP列表,依次存放到其下面的UAP列表中進行保存,然后修改當前可用UAP列表當某個UAP進入服務狀態(tài),則SP將此UAP加入到當前可用UAP列表中;而當某個UAP退出服務狀態(tài),則SP將此UAP從當前可用UAP列表移走。
進一步地,在SP的UAP列表中,某個UAP可以存放在其中的多個位置。
進一步地,當某個UAP從可用狀態(tài)變?yōu)椴豢捎脿顟B(tài)時,SP可以用其他可用UAP替代掉當前可用UAP列表中的該不可用UAP。
進一步地,當某個UAP從不可用狀態(tài)變?yōu)榭捎脿顟B(tài)時,SP可以用該UAP替代掉當前可用UAP列表中的部分其他可用UAP。
進一步地,SP通過調整UAP列表中UAP的分布和分布數(shù)量,調整各UAP的負荷。
進一步地,除了當前可用UAP列表外,其他UAP列表池中的列表都有一個老化過程,具有一定的生命周期,當其生命周期到達時,將該列表從UAP列表池中移除。
進一步地,上述步驟一中,采用如下方法將會話標識映射到UAP列表中首先對會話標識組成的字節(jié)進行運算,獲得一個中間數(shù);然后對此中間數(shù)進行取模運算,模值大小為UAP列表長度,從而獲得一個余數(shù);以此余數(shù)為UAP在UAP列表中的位置,則可以獲得相應的UAP。
相較與現(xiàn)有技術,采用本發(fā)明方法具備以下有益效果在資源占用不多的情況下,提供高效的多處理器SIP會話調度;實現(xiàn)多個處理器之間負荷均衡處理;可平滑地增加處理器,自動升級整個SIP服務系統(tǒng)處理能力;提高SIP服務系統(tǒng)的可靠性。
圖1是應用本發(fā)明的SIP服務系統(tǒng)網(wǎng)絡結構圖;圖2是本發(fā)明的調度處理單元的會話調度流程圖;圖3是本發(fā)明的用戶代理處理單元的消息處理流程圖。
具體實施例方式
下面結合附圖對技術方案的實施作進一步的詳細描述在應用本發(fā)明的SIP多處理器系統(tǒng)中,存在至少兩個或兩個以上充當UA(用戶代理)的UAP(UAProcessor,用戶代理處理單元);至少一個充當SIP會話消息調度的SP(Scheduler Processor,調度處理單元);至少一個LS(Location Service,位置服務單元)。SP、UAP和LS一起組成一個SIP多處理器系統(tǒng)(或稱SIP服務系統(tǒng)),為外部UA提供服務。在應用本發(fā)明的SIP服務系統(tǒng)中,SP與所有UAP之間存在通信鏈路,而各UAP之間也存在通信鏈路,它們之間可以相互轉發(fā)會話SIP消息。SP管理維護所有UAP是否可用的狀態(tài),將所有可用的UAP放在列表中;SP根據(jù)UAP的可用狀態(tài)進行會話調度。LS則為所有的UAP提供位置服務。
圖1是應用本發(fā)明的SIP服務系統(tǒng)一個實施例的網(wǎng)絡結構圖,在本實施例中,應用本發(fā)明的SIP服務系統(tǒng)網(wǎng)絡結構包括一個SP、三個UAP(UAP:1、UAPL:2、UAP:3)和一個LS;用戶代理(或稱終端)UA1和UA2通過網(wǎng)絡接入到SP服務系統(tǒng)上;UA1和UA2注冊到SP服務系統(tǒng)中,注冊地址記錄到LS中。SP可以與某個UAP共存于同一個物理實體中,在實際使用中一個SIP服務系統(tǒng)可以有多個SP。
在SP收到的外部UA發(fā)送過來的SIP會話消息中,包括本地UAP主動發(fā)起的會話和外部UA主動發(fā)起的會話。對于外部UA主動發(fā)起的會話,SP調度指派一個UAP處理這個會話的所有SIP消息;對于本地UAP主動發(fā)起的會話,SP收到的外部UA所發(fā)送的該會話的所有SIP消息,必須轉交給該發(fā)起會話的本地UAP處理。在下面的會話調度方案描述中,將分別針對本地UAP主動發(fā)起的會話和外部UA主動發(fā)起的會話這兩種情況進行描述。
對于本地UAP主動發(fā)起的會話,UAP在會話標識中攜帶UAP信息如果會話標識是每次會話啟動時動態(tài)產(chǎn)生的(如Call-ID等),則在會話標識中直接加入UAP信息;如果會話標識是由固定的信息組成(如From等),則要求該固定信息與UAP之間存在一個映射對應關系,會話必須由映射對應關系對應的UAP發(fā)起。其中,會話標識是指SIP消息中與會話相關的信息,該信息在整個會話消息交互過程中將保持不變,比如Call-ID、From等屬性。對于本地UAP主動發(fā)起的會話和外部UA主動發(fā)起的會話,在調度時可以采用不同的會話標識類型。
在本發(fā)明中,對于外部UA主動發(fā)起的SIP會話,SP采用將會話標識映射到一個可用UAP列表中而獲取一個UAP的方式來實現(xiàn)會話調度,但由于運行過程中會發(fā)生UAP進入/退出服務的情況,這樣對于同一個會話,其會話過程中的各SIP消息映射的結果就可能不一樣。為了保證SIP會話中每個消息都能正確映射到相同UAP上處理,SP將使用兩個或兩個以上的UAP列表來記錄UAP變動發(fā)生前后的可用UAP信息,這樣當SP收到某個外部UA發(fā)送的SIP消息后,SIP服務系統(tǒng)按照如下步驟執(zhí)行步驟一SP將SIP消息解碼,獲取對應的會話標識,將會話標識分別映射到各UAP列表上,所獲取的UAP形成下一跳UAP列表。SP可以在獲取會話標識和會話發(fā)起方的情況下,對SIP消息進行部分解碼。將會話標識映射到UAP列表中,可以采用如下方法首先對會話標識組成的字節(jié)進行簡單的數(shù)學運算(如加法等),獲得一個中間數(shù);然后對此中間數(shù)進行取模運算,模值大小為UAP列表長度,從而獲得一個余數(shù);以此余數(shù)為UAP在UAP列表中的位置,則可以獲得相應的UAP。
步驟二SP將SIP消息轉發(fā)給下一跳UAP列表中第一UAP處理,并將其余下一跳UAP信息通知該第一UAP。下一跳UAP列表信息可以放在SIP消息中的Route屬性中攜帶給UAP;或者SP可以將其信息增加到SIP消息中的Via屬性中,由此其他下一跳的UAP可以獲知響應消息通過哪個SP發(fā)送出去。SP可以按照自定義的消息格式將SP信息、下一跳UAP列表信息和SIP消息轉發(fā)給UAP。
步驟三該第一UAP收到SIP消息后,檢查是否處理該SIP消息對應的會話;步驟四如果該第一UAP不處理,則SP根據(jù)獲得的下一跳UAP信息,繼續(xù)將該SIP消息轉發(fā)給下一跳UAP列表中第二UAP處理,并將其余下一跳UAP信息通知此第二UAP,直到下一跳UAP列表信息為空。UAP可以將SP信息、下一跳UAP列表信息和SIP消息等內(nèi)容按照自定義的消息格式轉發(fā)給下一跳UAP C(即第一UAP轉發(fā)給第二UAP,以此類推)。
UAP處理完SIP消息后,需發(fā)送響應給SP;若需回復消息給外部UA,則SP發(fā)送回復消息給外部UA。
本發(fā)明中,所有UAP列表形成一個UAP列表池;在這個UAP列表池中,最上面的UAP列表存放當前可用的所有UAP(稱之為“當前可用UAP列表”),各列表之間存在一個序列關系。當某個UAP發(fā)生狀態(tài)變化時,除了池底的UAP列表被丟棄外,SP將池中其他各UAP列表,依次存放到其下面的UAP列表中進行保存,然后修改當前可用UAP列表當某個UAP進入服務狀態(tài),則SP將此UAP加入到當前可用UAP列表中;而當某個UAP退出服務狀態(tài),則SP將此UAP從當前可用UAP列表移走。在SP的UAP列表中,某個UAP可以存放在其中的多個位置。當某個UAP從可用狀態(tài)變?yōu)椴豢捎脿顟B(tài)時,SP可以用其他可用UAP替代掉當前可用UAP列表中的該UAP。當某個UAP從不可用狀態(tài)變?yōu)榭捎脿顟B(tài)時,SP可以用該UAP替代掉當前可用UAP列表中的部分其他可用UAP。SP通過調整UAP列表中UAP的分布和分布數(shù)量,達到調整各UAP的負荷。
除了當前可用UAP列表外,其他UAP列表池中的列表都有一個老化過程,具有一定的生命周期,當其生命周期到達時,將該列表從UAP列表池中移除。UAP列表的生命周期可以按照一個經(jīng)驗值事先設定好,如一個通話通常不會保持超過1個小時,則可以將其生命周期設定為1小時。UAP列表的存儲形式可以采用各種數(shù)據(jù)結構進行存儲,最簡單的是采用數(shù)組方式進行描述。
SP可以根據(jù)UAP的響應對UAP處理分布進行統(tǒng)計分析,從而在步驟二中對下一跳UAP列表中的UAP進行調整排序,以達到最佳調度效果。SP可以根據(jù)UAP的回應消息對UAP處理分布進行統(tǒng)計分析,當下一跳UAP列表中根據(jù)某個UAP列表(除當前可用UAP列表)計算出來的UAP,在某個時間段內(nèi)達到0%的調度命中后,則將其進行老化處理,從UAP列表池中移除。
如圖2所示,SP的會話調度流程如下步驟201SP收到外部UA發(fā)送過來的SIP消息;步驟202SP對該SIP消息進行解碼;步驟203SP判斷其是否會話消息,如果不是的話執(zhí)行步驟204;否則執(zhí)行步驟205;步驟204SP轉到其他流程處理,退出本流程;步驟205SP獲取SIP消息中的Call-ID和會話發(fā)起方信息;步驟206SP判斷會話發(fā)起方是否為外部UA,如果是的話,執(zhí)行步驟207;否則執(zhí)行步驟214;步驟207SP將Call-ID轉換成BYTE類型數(shù)組,所有數(shù)組成員進行相加,獲得數(shù)值A;步驟208SP獲取第一個可用UAP列表;步驟209SP以該UAP列表長度為模,對數(shù)值A取模獲余數(shù)B,以余數(shù)B為下標獲取UAP列表對應的UAP,放入下一跳UAP列表;步驟210SP判斷是否還有下一個UAP列表,如果有執(zhí)行步驟211,否則執(zhí)行步驟212;步驟211SP獲取下一個可用UAP列表,重復步驟209;步驟212SP移除下一跳UAP列表中的重復信息;獲取其中的第一個UAP C,將C從下一跳UAP列表中移除;步驟213SP將SP地址、下一跳UAP列表、以及SIP消息以自定義結構方式發(fā)送給UAP C處理,執(zhí)行步驟216;步驟214SP根據(jù)Call-ID中的UAP信息,獲取UAP C;步驟215SP將SIP消息發(fā)送給UAP C處理;步驟216流程處理結束。
如圖3所示,當UAP接收到會話消息后,進入UAP的處理流程,包括以下步驟步驟301UAP收到SP轉發(fā)的會話消息;步驟302UAP對其中的SIP消息解碼;步驟303UAP判斷是否應該處理會話,若否,執(zhí)行步驟306;若是,執(zhí)行步驟304;步驟304UAP進行會話處理;步驟305UAP向SP回應處理結果信息,執(zhí)行步驟310;步驟306UAP判斷下一跳UAP列表是否為空,如果是的話,執(zhí)行步驟309;步驟307UAP獲取下一跳UAP列表中第一個UAP C,并將C從下一跳UAP列表中移除;步驟308將SP地址、下一跳UAP列表、以及SIP消息以自定義結構方式發(fā)送給UAP C處理;執(zhí)行步驟310;步驟309UAP向SP回應失敗信息;步驟310流程處理結束。
在本實施例中,當UAP處理完SIP消息后,根據(jù)SIP消息種類進行相應的處理當SIP消息找到相應的UAP處理時如果SIP消息為響應消息(Response)時,該UAP處理完畢后,發(fā)送自定義消息響應SP,以告知該消息以被處理;如果SIP消息為請求消息(Request)時,該UAP處理完畢后,發(fā)送SIP響應消息給SP,SP將該消息轉發(fā)出去,響應外部UA;當SIP消息找不到相應的UAP處理時如果SIP消息為響應消息(Response)時,最后一跳的UAP發(fā)送自定義消息響應SP,以告知該消息未被處理;如果SIP消息為請求消息(Request)時,最后一跳的UAP發(fā)送SIP失敗響應消息給SP,SP將該消息轉發(fā)出去,響應外部UA。
當然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟悉本領域的技術人員當可根據(jù)本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。
權利要求
1.一種在SIP多處理器系統(tǒng)中實現(xiàn)會話調度的方法,包括以下步驟步驟一調度處理單元將SIP消息解碼,獲取對應的會話標識,將會話標識分別映射到各用戶代理處理單元列表上,所獲取的用戶代理處理單元形成下一跳用戶代理處理單元列表;步驟二調度處理單元將SIP消息轉發(fā)給下一跳用戶代理處理單元列表中第一用戶代理處理單元處理,并將其余下一跳用戶代理處理單元信息通知該第一用戶代理處理單元;步驟三該第一用戶代理處理單元收到SIP消息后,檢查是否處理該SIP消息對應的會話;步驟四如果該第一用戶代理處理單元不處理,則調度處理單元根據(jù)獲得的下一跳用戶代理處理單元信息,繼續(xù)將該SIP消息轉發(fā)給下一跳用戶代理處理單元列表中第二用戶代理處理單元處理,并將其余下一跳用戶代理處理單元信息通知此第二用戶代理處理單元,直到下一跳用戶代理處理單元列表信息為空。
2.根據(jù)權利要求1所述的方法,其特征在于,用戶代理處理單元處理完SIP消息后,需發(fā)送響應給調度處理單元;若需回復消息給外部用戶代理,則調度處理單元發(fā)送回復消息給外部用戶代理。
3.根據(jù)權利要求1所述的方法,其特征在于,所述的用戶代理處理單元列表形成用戶代理處理單元列表池;在該用戶代理處理單元列表池中,最上面的用戶代理處理單元列表存放當前可用的所有用戶代理處理單元,即當前可用用戶代理處理單元列表,當某個用戶代理處理單元發(fā)生狀態(tài)變化時,除了池底的用戶代理處理單元列表被丟棄外,調度處理單元將池中其他各用戶代理處理單元列表,依次存放到其下面的用戶代理處理單元列表中進行保存,然后修改當前可用用戶代理處理單元列表當某個用戶代理處理單元進入服務狀態(tài),則調度處理單元將此用戶代理處理單元加入到當前可用用戶代理處理單元列表中;而當某個用戶代理處理單元退出服務狀態(tài),則調度處理單元將此用戶代理處理單元從當前可用用戶代理處理單元列表移走。
4.根據(jù)權利要求3所述的方法,其特征在于,在調度處理單元的用戶代理處理單元列表中,一個用戶代理處理單元可以存放在其中的多個位置。
5.根據(jù)權利要求4所述的方法,其特征在于,當某個用戶代理處理單元從可用狀態(tài)變?yōu)椴豢捎脿顟B(tài)時,調度處理單元可以用其他可用用戶代理處理單元替代掉當前可用用戶代理處理單元列表中的該不可用用戶代理處理單元。
6.根據(jù)權利要求4所述的方法,其特征在于,當某個用戶代理處理單元從不可用狀態(tài)變?yōu)榭捎脿顟B(tài)時,調度處理單元可以用該用戶代理處理單元替代掉當前可用用戶代理處理單元列表中的部分其他可用用戶代理處理單元。
7.根據(jù)權利要求3所述的方法,其特征在于,調度處理單元通過調整用戶代理處理單元列表中用戶代理處理單元的分布和數(shù)量,調整各用戶代理處理單元的負荷。
8.根據(jù)權利要求3所述的方法,其特征在于,除了當前可用用戶代理處理單元列表外,其他用戶代理處理單元列表池中的列表都有一個老化過程,具有一定的生命周期,當其生命周期到達時,將該列表從用戶代理處理單元列表池中移除。
9.根據(jù)權利要求1所述的方法,其特征在于,所述步驟一中,采用如下方法將會話標識映射到用戶代理處理單元列表中首先對會話標識組成的字節(jié)進行運算,獲得一個中間數(shù);然后對此中間數(shù)進行取模運算,模值大小為用戶代理處理單元列表長度,從而獲得一個余數(shù);以此余數(shù)為用戶代理處理單元在用戶代理處理單元列表中的位置,獲得相應的用戶代理處理單元。
全文摘要
本發(fā)明旨在提供一種在SIP多處理器系統(tǒng)中實現(xiàn)會話調度的方法,用于通訊領域的會話調度,包括調度處理單元SP將SIP消息解碼,獲取對應的會話標識,分別映射到各用戶代理處理單元UAP列表上,所獲取的UAP形成下一跳UAP列表;SP將SIP消息轉發(fā)給下一跳UAP列表中第一UAP處理,并通知第一UAP其余下一跳UAP信息;第一UAP收到SIP消息后,檢查是否處理該會話;如不處理,則SP繼續(xù)將該SIP消息轉發(fā)給下一跳UAP列表中第二UAP處理,并通知第二UAP其余下一跳UAP信息,直到下一跳UAP列表信息為空。本發(fā)明占用資源不多,可提供高效的多處理器SIP會話調度,并提高了SIP服務系統(tǒng)的可靠性。
文檔編號H04L29/06GK1838658SQ200510038559
公開日2006年9月27日 申請日期2005年3月24日 優(yōu)先權日2005年3月24日
發(fā)明者胡憲利 申請人:中興通訊股份有限公司