專利名稱:獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體涉及一種獲取SIP網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法及系統(tǒng)。
背景技術(shù):
SIP(會話初始協(xié)議)是由IETF制定的用于對基于IP的多媒體通信系統(tǒng)進(jìn)行控制的協(xié)議,它定義了對多媒體會話進(jìn)行控制的信令過程,包括會話的建立、拆除和修改等,是一種應(yīng)用層協(xié)議。會話指在兩個SIP節(jié)點(diǎn)之間的應(yīng)用級鏈接。具體的任務(wù)可為多媒體鏈接,比如因特網(wǎng)電話呼叫,多媒體廣播,多媒體會議等。SIP協(xié)議只負(fù)責(zé)通訊的使能,需要與RTP(實(shí)時傳輸協(xié)議)和SDP(會話描述協(xié)議)配合來完成通訊功能。
一個SIP節(jié)點(diǎn)可以有多種工作模式,比如UserAgent(用戶代理),Proxy(代理),REGISTRAR(注冊服務(wù)器),back-to-back user agent(背靠背用戶代理),location server(位置服務(wù)器)等。
SIP的消息分兩種請求和響應(yīng)??蛻舭l(fā)出請求而服務(wù)器響應(yīng)應(yīng)答。消息中不同的消息頭用于描述通信細(xì)節(jié)。SIP維護(hù)全部消息的公共結(jié)構(gòu)以實(shí)現(xiàn)通用解析。請求和響應(yīng)都使用了標(biāo)準(zhǔn)的統(tǒng)一格式。
SIP的響應(yīng)消息有兩種響應(yīng)狀態(tài)臨時響應(yīng)狀態(tài)和最終響應(yīng)狀態(tài),最終響應(yīng)可以是肯定的也可以是否定的。SIP協(xié)議提供了響應(yīng)的機(jī)制,以確保這種命令-響應(yīng)模式的可靠性。比如,通過多次發(fā)送簡單的重新傳輸命令,直到接收到返回等。一個SIP節(jié)點(diǎn)如果在重試次數(shù)內(nèi)沒有收到響應(yīng),可以缺省認(rèn)為收到了錯誤響應(yīng),這樣就保證了SIP命令的可靠性。
在SIP網(wǎng)絡(luò)中,為了保證命令、響應(yīng)和傳輸鏈路的可靠性,SIP節(jié)點(diǎn)需要獲得遠(yuǎn)端SIP節(jié)點(diǎn)的應(yīng)用狀態(tài)。在傳輸上,SIP可以支持UDP(用戶數(shù)據(jù)報文協(xié)議)和TCP(傳輸控制協(xié)議)兩種協(xié)議。UDP協(xié)議屬于“面向無連接,不可靠傳輸”的類型。該協(xié)議只負(fù)責(zé)接收和傳送由上層協(xié)議傳遞的消息,它本身不做任何的檢測、修改與應(yīng)答。而TCP協(xié)議是面向連接的協(xié)議,它本身提供了相應(yīng)的機(jī)制來維護(hù)鏈路的狀態(tài),當(dāng)使用TCP協(xié)議的時候,SIP節(jié)點(diǎn)可以直接獲得遠(yuǎn)端節(jié)點(diǎn)的鏈接狀態(tài)。但是這種鏈接狀態(tài),并不能完全代表對端的SIP實(shí)體的狀態(tài),有可能只是網(wǎng)絡(luò)鏈接狀態(tài)。因此,為了獲得對端SIP實(shí)體的狀態(tài),需要引入一個機(jī)制,確保遠(yuǎn)端的SIP節(jié)點(diǎn)產(chǎn)生心跳消息(即一個節(jié)點(diǎn)定時向另外一個節(jié)點(diǎn)發(fā)送消息通知自身狀態(tài)的消息),以使SIP節(jié)點(diǎn)可以更好地維護(hù)彼此的狀態(tài)信息。
目前,SIP協(xié)議不提供維護(hù)鏈接,而且也支持發(fā)布鏈接狀態(tài)。如果需要SIP節(jié)點(diǎn)提供鏈接維護(hù),通常是使用一些在SIP協(xié)議中不通用的私有協(xié)議,在兩節(jié)點(diǎn)之間維護(hù)心跳消息。比如,圖1中的SIP節(jié)點(diǎn)1為了監(jiān)控SIP節(jié)點(diǎn)2的狀態(tài),就需要頻繁地發(fā)送SIP消息。而如果節(jié)點(diǎn)3只想獲得節(jié)點(diǎn)2的狀態(tài)變化消息,對節(jié)點(diǎn)2的狀態(tài)信息并不關(guān)心時,仍然要采用類似的機(jī)制,向節(jié)點(diǎn)2頻繁地發(fā)送SIP消息來維持和節(jié)點(diǎn)2的心跳鏈接。上述方法由于需要不同節(jié)點(diǎn)之間都要通過私有協(xié)議來相互維護(hù)心跳消息,才能獲得對方的狀態(tài)變化信息,因此會占用大量的網(wǎng)絡(luò)資源,影響網(wǎng)絡(luò)的性能。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種獲取SIP網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法及系統(tǒng),使通用的SIP協(xié)議支持對網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的監(jiān)控,同時降低網(wǎng)絡(luò)的負(fù)荷。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的一種獲取SIP網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法,包括A、設(shè)置會話初始協(xié)議SIP網(wǎng)絡(luò)的管理節(jié)點(diǎn);
B、由所述SIP網(wǎng)絡(luò)管理節(jié)點(diǎn)通過標(biāo)準(zhǔn)SIP消息監(jiān)控所述SIP網(wǎng)絡(luò)中其他節(jié)點(diǎn)的狀態(tài);C、所述SIP網(wǎng)絡(luò)中的某一節(jié)點(diǎn)通過向所述管理節(jié)點(diǎn)訂閱消息獲取所述其他節(jié)點(diǎn)的狀態(tài)信息。
所述方法還包括定義SIP事件包,用于傳送所述SIP網(wǎng)絡(luò)中節(jié)點(diǎn)狀態(tài)信息,所述SIP事件包包括包名稱、事件包參數(shù)、訂閱體、訂閱間隔、通知體。
所述步驟B包括B1、建立網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表;B2、所述管理節(jié)點(diǎn)與所述其他節(jié)點(diǎn)通過標(biāo)準(zhǔn)SIP消息OPTIONS建立SIP心跳鏈接,獲取所述其他節(jié)點(diǎn)的狀態(tài)變化信息;B3、根據(jù)所述獲取的其他節(jié)點(diǎn)的狀態(tài)變化信息更新所述網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表。
所述網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表包括網(wǎng)絡(luò)節(jié)點(diǎn)標(biāo)識、節(jié)點(diǎn)狀態(tài)。
所述步驟C包括C1、所述SIP網(wǎng)絡(luò)中的節(jié)點(diǎn)使用SIP協(xié)議標(biāo)準(zhǔn)定義的SUBSCRIBE消息向所述管理節(jié)點(diǎn)訂閱消息;C2、所述管理節(jié)點(diǎn)根據(jù)收到的SUBSCRIBE消息,獲取需要監(jiān)控的節(jié)點(diǎn)信息;C3、當(dāng)所述需要監(jiān)控的節(jié)點(diǎn)狀態(tài)發(fā)生變化時,使用SIP協(xié)議標(biāo)準(zhǔn)定義的命令字NOTIFY通知所述SIP網(wǎng)絡(luò)中的節(jié)點(diǎn)。
所述步驟C2還包括所述管理節(jié)點(diǎn)根據(jù)收到的SUBSCRIBE消息對消息訂閱者進(jìn)行鑒權(quán),確認(rèn)所述訂閱者是否有權(quán)限訂閱消息。
在所述NOTIFY及SUBSCRIBE消息中采用所述定義的SIP事件包的消息體格式。
一種獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的系統(tǒng),包括至少一個可靠性服務(wù)器,用于提供網(wǎng)絡(luò)鏈接的狀態(tài);
狀態(tài)管理服務(wù)器,用于監(jiān)控所述網(wǎng)絡(luò)鏈接的狀態(tài);至少一個可靠性訂閱服務(wù)器,用于向所述狀態(tài)管理服務(wù)器訂閱所述可靠性服務(wù)器節(jié)點(diǎn)狀態(tài)變化的通知。
所述狀態(tài)管理服務(wù)器包括至少一個可靠性客戶裝置,用于與所述可靠性服務(wù)器建立SIP心跳鏈接,獲取所述可靠性服務(wù)器的狀態(tài)變化信息;至少一個可靠性通知裝置,用于與所述可靠性訂閱服務(wù)器建立SIP心跳通知鏈接,通知所述可靠性訂閱服務(wù)器訂閱的相關(guān)可靠性服務(wù)器的狀態(tài)變化。
由以上本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明使用標(biāo)準(zhǔn)的SIP協(xié)議消息來維護(hù)心跳消息,使本發(fā)明可以得到廣泛的網(wǎng)絡(luò)支持;通過使用一個SIP節(jié)點(diǎn)監(jiān)控所有其他的SIP節(jié)點(diǎn)的狀態(tài),其他節(jié)點(diǎn)只需向該節(jié)點(diǎn)訂閱狀態(tài)消息,而不需要建立點(diǎn)到多點(diǎn)的鏈接,大大降低了網(wǎng)絡(luò)的負(fù)荷,提高了網(wǎng)絡(luò)的運(yùn)行效率。
圖1是現(xiàn)有技術(shù)中SIP網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)維護(hù)方式;圖2是本發(fā)明方法中SIP網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)維護(hù)方式示意圖;圖3是本發(fā)明方法中SIP網(wǎng)絡(luò)的管理節(jié)點(diǎn)獲取其他節(jié)點(diǎn)狀態(tài)的流程圖;圖4是本發(fā)明方法中SIP網(wǎng)絡(luò)的管理節(jié)點(diǎn)通知其他節(jié)點(diǎn)的過程的流程圖;圖5是本發(fā)明獲取SIP網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的系統(tǒng)結(jié)構(gòu)示意圖;圖6是本發(fā)明的應(yīng)用實(shí)例在SIP網(wǎng)絡(luò)中的拓?fù)浣Y(jié)構(gòu)示意圖;圖7是圖6所示的本發(fā)明的應(yīng)用實(shí)例中各節(jié)點(diǎn)之間的消息流程。
具體實(shí)施例方式
本發(fā)明的核心在于通過通用的SIP協(xié)議來獲取SIP網(wǎng)絡(luò)節(jié)點(diǎn)的鏈接狀態(tài),即使用SIP協(xié)議標(biāo)準(zhǔn)中已有的SIP消息/操作來完成此功能,以保證解決方案的通用性。并且,一個SIP節(jié)點(diǎn)使用SIP協(xié)議訂閱其他節(jié)點(diǎn)狀態(tài)變化消息并接受變化信息,即在一個SIP節(jié)點(diǎn)已經(jīng)獲得了另外一個SIP節(jié)點(diǎn)的狀態(tài)的情況下,由該節(jié)點(diǎn)把被監(jiān)控節(jié)點(diǎn)的狀態(tài)信息通知其他的SIP節(jié)點(diǎn),以減少為了維護(hù)節(jié)點(diǎn)狀態(tài)而需要的網(wǎng)絡(luò)傳輸和SIP消息數(shù)量。
本技術(shù)領(lǐng)域人員知道,標(biāo)準(zhǔn)的SIP消息是基于純文本方式的。消息包含四部分起始行、消息頭、空行和消息體。其中,起始行分為請求行和狀態(tài)行,分別對應(yīng)于SIP的請求消息和響應(yīng)消息。
消息頭由多個頭部參數(shù)構(gòu)成,每個頭部參數(shù)一行。消息頭字段指定呼叫方、被叫方以及消息的路徑等信息??偣灿?7種消息頭,可分成4種類型一般頭字段,用于請求和響應(yīng)消息;實(shí)體頭字段,定義消息體的信息,如果沒有消息體則定義請求表示的資源;請求頭字段,使得客戶將請求以及客戶本身的信息傳送給服務(wù)器;響應(yīng)頭字段,使得服務(wù)器傳送響應(yīng)的附加信息。
消息后的空行(CRLF)表示消息頭的結(jié)束,其后面是包含真正消息內(nèi)容的消息體(message body)。
SIP的請求消息以請求行開始。請求行包括請求方法(method)、請求地址(Request-URI)和SIP版本號。目前SIP定義的請求方法有六種REGISTER、INVITE、ACK、CANCEL、BYE和OPTION。其中REGISTER用于注冊和注銷地址綁定信息;INVITE用于發(fā)起呼叫;ACK用于確認(rèn)建立呼叫;CANCEL用于取消呼叫;BYE用于終止對話;OPTIONS用于能力查詢。
SIP的響應(yīng)消息以狀態(tài)行開始。狀態(tài)行包括SIP版本(SIP Version)、狀態(tài)碼(Status-Code)、原因描述(Reason-Phrase)組成。SIP版本與請求消息中的相同。原因描述指對響應(yīng)狀態(tài)的文字描述,以方便人們閱讀。狀態(tài)碼由三位數(shù)字組成,表示響應(yīng)的結(jié)果。目前,RFC3261中定義的狀態(tài)碼從1xx~6xx,1xx是臨時響應(yīng)(又叫中間響應(yīng)),而其它的是最終響應(yīng)。分別表示如下含義·1xx指請求已經(jīng)收到正在處理中;
·2xx是成功響應(yīng),指請求已被成功處理;·3xx是重定向響應(yīng),指示呼叫重新向指定的實(shí)體發(fā)起;·4xx是客戶出錯響應(yīng),指請求消息語法有誤或此服務(wù)器無法處理;·5xx是服務(wù)器出錯響應(yīng),指服務(wù)器無法處理一個合法的請求消息;·6xx是全局出錯響應(yīng),指請求無法被任何服務(wù)器處理。
上述的臨時響應(yīng)指當(dāng)接收方已經(jīng)收到請求,但要花一段時間處理,為了防止請求方定時器超時,就用此消息通知請求方。對請求的處理結(jié)果仍以最終響應(yīng)的方式返回給請求方。
本發(fā)明即是使用上述SIP協(xié)議標(biāo)準(zhǔn)中已有的SIP消息/操作來完成對SIP網(wǎng)絡(luò)節(jié)點(diǎn)鏈接狀態(tài)的維護(hù)。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和實(shí)施方式對本發(fā)明作進(jìn)一步的詳細(xì)說明。
參照圖2,圖2是本發(fā)明方法中SIP網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)維護(hù)方式示意圖在該示意圖中,節(jié)點(diǎn)1與其他節(jié)點(diǎn)間均有通信機(jī)制,但節(jié)點(diǎn)4與節(jié)點(diǎn)2和節(jié)點(diǎn)3之間沒有通信機(jī)制,但節(jié)點(diǎn)4需要獲得節(jié)點(diǎn)2和/或節(jié)點(diǎn)3的狀態(tài)變化信息。這時,首先設(shè)置SIP網(wǎng)絡(luò)的管理節(jié)點(diǎn)(SIP節(jié)點(diǎn)1);由設(shè)置的SIP網(wǎng)絡(luò)管理節(jié)點(diǎn)監(jiān)控該網(wǎng)絡(luò)中其他節(jié)點(diǎn)(SIP節(jié)點(diǎn)2和SIP節(jié)點(diǎn)3)的狀態(tài);SIP網(wǎng)絡(luò)中的任一節(jié)點(diǎn)(SIP節(jié)點(diǎn)4)通過向管理節(jié)點(diǎn)(SIP節(jié)點(diǎn)1)訂閱消息獲取其他節(jié)點(diǎn)的狀態(tài)信息,管理節(jié)點(diǎn)根據(jù)訂閱信息向該節(jié)點(diǎn)通知其他節(jié)點(diǎn)的狀態(tài)變化情況。如果節(jié)點(diǎn)4只訂閱節(jié)點(diǎn)2的狀態(tài)變化信息,則管理節(jié)點(diǎn)只通知節(jié)點(diǎn)4有關(guān)節(jié)點(diǎn)2的狀態(tài)變化消息;如果節(jié)點(diǎn)4同時訂閱了節(jié)點(diǎn)2及節(jié)點(diǎn)3的狀態(tài)變化信息,則管理節(jié)點(diǎn)需要通知節(jié)點(diǎn)4有關(guān)節(jié)點(diǎn)2及節(jié)點(diǎn)3的狀態(tài)變化消息。也就是說,管理節(jié)點(diǎn)在向訂閱者發(fā)送消息時是根據(jù)訂閱者的訂閱內(nèi)容來發(fā)送的。
圖3示出了上述由設(shè)置的SIP網(wǎng)絡(luò)管理節(jié)點(diǎn)獲取該網(wǎng)絡(luò)中其他節(jié)點(diǎn)的狀態(tài)的詳細(xì)流程首先,在步驟301由設(shè)置的SIP網(wǎng)絡(luò)管理節(jié)點(diǎn)建立網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表,該表包括網(wǎng)絡(luò)節(jié)點(diǎn)標(biāo)識、節(jié)點(diǎn)狀態(tài);所述節(jié)點(diǎn)狀態(tài)可以分別表示為“Active”和“Passive”,分別代表網(wǎng)絡(luò)節(jié)點(diǎn)處于正常鏈接狀態(tài)和斷開狀態(tài)。
然后,進(jìn)到步驟302,由SIP網(wǎng)絡(luò)管理節(jié)點(diǎn)使用SIP協(xié)議標(biāo)準(zhǔn)定義的OPTIONS消息與網(wǎng)絡(luò)中的被監(jiān)控節(jié)點(diǎn)建立SIP心跳鏈接,獲取被監(jiān)控節(jié)點(diǎn)的狀態(tài)變化信息。
網(wǎng)絡(luò)管理節(jié)點(diǎn)獲知被監(jiān)控節(jié)點(diǎn)的狀態(tài)發(fā)生變化后,需要進(jìn)到步驟303,根據(jù)獲取的被監(jiān)控節(jié)點(diǎn)的狀態(tài)變化信息更新網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表。
上述建立SIP心跳鏈接的詳細(xì)過程如下SIP網(wǎng)絡(luò)管理節(jié)點(diǎn)周期性地發(fā)送OPTIONS消息到被監(jiān)控的節(jié)點(diǎn),以監(jiān)控對應(yīng)節(jié)點(diǎn)的狀態(tài)。在正常情況下,被監(jiān)控節(jié)點(diǎn)響應(yīng)網(wǎng)絡(luò)管理節(jié)點(diǎn)發(fā)送的SIP消息,可以使用SIP協(xié)議標(biāo)準(zhǔn)中定義的2XX作為缺省的返回值。此時,網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表中對應(yīng)于該節(jié)點(diǎn)的狀態(tài)應(yīng)為“Active”。
如果被監(jiān)控節(jié)點(diǎn)沒有響應(yīng)的次數(shù)連續(xù)達(dá)到了預(yù)定門限值,則可以確定管理節(jié)點(diǎn)與該被監(jiān)控節(jié)點(diǎn)間的心跳鏈接已經(jīng)失效,此時也可以認(rèn)為該被監(jiān)控節(jié)點(diǎn)也已經(jīng)失效。這時,需要將網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表中對應(yīng)于該節(jié)點(diǎn)的狀態(tài)更新為“Passive”。
為了降低網(wǎng)絡(luò)負(fù)荷,提高網(wǎng)絡(luò)的運(yùn)行效率,本發(fā)明通過網(wǎng)絡(luò)管理節(jié)點(diǎn)與任一節(jié)點(diǎn)之間建立SIP心跳通知鏈接維護(hù)該任一節(jié)點(diǎn)與其他節(jié)點(diǎn)之間的“虛擬”聯(lián)系,為此,本發(fā)明使用SIP協(xié)議中的事件通知框架。基于該框架,本發(fā)明定義了在訂閱者(SIP網(wǎng)絡(luò)中的任一節(jié)點(diǎn))和通知者(SIP網(wǎng)絡(luò)中的管理節(jié)點(diǎn))之間的信息交換協(xié)議,通過該協(xié)議傳送SIP節(jié)點(diǎn)的狀態(tài),也就是說定義一個SIP事件包,依據(jù)RFC3265協(xié)議的規(guī)定,一個事件包定義了通知者通知訂閱者時的附加規(guī)范及狀態(tài)信息。本發(fā)明中定義的SIP事件包包括信息包名稱、事件包參數(shù)、訂閱體、訂閱間隔、通知體。
下面是SIP事件包的詳細(xì)內(nèi)容·包名稱定義的包名稱為“heartbeat-notification”,根據(jù)RFC3265[2]的規(guī)范,這個值將在SIP的擴(kuò)展消息SUBSCRIBE(訂閱)和NOTIFY(通知)請求的事件頭中存在。
·事件包參數(shù)本事件包完全使用已有的SIP系統(tǒng)規(guī)定的參數(shù),例如支持在訂閱時使用SIP協(xié)議中規(guī)定的Accept(事件)頭指明后續(xù)的NOTIFY消息的格式。
·訂閱體SUBSCRIBE消息中需要提供相關(guān)的信息,使可靠性通知者可以獲得需要監(jiān)控的SIP節(jié)點(diǎn)的標(biāo)識。
·訂閱間隔為了避免網(wǎng)絡(luò)過載,需要定義一個合適的時間間隔用于發(fā)送訂閱刷新消息。
·通知體根據(jù)RFC3265[2]的描述,NOTIFY消息包括了描述訂閱資源狀態(tài)的消息體。消息體的格式在SUBSCRIBE消息的Accept頭中(如果忽略,則是缺省值)。
在事件包中,通知體將包括狀態(tài)變化信息,信息將指明新的狀態(tài)和改變狀態(tài)的SIP節(jié)點(diǎn)標(biāo)識。
所用的訂閱者和通知者都需要支持由訂閱者和通知者協(xié)商確定的一種數(shù)據(jù)格式,例如″application/heartbeat-notification+xml″數(shù)據(jù)格式。訂閱請求可能包括Accept頭域,如果對應(yīng)的頭域不存在,則系統(tǒng)將使用缺省值″application/heartbeat-notification+xml″;如果對應(yīng)頭域存在,則頭域中必須包括″application/heartbeat-notification+xml″。
一個“application/heartbeat-notification+xml”類型的文檔是一個有效的XML文檔,它是基于XML1.0標(biāo)準(zhǔn)的,同時使用UTF-8編碼。
例如事件包的文檔可以采用如下格式<?xml version=″1.0″encoding=″UTF-8″?>
<device>
<id>
bob@biloxi.com//節(jié)點(diǎn)IP</id>
<information>
Machine is up//對應(yīng)的消息內(nèi)容</information>
</device>
·處理分叉請求在處理初始的SUBSCRIBE消息的時候,在訂閱者和通知者之間只能建立一個對話??蓞⒁奟FC3265[2]的4.4.9部分描述的具體的處理方式。
·通知速率RFC3265[2]協(xié)議規(guī)定每個不同的包定義通知發(fā)送的最大速率,通知者不能使用大于每10s一個通知的速率發(fā)送通知,因?yàn)橥ㄖ接嗛喺呤峭ㄟ^異步方式實(shí)現(xiàn)的。
圖4示出了上述SIP網(wǎng)絡(luò)中任一節(jié)點(diǎn)通過向網(wǎng)絡(luò)管理節(jié)點(diǎn)訂閱消息獲取其他節(jié)點(diǎn)的狀態(tài)信息的詳細(xì)流程
首先,在步驟401,SIP網(wǎng)絡(luò)中的節(jié)點(diǎn)使用SIP協(xié)議標(biāo)準(zhǔn)定義的SUBSCRIBE消息向管理節(jié)點(diǎn)訂閱消息,在SUBSCRIBE消息的消息體中包括上述定義的SIP事件包。
管理節(jié)點(diǎn)收到SUBSCRIBE消息后,首先進(jìn)到步驟402,對訂閱者進(jìn)行鑒權(quán),即根據(jù)SUBSCRIBE消息中的信息檢查SUBSCRIBE的發(fā)送者的節(jié)點(diǎn)ID,但這個過程不是必需的。通常情況下,訂閱者和通知者之間已經(jīng)建立了關(guān)系。在此情況下,可以采用SIP協(xié)議中的HTTP Digest機(jī)制作為鑒權(quán)的方法,此方法必須被所有的客戶端和服務(wù)器支持。當(dāng)然,如果采用這種鑒權(quán)機(jī)制,則需要將此鑒權(quán)機(jī)制作為對所有的SIP兼容組件的要求。
如果該節(jié)點(diǎn)沒有訂閱權(quán)限,則進(jìn)到步驟403,向該節(jié)點(diǎn)返回4XX消息。
如果該節(jié)點(diǎn)有訂閱權(quán)限,則進(jìn)到步驟404,檢查訂閱者在SUBSCRIBE消息中指明的監(jiān)控節(jié)點(diǎn)是否可以監(jiān)控。
如果在SUBSCRIBE消息中指明的需要監(jiān)控的節(jié)點(diǎn)不能支持,則進(jìn)到步驟405,向該節(jié)點(diǎn)返回4XX消息。
如果在SUBSCRIBE消息中指明的需要監(jiān)控的所有節(jié)點(diǎn)都是可以支持的,則進(jìn)到步驟406,返回“200OK”響應(yīng)。響應(yīng)中需要包括所有的可以被監(jiān)控的節(jié)點(diǎn)ID信息。
然后,進(jìn)到步驟407,根據(jù)網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表及在圖3所示的步驟302中獲取的被監(jiān)控節(jié)點(diǎn)的狀態(tài)變化信息判斷需要監(jiān)控的節(jié)點(diǎn)狀態(tài)是否發(fā)生變化。
如果沒有發(fā)生變化,則進(jìn)到步驟408,等待預(yù)定時間后返回步驟407,繼續(xù)判斷需要監(jiān)控的節(jié)點(diǎn)狀態(tài)是否發(fā)生變化。
如果被監(jiān)控的節(jié)點(diǎn)狀態(tài)發(fā)生了變化,則進(jìn)到步驟409,使用SIP協(xié)議標(biāo)準(zhǔn)定義的命令字NOTIFY通知消息訂閱節(jié)點(diǎn)。在NOTIFY消息的消息體中包括上述定義的SIP事件包。NOTIFY消息的消息體必需使用在最近一次接收到的SUBSCRIBE請求的Accept頭域中定義的類型列表中的一個值,或者缺省的″application/heartbeat-notification+xml″(在Accept頭域不存在的情況下)。
消息訂閱者接收到上述NOTIFY消息后,可以根據(jù)需要進(jìn)行處理,例如更新鏈接狀態(tài)等操作。
圖5是本發(fā)明獲取SIP網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的系統(tǒng)結(jié)構(gòu)示意圖在該系統(tǒng)中,示出了一個可靠性服務(wù)器501,用于對SIP網(wǎng)絡(luò)提供網(wǎng)絡(luò)鏈接的狀態(tài);一個狀態(tài)管理服務(wù)器500,用于監(jiān)控所述網(wǎng)絡(luò)鏈接的狀態(tài),也就是說監(jiān)控網(wǎng)絡(luò)中其他節(jié)點(diǎn)的狀態(tài);一個可靠性訂閱服務(wù)器502,用于向狀態(tài)管理服務(wù)器500訂閱可靠性服務(wù)器節(jié)點(diǎn)狀態(tài)變化的通知。其中,狀態(tài)管理服務(wù)器500包括可靠性客戶裝置,用于與可靠性服務(wù)器建立SIP心跳鏈接,獲取可靠性服務(wù)器的狀態(tài)變化信息;可靠性通知裝置,用于與可靠性訂閱服務(wù)器建立SIP心跳通知鏈接,通知可靠性訂閱服務(wù)器訂閱的相關(guān)可靠性服務(wù)器的狀態(tài)變化。建立SIP心跳鏈接及建立SIP心跳通知鏈接時采用SIP協(xié)議標(biāo)準(zhǔn)定義的消息字交互信息。此處所指的可靠性服務(wù)器、狀態(tài)管理服務(wù)器、可靠性訂閱服務(wù)器均從功能角度的劃分,實(shí)質(zhì)上可以是在同一實(shí)體中的不同功能模塊。
在該實(shí)施例中,雖然只示出了一個可靠性服務(wù)器,一個狀態(tài)管理服務(wù)器和一個可靠性訂閱服務(wù)器,但在SIP網(wǎng)絡(luò)中,可以包含多個節(jié)點(diǎn),因此,本發(fā)明系統(tǒng)的組網(wǎng)方式也有多種??梢愿鶕?jù)實(shí)際組網(wǎng)需要選定不同的系統(tǒng)拓?fù)浣Y(jié)構(gòu)。同樣,如果需要監(jiān)控多個可靠性服務(wù)器的狀態(tài),則需要在狀態(tài)管理服務(wù)器500中對應(yīng)多個可靠性客戶裝置;如果有多個可靠性訂閱服務(wù)器向狀態(tài)管理服務(wù)器500訂閱信息,則需要在狀態(tài)管理服務(wù)器500中對應(yīng)多個可靠性通知裝置。
為了方便說明,以圖5為例,說明本發(fā)明系統(tǒng)的工作過程。
可靠性客戶裝置需要周期性地發(fā)送OPTIONS消息到需要被監(jiān)控的SIP節(jié)點(diǎn)(節(jié)點(diǎn)2),以監(jiān)控對應(yīng)節(jié)點(diǎn)的狀態(tài)。該裝置還需要監(jiān)控OPTIONS消息的響應(yīng)情況,如果SIP節(jié)點(diǎn)2沒有響應(yīng)的次數(shù)連續(xù)達(dá)到了預(yù)定門限值,則系統(tǒng)可以確定SIP節(jié)點(diǎn)1和節(jié)點(diǎn)2之間的心跳鏈接已經(jīng)失效,此時可以認(rèn)為SIP節(jié)點(diǎn)2也已經(jīng)失效。比如,可以設(shè)置OPTIONS消息初始的重發(fā)時間是100毫秒,并且在每次重發(fā)之后加倍,直到重發(fā)7次。如果第七次重發(fā)仍然失敗,則可以認(rèn)為被監(jiān)控節(jié)點(diǎn)對于OPTIONS的處理失敗,這時,需要將網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表中對應(yīng)于該節(jié)點(diǎn)的狀態(tài)更新為“Passive”。如果在等待過程中接受到被監(jiān)控節(jié)點(diǎn)的響應(yīng),管理節(jié)點(diǎn)可以將重發(fā)超時設(shè)定到500毫秒。如果確定被監(jiān)控節(jié)點(diǎn)已經(jīng)失效,管理節(jié)點(diǎn)將網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表中對應(yīng)于該節(jié)點(diǎn)的狀態(tài)更新為“Passive”。
可靠性服務(wù)器需要響應(yīng)可靠性客戶端發(fā)送的SIP消息,本發(fā)明建議“2XX”作為缺省的返回值。如果可靠性服務(wù)器收到了從可靠性客戶端發(fā)送OPTIONS消息,需要返回“2XX”響應(yīng),并且等待重發(fā)的0PTION消息。重發(fā)消息的等待時間是可配置的(參見前面所述的SIP事件包的內(nèi)容),推薦時間為60s。如果重發(fā)的OPTIONS消息沒有在超時之間接收到,則可以認(rèn)為可靠性客戶裝置失效,但是可靠性服務(wù)器需要使用相同的超時設(shè)置繼續(xù)等待OPTIONS消息。
可靠性訂閱裝置需要獲得其他節(jié)點(diǎn)的狀態(tài)信息時,使用SIP協(xié)議中的事件通知框架??煽啃杂嗛喎?wù)器發(fā)送SUBSCRIBE消息到可靠性通知裝置,以訂閱可靠性服務(wù)器節(jié)點(diǎn)的狀態(tài)變化情況通知。SUBSCRIBE消息的消息體定義參照前面所述的SIP事件包。
可靠性通知裝置的功能是將某節(jié)點(diǎn)的狀態(tài)信息(主要是是否可用)通知給可靠性訂閱服務(wù)器。該裝置接收來自可靠性訂閱服務(wù)器的SUBSCRIBE消息,并監(jiān)控訂閱服務(wù)器訂閱的其他節(jié)點(diǎn)的狀態(tài)變化,如果發(fā)生改變,發(fā)送NOTIFIY事件通知給可靠性訂閱服務(wù)器。NOTIFIY消息的消息體定義參照前面所述的SIP事件包。
為了使本技術(shù)領(lǐng)域人員更好地理解本發(fā)明,下面再通過本發(fā)明的一個應(yīng)用實(shí)例詳細(xì)說明本發(fā)明系統(tǒng)的拓?fù)浣Y(jié)構(gòu)及工作過程。
參照圖6所示的本發(fā)明的應(yīng)用實(shí)例在SIP網(wǎng)絡(luò)中的拓?fù)浣Y(jié)構(gòu)
網(wǎng)絡(luò)包括一個“管理者”和多個“節(jié)點(diǎn)”,網(wǎng)絡(luò)同時會包括一定數(shù)目的軟交換設(shè)備(支持SIP協(xié)議)。所有的節(jié)點(diǎn)(包括所有的網(wǎng)絡(luò)節(jié)點(diǎn)和軟交換設(shè)備)通過IP網(wǎng)絡(luò)互連。在這個網(wǎng)絡(luò)中只有“管理者”需要監(jiān)控所有的軟交換設(shè)備的狀態(tài),如果某個節(jié)點(diǎn)希望獲得軟交換設(shè)備的狀態(tài),此節(jié)點(diǎn)需要發(fā)送SUBSCRIBE消息到“管理者”訂閱。
圖7說明了在管理者、節(jié)點(diǎn)及軟交換設(shè)備間可能的消息流程。如圖所示第一步管理者為軟交換設(shè)備1創(chuàng)建一個可靠性客戶端,同樣為軟交換設(shè)備2創(chuàng)建另外一個可靠性客戶端。這些客戶端發(fā)送OPTIONS消息到對應(yīng)的軟交換設(shè)備。軟交換設(shè)備接收到OPTIONS消息后,發(fā)送200OK的響應(yīng)消息。當(dāng)可靠性客戶端接收到200OK消息后,系統(tǒng)認(rèn)為對應(yīng)的軟交換設(shè)備啟動,并且正常運(yùn)行。
第二步當(dāng)節(jié)點(diǎn)1發(fā)送SUBSCRIBE消息訂閱關(guān)于軟交換設(shè)備1的狀態(tài)信息,管理者發(fā)送200OK到節(jié)點(diǎn)1作為SUBSCRIBE消息的響應(yīng)消息,然后發(fā)送NOTIFY消息通知節(jié)點(diǎn)1,軟交換設(shè)備1的狀態(tài)為“Active”。
第三步管理者發(fā)送OPTIONS消息,同時在超時時間內(nèi)沒有接收到軟交換設(shè)備1的響應(yīng),管理者將軟交換設(shè)備1的狀態(tài)從“Active”修改為“Passive”,同時發(fā)送NOTIFY消息將信息通知節(jié)點(diǎn)1。
作為后續(xù)處理,管理者不斷地周期性發(fā)送OPTIONS消息給軟交換設(shè)備1。
在第四步管理者接收到了軟交換設(shè)備1的響應(yīng)信息,據(jù)此管理者將軟交換設(shè)備1的狀態(tài)從“Passive”修改為“Active”,并將此信息通過NOTIFY消息通知節(jié)點(diǎn)1。
雖然通過實(shí)施例描繪了本發(fā)明,本領(lǐng)域普通技術(shù)人員知道,本發(fā)明有許多變形和變化而不脫離本發(fā)明的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本發(fā)明的精神。
權(quán)利要求
1.一種獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法,其特征在于,包括A、設(shè)置會話初始協(xié)議SIP網(wǎng)絡(luò)的管理節(jié)點(diǎn);B、由所述SIP網(wǎng)絡(luò)管理節(jié)點(diǎn)通過標(biāo)準(zhǔn)SIP消息監(jiān)控所述SIP網(wǎng)絡(luò)中其他節(jié)點(diǎn)的狀態(tài);C、所述SIP網(wǎng)絡(luò)中的某一節(jié)點(diǎn)通過向所述管理節(jié)點(diǎn)訂閱消息獲取所述其他節(jié)點(diǎn)的狀態(tài)信息。
2.如權(quán)利要求1所述的獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法,其特征在于,所述方法還包括定義SIP事件包,用于傳送所述SIP網(wǎng)絡(luò)中節(jié)點(diǎn)狀態(tài)信息,所述SIP事件包包括包名稱、事件包參數(shù)、訂閱體、訂閱間隔、通知體。
3.如權(quán)利要求1或2所述的獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法,其特征在于,所述步驟B包括B1、建立網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表;B2、所述管理節(jié)點(diǎn)與所述其他節(jié)點(diǎn)通過標(biāo)準(zhǔn)SIP消息OPTIONS建立SIP心跳鏈接,獲取所述其他節(jié)點(diǎn)的狀態(tài)變化信息;B3、根據(jù)所述獲取的其他節(jié)點(diǎn)的狀態(tài)變化信息更新所述網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表。
4.如權(quán)利要求3所述的獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法,其特征在于,所述網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)表包括網(wǎng)絡(luò)節(jié)點(diǎn)標(biāo)識、節(jié)點(diǎn)狀態(tài)。
5.如權(quán)利要求1或2所述的獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法,其特征在于,所述步驟C包括C1、所述SIP網(wǎng)絡(luò)中的節(jié)點(diǎn)使用SIP協(xié)議標(biāo)準(zhǔn)定義的SUBSCRIBE消息向所述管理節(jié)點(diǎn)訂閱消息;C2、所述管理節(jié)點(diǎn)根據(jù)收到的SUBSCRIBE消息,獲取需要監(jiān)控的節(jié)點(diǎn)信息;C3、當(dāng)所述需要監(jiān)控的節(jié)點(diǎn)狀態(tài)發(fā)生變化時,使用SIP協(xié)議標(biāo)準(zhǔn)定義的命令字NOTIFY通知所述SIP網(wǎng)絡(luò)中的節(jié)點(diǎn)。
6.如權(quán)利要求5所述的獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法,其特征在于,所述步驟C2還包括所述管理節(jié)點(diǎn)根據(jù)收到的SUBSCRIBE消息對消息訂閱者進(jìn)行鑒權(quán),確認(rèn)所述訂閱者是否有權(quán)限訂閱消息。
7.如權(quán)利要求5所述的獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法,其特征在于,在所述NOTIFY及SUBSCRIBE消息中采用所述定義的SIP事件包的消息體格式。
8.一種獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的系統(tǒng),其特征在于,包括至少一個可靠性服務(wù)器,用于提供網(wǎng)絡(luò)鏈接的狀態(tài);狀態(tài)管理服務(wù)器,用于監(jiān)控所述網(wǎng)絡(luò)鏈接的狀態(tài);至少一個可靠性訂閱服務(wù)器,用于向所述狀態(tài)管理服務(wù)器訂閱所述可靠性服務(wù)器節(jié)點(diǎn)狀態(tài)變化的通知。
9.如權(quán)利要求8所述的獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的系統(tǒng),其特征在于,所述狀態(tài)管理服務(wù)器包括至少一個可靠性客戶裝置,用于與所述可靠性服務(wù)器建立SIP心跳鏈接,獲取所述可靠性服務(wù)器的狀態(tài)變化信息;至少一個可靠性通知裝置,用于與所述可靠性訂閱服務(wù)器建立SIP心跳通知鏈接,通知所述可靠性訂閱服務(wù)器訂閱的相關(guān)可靠性服務(wù)器的狀態(tài)變化。
全文摘要
本發(fā)明公開了一種獲取會話初始協(xié)議網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)的方法及系統(tǒng),該方法包括設(shè)置會話初始協(xié)議SIP網(wǎng)絡(luò)的管理節(jié)點(diǎn);由SIP網(wǎng)絡(luò)管理節(jié)點(diǎn)通過標(biāo)準(zhǔn)SIP消息OPTIONS監(jiān)控SIP網(wǎng)絡(luò)中其他節(jié)點(diǎn)的狀態(tài);SIP網(wǎng)絡(luò)中的任一節(jié)點(diǎn)通過向管理節(jié)點(diǎn)訂閱消息獲取其他節(jié)點(diǎn)的狀態(tài)信息。對所述網(wǎng)絡(luò)節(jié)點(diǎn)狀態(tài)提供維護(hù)的系統(tǒng)包括至少一個可靠性服務(wù)器,用于提供網(wǎng)絡(luò)鏈接;狀態(tài)管理服務(wù)器,用于監(jiān)控網(wǎng)絡(luò)鏈接的狀態(tài);至少一個可靠性訂閱服務(wù)器,用于向狀態(tài)管理服務(wù)器訂閱可靠性服務(wù)器節(jié)點(diǎn)狀態(tài)變化的通知。利用本發(fā)明,可以使用標(biāo)準(zhǔn)的SIP協(xié)議消息OPTIONS完成節(jié)點(diǎn)狀態(tài)監(jiān)控,并可以降低SIP網(wǎng)絡(luò)的負(fù)荷,提高運(yùn)行效率。
文檔編號H04L29/06GK1700694SQ200410042348
公開日2005年11月23日 申請日期2004年5月20日 優(yōu)先權(quán)日2004年5月20日
發(fā)明者賽克思·海曼蘇·庫瑪, 朱海峰 申請人:華為技術(shù)有限公司