專利名稱:通過跟蹤消息變換監(jiān)視sip呼叫流的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及會話啟動協(xié)議通信。
背景技術(shù):
會話啟動協(xié)議(SIP)是支持基于網(wǎng)際協(xié)議的話音(VoIP)、即時消 息傳送(IM)和呈現(xiàn)的關(guān)鍵技術(shù),并且是IMS (IP多媒體子系統(tǒng))的基 礎(chǔ)。SIP是在給定通信會話(例如,話音和視頻通信會話以及^^義會話) 的上下文內(nèi)將一個或多個客戶機連接在一起的逐跳控制協(xié)議。此控制協(xié)議 運行于多個稱為SIP代理或SIP代理服務(wù)器的中間服務(wù)器,這些服務(wù)器的 一部分功能是路由作為給定SIP通信會話一部分的SIP消息。作為此路由 操作的一部分,向給定SIP標頭中添加新的標頭并刪除或更改SIP消息中 的現(xiàn)有標頭(以及值)。此外,SIP代理服務(wù)器可能由于路由操作而經(jīng)歷 狀態(tài)更改。給定系統(tǒng)或網(wǎng)絡(luò)包含多個分布式SIP代理服務(wù)器,后者處理與大量SIP 通信會話關(guān)聯(lián)的大量同時發(fā)生的SIP消息。為了正常運作,需要監(jiān)視SIP 消息的順序和SIP代理服務(wù)器。但是,在不為SIP代理軟件直接提供工具 的情況下實時監(jiān)視分布式SIP服務(wù)器系統(tǒng)是很困難的?;赟IP的網(wǎng)絡(luò)基礎(chǔ)設(shè)施形成了提供多種通信服務(wù)的基礎(chǔ),需要維護最高可用性和高級伸縮 性以匹配話音服務(wù)期望和需求。可以通過部署可衡量服務(wù)質(zhì)量并確定影響用戶體驗的問題的管理技術(shù)來提供此類服務(wù)質(zhì)量(QoS )保證。當前方法 通常包括通過記錄流經(jīng)服務(wù)器的所有消息進行的脫機日志檢查。但是,日 志表項并未包含足夠的信息或需要額外的大量工作來重新創(chuàng)建消息變換。讓我們首先通過常見問題來提出難題。當電話呼叫無法接通時,尤其 是在部署的初期階段,用戶將聯(lián)系幫助臺系統(tǒng)(如果電話可接通則通過電話本身,通過例如IM/電子郵件的備用通信等)。在此情況下,通過從所 有可能的服務(wù)器檢索日志并嘗試追溯呼叫路徑以及通過檢查日志檢測根本 原因,可能并非始終能夠追溯用戶的原始呼叫上下文。例如,不《—每個月艮 務(wù)器都維護呼叫日志(不同于電話系統(tǒng),SIP系統(tǒng)包含一組分布式服務(wù)器 并且通過在這些服務(wù)器的子集之間路由呼叫來獲取服務(wù),所述子集可能隨 呼叫的不同而有所變化);通常只有幾個關(guān)鍵服務(wù)器維護呼叫詳情記錄, 例如將呼叫轉(zhuǎn)發(fā)到域外部的出站SIP代理。在這種情況下,如果幫助臺可 以重試呼叫并在網(wǎng)絡(luò)內(nèi)實時追溯呼叫路徑,則它通常4艮有用。此外,實時 監(jiān)視呼叫對于獲取有關(guān)各個正在進行的呼叫的聯(lián)機信息以及聚合網(wǎng)絡(luò)信息 4艮有用,并且可用于有效的網(wǎng)絡(luò)管理操作。發(fā)明內(nèi)容本發(fā)明涉及無需修改SIP代理服務(wù)器的操作代碼即可監(jiān)視SIP通信會 話的系統(tǒng)和方法。通過借助多個SIP代理服務(wù)器在客戶機之間交換多個SIP 消息而進行SIP通信會話。SIP消息包括基于文本的標頭及其相應(yīng)值。給 定服務(wù)器對經(jīng)過此服務(wù)器的SIP消息采取的操作可以從SIP代理服務(wù)器對 此消息執(zhí)行的變換來推斷。例如,如果INVITE消息上的目的地統(tǒng)一資源 標識符(URI) #皮從SIP消息的入站版本修改為SIP消息的出站消息,則 推斷出SIP服務(wù)器執(zhí)行了 SIP重定向操作。通過監(jiān)視消息變換監(jiān)視SIP代 理服務(wù)器采取的操作可以實時進行,并且不需要為SIP代理軟件提供工具 或脫纟幾分4斤曰志。除了確定入站和出站SIP消息之間的更改或變換之外,還需要在給定 SIP代理服務(wù)器處將入站SIP消息關(guān)聯(lián)到出站SIP消息,例如,將入站呼 叫轉(zhuǎn)移請求(REFER)與到被引用方的出站建立呼叫(INVITE)關(guān)聯(lián)。 入站與出站消息之間的關(guān)聯(lián)以及關(guān)^v站和出站消息之間的變換的確定用 于驗證對于給定SIP通信會話,按預(yù)期發(fā)生必要的消息變換,即關(guān)聯(lián)用于 診斷問題并調(diào)試SIP通信會話。此外,關(guān)聯(lián)的入站和出站消息之間的變換 用于驗證給定SIP服務(wù)器按預(yù)期運行,例如,通過將INVITE的Join標頭關(guān)聯(lián)到用作會議建立消息的早期INVITE,可以檢測到會議服務(wù)器的正常 運行模式的任何更改。最后,關(guān)聯(lián)可以用于標識與單個對話/會話相關(guān)的消 息并幫助生成有助于實時監(jiān)視SIP對話/會話的足跡。為了將入站消息與出站消息關(guān)聯(lián),創(chuàng)建了 一組SIP關(guān)聯(lián)規(guī)則以便將入 站SIP消息與出站消息(其是前者的已變換版本)進行匹配??梢葬槍μ?定上下文定義這些關(guān)^^J,j。對于點對點呼叫,Call-ID標頭字段在各跳之 間保持不變。當呼叫分支時,To標頭中的tag字段可以用于在不同的分支 路徑之間進行關(guān)聯(lián)。對于會議呼叫,正在進行的會議呼叫可以由Dialog標 識符標識,后者可用于將參加現(xiàn)有會議的新呼叫者與INVITE中的匹配 Join標頭相關(guān)聯(lián)。當使用REFER消息將呼叫轉(zhuǎn)移到第三方時,REFER 包含可用于與正在被轉(zhuǎn)移的現(xiàn)有呼叫關(guān)聯(lián)的標頭Refer-to (以及子標頭/選 項Replaces)。對于呈現(xiàn),更新呈現(xiàn)服務(wù)器狀態(tài)的PUBLISH消息可以產(chǎn) 生許多NOTIFY消息。PUBLISH和相應(yīng)的NOTIFY可以通過正在4吏用的 事件包進行關(guān)聯(lián)。創(chuàng)建了關(guān)聯(lián)規(guī)則之后,使用這些規(guī)則關(guān)聯(lián)給定SIP代理服務(wù)器處的入 站和出站消息。所關(guān)聯(lián)的消息和相關(guān)變換用于診斷呼叫流??梢詫⒔o定端 對端呼叫分成一系列預(yù)期變換,并且使用關(guān)聯(lián)機制在預(yù)期路徑的每一跳上 安裝規(guī)則,以驗證是否真正發(fā)生預(yù)期變換并確定預(yù)期和觀察的行為之間的 分叉點。在一個實施例中,為了跟蹤SIP消息流和變換,在服務(wù)器機器的操作 系統(tǒng)(OS)內(nèi)集成了稱為SIP消息分類引擎或分類器的軟件引擎。實際的 SIP軟件(例如SIP代理)在此服務(wù)器上作為例如路由SIP消息的應(yīng)用運 行。在os內(nèi)放置分類引擎是由于效率和體系結(jié)構(gòu)的需要,具體取決于特定情況。分類器是可編程的,并且因此可以通過使用一組適當?shù)囊?guī)則針對 不同的應(yīng)用情況使用相同的軟件。創(chuàng)建了一種有效的算法,此算法將一組 用戶定義的規(guī)則作為輸入并將這些規(guī)則變形為能夠快速按照輸入消息流匹 配規(guī)則的適當數(shù)據(jù)結(jié)構(gòu)。規(guī)則指定了如何根據(jù)在分類器處從先前消息收集 的消息標頭值組合(包括諸如集合成員身份以及對狀態(tài)執(zhí)行的操作之類的復(fù)雜功能)來確定特定消息子集,以及要對匹配分組執(zhí)行的操作。這些操 作包括分析來自服務(wù)器的入站和出站消息流以及生成足跡。足跡包含選定 的消息元數(shù)據(jù),后者包括區(qū)別標頭-值對及其變換并由分類器轉(zhuǎn)發(fā)到中M 視引擎。中央監(jiān)視引擎整理來自跨網(wǎng)絡(luò)的不同服務(wù)器或分類器的此信息,以推斷呼叫路徑上各個服務(wù)器中的SIP會話的狀態(tài)以及聚合的呼叫狀態(tài)。本發(fā)明涉及用于監(jiān)視會話啟動協(xié)議通信的方法,所述方法包括以下步驟確定由會話啟動協(xié)議代理服務(wù)器產(chǎn)生的多個會話啟動協(xié)議消息中的多 個變換;以及使用所確定的變換發(fā)汪包含所確定消息的會話啟動協(xié)議通信 會話和所述會話啟動協(xié)議代理服務(wù)器中的至少一個的正確操作。在用于監(jiān) 視會話啟動協(xié)議通信的方法的一個實施例中,將確定由通過其路由會話啟 動協(xié)議消息的會活啟動協(xié)議代理服務(wù)器產(chǎn)生的所述會話啟動協(xié)議消息中的 至少一個變換。 -使用此確定的變換推斷所述會話啟動協(xié)議代理服務(wù)器對所 述會話啟動協(xié)議消息執(zhí)行的操作,并且使用此推斷的操作驗證包含所確定 消息的會話啟動協(xié)議通信會話和所述會話啟動協(xié)議代理服務(wù)器中的至少一 個的正確操作。在一個實施例中,將確定所述會話啟動協(xié)議代理服務(wù)器處的所述M 啟動協(xié)議消息的入站版本,并且還確定所述會話啟動協(xié)議代理服務(wù)器處的 所述會話啟動協(xié)議消息的出站版本。然后,可以確定所述會話啟動協(xié)議消 息的所述入站版本與所述出站版本之間的差異。在一個實施例中,將確定 多個M啟動協(xié)議通信中的每個通信的狀態(tài)模型(例如,有限狀態(tài)機)。 因此,使用所推斷的操作還可以包括使用所推斷的操作并結(jié)合所述包含 所確定消息的務(wù)活啟動協(xié)議通信會話的狀態(tài)模型,來推斷所述包含所確定 消息的會話啟動協(xié)議通信會話和所述會話啟動協(xié)議代理服務(wù)器中的至少一 個的全局狀態(tài)。在一個實施例中,用于監(jiān)視會話啟動協(xié)議通信的方法包括確定由M 啟動協(xié)議代理服務(wù)器產(chǎn)生的多個會話啟動協(xié)議消息中的多個變換。使用所 有這些確定的變換推斷所述會話啟動協(xié)議代理服務(wù)器對所述會話啟動協(xié)議 消息中的每個消息執(zhí)行的操作,并且使用所推斷的操作發(fā)汪包含所確定消息的會話啟動協(xié)議通信會話和所述會話啟動協(xié)議代理服務(wù)器中的至少 一個 的正確操作。在一個實施例中,確定所述會話啟動協(xié)議代理服務(wù)器處的所 述會話啟動協(xié)議消息的入站版本和出站版本。將確定所述會話啟動協(xié)議消 息的所述入站版本與所述出站版本之間的差異。在一個實施例中,將所述 入站版本與所述出站版本關(guān)聯(lián)。在一個實施例中,將所述消息的入站版本與出站版本關(guān)聯(lián)包括定義一 個或多個關(guān)聯(lián)規(guī)則集。每個規(guī)則集包括多個關(guān)聯(lián)規(guī)則。使用至少一個所述 關(guān)聯(lián)規(guī)則集將每個入站會話啟動協(xié)議消息與出站會話啟動協(xié)議消息之一進 行匹配??梢愿鶕?jù)會話啟動協(xié)議消息的類型或會活啟動協(xié)議通信會活的類 型來修改所述關(guān)聯(lián)規(guī)則。在一個實施例中,每個關(guān)聯(lián)規(guī)則包括要在評定所 述消息的入站和出站版本中使用的條件的合取以及要根據(jù)對所述消息的所 述入站和出站版本的評定而采取的操作。這些條件作用于與所述消息的所 述入站和出站版本關(guān)聯(lián)的會話啟動協(xié)議標頭。在一個實施例中,所述M 啟動協(xié)議標頭包括預(yù)定義的會話啟動協(xié)議標頭、用戶定義的偽標頭、包括 其他標頭的部分的派生標頭以及它們的組合。本發(fā)明還涉及用于通過確定會話啟動協(xié)議代理服務(wù)器處的多個會話啟 動協(xié)議消息的入站版本和出站版本來監(jiān)視會話啟動協(xié)議通信的方法。將所 述入站版本和所述出站版本相關(guān)聯(lián),并且確定所述會話啟動協(xié)議消息的所 關(guān)聯(lián)的入站版本與出站版本之間的差異。使用所確定的差異推斷所述M 啟動協(xié)議代理服務(wù)器對每個所述會話啟動協(xié)議消息執(zhí)行的操作。使用所推 斷的操作發(fā)汪包含所確定消息的會話啟動協(xié)議通信會話和所述會話啟動協(xié) 議代理服務(wù)器中的至少 一個的正確操作。在一個實施例中,將所述消息的入站版本與出站版本相關(guān)聯(lián)包括定義 一個或多個關(guān)聯(lián)規(guī)則集。每個規(guī)則集包括多個關(guān)聯(lián)規(guī)則。在一個實施例中, 使用至少一個所述關(guān)聯(lián)規(guī)則集將每個入站會話啟動協(xié)議消息與出站會話啟 動協(xié)議消息之一進4亍匹配??梢愿鶕?jù)會話啟動協(xié)議消息的類型或會活啟動 協(xié)議通信會話的類型來修改所述關(guān)聯(lián)規(guī)則。在一個實施例中,每個關(guān)聯(lián)規(guī) 則包括要在評定所述消息的入站和出站版本中使用的條件的合取以及要根據(jù)對所述消息的所述入站和出站版本的評定而采取的操作。這些條件作用 于與所述會話啟動協(xié)議消息的所述入站和出站版本關(guān)聯(lián)的會話啟動協(xié)議標頭。
圖1是根據(jù)本發(fā)明使用的M啟動協(xié)議體系結(jié)構(gòu)的實施例的示意性表示;圖2是會話啟動協(xié)議建立和介質(zhì)路徑的實施例的示意性表示; 圖3是呼叫保持的實施例的示意性表示; 圖4是呼叫保持的足跡模式和狀態(tài)模型的實施例的示意性表示; 圖5是根據(jù)本發(fā)明使用的監(jiān)視體系結(jié)構(gòu)的實施例的示意性表示;以及 圖6是根據(jù)本發(fā)明由會話啟動協(xié)議服務(wù)器監(jiān)視會話啟動協(xié)議消息的實 施例的示意性表示。
具體實施方式
首先參考圖1,其中示出了在本發(fā)明的監(jiān)視系統(tǒng)和方法中使用的SIP !^出設(shè)施100的示例性實施例。SIP基礎(chǔ)設(shè)施包含多個用戶代理(UA) 102 和多個SIP服務(wù)器104。 SIP服務(wù)器包括跨一個或多個網(wǎng)絡(luò)112部署的注 冊服務(wù)器106、位置服務(wù)器108和SIP代理服務(wù)器110。每個UA代表一個 控制會話建立和介質(zhì)傳輸?shù)腟IP端點。J.Rosenberg等人所著的iVWoco/" ( RFC 3261, IETF, 2002年6月)中詳細說明了 SIP協(xié)議。SIP消息是請求或響應(yīng)。例如,INVITE是請求而"180 Ringing"或 "200 OK"是響應(yīng)。每個SIP消息包含一組標頭和值,它們通過類似于超 文本傳輸協(xié)議(HTTP)但多樣性、用法和語義更為豐富的語法被指定為 字符串。例如,給定標頭可以出現(xiàn)多次,以字符串列表作為其值以及具有 多個子標頭(稱為參數(shù)),每個子標頭都具有關(guān)聯(lián)的值。以下實例示出了 Alice向Bob發(fā)出邀請以開始對話INVITE sip:bob@M.03dcomVia: SIP/2.0/UDP pcB.atlante com;brawIi=z9hMax-Forwards: 70To: Bob々ip:bob薛b:itoxi.c咖〉From: Alice. <sip:alice@atlaata,com>;tag=1^2CalHD: a84Mc76e66710翻e33,atantaxomCSeq: 314159 INVTmContact: <dp:alioe@pc33Maittaxoni>Ccwrteiit-Type: a醇ication/sdpContent-Lengtk 142(未示出Alice的M描述)通過各SIP代理路由SIP消息以在UA之間建立會話。根據(jù)消息中包 括的目的地SIP URI,代理將所有請求(例如INVITE )路由到適當?shù)哪?的地UA。參考圖2,其中示出了后跟使用豐富文扣格式(RTF) 200的介 質(zhì)交換的會話建立的示例性實施例。通常,通過INVITE請求202、 OK響 應(yīng)204以及對響應(yīng)的ACK 206在兩個用戶代理102之間建立^"。通過交 換BYE 208和OK 210消息來關(guān)閉SIP通信會話。圖2中示出的信令順序可以存在大量變型,例如,在呼叫生存期間內(nèi) 進行多次INVITE/OK/ACK交換,修改SIP通信會話(如在蜂窩環(huán)境中傳 送呼叫或添加視頻會話),將INVITE消息分支到多個目標,在請求路徑 上回送或重定向。此外,會議呼叫是常見的,其中多個端點向公共控制服 務(wù)器(即會議服務(wù)器)發(fā)送信號。在SIP網(wǎng)絡(luò)中的UA之間將發(fā)生三種不同類型的關(guān)聯(lián)。第一種類型的 關(guān)聯(lián)是SIP事務(wù)。SIP事務(wù)在客戶機和服務(wù)器之間發(fā)生,并且包含從客戶 機發(fā)送到服務(wù)器的第一請求直到從服務(wù)器發(fā)送到客戶機的最后(非lxx) 響應(yīng)的所有消息。第二種類型是多媒體會話,其是一組多媒體發(fā)送方和接 收方以及從發(fā)送方流向接收方的數(shù)據(jù)流。多媒體^4義是多媒體會話的一個 實例。第三種類型是對話,其是兩個UA之間持續(xù)某段時間的對等SIP關(guān) 系。由SIP消息(例如,對INVITE請求的2xx響應(yīng))建立對話。通過呼 叫標識符、本地標記和遠程標記來標識對話。對話也稱為呼叫段(call leg)。根據(jù)本發(fā)明的方法確定在每個SIP代理服務(wù)器處發(fā)生的消息變換,以 確定SIP代理服務(wù)器為了監(jiān)視SIP通信會話和SIP代理服務(wù)器的運行而采 取的操作。給定服務(wù)器將接收多個SIP消息。因此,每個SIP代理服務(wù)器 可以具有多個并存的入站版本和出站版本的SIP消息。為了確定SIP消息變換,需要將消息的入站版本與消息的出站版;M目關(guān)聯(lián)。在一個實施例中,例如從儲存庫或數(shù)據(jù)庫確定多個用戶定義的關(guān)聯(lián)規(guī) 則,或者由一個或多個用戶輸入所述規(guī)則。這些關(guān)聯(lián)規(guī)則用于將每個SIP 代理服務(wù)器處的sip消息的入站版本與sip消息的出站版本進行關(guān)聯(lián)或匹 配。每個用戶定義的關(guān)聯(lián)規(guī)則都可以表達為后跟操作的條件合取。條件作用于與SIP消息關(guān)聯(lián)的標頭。這些標頭包括預(yù)定義的SIP標頭、為方便而 定義的偽標頭(例如messagejype),以及通過其他標頭構(gòu)建的派生標頭。 在一個實施例中,標頭From.tag代表From標頭內(nèi)的"tag"參數(shù)并且派 生自From標頭。Dialog-ID派生標頭包括Call-Id (SIP標頭)、From.tag (派生自From SIP標頭并代表From的tag字段)以及To.tag。根據(jù)本發(fā) 明的方法支持用戶定義的數(shù)據(jù)類型,即包括基本數(shù)據(jù)類型(例如String或 Integer)的標量、指針和關(guān)聯(lián)數(shù)組,或其他用戶定義的數(shù)據(jù)類型。將維護 可作為規(guī)則操作的一部分更新的用戶指定的狀態(tài)。例如,在Struct Session ={Dialog Dialogl, String State}中,元素"State"存儲對話的狀態(tài),狀態(tài) 可以是"established" 、 "setup"或"shutdown"。條件評估可能具有副 作用。例如,如果當前SIP消息的Dialog-id是活動會活列表中的一個元素, 以下條件評估導(dǎo)致將指針存儲到匹配元素,此匹配元素然后可以例如用于 作為規(guī)則操作的一部分而修改任何關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。*CurrentSession=(Dialog-ID belongs-to %ActiveSessions) 多個已確定關(guān)聯(lián)規(guī)則中的每一個規(guī)則都包括條件合取以及關(guān)聯(lián)的操作 列表。這些操作還可以更改變量值。在一個實施例中,分類算法包括靜態(tài)部分和運行時部分。靜態(tài)部分包 括規(guī)則分析和創(chuàng)建數(shù)個允許運行時部分有效工作的表和位圖。生成這些有 效結(jié)構(gòu)的關(guān)鍵是消除了規(guī)則集中的大部分冗余,以便運行時階段不需要重復(fù)提取標頭或評估條件。運行時部分包括分析各個SIP消息,將這些已分 析的消息與關(guān)聯(lián)規(guī)則進行比較,以及當SIP消息與規(guī)則匹配時執(zhí)行一組操作。由于SIP事務(wù)的存在時間通常很短,因此SIP事務(wù)不適于實時運行監(jiān) 視。但是,可以使用SIP事務(wù)模型和綜合SIP事務(wù)完成對具有監(jiān)視系統(tǒng)的 SIP網(wǎng)絡(luò)的功能發(fā)汪。另一方面,SIP對話和會活的持續(xù)時間相當長。因此,為聯(lián)機獲取單個對話和會話信息以及聚合信息而對對話和M進行功 能監(jiān)視和實時運行監(jiān)視是相當可行的。根據(jù)本發(fā)明的系統(tǒng)和方法的示例性實施例利用SIP對話或SIP通信會 話的"模型,,。此模型捕獲SIP對話的各種可能狀態(tài)以及每種狀態(tài)下預(yù)期 的足跡模式。狀態(tài)對應(yīng)于SIP對話的進度,從要發(fā)出的邀請開始,中間通 過不同代理進行路由,分支消息(如果需要),并且到達目的地?;赟IP的呼叫還可以被置于保持、轉(zhuǎn)發(fā)或轉(zhuǎn)移??梢杂上鄳?yīng)的狀態(tài)機模型(例如,有限狀態(tài)機)表示這些SIP對話。通過發(fā)送和接收SIP消息(其可簡化為 足跡記錄)來觸發(fā)這些模型中的狀態(tài)轉(zhuǎn)變。通過使用連接到SIP代理的分 類器提取SIP消息的相關(guān)部分來獲取足跡記錄。例如,如果Call-Id對于 特定的SIP對話不變,則足跡記錄可僅包含消息類型(例如Invite)、Call-Id, 以及發(fā)出或接收消息的SIP服務(wù)器的代理地址。由于分類器工作在OS層, 這使得能夠?qū)崟r生成足跡記錄。對照與對話模型的不同狀態(tài)關(guān)聯(lián)的足跡模 式來匹配足跡記錄。足跡模式可以被視為足跡記錄的抽象表示,其中包含 具體標頭值的占位符,這些占位符在匹配過程中被實例化。例如,對應(yīng)于 正在傳輸邀請的狀態(tài)的足跡模式"INVITE<Proxy><Call-id>",可以與足 跡記錄"INVITE 9.123.44.78 ac34h56@p33.atlanta.com"(其中Call-id綁 定到ac34h56@p33.atlanta com, 并且Proxy-address設(shè)置為9.123.44.78 ) 進行匹配。當SIP邀請通過系統(tǒng)繼續(xù)時,Call-id將保持不變,但是 Proxy-address將更改,并且這些綁定將允許我們通過網(wǎng)絡(luò)多艮蹤呼叫。參考圖3,其中示出了呼叫保持300 SIP服務(wù)的消息圖的示例性實施 例。圖4中示出了代表服務(wù)400以及由分類器從不同SIP實體中的SIP消息生成的相應(yīng)足跡(部分示出)的狀態(tài)模型。SIP監(jiān)視引擎(SME)可以 使用此模型實時跟蹤置于保持狀態(tài)的SIP對話。雖然消息圖僅示出了一個 中間代理,但是通??梢源嬖谟邢迶?shù)量的此類代理。這并不表示隨著SIP 代理數(shù)量的增加狀態(tài)也將激增,因為狀態(tài)和足跡模式是抽象的,并且沒有 綁定到某個特定的代理。更確切地說,狀態(tài)和足跡才莫式隨對話的進行動態(tài) 綁定到不同的代理。同樣,可以為其他SIP服務(wù)創(chuàng)建狀態(tài)機,并且可以分 層地構(gòu)建這些狀態(tài)機以對SIP對話中的不同可能性進行編碼。參考圖5,其中示出了本發(fā)明的SIP監(jiān)視系統(tǒng)的體系結(jié)構(gòu)500的示例 性實施例。所述體系結(jié)構(gòu)包括SME502以及一個或多個SIP分類器504。 每個SIP分類器在邏輯上可以被視為監(jiān)視SIP消息506的入站版本和SIP 消息508的出站版本兩者,且在每一側(cè)具有不同的規(guī)則集。 一種確定在經(jīng) 過SIP代理時如何變換給定SIP消息的方法是布置一對規(guī)則, 一個規(guī)則布 置在SIP代理的入站側(cè)消息流中,而另一個規(guī)則布置在出站側(cè)消息流中。 通過關(guān)聯(lián)匹配的消息,可以確定SIP代理對每個消息進行的特定變換,例 如,針對在出站版本上具有匹配Call-ID的消息重寫目的地URI。在另一 個實例中,將標識加入正在進行的兩方呼叫以將此呼叫轉(zhuǎn)換為三方會漢呼 叫的新參與者??梢詫Ψ诸惼鬟M行編程,以便在來自其值與任何進行中 Dialog-ID匹配的新參與方的INVITE消息上查找Join標頭。SME接收以下輸入由分類器生成的正在進行的SIP對話和會話的足 跡記錄、SIP對話或會活的模型(就狀態(tài)而言),以及相應(yīng)的預(yù)期足跡模 式。給定這些輸入后,對于每個正在進行的對話或會話實例,SME使用模 型匹配算法實時確定實例可能處于的狀態(tài)。此外,還可以實時確定聚合級 別的信息,例如模型的任何給定狀態(tài)下的實例數(shù)。此類統(tǒng)計信息有助于進 行有效的網(wǎng)絡(luò)管理。SME中的監(jiān)視算法需要確定對應(yīng)于特定對話或會話的 足跡記錄以監(jiān)4見各個對話或會話。對于許多服務(wù),可以使用消息標頭中的Call-ID確定對應(yīng)于單個對話 或^^舌的消息。但是,當SIP消息通過網(wǎng)絡(luò)路由時,消息標頭和標頭值通 常會改變。目的地URI重寫的常見用法是將諸如sip:bob@biloxi.com之類的URI實例化為sip:bob@bobs-host.biloxi.com,也就是將域內(nèi)的用戶解析 為域中的特定主機。將入站INVITE (具有目的地sip:bob@biloxi.com)與 出站INVITE (去往bob@bobs-host.biloxi.com)關(guān)聯(lián)的能力可用于診斷用 途。重定向的另一個實例是通過重定向服務(wù)器l (PI)的302 MOVED響 應(yīng)(具有Contact: sip:bob@blues.com )來響應(yīng)用戶(UAl)發(fā)向 sip:bob@biloxi,com的INVITE。此302消息在返回路徑中可以使用 sip:bob@blues.com在代理(P2 )上觸發(fā)新的INVITE,此INVITE最終被 路由到Bob的客戶機(UA2 )。因此,在能夠?qū)NVITE與相應(yīng)的302關(guān) 聯(lián)的情況下,將允許實時監(jiān)視系統(tǒng)以推斷源自UAl的呼叫在到達UA2之 前經(jīng)過P1和P2,并對消息進行上述修改,即,呼叫4皮轉(zhuǎn)發(fā)到新的目的地 以及轉(zhuǎn)發(fā)實體本身。在上述兩個實例中,Call-ID標頭值不變。對于非分支呼叫,Call-ID 以及From和To標頭中的標記(子標頭)值的組合保持不變。當呼叫分支 或呼叫重定向時,呼叫的每個已分支/已重定向段在To標頭中具有不同的 標記值。入站INVITE的Call-ID標頭值可以與出站Call-ID字段關(guān)聯(lián)。但 是在許多其他實例中,Call-ID字段甚至不足以關(guān)聯(lián)消息。例如,在諸如呼 叫轉(zhuǎn)移或加入會議呼叫的服務(wù)中,需要使用不同的標頭子集及其值來關(guān)聯(lián) 消息。例如,當使用REFER消息將呼叫轉(zhuǎn)移到第三方時,REFER包含可 用于與正在被轉(zhuǎn)移的現(xiàn)有呼叫關(guān)聯(lián)的標頭Refer-to以及子標頭/選項 Replaces.分類器的可編程性在此可以發(fā)揮作用??梢詫Ψ诸惼鬟M行編程, 以便根據(jù)服務(wù)器(例如重定向服務(wù)器)的功能查找不同的標頭子集。參考圖6,其中示出了根據(jù)本發(fā)明由SIP代理服務(wù)器600監(jiān)視SIP消 息的示例性實施例。第一用戶代理602在Invite消息601中發(fā)送 <Call-id=l><Req-URI=bob@us>,此消息通過SIP代理服務(wù)器604進行路 由。這是在代理服務(wù)器處的消息的入站版本。第一SIP分類器608監(jiān)視此 消息并將其傳送到SME 606。 SIP代理604接收SIP的入站版本并生成 Invite消息的出站版本610,后者被轉(zhuǎn)發(fā)到第二用戶代理612。出站版本的 格 式 為 Invite<Proxy-addr=9.23.123.34><Call-id=l><Req-URI=bob@9.2.10>。第二 SIP 分類器614接收SIP消息的入站和出站版本并使用Call-id將它們關(guān)聯(lián),并 推斷目的地URI正在被重寫。第二 SIP分類器生成足跡,其中Call-id相 同但目的地URI不同,并且還包括代理地址。在第二用戶代理612處接收 出站版本的邀請610 <Call-id=l>Rea-URI=bob(a)9.2.10 ,并且第三SIP分 類器616監(jiān)視此接收的SIP消息。當發(fā)ilit請時,監(jiān)視引擎606啟動新的 呼叫實例,其標記值Call-id=l并且Req-URI=bob@us。當SME從第二 SIP分類器接收到與SIP消息的關(guān)^站和出站版^目關(guān)的通信時,SME 將此通信與從第一 SIP分類器608接收的邀請關(guān)聯(lián)并更新Req-URI。此夕卜, SME為代理地址創(chuàng)建新的標記。如果存在更多的代理,則SME可以將較 新的代理地址存儲為列表以便可以跟蹤整個路徑。在一個實施例中,在幫助臺代理的上下文中部署本發(fā)明的會話啟動協(xié) 議消息監(jiān)視系統(tǒng)。幫助臺代理獲取網(wǎng)絡(luò)中預(yù)期呼叫流的概況,并且隨后為 示例服務(wù)情況導(dǎo)出呼叫狀態(tài)模型。在呼叫路徑中的SIP代理服務(wù)器處使用 適當?shù)囊?guī)則配置SIP分類器,以便實時監(jiān)^f見呼叫并確認是否發(fā)生預(yù)期更改, 即實時追溯呼叫的路徑。如果檢測到異常,則可以更深層地實例化其他規(guī) 則。操作者可以創(chuàng)建激勵,并且可以使用監(jiān)視系統(tǒng)在系統(tǒng)的不同部分處檢 測激勵及其響應(yīng)。除了此類網(wǎng)絡(luò)功能測試之外,監(jiān)視系統(tǒng)還生成聚合信息 (例如,處于特定狀態(tài)的對話的數(shù)量或平均對話終止時間),以及個別信 息(例如在某個特定時刻,在正在進行的SIP對話和會話的呼叫路徑上對 話處于哪種狀態(tài))。此信息在部署有效的網(wǎng)絡(luò)管理工具(例如負栽平衡) 中非常有用。根據(jù)本發(fā)明的示例性實施例的方法和系統(tǒng)可以采取完全硬件實施例、 完全軟件實施例或包含硬件和軟件元素兩者的實施例的形式。在一個優(yōu)選 實施例中,本發(fā)明以軟件實現(xiàn),所述軟件包括但不限于固件、駐留軟件和 微代碼。此外,示例性方法和系統(tǒng)可以采取可從計算機可用或計算機可讀 介質(zhì)訪問的計算機程序產(chǎn)品的形式,所述計算機可用或計算機可讀介質(zhì)提 供了可以被計算機、邏輯處理單元或任何指令執(zhí)行系統(tǒng)使用或與計算機、邏輯處理單元或任何指令執(zhí)行系統(tǒng)結(jié)合的程序代碼。出于此描述的目的, 計算機可用或計算機可讀介質(zhì)可以是任何能夠包含、存儲、傳送、傳播或 傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)^f吏用或與所述指令執(zhí)行系統(tǒng)、裝置或設(shè) 備結(jié)合的程序的裝置。適合的計算機可用或計算機可讀介質(zhì)包括但不限于 電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備)或傳播介質(zhì)。 計算機可讀介質(zhì)的實例包括半導(dǎo)體或固態(tài)存儲器、磁帶、可移動計算機盤、隨機存取存儲器(RAM)、只讀存儲器(R0M)、硬磁盤和光盤。光盤的當前實 例包括光盤-只讀存儲器(CD-ROM)、光盤-讀/寫(CR-R/W)和DVD。適合于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)包括但不限于至少一 個通過系統(tǒng)總線直接或間接連接到存儲器元件的處理器。所述存儲器元件 包括在程序代碼的實際執(zhí)行期間采用的本地存儲器、大容量存儲裝置以及 提供至少某些程序代碼的臨時存儲以減少必須在執(zhí)行期間從大容量存儲裝 置檢索代碼的次數(shù)的高速緩沖存儲器。輸入/輸出或1/0設(shè)備(包括但不限 于鍵盤、顯示器和指點設(shè)備)可以直接或通過中間1/0控制器與系統(tǒng)相連。 根據(jù)本發(fā)明的方法和系統(tǒng)的示例性實施例還包括網(wǎng)絡(luò)適配器,所述網(wǎng)絡(luò)適 配器連接到系統(tǒng)以使所述數(shù)據(jù)處理系統(tǒng)能夠通過中間專用或公共網(wǎng)絡(luò)變得 與其他數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設(shè)備相連。當前可用的適合網(wǎng)絡(luò) 適配器類型包括但不限于調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器、DSL調(diào)制解調(diào)器、 以太網(wǎng)卡以及它們的組合。在一個實施例中,本發(fā)明涉及包含機器可執(zhí)行或計算機可執(zhí)行代碼的 機器可讀或計算機可讀介質(zhì)(當機器或計算機讀取所述代碼時,將導(dǎo)致所 述機器或計算機執(zhí)行根據(jù)本發(fā)明的示例性實施例的用于監(jiān)視會話啟動協(xié)議 通信流的方法),以及計算機可執(zhí)行代碼本身。所述機器可讀或計算機可 讀代碼可以是能夠由所述機器或計算機讀取和執(zhí)行,并且可以以本領(lǐng)域公 知和使用的任何適合語言或語法(包括機器語言、匯編語言、高級語言、 面向?qū)ο笳Z言和腳本編制語言)表示的任何類型的代碼或語言。所述計算 機可執(zhí)行代碼可以存儲在任何適合的存儲介質(zhì)或數(shù)據(jù)庫(包括部署在根據(jù) 本發(fā)明的系統(tǒng)所使用的計算機網(wǎng)絡(luò)內(nèi)并與其通信以及可由其訪問的數(shù)據(jù)庫)中,并且可以在本領(lǐng)域公知和使用的任何適合的硬件平臺(包括用于 控制本發(fā)明的呈現(xiàn)的控制系統(tǒng))上執(zhí)行。雖然在此披露的本發(fā)明的示例性實施例實現(xiàn)了本發(fā)明的目的是顯而易 見的,但要理解的是,本領(lǐng)域的技術(shù)人員可以構(gòu)想大量修改并創(chuàng)建其他實 施例。此外,可以單獨或與其他實施例(多個)結(jié)合使用任何實施例中的 一個或多個功能和/或元素,并且可以以任何適合的順序執(zhí)行根據(jù)本發(fā)明的 方法中的步驟或元素。因此,將理解的是,所附權(quán)利要求旨在涵蓋在本發(fā) 明的精神和范圍內(nèi)的所有此類修改和實施例。
權(quán)利要求
1.一種用于監(jiān)視會話啟動協(xié)議通信的方法,所述方法包括確定由通過其路由會話啟動協(xié)議消息的會話啟動協(xié)議代理服務(wù)器產(chǎn)生的所述會話啟動協(xié)議消息中的變換;使用所確定的變換推斷所述會話啟動協(xié)議代理服務(wù)器對所述會話啟動協(xié)議消息執(zhí)行的操作;以及使用所推斷的操作驗證包含所確定消息的會話啟動協(xié)議通信會話和所述會話啟動協(xié)議代理服務(wù)器中的至少一個的正確操作。
2. 如權(quán)利要求l中所述的方法,其中確定所述變換的步驟進一步包括 確定所述會話啟動協(xié)議代理服務(wù)器處的所述會話啟動協(xié)i義消息的入站版本;確定所述會活啟動協(xié)議代理服務(wù)器處的所述會活啟動協(xié)議消息的出站 版本;以及確定所述會話啟動協(xié)議消息的所述入站版本與所述出站版本之間的差異。
3. 如權(quán)利要求l中所述的方法,其中所述方法還包括確定多個會話啟動協(xié)議通信中的每個通信的狀態(tài)模 型;以及使用所推斷的操作的步驟進一步包括使用所推斷的操作并結(jié)合所述 包含所確定消息的會話啟動協(xié)議通信會話的狀態(tài)模型,來推斷所述包含所 確定消息的會話啟動協(xié)議通信會話和所述會話啟動協(xié)議代理服務(wù)器中的至 少一個的全局狀態(tài)。
4. 一種用于監(jiān)視會話啟動協(xié)議通信的方法,所述方法包括確定由M啟動協(xié)議代理服務(wù)器產(chǎn)生的多個會話啟動協(xié)議消息中的多 個變換;使用所確定的變換推斷所述會話啟動協(xié)議代理服務(wù)器對所述會話啟動 協(xié)議消息中的每個消息執(zhí)行的操作;以及使用所推斷的操作發(fā)汪包含所確定消息的會話啟動協(xié)議通信會話和所 述會活啟動協(xié)議代理服務(wù)器中的至少 一個的正確操作。
5. 如權(quán)利要求4中所述的方法,其中確定所述變換的步驟進一步包括: 確定所述會活啟動協(xié)議代理服務(wù)器處的所述務(wù)活啟動協(xié)議消息的入站版本;確定所述會活啟動協(xié)i^代理服務(wù)器處的所述會話啟動協(xié)議消息的出站 版本;以及異。 ,、,_ '、 …'、 一、,'、 日
6. 如權(quán)利要求4中所述的方法,其中確定所述變換的步驟進一步包括 確定所述務(wù)活啟動協(xié)議代理服務(wù)器處的所述會話啟動協(xié)議消息的入站版本;確定所述會活啟動協(xié)+義代理服務(wù)器處的所述會活啟動協(xié)議消息的出站 版本;以及將所述消息的入站版本與出站版本相關(guān)聯(lián)。
7. 如權(quán)利要求6中所述的方法,其中所述將所述消息的入站版本與出 站版本相關(guān)聯(lián)的步驟進一步包括定義一個或多個關(guān)聯(lián)規(guī)則集,每個規(guī)則集 包括多個關(guān)聯(lián)規(guī)則。
8. 如權(quán)利要求7中所述的方法,還包括使用至少一個所述關(guān)聯(lián)規(guī)則集 將每個入站會話啟動協(xié)i義消息與出站會話啟動協(xié)i義消息之一進行匹配。
9. 如權(quán)利要求7中所述的方法,還包括根據(jù)會話啟動協(xié)議消息的類型 或會話啟動協(xié)議通信會話的類型來修改所述關(guān)聯(lián)規(guī)則。
10. 如權(quán)利要求7中所述的方法,其中每個關(guān)聯(lián)規(guī)則包括要在評定所 述消息的入站和出站版本中使用的條件的合取以及要根據(jù)對所述消息的所 述入站和出站版本的評定而采取的操作。
11. 如權(quán)利要求IO中所述的方法,其中所述條件作用于與所述消息的 所述入站和出站版本關(guān)聯(lián)的M啟動協(xié)議標頭。
12. 如權(quán)利要求ll中所述的方法,其中所述會話啟動協(xié)議標頭包M定義的會話啟動協(xié)議標頭、用戶定義的偽標頭、包括其他標頭的部分的派 生標頭以及它們的組合。
13. —種用于監(jiān)視會話啟動協(xié)議通信的方法,所述方法包括確定會話啟動協(xié)議代理服務(wù)器處的多個會話啟動協(xié)議消息的入站版本;確定所述會活啟動協(xié)議代理服務(wù)器處的所述會話啟動協(xié)議消息的出站 版本;將所述消息的入站版本與出站版4^目關(guān)聯(lián);確定所述會話啟動協(xié)議消息的所關(guān)聯(lián)的入站版本與出站版本之間的差異;使用所確定的差異推斷所述會話啟動協(xié)議代理服務(wù)器對每個所述M 啟動協(xié)議消息執(zhí)行的操作;以及使用所推斷的操作驗證包含所確定消息的會話啟動協(xié)議通信會話和所 述會話啟動協(xié)議代理服務(wù)器中的至少 一個的正確操作。
14. 如權(quán)利要求13中所述的方法,其中所述將所述消息的入站版本與 出站版本相關(guān)聯(lián)的步驟進一步包括定義一個或多個關(guān)聯(lián)規(guī)則集,每個規(guī)則 集包括多個關(guān)聯(lián)規(guī)則。
15. 如權(quán)利要求14中所述的方法,還包括使用至少一個所述關(guān)聯(lián)規(guī)則 集將每個入站會話啟動協(xié)議消息與出站會話啟動協(xié)議消息之一進行匹配。
16. 如權(quán)利要求14中所述的方法,還包括根據(jù)會活啟動協(xié)議消息的類 型或會話啟動協(xié)議通信會話的類型來修改所述關(guān)聯(lián)規(guī)則。
17. 如權(quán)利要求14中所述的方法,其中每個關(guān)聯(lián)規(guī)則包括要在評定所 述消息的入站和出站版本中使用的條件的合取以及要根據(jù)對所述消息的所 述入站和出站版本的評定而釆取的操作。
18. 如權(quán)利要求17中所述的方法,其中所述條件作用于與所述會話啟 動協(xié)議消息的所述入站和出站版本關(guān)聯(lián)的會話啟動協(xié)議標頭。
19. 一種用于監(jiān)視會話啟動協(xié)議通信的方法,所述方法包括確定由會話啟動協(xié)議代理服務(wù)器產(chǎn)生的多個會話啟動協(xié)議消息中的多個變換;以及使用所確定的變換驗證包含所確定消息的會話啟動協(xié)議通信會話和所 述會話啟動協(xié)議代理服務(wù)器中的至少 一個的正確操作。
全文摘要
本發(fā)明涉及一種通過跟蹤消息變換監(jiān)視SIP呼叫流的方法。提供了監(jiān)視會話啟動協(xié)議通信的系統(tǒng)和方法,而無需修改通過其路由構(gòu)成給定通信的消息的會話啟動協(xié)議代理服務(wù)器的操作代碼。在多個代理服務(wù)器處確定會話啟動協(xié)議消息的入站和出站版本。在每個代理服務(wù)器處,使用測試消息標頭的條件的用戶定義關(guān)聯(lián)規(guī)則將各個入站和出站消息版本相關(guān)聯(lián)。然后針對變換檢查所關(guān)聯(lián)的入站和出站消息版本,并且將這些變換用于確定適當代理服務(wù)器對此消息采取的操作。這些操作用于檢查代理服務(wù)器和會話啟動協(xié)議通信兩者的正確操作。
文檔編號H04L12/56GK101325605SQ20081010818
公開日2008年12月17日 申請日期2008年5月30日 優(yōu)先權(quán)日2007年6月15日
發(fā)明者A·阿查里雅, B·森古普塔, N·班納吉 申請人:國際商業(yè)機器公司