本發明屬于通信技術領域,尤其涉及一種SIP消息的傳遞系統及方法。
背景技術:
當前,SIP(Session Initiation Protocol,會話初始協議)消息的傳遞處理是將一個物理主機作為一個SIP服務器設備來使用,即SIP服務器與物理主機都是一對一的關系,用戶在向SIP服務器發送SIP消息時,物理主機會根據SIP消息的地址信息,將SIP消息發送給指定的SIP服務器。現有技術中,每個SIP服務器上注冊的用戶數都是相對有限的,要增加SIP服務器的數量必須通過增加物理主機的數量來實現。
技術實現要素:
本發明提供一種SIP消息的傳遞系統及方法,在不增加物理主機的前提下,增加注冊用戶數。
為達到上述目的,本發明采用如下技術方案予以實現。
技術方案一:
一種SIP消息的傳遞系統,所述系統基于一個物理主機,以及在所述一個物理主機上擴展出的多個虛擬主機,且每個虛擬主機作為一個SIP服務器;
所述物理主機上設置有存儲模塊、消息接收模塊、查詢模塊以及消息傳遞模塊;
所述存儲模塊,用于存儲SIP服務器選擇判定表;所述SIP服務器選擇判定表中至少記錄了從物理主機上擴展出的每個SIP服務器所對應的地址標識;
所述消息接收模塊,用于接收SIP消息;所述SIP消息中包含該SIP消息的源地址和目的地址;所述SIP消息的源地址為發送該SIP消息的用戶所注冊的SIP服務器的地址;所述SIP消息的目的地址為發送該SIP消息的用戶要求訪問的SIP服務器的地址;
所述查詢模塊,用于根據SIP消息的源地址,從所述SIP服務器選擇判定表中確定發送該SIP消息的用戶所注冊的SIP服務器;或者,用于根據SIP消息的目的地址,從所述SIP服務器選擇判定表確定發送該SIP消息的用戶要求訪問的SIP服務器;
所述消息傳遞模塊,用于根據SIP消息的源地址,將所述SIP消息轉發到發送該SIP消息的用戶所注冊的SIP服務器;或者,用于根據SIP消息的目的地址,將所述SIP消息轉發到發送該SIP消息的用戶要求訪問的SIP服務器。
技術方案二:
一種SIP消息的傳遞方法,所述傳遞方法應用于如技術方案以所述的傳遞系統,所述方法包括如下步驟:
步驟1,在一個物理主機上擴展出多個虛擬主機,每個虛擬主機作為一個SIP服務器;
步驟2,所述物理主機接收SIP消息,所述SIP消息中包含該SIP消息的源地址和目的地址;
步驟3,所述物理主機根據所述SIP消息中的目的地址,從SIP服務器選擇判定表中確定發送該SIP消息的用戶要求訪問的SIP服務器;
若所述物理主機在所述SIP消息中未匹配到目的地址,物理主機根據所述SIP消息中的源地址,從SIP服務器選擇判定表中確定發送該SIP消息的用戶所注冊的SIP服務器;
其中,所述SIP服務器選擇判定表存儲于所述物理主機的存儲模塊中,且所述SIP服務器選擇判定表中至少記錄了從物理主機上擴展出的每個SIP服務器所對應的地址標識;
步驟4,所述物理主機根據所述SIP消息的目的地址,將所述SIP消息轉發到發送該SIP消息的用戶要求訪問的SIP服務器;
或者,所述物理主機根據所述SIP消息的源地址,將所述SIP消息轉發到發送該SIP消息的用戶所注冊的SIP服務器。
技術方案二的特點和進一步的改進為:
(1)在步驟1之后,且在步驟2之前,所述方法還包括:
每個SIP服務器接收多個用戶的注冊信息,完成用戶注冊;每個用戶發送的SIP消息的源地址為該用戶注冊的SIP服務器的地址。
(2)步驟4中,所述物理主機根據所述SIP消息的源地址,將所述SIP消息轉發到發送該SIP消息的用戶所注冊的SIP服務器之后,所述方法還包括:
發送該SIP消息的用戶所注冊的SIP服務器根據該SIP消息中的目的地址,將該SIP消息轉發到所述目的地址對應的SIP服務器。
(3)所述SIP消息的源地址通過register字段記錄,或者所述SIP消息的源地址通過route字段記錄,或者所述SIP消息的源地址通過from字段記錄;
所述SIP消息的目的地址通過to字段記錄;
步驟3中,所述物理主機從所述SIP消息中查找register字段所攜帶的源地址,并根據所述SIP消息中register字段所攜帶的源地址,將所述SIP消息發送給該register字段所攜帶的源地址對應的SIP服務器;
若所述物理主機從所述SIP消息中未查找到register字段,則所述物理主機從所述SIP消息中查找route字段所攜帶的源地址,并根據所述SIP消息中route字段所攜帶的源地址,將所述SIP消息發送給該route字段所攜帶的源地址對應的SIP服務器;
若所述物理主機從所述SIP消息中未查找到route字段,則所述物理主機從所述SIP消息中查找to字段所攜帶的目的地址,并根據所述SIP消息中to字段所攜帶的目的地址,將所述SIP消息發送給該to字段所攜帶的目的地址對應的SIP服務器;
若所述物理主機從所述SIP消息中未查找到to字段,則所述物理主機從所述SIP消息中查找from字段所攜帶的源地址,并根據所述SIP消息中from字段所攜帶的源地址,將所述SIP消息發送給該from字段所攜帶的源地址對應的SIP服務器。
本發明技術方案通過在一個物理主機上擴展多個虛擬主機,并將每個虛擬主機作為一個SIP服務器,用一個物理主機控制多個SIP服務器,從而實現在不增加物理主機的前提下,增加注冊用戶數;實現該物理主機上所有注冊用戶之間的SIP消息傳遞。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例提供的SIP消息的傳遞系統的結構示意圖;
圖2為本發明實施例提供的物理主機的結構示意圖;
圖3為本發明實施例提供的SIP消息的傳遞方法的流程示意圖一;
圖4為本發明實施例提供的SIP消息的傳遞方法的流程示意圖二。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
SIP協議是一個基于文本的協議,使用UTF-8字符集。SIP消息用于會話連接的建立及修改,格式與HTTP協議的格式很相像。一個SIP消息既可以是從一個客戶端到服務器的請求,也可以是一個服務器到客戶端的應答。SIP消息的類型是由一個起始行、一個或者多個包頭域,一個可選的消息文本組成。
SIP消息包括三個部分:起始行,位于消息的最開始,包含消息的類型和協議版本等內容。消息頭,描述消息的屬性,類似于HTTP消息頭的語法和語義,在一個消息中,頭可以有多行。SIP消息分為REQUSET(請求)和RESPONSE(響應)兩類。REQUEST消息有6個基本類型,包括:INVITE(發起呼叫)、ACK(對應答作出回應)、BYE(拆除連接)、CANCLE(取消)、OPTION(查詢對方的能力)、REGISTER(注冊)。
本發明實施例提供一種SIP消息的傳遞系統,如圖1所示,所述系統基于一個物理主機,以及在所述一個物理主機上擴展出的多個虛擬主機,且每個虛擬主機作為一個SIP服務器;
如圖2所示,所述物理主機上設置有存儲模塊、消息接收模塊、查詢模塊以及消息傳遞模塊;
所述存儲模塊,用于存儲SIP服務器選擇判定表;所述SIP服務器選擇判定表中至少記錄了從物理主機上擴展出的每個SIP服務器所對應的地址標識;
所述消息接收模塊,用于接收SIP消息;所述SIP消息中包含該SIP消息的源地址和目的地址;所述SIP消息的源地址為發送該SIP消息的用戶所注冊的SIP服務器的地址;所述SIP消息的目的地址為發送該SIP消息的用戶要求訪問的SIP服務器的地址;
所述查詢模塊,用于根據SIP消息的源地址,從所述SIP服務器選擇判定表中確定發送該SIP消息的用戶所注冊的SIP服務器;或者,用于根據SIP消息的目的地址,從所述SIP服務器選擇判定表確定發送該SIP消息的用戶要求訪問的SIP服務器;
所述消息傳遞模塊,用于根據SIP消息的源地址,將所述SIP消息轉發到發送該SIP消息的用戶所注冊的SIP服務器;或者,用于根據SIP消息的目的地址,將所述SIP消息轉發到發送該SIP消息的用戶要求訪問的SIP服務器。
本發明實施例還提供一種SIP消息的傳遞方法,所述傳遞方法應用于上述實施例所述的傳遞系統,如圖3所示,所述方法包括如下步驟:
步驟1,在一個物理主機上擴展出多個虛擬主機,每個虛擬主機作為一個SIP服務器;
步驟2,所述物理主機接收SIP消息,所述SIP消息中包含該SIP消息的源地址和目的地址;
步驟3,所述物理主機根據所述SIP消息中的目的地址,從SIP服務器選擇判定表中確定發送該SIP消息的用戶要求訪問的SIP服務器;
若所述物理主機在所述SIP消息中未匹配到目的地址,物理主機根據所述SIP消息中的源地址,從SIP服務器選擇判定表中確定發送該SIP消息的用戶所注冊的SIP服務器;
其中,所述SIP服務器選擇判定表存儲于所述物理主機的存儲模塊中,且所述SIP服務器選擇判定表中至少記錄了從物理主機上擴展出的每個SIP服務器所對應的地址標識;
具體的,所述SIP消息的源地址通過register字段記錄,或者所述SIP消息的源地址通過route字段記錄,或者所述SIP消息的源地址通過from字段記錄;
所述SIP消息的目的地址通過to字段記錄;
步驟3中,所述物理主機從所述SIP消息中查找register字段所攜帶的源地址,并根據所述SIP消息中register字段所攜帶的源地址,將所述SIP消息發送給該register字段所攜帶的源地址對應的SIP服務器;
若所述物理主機從所述SIP消息中未查找到register字段,則所述物理主機從所述SIP消息中查找route字段所攜帶的源地址,并根據所述SIP消息中route字段所攜帶的源地址,將所述SIP消息發送給該route字段所攜帶的源地址對應的SIP服務器;
若所述物理主機從所述SIP消息中未查找到route字段,則所述物理主機從所述SIP消息中查找to字段所攜帶的目的地址,并根據所述SIP消息中to字段所攜帶的目的地址,將所述SIP消息發送給該to字段所攜帶的目的地址對應的SIP服務器;
若所述物理主機從所述SIP消息中未查找到to字段,則所述物理主機從所述SIP消息中查找from字段所攜帶的源地址,并根據所述SIP消息中from字段所攜帶的源地址,將所述SIP消息發送給該from字段所攜帶的源地址對應的SIP服務器。
步驟4,所述物理主機根據所述SIP消息的源地址,將所述SIP消息轉發到發送該SIP消息的用戶所注冊的SIP服務器;
或者,所述物理主機根據所述SIP消息的目的地址,將所述SIP消息轉發到發送該SIP消息的用戶要求訪問的SIP服務器。
具體的,步驟4中,所述物理主機根據所述SIP消息的源地址,將所述SIP消息轉發到發送該SIP消息的用戶所注冊的SIP服務器之后,所述方法還包括:
發送該SIP消息的用戶所注冊的SIP服務器根據該SIP消息中的目的地址,將該SIP消息轉發到所述目的地址對應的SIP服務器。
需要補充的是,在步驟1之后,且在步驟2之前,所述方法還包括:每個SIP服務器接收多個用戶的注冊信息,完成用戶注冊;每個用戶發送的SIP消息的源地址為該用戶注冊的SIP服務器的地址。
示例性的,
用戶在使用SIP服務器之前首先要完成注冊功能,假設用戶A的注冊請求為:
Register SIP:aaa.com/2.0
Via:SIP/2.0/UDP sip.aaa.com
From:SIP:1234@aaa.com
To:SIP:1234@aaa.com
Call-id:12345@sip.aaa.com
CSeq:1 register
Content:
Expires:3600
INVITE請求是SIP消息中最基本的一種,用來發起一個會話,當用戶A向用戶B發出一個INVITE請求時,在此消息里包含了INVITE、ROUTE、Via、To、From、Call-ID、Cseq、Subject以及Content字段,其中To和INVITE字段是相同的,都是被呼叫方的地址,這些字段上的文本附加信息可以被SIP解釋器解析。
用戶與SIP服務器之間的交互是通過向指定的SIP服務器上發送標準的INVITE消息,SIP消息的傳遞處理是根據SIP消息的數據格式來區分的,標準的格式如下:
INVITE sip:1002@aaa.com SIP/2.0
ROUTE:sip:aaa.com
Via:SIP/2.0/UDP aaa.com;branch=z9hG4bKnas
Max-Forwards:70
Contact:<sip:1001@aaa.com>
TO:”1002”<sip:1002@bbb.com>
From:”1001”<sip:1002@aaa.com>;tag=5e6f8316
Call-ID:XXXXXXXXXXXXXX
Cseq:1 INVITE
Content-Type:application/sdp
Content-Length:415
V=
O=
S=
……
首行的INVITE作為SIP消息的起始行,To頭字段指定請求消息的邏輯接收者或者是資源的注冊地址。From字段是指示請求發起方的邏輯標識。通過這些SIP消息字段中的內容,可以將SIP消息傳遞給在一臺物理主機上運行的指定的虛擬SIP服務器。
每一臺物理主機的硬件組成大致都包含:CPU處理器,外圍存儲設備,內部存儲器等。一臺物理主機上可以運行多個虛擬主機,假設運行了3個虛擬主機,每一臺虛擬主機都相對獨立的作為一個SIP服務器。在SIP消息的傳遞過程中涉及到的功能模塊有:消息接收模塊、查詢模塊、消息傳遞模塊。消息接收模塊可以接收來自網絡的SIP消息;查詢模塊是根據SIP消息的格式逐一查詢存儲設備中的SIP服務器選擇判定表,根據SIP服務器選擇判定表中的記錄查詢到與接收的SIP消息判定條件相匹配的SIP服務器,消息傳遞模塊是根據查詢模塊的結果,將SIP消息傳遞給指定的SIP服務器。
又示例性的,如圖4所示,假設SIP服務器1上的用戶A要與SIP服務器2上的用戶B發起會話消息。首先用戶A應當注冊到一個SIP服務器上,消息接收模塊根據用戶A的注冊消息內容,將注冊消息中的register字段的信息在SIP服務器選擇判定表(SIP服務器選擇判定表的內容如表1所示)進行查詢,得知用戶A是要注冊到sip:aaa.com的SIP服務器,消息傳遞模塊就會根據SIP服務器選擇判定表中的內容,將注冊消息發送給對應的SIP服務器1上。同理,用戶B注冊到SIP服務器2上。
當用戶A要向用戶B發起會話請求時,根據INVITE消息的內容,消息接收模塊接收來自用戶A的INVITE消息后,查詢模塊根據SIP服務器選擇判定表,首要的判定條件是route信息,將SIP消息中route字段中的地址提取出來與SIP服務器選擇判定表中的第一個判定條件比較,如果地址一致,則將SIP消息傳遞至與判定條件相對應的SIP服務器上,進行消息的傳遞。由于用戶A發送INVITE消息中ROUTE:sip:aaa.com,消息傳遞模塊將會把該INVITE消息傳遞給SIP服務器1,SIP服務器1根據INVITE消息中的TO字段攜帶的用戶B的地址,將該消息轉發給在同一臺主機上的另外一個SIP服務器2。當INVITE消息成功發往SIP服務器2時,SIP服務器2會給用戶A返回狀態碼為100(TRYING)的臨時消息。
表1 SIP服務器選擇判定表
判定表中的內容根據sip消息格式構造,根據SIP消息的格式,以及對常用SIP消息的分析,提取出在SIP用戶注冊、發起會話請求時常用到的消息格式,將register、route、to、from作為判定條件的關鍵項。
具體的SIP消息傳遞流程根據判定表中的判定條件來實現,具體流程見圖4所示。SIP消息接收模塊接收到來自網絡的SIP消息后,根據判定表的判定條件先后順序,首先提取SIP消息中的register字段與判定表中的判定條件1相比較,比較的結果為真的話,就按照判定表中指定的SIP server完成SIP消息的傳遞,若比較結果為假的話,提取SIP消息中的route字段與判定表中的判定條件2相比較,比較的結果為真的話,就按照判定表中指定的SIP server完成SIP消息的傳遞,若比較結果為假的話,提取SIP消息中的to字段與判定表中的判定條件3相比較,比較的結果為真的話,就按照判定表中指定的SIP server完成SIP消息的傳遞,若比較結果為假的話,提取SIP消息中的from字段與判定表中的判定條件4相比較,若沒有找到與判定表中相匹配的內容,提示消息退出。
SIP服務器選擇判定表的條件可以根據不同的應用場景動態的配置,能夠增加不同SIP消息傳遞的靈活性。
由于現有的交換技術是在一臺物理主機上運行一個SIP服務器,子網內的所有用戶注冊到一個主機上,那么一個主機上注冊的用戶數就相對有限。本發明實施例通過在一個物理主機上擴展出多個虛擬主機,每一個虛擬主機作為一個SIP服務器,那么注冊到同一個物理主機上的用戶就會根據虛擬主機的數量遞增。
以上所述,僅為本發明的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。