拒絕冗餘重傳的sip消息的方法和設備的製作方法
2023-09-10 17:41:00 2
專利名稱:拒絕冗餘重傳的sip消息的方法和設備的製作方法
技術領域:
本發明總體上涉及通信領域中的會話發起協議(SIP)技術,並 且尤其涉及用於在SIP應用伺服器的前端拒絕冗餘重傳的SIP消息以 便減小重傳消息對SIP應用伺服器的影響的方法和設備。
背景技術:
近年來,會話發起協議(SIP)技術已經被廣泛地認為是IP (Internet Protocol,網際協議)環境中進行用戶定位、會話建立和會 話管理的首選。此外,SIP還被第三代合作夥伴項目(3rd Generation Partnership Project, 3GPP)用作IP多媒體子系統(IP multimedia Subsystem, IMS )中的呼叫控制協議,其中該IP多媒體子系統(IMS) 是 3GPP發布的通用移動電信網絡(Universal Mobile Telecommunication System, UMTS )協議版本5/6的一部分。SIP協議是基於文本的信令協議,用來創建和控制兩方或者多方參加的多媒 體會話。SIP系統通常採用IP網絡常用的客戶端/伺服器結構,定義了 若干種不同的伺服器和用戶代理,通過和伺服器之間的請求和響應完 成呼叫和傳輸層的控制。圖1示出了一種典型的SIP應用體系結構。如圖l所示,當服務 提供商基於SIP技術開展應用時,存在大的、用於託管(hosting)應 用的SIP應用伺服器集群,這些SIP應用伺服器同時處理來自大量SIP 終端的並發SIP會話。SIP應用伺服器中的工作負荷會影響到大規模 電信服務的性能和質量。在該SIP應用伺服器集群之前,在SIP終端 和SIP應用伺服器之間,存在一個SIP無狀態代理(SIP stateless proxy),用於接收、預處理和分發SIP消息。
根據SIP協議,SIP用戶代理(User Agent, UA)是呼叫的終端 系統單元,包括客戶端用戶代理(UAC )和伺服器端用戶代理(UAS )。 一個SIP亊務(SIP Transaction )包括由客戶端代理髮送請求給服務 器端代理、以及伺服器代理返回所有響應到客戶端代理的過程.在本 文論述中,從SIP應用伺服器角度來看,可以把事務分類為"客戶端 事務"和"伺服器端亊務"。在圖1中,我們定義客戶端事務是指SIP 應用伺服器充當UAC而SIP終端設備充當UAS;相應的,伺服器端 亊務是SIP應用伺服器充當UAS而SIP終端充當UAC的事務。SIP是一種信令協議,傳輸和處理SIP消息的性能對於基於SIP 的應用而言是非常重要的。許多已有的研究工作主要致力於解決由於 網絡環境或者過高的消息流量引起的問題。然而,在實踐中,不難發 現,即使當工作負荷處於中等適度情形,並且網絡資源也十分充足時, 也仍然存在性能問趙,並且可能產生嚴重的影響。眾所周知,SIP協議被設計為一種與底層傳輸機制無關的協議。 在實踐中通常採用用戶數據報協議(User Datagram Protocol, UDP) 傳輸SIP消息。由於UDP協議並不保證消息能夠可靠到達,所以在 SIP協議中設計了消息重傳機制,以確保信息遞送的可靠性。實際上, 由於發送方並不了解發送後消息在網絡中傳遞的過程,不能確定某一 條消息在其遞送或者處理過程中是丟失了還是被延遲了。因此,發送 方只能在一定的時間間隔之後沒有接收到所需的響應消息時,重複發 送已發出的消息,直到收到所需響應或者發送超時。如果初始的消息 沒有丟失而是被延遲了,但發送方還是重傳了消息,則該初始消息以 及重傳消息將會到達預定目的端。這時,重傳消息並沒有帶來更多的 信息,卻增加了目的端處理開銷,我們稱這樣的重傳為冗餘重傳。在 IP網絡中,由於位於SIP終端和SIP應用伺服器中的SIP用戶代理 (User Agent, UA )無法了解SIP消息傳輸和處理的整個過程,消息 的冗餘重傳是不可能避免的,並且這種冗餘重傳可能會對處理大重 SIP亊務的應用伺服器的性能產生嚴重的負面影響,圖2示出了依據現有技術在如圖1所示的SIP應用體系結構中SIP信令消息流在SIP終端、SIP無狀態代理和SIP應用伺服器之間 的傳輸情況。如圖2所示,SIP無狀態代理僅僅是轉發經過的所有SIP 消息(包括初始和重傳的SIP請求和響應消息),冗餘重傳的消息將 增加SIP應用伺服器開銷。如果冗餘重傳的消息的數量不可忽略時, 這些消息將顯著地影響SIP應用伺服器的性能,例如,可能會增加CPU的利用率和存儲空間的佔用量、增加消息處理的延遲、和/或降低吞吐量等。並且,如果重傳的開銷非常大的話,則還將會影響到這些SIP應用伺服器中的服務質量。有實驗數據表明,冗餘重傳經常發生,並且存在以下不良影響可使SIP應用伺服器中的吞吐量下降了 10%, 同時使處理延遲增加了 10倍。如何從正常傳輸的SIP消息中識別出哪些是冗餘重傳而哪些是必 需的傳輸,以及如何儘可能地阻止冗餘重傳或減小冗餘重傳的負面影 響,是提高SIP應用伺服器的性能的重要因素之一。當前,在SIP協議中主要有以下幾種機制用來防止消息冗餘重傳 的負面影響。例如,(1)產生重傳消息的間隔遲循指數後退的(back-off)規則。例 如,對於同一消息而言,第一次重傳在最初遞送之後的Tl毫秒(ms) 內發出,而且如果必要的話,第二次重傳在2xTl毫秒內發出,等等 諸如此類。(2 )在SIP UA或者UA之間的有狀態的代理伺服器(SIP stateftil proxy)每當收到請求消息首先返回臨時響應(lxx response),以4更 抑制消息重傳,然而,SIP協議中的上述這些機制只能夠降低而不能消除冗餘重 傳的產生。例如,在SIP UA之間路徑延時過大、伺服器響應時間過 長等都可能導致重傳的產生。通常,對重傳的處理僅僅在UA中進行。 然而,UA並不是識別和防止冗餘重傳的唯一適當的位置,例如,在 圖1所示的典型的SIP應用體系結構中,為了消除冗餘重傳的影響, 可以考慮允許由SIP無狀態代理來識別和拒絕消息的冗餘重傳以便減 輕SIP應用伺服器的工作負荷。
為此,鑑於上述情形,需要有一種新穎的、用於在SIP應用服務 器的前端、例如SIP無狀態代理中拒絕SIP消息的冗餘重傳從而減輕 SIP應用伺服器中的工作負荷的方法和設備。此外,為了拒絕並儘可能地消除SIP信令消息的冗餘重傳,需要 確定哪些消息是冗餘重傳的消息,因此,需要為每個SIP事務分配一定的存儲空間,用以保持有關該事務的某些必要信息,以便對重傳的消息做出適當的響應。然而,在實際的SIP應用中,往往同時存在來 自多個SIP終端的數目眾多的SIP亊務,而且有實驗數據表明,對於 每個SIP事務至少需要分配2KB的存儲空間。因此,當SIP系統中同 時存在數目非常巨大的SIP亊務時,所需要的存儲空間也是相當大的。 然而,在許多情況下存儲空間往往是不夠用的,例如,在交換機或者 多功能的SIP無狀態代理或者SIP卸栽引擎(SIP offload engine)中 就是如此。考慮到在實際應用中並不是每個SIP事務都會重傳它們的 某些消息,因此,為每個SIP亊務都存儲其有關必要信息,勢必會造 成存儲空間的浪費。考慮到多數情況下存儲空間往往可能存在限制這一 事實,因此, 還需要一種在存儲空間存在限制的情況下將可用存儲空間分配給比較 傾向於重傳的SIP亊務,從而在SIP應用伺服器的前端、例如SIP無 狀態代理上快速地拒絕冗餘重傳的SIP消息以減輕SIP應用伺服器中 的工作負荷的方法和i殳備。發明內容在下文中給出了關於本發明的簡要概述,以便提供關於本發明的 某些方面的基本理解。應當理解,這個概述並不是關於本發明的窮舉 性概述。它並不是意圖確定本發明的關鍵或重要部分,也不是意圖描 述本發明的範圍。其目的僅僅是以簡化的形式給出某些概念,以此作 為稍後論述的更詳細描述的前序。為了解決現有技術的上述問題,本發明的一個目的是提供一種用 於在SIP應用體系結構中拒絕所接收的冗餘重傳的SIP消息的方法和
設備,以便減輕SIP應用伺服器中的工作負荷。
本發明的另 一個目的是提供一種位於SIP終端和SIP應用伺服器 之間並且處於SIP應用伺服器的前端的、包括上述重傳拒絕設備的網絡設備。
本發明的再一個目的是提供一種用於在存儲空間有限的情況下用於在SIP應用體系結構中快速地拒絕所接收的冗餘重傳的SIP消息 的方法和網絡i殳備。
本發明還有一個目的是提供一種相應的計算機可讀存儲介質和 電腦程式產 品
為了實現上述目的,根據本發明的一個方面,提供了一種用於在 會話發起協議應用體系結構、即SIP應用體系結構中拒絕所接收的冗 餘重傳的SIP消息的方法,其中所述SIP消息的消息類型和傳輸方向 是已知的,所述方法包括以下步驟(a)根據所述SIP消息的傳輸方 向,轉發所有從SIP應用伺服器發往SIP終端的SIP消息;以及(b) 根據所述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消息,所述網絡設備包括亊務表,包括存儲了 所述sip消息的事務信息的亊務項目;重傳檢測器,用於對所接收的 sip消息進行重傳檢測,以便確定所述消息是否為重傳的消息,並且 一旦檢測到消息的重傳,就通知消息分類器更新消息發送方的重傳指 示器;消息分類器,用於根據消息發送方的重傳指示器的值,對所接 收的sip消息進行消息分類,以便確定所述消息是否比較傾向於進行重傳;以及上述用在sip應用體系結構中拒絕所接收的冗餘重傳的sip 消息的重傳拒絕設備,用於對比較傾向於進行重傳的sip消息進行重 傳拒絕處理。依據本發明的其它方面,還提供了相應的計算機可讀存儲介質和 電腦程式產品。本發明的一個優點在於,通過在sip應用伺服器的前端對冗餘重 傳的sip消息進行處理,在保持或增加sip呼叫的吞吐量的同時,可以儘可能多地減輕SIP應用伺服器上的工作負荷,並且可以實現更好的服務質量和降低操作成本。本發明的又一個優點在於,本發明考慮了存儲空間的限制,通過在對所接收的SIP信令消息進行重傳檢測和消息分類後,僅僅對比較傾向於重傳的消息進行重傳拒絕處理,可以在存儲空間有限的情況下 快速地拒絕消息的冗餘重傳,減少了進行重傳拒絕處理的消息數量, 並且減少了進行重傳拒絕處理的開銷。通過以下結合附圖對本發明的最佳實施例的詳細說明,本發明的 這些以及其他優點將更加明顯。
本發明可以通過參考下文中結合附圖所進行的描述而得到更好 的理解,其中在所有附圖中使用了相同或相似的附困標記來表示相同或者相似的部件。所述附圖連同下面的詳細說明一起包含在本說明書 中並且構成本說明書的一部分,用來進一步舉例說明本發明的優選實施例和解釋本發明的原理和優點,在附圖中圖1示出了一種在大型應用中典型的SIP應用體系結構;圖2示出了依據現有技術、在如圖1所示的SIP應用體系結構中SIP信令消息流在SIP終端、SIP無狀態代理和SIP應用伺服器之間的傳輸情況;圖3示出了根據本發明在如圖l所示的SIP應用體系結構中SIP 信令消息流在SIP終端、SIP無狀態代理和SIP應用伺服器之間的傳輸情況;圖4示出了根據本發明的第一個方面、由SIP無狀態代理所執行的用於拒絕SIP信令消息的冗餘重傳的方法的流程圖;圖5示出了在執行圖4所示的方法時所述SIP無狀態代理中的消息處理過程;圖6從客戶端亊務和伺服器事務的角度示出了在執行困4所示的方法時所述SIP無狀態代理中的消息處理過程; 圖7是示出了根據本發明的第一個方面的SIP無狀態代理的示意性結構框圖;圖8示出了根據本發明的第二個方面、對困7所示的SIP無狀態 代理進行改進後的SIP無狀態代理的示意性結構框圖;圖9是示出了根據本發明的第二個方面、由圖8所示的SIP無狀 態代理所執行的用於快速拒絕SIP信令消息的冗餘重傳的方法的流程 圖;圖10示出了根據本發明的一個優選實施例、用於實現圖8中所 示的重傳檢測器的三狀態Bloom過濾器(BF)的示意性結構圖;圖11示出了根據本發明的該優選實施例、用於實現困8中所示 的消息分類器的可計數的Bloom過濾器(CBF)的示意性結構圖;以 及圖12示出了在本發明的該優選實施例中所採用的兩級事務表的 示意性結構圖。本領域技術人員應當理解,附圖中的元件僅僅是為了簡單和清楚 起見而示出的,而且不一定是按比例繪製的。例如,附圖中某些元件 的尺寸可能相對於其他元件放大了,以便有助於提高對本發明實施例 的理解。
具體實施方式
在下文中將結合附困對本發明的示範性實施例進行描述。為了清 楚和簡明起見,在說明書中並未描述實際實施方式的所有特徵。然而, 應該了解,在開發任何這種實際實施例的過程中必須做出很多特定於 實施方式的決定,以便實現開發人員的具體目標,例如符合那些與系 統及業務相關的限制條件,其中這些限制條件會隨著實施方式的不同 而改變。此外,還應該了解,雖然開發工作有可能非常複雜和費時, 但對得益於本公開的本領域技術人員來說,這種開發工作僅僅是例行 的任務。在此,還需要說明的一點是,為了避免因不必要的細節而模糊了
本發明,在附困中僅僅示出了與根據本發明的方案密切相關的裝置結 構和/或處理步驟,而省略了與本發明關係不大的其他細節.以下結合圖3至圖6,對根據本發明的第一個方面的、用於在困 1所示的SIP應用體系結構中在SIP無狀態代理中拒絕冗餘重傳的SIP 消息的方法400 (具體可參見圖4)進行描述。其中,在圖1所示的SIP應用體系結構的基礎上,圖3示出了在 SIP無狀態代理中應用了上述方法400之後SIP信令消息流在SIP終 端、SIP無狀態代理和SIP應用伺服器之間的傳輸情況;困4示出了 上述方法400的處理流程圖;困5示出了在執行上述方法400時所迷 SIP無狀態代理中的消息處理過程;以及,圖6從客戶端事務和服務 器亊務的角度示出了在執行上述方法400時所述SIP無狀態代理中的 消息處理過程。在根據本發明的這個方面的實施例中,假定在圖1所示的SIP應 用體系結構滿足以下條件(1) SIP信令消息能夠在SIP無狀態代理和SIP應用伺服器之 間可靠地進行傳輸;(2 )從SIP無狀態代理髮送到SIP應用伺服器的每個請求都能 夠觸發相應的響應,並且無論被延遲多長時間,所述響應都能夠最終 被SIP無狀態代理接收到。基於上述兩個假定,在如困1所示的SIP應用體系結構中,SIP 無狀態代理能夠識別和處理冗餘重傳的消息。如圖3所示,所有從SIP 終端冗餘重傳到SIP應用伺服器的SIP信令消息都能夠被SIP無狀態 代理所阻止,而且如果已經從SIP應用伺服器接收到了對於該消息的 響應,則SIP無狀態代理能夠對重傳的請求直接做出應答。此外,基 於上述兩個假定,如圖3所示,所有從SIP應用伺服器發往SIP終端 的消息都被SIP無狀態代理所轉發。以這種方式,能夠降低在SIP應 用伺服器中對重傳的請求進行處理的工作負荷,SIP無狀態代理檢查所接收到SIP信令消息(包括從SIP終端接 收的消息以及從SIP應用伺服器接收的消息),並且將它們映射到SIP 亊務上。根據消息的類型以及傳輸方向(是發往SIP應用伺服器還是 從SIP應用伺服器發出)的不同,SIP無狀態代理能夠採取不同的動 作來處理SIP信令消息。圖4示出了根據本發明的第一個方面、由SIP無狀態代理所執行 的用於拒絕冗餘重傳的SIP消息的方法400的流程困。如圖4所示,在步驟S1中,SIP無狀態代理接收來自SIP終端 或者SIP應用伺服器的SIP信令消息。在步驟S2中,SIP無狀態代理對所接收的消息進行消息解析, 以便獲得例如所接收消息的消息類型、發送源、傳輸方向等必要信息.隨後,方法400的處理進行到步驟S3,根據消息解析的結果,執 行亊務查詢,即,確定亊務表中是否存在存儲了與所接收消息相應的 亊務信息的事務項目。其中,事務表用於保持SIP信令信息的當前亊務信息,其中包括 亊務ID、消息到達時間、相應的響應消息等(它們構成亊務項目)。 事務表的大小通常會受到可用存儲空間的限制。此外,由於要處理的 SIP信令信息的數目巨大,所以經常需要對事務表進行訪問,以便執 行亊務項目的插入、查找、更新和刪除等處理'在此,亊務表可以採 用現有技術中的任何便於插入、查找、更新和刪除亊務項目等處理的 結構來實現,並且被存儲在SIP無狀態代理中。如果在步驟S3中確定存在所述相應的事務信息,則方法400的 處理進行到步驟S4,否則處理轉入步驟S5。在步驟S4中,判斷所接收消息的傳輸方向,即,是要發往SIP 終端還是要發往SIP應用伺服器。如果在步驟S4中確定所接收的消息是要發往SIP終端的,則處 理進行到步驟S6,判斷該消息是否為響應或確認(ACK)的第一次傳 輸。如果在步驟S6中確定是響應或確認ACK的笫一次傳輸,則處理 進行到步稞S8,在事務表中的與該消息有關的事務項目中記錄該消 息。然後,處理進行到步驟S12。
如果在步驟S6中的判斷結果為否,則處理進行到步稞S12。 在步驟S12中,SIP無狀態代理輸出所接收的消息(將消息輸出 到SIP終端)。上述步驟S4-S6- (S8) -S12的處理過程,表明從SIP應用服 務器發往SIP終端的所有消息(包括請求和響應)都會被SIP無狀態 代理轉發,其中的步驟S8是為了確保在事務表中記錄所接收消息的相 應響應,所以只需要在第一次傳輸響應或確認ACK時將其記錄在事 務表中即可。如果在步驟S4中確定所接收的消息是要發往SIP應用伺服器的, 則處理進行到S7,判斷該消息是否為冗餘重傳。如果在步驟S7中判定所述消息是冗餘重傳,則SIP無狀態代理 將會阻止該消息的繼續傳輸,並且直接對該冗餘重傳做出應答。具體來說,如果步驟S7的判定結果為是,則方法400的處理進 行到步驟S9,確定該消息的類型,即判斷該消息是否為一個請求或者 對於INVITE的最終響應。如果步驟S7的判定結果為否,即,如果所述消息不是冗餘重傳, 則處理進行到步驟S8,將該消息記錄在事務表中的所述亊務項目中。 然後,處理進行到步驟S12,由SIP無狀態代理輸出所述消息。如果在步驟S9中確定所述冗餘重傳的消息是一個請求,則處理 進行到步驟SIO, SIP無狀態代理丟棄該冗餘重傳的請求,並且根據情 況對所丟棄的請求做出應答。具體而言,如果已經接收到了其相應的 響應,則用適當的響應(如果亊務表中不存在最終響應,則使用臨時 響應;如果存在最終響應,則使用該最終響應)來對該請求做出應答; 如果沒有接收到相應的響應,則SIP無狀態代理直接丟棄該消息,不 做應答。如果在步驟S9中確定所述冗餘重傳的消息是對於INVITE的最 終響應,則處理進行到步驟Sll,用相應的確認ACK對其做出應答, 如果還沒有接收到相應的ACK,則使用一個寄存器來保持未被應答的 最終響應的數目,並且一旦接收到了 ACK後,就重複發送ACK達相
應次數(即,重複發送ACK的次數-未被應答的最終響應的數目)。 在此,為了簡單起見,在圖4中省略了有關上述處理過程的處理流程,而僅僅簡單地用步驟SIO、 Sll來表示。顯然,本領城技術人員可以很容易地根據上述文字描述繪製出相應的流程圖。如果在步驟S9中確定所述冗餘重傳的消息既不是一個請求,也不是對於INVITE的最終響應,而是其它響應,則處理進行到步驟S13,丟棄所述其它響應,並且不會輸出任何消息。在如圖4所示的方法400的流程圖中,如果SIP無狀態代理確定在事務表中不存在所接收消息的相應亊務信息(這表明該消息沒有被記錄在亊務表中),並且所接收消息為一個請求,即,如果步驟S5中的判定結果為是,則處理進行到步驟S14,在亊務表中創建和插入 一個與所接收消息相應的亊務項目。然後,處理進行到步驟S12,輸出所述接收的消息。另外,如果步驟S5中的判定結果為否,則處理也 進行到步驟S12,輸出所述接收的消息。圖5示出了在執行上述方法400時所述SIP無狀態代理中的消息 處理過程。如圖5所示,在SIP無狀態代理中,將所有來自SIP應用 伺服器的消息都轉發到SIP終端;丟棄所有從SIP終端重傳的到SIP 應用伺服器的消息,並根據所丟棄消息的類型,執行下述處理。如果 所丟棄的消息為一個請求,而且已經接收到了相應的響應(一個或多個),則用適當的一個響應來對該請求做出應答;如果所丟棄的消息 是對於INVITE事務的最終響應,則確定是否接收到了相應的ACK, 如果還沒有接收到,則記錄已經接收到了多少個未被確認的最終響應 (其數目用ReplyNum表示),直到接收到相應的ACK為止,然後 重複發送ACK達ReplyNum次;如果所丟棄的消息是除上述最終響 應以外的其它響應,則不再執行其它處理,即不會向SIP應用伺服器 輸出任何消息。圖6從客戶端亊務和伺服器事務的角度示出了在執行上述方法 400時所述SIP無狀態代理中的消息處理過程。如圖6所示,在SIP無狀態代理接收到來自SIP終端或者SIP應
用伺服器的SIP信令消息後,對該消息進行解析,並且在事務表中奎找相應的亊務信息,然後,根據所述亊務信息是客戶端事務還是服務 器事務,對其執行不同的處理。正如背景技術部分中所描述的,客戶端亊務是指其UAC是SIP 應用伺服器、且UAS是SIP終端的事務,即,客戶端事務包括從SIP 應用伺服器向SIP終端發送的請求、以及從SIP終端向SIP應用服務 器發送的響應;而伺服器事務則是指其UAC是SIP終端、且UAS為 SIP應用伺服器的亊務,即伺服器事務包括從SIP終端向SIP應用服 務器發送的請求、以及從SIP應用伺服器向SIP終端發送的響應(以 及ACK)。對於客戶端事務而言,如圖6中的D1所示,將所有來自SIP應 用伺服器的請求都傳遞到SIP終端,並且丟棄所有從SIP終端重傳到 SIP應用伺服器的響應,而且如果有必要的話,還重複發送ACK達一 定次數。對於伺服器亊務而言,如圖6中的D3所示,將所有來自SIP應 用伺服器的響應都傳遞到SIP終端,並且還如圖6中的D2所示,丟 棄所有從SIP終端重傳到SIP應用伺服器的請求,此時,如果存在對 應於所丟棄的請求的響應,則將適當的響應應答給SIP終端。在此需要說明的是,以上雖然結合圖4所示的流程圖對根據本發 明由SIP無狀態代理所執行的方法400的處理進行了描述.但是,本 領域技術人員應當理解,顯然根據上述描述可以繪製出與圖4所示的 流程圖局部或者完全不同的流程圖,其中的處理步驟和以及處理步驟 的執行順序可能部分或者完全不同於圖4中所描繪的步驟和順序。也 就是說,根據以上所給出的教導,SIP無狀態代理可以執行不同於上 述方法400的處理來拒絕發給SIP應用伺服器的冗餘重傳的SIP消息, 只要其原則上能夠滿足圖5中所示的消息處理過程即可。另外,還需要說明的是,上述方法400中的步猓SlO和Sll中的 有關處理是為了滿足SIP協議的有關協議要求而執行的,因此在上述 的描述中沒有進行詳細說明。
圖7示出了根據本發明實施例的SIP無狀態代理700的示意性結 構。該SIP無狀態代理700可以執行以上結合困4所描述的方法。如圖7所示,該SIP無狀態代理700包括消息解析器701,用 於對SIP無狀態代理所接收到的消息進行解析;重傳拒絕設備710, 用於執行困4所示的流程圖中的步驟S3至S14中的處理(其具體功能 和操作在下文中進行詳細描述);和亊務表705,用於存儲當前的事 務信息,其中包括亊務ID、消息到達時間、相應的響應等。如圖7所 示,重傳拒絕設備710包括亊務查詢及生成器702、重傳識別器703 和消息處理器704。其中,亊務查詢及生成器702用於執行事務信息的查詢和/或事務 項目的生成,具體來說,用於在事務表705中奎找是否存在與所接收 的SIP消息相對應的亊務信息,如果沒有找到相應的事務倌息,並且 所接收的SIP消息為一個請求,則在亊務表中創建和插入一個事務項 目,並在其中記錄下該消息的亊務ID、消息到達時間等事務信息,重傳識別器703用於識別所接收的SIP消息是笫一次傳輸的還是 冗餘重傳的,並且將識別結果告知消息處理器704。消息處理器704根據上述重傳識別結果,並且依據所接收的SIP 消息是請求、對於INVITE事務的最終響應、還是其它響應,對所接 收的消息進行不同的處理(具體可參見圖4所示的流程困中的步驟S8、 S9、 SIO、 Sll、 S12和S13)。顯然,上述各個模塊或設備的功能和處理過程通過以上結合圖3 -6所給出的描述已經非常清楚了,因此,為了說明書的簡潔起見, 在此就不再詳述了。在以上描述的依據本發明的方法400和SIP無狀態代理"0中, 由於處理的SIP消息的數量非常巨大,因此會非常頻繁地對事務表進 行插入、查找、更新和刪除等,因此,上述方法400的處理速度和SIP 無狀態代理700的性能在很大程度上要受到事務表處理的影響。為了在實際處理過程中實現事務信息或事務項目的快速插入、查 找、更新和刪除,在本發明的一個優選實施例中,採用了具有固定大
小的哈希表來實現亊務表,並且為了避免衝突和進行快速的奎找,利 用了多個哈希函數。此外,考慮到存儲空間的限制,對每個事務項目 設定了時間期限,並且允許在存儲空間不夠的情況下刪除到期的事務項目。假定哈希表的大小為m,即,假定哈希表是長度為m的數組,用 {A0, A,,…,AnM)表示,其中Aj用於存儲相關亊務項目的實際存儲位 置的地址指針。以下為了方便起見,將Aq, An…,A^稱為事務表 中的第0、 1........ m-l個位置。此外,還假定選擇了k個哈希函數Hp H2.......、 Hk,將事務ID(用x表示)用作事務項目的關鍵字進行哈希計算。哈希函數H,、 H2........ Hk可以把x映射為一個在區間0, 1,……,m-l內的整數,如果需要把一個新的亊務項目插入到事務表中,則對於每個Hi (i S k),依次判斷第Hi(x)個位置是否為空,並且一旦發現某一Hi(x) 的位置為空,就在該位置中放入該亊務項目的實際存儲位置(或存儲 單元)的地址指針。否則,如果所有Hi(x)(l^i^k)的位置都不為空, 則依次判斷Hi(x) (l^i£k)的位置中的亊務項目是否到期了 (例如, 可以根據消息的到達時間和所設定的時間期限來判斷),並且一旦發 現Hi(x)的位置中的事務項目到期了 ,就用新的事務項目代替該到期的 亊務項目。如果所有的Hj(x) (lSi^k)的位置中的事務項目都沒有到 期,則用該新的亊務項目代替最舊的那個事務項目。對於事務項目的查找操作,其處理過程是與上述插入事務項目的 處理過程相逆的過程。具體來說,為了查找一個具有事務ID x的事務 項目,依次查找由存儲在哈希表中笫Hi(x) (1^iSk)個位置中的地址 指針所指向的存儲單元,以確定其中存儲的亊務ID是否為x。為了描述 的簡單和方便起見,在下文中將上述操作簡單地用"依次查找哈希表 中第Hi(x) (lSi^k)個位置以查找亊務ID為x的事務項目"來描述。一旦在某一Hi(x) (1Si5k)的位置中找到了事務ID為x的事務項 目,則終止查找處理。如果在所有的Hj(x) (15iSk)的位置中都沒有 找到所需的事務項目,則查找處理將會返回一個空值(null)。為了加速對哈希表的操作,應當適當地選擇H,、 H2........ Hk,考慮到事務ID是一個字符串,因此,在本發明的一個進一步的優選實 施例中,將&選擇為適合於對字符進行哈希計算的哈希函數,並且將所有後續的H2........ Hk選擇為是對HKx)的結果進行位操作的哈希函數。以上結合圖3-7描述了依據本發明一個方面的SIP無狀態代理 及其處理方法,其中在SIP無狀態代理上可以拒絕冗餘重傳的SIP消 息,丟棄所有從SIP客戶端重傳發往SIP應用伺服器的消息,並根據 所丟棄的消息的不同類別直接做出適當的應答,而不把冗餘重傳的消 息轉發到SIP應用伺服器進行處理,因此有效地減輕了 SIP應用服務 器上的消息處理負栽。但是,正如上文中所提到的,在上述方法和SIP無狀態代理中, 需要將所有接收到的SIP消息都映射為相應的SIP事務,並且亊務倌 息(包括到達時間、當前狀態、接收到的相應響應等)都應當被保持 一段時間,以便根據亊務的狀態識別冗餘重傳的消息並且對其做出響 應。因此,需要為每個SIP亊務分配一定的存儲空間。在實際的應用中,SIP亊務將會持續一段時間(對於INVITE事 務該時間可達一秒或多秒),這樣,在SIP無狀態代理上可以觀察到 大量並發亊務,因此,需要為這些事務分配的存儲空間是相當大的。 然而,在許多情況下,存儲空間往往不夠用。因此,考慮到以下兩個 主要問題(1)識別冗餘重傳的消息並且對其做出響應的速度;(2) 當同時存在大量並發亊務時可利用的存儲空間的數量,並且鑑於實際 應用中並不是每個SIP亊務都會重傳它們的某些消息這一情況,所以, 當存儲空間有限時,為了節省存儲空間,應當確保將可用的存儲空間 分配給比較傾向於重傳的SIP亊務。為此,根據本發明的另一個方面,對上述方法和SIP無狀態代理 進行了改進,以便可以在SIP無狀態代理上存在存儲空間受限的情況 下快速地拒絕冗餘重傳的SIP消息。下面仍然以圖1所示的SIP應用體系結構為例,結合圖8-9描
述了根據本發明的所述另一個方面的應用,其中圖8示出了在存儲空 間有限的情況下對圖7所示的SIP無狀態代理700進行改進後的SIP 無狀態代理800的結構框圖,圖9示出了在該SIP無狀態代理800上 執行的、用於在存儲空間有限的情況下快速阻止冗餘重傳的SIP消息 的方法900。在本發明的這個方面中,做出了如下假定 一旦確定從某一發送 方重傳了一條SIP消息,則認為在後續的某一預定時間間隔內所有來 自該發送方的消息都是傾向於進行重傳的。如圖8所示,SIP無狀態代理800包括消息解析器801、重傳檢 測器802、消息分類器803、重傳拒絕設備804和亊務表805。其中,消息解析器801和亊務表805的功能與圖7中所示的消息 解析器701和亊務表705的功能是相同的,因此,為了避免重複,在 此省略了對它們的描述。重傳檢測器802用於對SIP無狀態代理800所接收的SIP信令消 息進行重傳檢測,即檢查所接收到的消息是否為重傳的消息,並且如 果檢測到重傳,則通知消息分類器803更新消息發送方的重傳指示器。消息分類器803根據所接收消息的發送方的重傳指示器,對該消 息進行分類,即確定該消息是否傾向於重傳。然後,消息分類器803 將所接收消息中比較傾向於重傳的那些消息傳送到重傳拒絕設備804, 而對於其它消息則並不經過重傳拒絕設備804進行處理,而是直接輸 出。在此,由消息分類器803傳送到重傳拒絕設備804進行重傳拒絕 處理的消息的最大比率受到SIP無狀態代理800中可用存儲空間的限 制。重傳拒絕設備804用於對從消息分類器803傳送來的比較傾向於 重傳的SIP信令消息進行處理,以檢查該消息是否是冗餘重傳的,並 且如果是的話,對其做出正確的響應。重傳拒絕設備804的功能和處 理過程與圖7中所示的重傳拒絕設備710的功能和處理過程是相同的, 因此在此就不再對它們進行詳述了 。通過在SIP無狀態代理800中在重傳拒絕設備800之前設置重傳
檢測器和消息分類器,可以減少需要進行重傳拒絕處理的消息數量, 並且因此減少了重傳拒絕設備和事務表中的開銷。如果消息分類是有 效的並且是正確的,則還可以有效地降低處理延遲和存儲空間佔用率。關於SIP無狀態代理800中的上述各個模塊或設備的具體處理過 程,在下面參考圖9所示的方法900的流程圖進行進一步的詳細描述。如圖9所示,在步驟S901, SIP無狀態代理800接收來自SIP終 端或者SIP應用伺服器的SIP信令消息。然後,在步驟S902,消息解析器801對所接收的SIP信令消息 進行消息解析,以便獲得如消息類型、發送源等必要信息,隨後,方法900的處理進行到步驟S903,重傳檢測器802對所接 收的消息進行重傳檢測,即檢查所述消息是否為重傳的消息。並且, 一旦檢測到消息的重傳,就會通知消息分類器803更新發送方的重傳 指示器。此後,處理進行到步驟S904,消息分類器803根據其中重傳的發 送方的重傳指示器,對所接收的消息進行消息分類。即,如果在步驟 S903中檢測到重傳了一條消息,則在消息分類器803中記錄下該消息 的發送方和/或更新發送方的重傳指示器,並且根據發送方的重傳指示 器,對所述接收的消息進行分類,即確定該消息是否傾向於進行重傳。接下來,在步驟S905,判斷所述消息是否比較傾向於進行重傳。 例如,該步驟可以由消息分類器803依據消息發送方的重傳指示器的 值是否大於某一預定閾值來做出判斷,並且依據判定結果決定是否將 所述消息傳送到重傳拒絕設備804。如果在步驟S905中判定所述消息是比較傾向於重傳的,則在步 驟S906中,由重傳拒絕設備對比較傾向於進行重傳的所述消息進行重 傳拒絕處理,將所有從SIP應用伺服器發往SIP終端的消息都進行轉 發,同時丟棄所有從SIP終端冗餘重傳的消息,並且根據所丟棄的消 息的不同做出適當的響應。該步驟906的處理對應於以上結合困4所 描述的方法400中的步驟S3-S11、 S13和S14的處理過程,因此, 在此為了簡潔起見就不再詳述了 。 在對比較傾向於重傳的消息進行重傳拒絕處理後,方法900的處 理進行到步蘇S907,輸出相應的消息。如果在步驟S905中判定所述消息不屬於比較傾向於重傳的,則 方法900的處理進行到步驟S907,直接輸出所述接收的消息。通過以上結合圖8和9給出的描述可知,通過在圖7所示的重傳 拒絕設備710的前端進行重傳檢測和消息分類,以及僅僅對所接收消 息中比較傾向於重傳的SIP消息執行結合圖4所描述的方法400的處 理,減少了 SIP無狀態代理800中進行重傳拒絕處理的SIP消息的數 量,因而可以實現快速搮作。在結合圖8和9所描述的本發明的這個方面中,考慮到存儲空間 存在限制,因此重傳檢測器、消息分類器以及事務表的設計會在很大 程度上影響到SIP無狀態代理800的性能和方法900的處理速度。為此,在本發明的一個進一步的優選實施例中,為了進一步地節 省存儲空間以及對事務表執行更為快速的亊務項目插入、查找、更新 和刪除處理,分別使用Bloom過濾器來實現上述圖8中所示的重傳檢 測器802和消息分類器803,並且還使用了一個兩級事務表來實現圖8 中所示的亊務表805。下面將結合圖10至圖U對它們進行具體描述。 圖10示出了根據本發明的一個優選實施例、用於實現重傳檢測 器的三狀態Bloom過濾器(BF)的示意性結構圖;圖ll示出了根據 本發明的該優選實施例、用於實現消息分類器的可計數的Bloom過濾 器(BF)的示意性結構圖;以及圖12示出了根據本發明的該優選實 施例中採用的兩級亊務表的示意性結構圖。標準的Bloom過濾器使用一組s個獨立的哈希函數(HFG),以便對一個對象進行哈希計算,從而得到一組對應於該對象的位置坐標。 只有當由某個對象的s個哈希值所指示的位置全部都被標記了時,才 將該對象判定為存在。簡而言之,標準的Bloom過濾器通過一個s維 的標記矢量識別一個元素的存在關係。有關標準Bloom過濾器的細節 可參見(Burton Bloom, Space/time trade-offs in hash coding with allowable errors, CACM, 13(7):422-426, July 1970.),在此僅僅對其
與本發明密切相關的部分內容進行說明。如以上結合困8所述的那樣,重傳檢測器802用來檢測一條消息 是否是重傳的,並且通知消息分類器對該消息的發送方進行標記。這 意味著,重傳檢測將對消息分類器模塊進行配置。在該實施例中,採 用了如圖10所示的三狀態的Bloom過濾器(Bloom Filter, BF) 1000 (以下將其簡稱為消息過濾器)來實現重傳檢測器。對於每條SIP信令消息,消息過濾器1000對整條消息進行哈希 計算,並且根據所計算的哈希值對消息過濾器進行查找。重傳的消息 經過哈希計算後會具有相同的哈希值,而其它的消息則具有不同的哈 希值。因此,如果該哈希值被標記在消息過濾器中了,則意味著該消息是一條重傳的消息;並且將相應的發送方保持在消息分類器中,即 記錄或者更新消息分類器中的發送方重傳指示器。如果該哈希值沒有 被標記在消息過濾器中,則這意味著該消息是第一次傳輸的消息(即 非重傳的消息),並且在消息過濾器中標記該哈希值。具體來說,參見圖10,為了簡單起見,用一個4行8列的表來形 象表示該消息過濾器1000。實際上,該表的所有位置構成一個數組, 四個獨立的哈希函數將消息哈希後會給出四個獨立的位置。假定消息 過濾器的初始狀態如圖10中最左邊的表格所示,其中所有位置的初始 值均為0。在第一次接收到某一條SIP信令消息時,對該消息進行哈希計算,並且在與所計算的哈希值相對應的位置中標記1,以表明該消息已進行過傳輸,例如,如圖10中的第2個表格所示。在這種情況下,消息 過濾器還會通知消息分類器更新消息發送方的重傳指示器。在接收到重傳的消息時,對其進行哈希計算後會得到相同的哈希 值,如果在與該哈希值相對應的位置處的值標記為1,則將該位置中 的值從1改為2,以表明該消息是重傳的消息,例如,如困10中的第 3個表格所示。在再次接收到該條消息時,會發現相應位置中的值已 經被標記為2了,這表明該條消息已經被標記為是重傳的消息,因此 就無需再對其進行任何處理,如圖10中最右邊的表格所示。 從以上的描述中可以看出,消息過濾器中的標記值可以表明所接收消息的傳輸或重傳次數,標記值為0,表示該消息是第一次傳輸; 標記值為1,表示該消息是第一次重傳;標記值為2,表示該消息已經 至少重傳過一次了。由於消息過濾器的大小是固定的,所以為了防止過栽,需要將消 息過濾器中的所有值定期地遞減。此外,由於考慮到在存儲空間有限的情況下消息分類器的處理應 當是快速的和有效的,為此,在該實施例中採用了如圖ll所示的可計 數的Bloom過濾器1100 (以下簡稱為發送方過濾器)來實現圖8所示 的消息分類器803。在此,基於標準Bloom過濾器的概念,將標準Bloom 過濾器中的位陣列擴展為4位的計數器陣列,其中每個計數器可以具 有16個可能的值,以便對消息進行分類,即確定所述消息是否傾向於 重傳和識別一個用戶是否傾向於重傳消息。如圖11所示每一個單元表 示一個計數器。當接收到一條消息時,發送方過濾器1100使用HFG對發送方ID 進行哈希計算,發送方ID可以是消息頭中的FromURI,或者是其它 的能夠從消息中獲得的標記發送方的欄位。當檢測到重傳的消息時, 經過對發送方ID進行哈希計算後會對應於圖11中所示的同樣單元位 置,然後將該單元位置中的計數器加1。圖11中示出了發送方1 (RU =1)和發送方2 (RU = 2)的計數器值的情況,其中發送方l的計數 器值為1、 2、 1、 1,發送方2的計數器值為3、 4、 5、 4。某一發送方 RU的各計數器值不同,是由於對不同發送方ID進行哈希計算後的哈 希值可能會對應於相同的單元位置從而造成了重疊。因此,將某一發 送方ID哈希值所指示的各個計數器值中的最小值(用CW表示)作 為該發送方的重傳指示器值。例如,如圖ll所示,發送方l的重傳指 示器值為1。由此可見,可以使用發送方過濾器1000來保持標記了的、傾向於 重傳消息的發送方,並且可以由重傳檢測器(即消息過濾器)對它進 行配置。
在接收到 一條消息時,檢查消息發送方的重傳指示器值是否大於某一預定闞值T。如果是的話,則該消息將會被認為是比較傾向於重 傳,並且其將會被傳送到圖8所示的重傳拒絕設備804。如果該消息的 發送方的重傳指示器值小於所述預定閾值T,則該消息將會被直接發 送出去。所述閾值T可以根據發送方過濾器中值的分布情況(即,發送方 的重傳指示器值的分布情況)以及可用存儲空間的大小來進行確定和 調整。根據本發明的一個優選實施例,所述預定闞值T可以如下所述這 樣確定。假設重傳拒絕設備804的重傳處理率為^亊務/秒(TPS)(其 由SIP無狀態代理中的可用存儲空間的大小來確定),T是使所有具有 CW ^ T的消息的消息到達率的總和小於^的最小整數。由於發送方過濾器的大小是固定的,所以為了防止過栽,與消息 過濾器1000相類似地,發送方過濾器1100中的所有值也需要被定期地 遞減。例如,當發送方過濾器中的一半以上的計數器達到其最大值時, 除非其值已經為O,否則,將所有計數器減去某一個值(例如l或者所 有計數器值中的最小值)。當減小計數器值時,可以計算計數器值的 分布,並且還依據可用存儲空間的大小,計算下一個時段內用於確定 來自某一發送方的消息是否比較傾向於進行重傳的所述閣值T。下面將參考圖12描述這個實施例中所使用的亊務表1200。如圖12所示,該事務表用一個兩級的結構實現,其包括兩個子表 循環亊務項目表以及索引表。其中,循環事務項目表用於存儲和保持事務項目,並且有一個指 針用來指示下一個空位置。當要在亊務表中插入一個新的事務項目時, 將該項目放置在由所述指針所指示的位置上(正如以上所描述的那樣,是將該亊務項目的實際存儲位置或者單元的地址指針放置在所述位置 上)。然後,將指針加l。循環亊務項目表是一個其中逐個地放置事務 項目的緊湊的表,其大小N可以用下式來計算
其中,M表示可用存儲空間的大小,S表示平均的事務項目大小。索引表用來保持事務項目在循環亊務項目表中的位置,其中的每 個索引僅僅是個整數。所以,在SIP無狀態代理中的存儲空間較小的情 況下,索引表的大小也可以是較大的。實際上,索引表的大小n要大於 循環事務項目表的大小N。在一個優選實施例中,n/N-5。即使!!/N-10,由索引表所佔用的存儲空間也小於由循環事務項目表所佔用的存 儲空間的1%。為了實現在事務表中快速地插入或者查找事務項目,將索引表實 現為一個哈希表,並且使用了多個哈希函數,以避免衝突和進行快速 查找。假定索引表的大小為n (即,索引表是一個大小為n的數組),並且選擇了k個哈希函數Hp H2.......、 Hk。將事務ID x用作事務項目的關鍵字,並且Hp H2........Hk把x映射為 一個在區間[0, 1 ,.......n-ll內的整數。如果一個新的亊務項目將要被插入到亊務表中,則將該亊務項目 直接放置到循環事務項目表中,並且該事務項目在循環亊務項目表中 的放置的位置是該亊務項目在索引表的索引。然後,依次判斷所述索 引表中的笫Hi(x) (Hi5k)個位置是否為空, 一旦發現其中有一個位 置為空,則就在索引表的該位置中放入所述索引值。如果所有Hj(x)(lS i^k)所指示的位置都不為空,則依次檢查索引表中第Hi(x)(l^i^k) 個位置中存儲的舊的索引值所指示的項目是否到期了 ,如果它到期了 , 則將該新的索引放在這個位置上。如果由索引表中所有Hi(x)( i S k) 的位置中的舊的索引所指示的項目都沒有到期,則用該新的索引值代 替最舊的那個事務項目的索引值。如果需要查找一個事務ID (TID)為x的事務項目(以下簡稱為 目標亊務項目),則對於每個Hi(x) (1Si5k),按照順序,依次比較 所述循環亊務項目表中的、由存儲在索引表中笫Hi(x) (1Si5k)個位 置中的索引值(用Index(Hi(x))表示)所指示的位置中的事務項目的 TID, 一旦在所述循環事務項目表中的、由某一索引值Index(Hi(x))所 指示的位置中找到目標亊務項目,就終止查找處理,如果在循環事務 項目表中的、由索引值Index(Hj(x)) (i S k)所指示的所有位置中都 沒有找到目標事務項目,則搜索處理將會返回一個空值(mill)。例如,假設某一個事務項目被放置在第200個位裡上。該事務項 目的索引值為200。利用H"x) (15iSk)對該亊務項目的TID按照順序 依次進行哈希計算。 一旦在索引表中由Hi(x) (1SiSk)所指示的位置 中找到一個空位置或者已到期的位置,則就把索引值200放置在該空位 置上。否則,將把索引值200放置在具有最舊的索引值的位置上。此外, 為了查找該亊務項目,將上述處理反向進行即可。通過利用Hj(x)(lS i ^ k)對TID進行哈希計算(逐個進行),按照順序依次檢查由索引 表中的第Hi(x)(l^i^k)個位置中的索引值所指示的亊務項目的TID,直到找到正確的事務項目為止。正如以上結合困7所描述的那樣,為了加速對索引表的操作,應當適當地選擇Hp H2、 ....... Hk。例如,在一個優選實施例中,由於亊務ID是一個字符串,所以將Hi選擇為用於字符的哈希函數,而所有後續的H2.......、 Hk選擇為是對H,(x)的結果進行位搮作的哈希函數。通過以上對本發明的優選實施例的描述可知,利用本發明,可以 在保持或增加SIP呼叫的吞吐量的同時,減輕SIP應用伺服器上的工 作負荷,並且實現更好的服務質量和降低操作成本。雖然以上結合圖3至12對本發明的優選實施例進行了描述,但 是,顯然應當理解,上述示例描述不可能是窮舉的,而且根據設計要 求的不同,本發明完全可以有其它不同的優選實施方式.例如,以上雖然描述了在一個優選實施例中同時對圖8所示的重 傳檢測器802、消息分類器803和亊務表805進行了改進,但是,顯 然分別對它們進行改進或者以任意組合方式對它們中的某一些進行改 進都是可能的。而且,對於重傳檢測器和消息分類器來說,除了使用 Bloom過濾器以外,也可以使用其它方式來實現,只要能夠實現其預 定功能即可。另外,例如,對於圖7和8中所示的事務表705和805來說,雖
然以上分別對它們的一種優選實施方式進行了描述,但是,顯然上述 兩種亊務表結構是可以互換使用的。此外,雖然在上述的優選實施例 中都使用了哈希表來實現事務表,但是顯然也可以用其它方式來實現 事務表,只要其結構便於快速地執行事務項目的插入、查找、更新和 刪除即可。此外,在本發明中,還需要說明的是,在以上所描述的SIP無狀 態代理和方法處理過程中的消息解析過程不同於SIP UA中的消息解 析過程。在本發明中,消息解析處理僅僅需要部分地解析所接收到的 SIP信令消息即可,即,只要能夠確定所接收消息的類型,源和目標 地址、上一跳地址等以便計算亊務ID即可。因此,在本發明中,可以 使用一個部分解析器(partial parser),以便提高解析效羋以及降低 解析開銷。並且,在根據本發明的方法和SIP無狀態代理中,如果在 SIP無狀態代理之前已經存在了其它的SIP操作並且獲知了消息類型 和消息源,則在該SIP無狀態代理中能夠利用在所述先前的SIP搮作 中進行消息解析的結果。在這種情況下,在如困4和9所示的方法的 處理流程中,可以省略其中關於消息解析的步稞。這樣,能夠進一步 減少在SIP無狀態代理中進行消息解析的開銷。另外,雖然以上是在圖l所示的典型的SIP應用體系結構中對本 發明在SIP無狀態代理中的應用進行了描述,但是,顯然應當明白, 本發明的原理除了可以被應用在SIP無狀態代理中之外,還可以被應 用在位於SIP終端和SIP應用伺服器之間並處於SIP應用伺服器前端 的其它網絡設備、例如路由器、邊緣伺服器等中。此外,顯然,根據本發明的上述方法的各個操作過程也可以以存 儲在各種機器可讀的存儲介質中的計算機可執行程序的方式實現。而且,本發明的目的也可以通過下述方式實現將存儲有上述可 執行程序代碼的存儲介質直接或者間接地提供給系統或設備,並且該 系統或設備中的計算機或者中央處理單元(CPU)讀出並執行上述程 序代碼。此時,只要該系統或者設備具有執行程序的功能,則實施的方式 不局限於程序,並且該程序也可以是任意的形式,例如,目標程序、 解釋器執行的程序或者提供給作業系統的腳本程序等上述這些機器可讀存儲介質包括但不限於各種存儲器和存儲單 元,半導體設備,磁碟單元例如光、磁和磁光碟,以及其它適於存儲 信息的介質等。另外,客戶計算機通過連接到網際網路上的相應網站,並且將依據 本發明的電腦程式代碼下栽和安裝到計算機中然後執行該程序,也 可以實現本發明。最後,還需要說明的是,在本文中,諸如左和右、笫一和第二等 之類的關係術語僅僅用來將一個實體或者操作與另 一個實體或搮作區 分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實 際的關係或者順序。而且,術語"包括"、"包含"或者其任何其他 變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方 法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其 他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要 素。在沒有更多限制的情況下,由語句"包括一個……"限定的要素, 並不排除在包括所述要素的過程、方法、物品或者設備中還存在另外 的相同要素。以上雖然結合附圖詳細描述了本發明的實施例,但是應當明白, 上面所描述的實施方式只是用於說明本發明,而並不構成對本發明的 限制。對於本領域的技術人員來說,可以對上述實施方式做出各種修 改和變更而不背離本發明的實質和範圍。因此,本發明的範圍僅由所 附權利要求及其等效含義來限定。
權利要求
1.一種用於在會話發起協議應用體系結構、即SIP應用體系結構中拒絕所接收的冗餘重傳的SIP消息的方法,其中所述SIP消息的消息類型和傳輸方向是已知的,所述方法包括以下步驟(a)根據所述SIP消息的傳輸方向,轉發所有從SIP應用伺服器發往SIP終端的SIP消息;以及(b)根據所述SIP消息的傳輸方向,判斷所述接收的、從SIP終端發往SIP應用伺服器的SIP消息是否為冗餘重傳的,並且丟棄所接收的所有從SIP終端冗餘重傳至SIP應用伺服器的SIP消息,然後根據所述丟棄的SIP消息的消息類型,對所丟棄的SIP消息重新做出應答。
2. 根據權利要求l所述的方法,還包括如下步驟 對所接收的SIP消息進行事務查詢,在亊務表中查找是否存在包含了與所接收的SIP消息相對應的亊務信息的亊務項目,其中,所述事務信息包括與SIP消息有關的事務ID、消息到達時 間、相應的響應。
3. 根據權利要求2所述的方法,還包括如下步驟 如果在亊務表中沒有找到所述事務項目,並且所述接收的SIP信令消息為一個請求,則在所述事務表中插入一個新的事務項目,用於 記錄與該消息相對應的事務信息。
4. 根據權利要求2所述的方法,其中,所述步驟(a)進一步包 括如下步驟當在所迷事務表中找到了所述亊務項目,並且從SIP應用伺服器 發往SIP終端的SIP消息是響應或確認ACK的第一次傳輸時,將該 消息記錄在所述事務表的所述事務項目中。
5. 根據權利要求2所述的方法,其中,所述步驟(b)進一步包 括步驟如果所述接收的從SIP終端發往SIP應用伺服器的SIP消息不是 冗餘重傳的,則將所述消息記錄在所述亊務表的所述亊務項目中,並 且轉發該消息,
6. 根據權利要求2所述的方法,其中,步驟(b)進一步包括如 下步驟如果所述接收的從SIP終端發往SIP應用伺服器的SIP消息是冗 餘重傳的,則丟棄所述冗餘重傳的SIP消息,並且, 當所述丟棄的SIP消息為一個請求時確定所述事務表的所述事務項目中是否存在與該請求相對應 的響應;如果存在所述相對應的響應,則使用該響應對該請求直接做 出應答,如果不存在所述相對應的響應,則直接丟棄該消息; 當所述丟棄的SIP消息為INVITE事務的最終響應時 確定是否接收到相應的確認ACK;如果已經接收到了所述確認,則用該確認做出應答;以及 如果還沒有接收到,則等待直到接收到所述確認為止,並且 將所述確認重發預定次數。
7. 根據權利要求2到6中任何一項權利要求所述的方法,其中, 亊務表是哈希表、以及包括循環亊務項目表和哈希表的兩級事務表中 的一種。
8. 根據權利要求l到6中任何一項權利要求所述的方法,其中, 所述方法在位於SIP終端和SIP應用伺服器之間並且處於SIP應用服 務器的前端的網絡設備中執行。
9. 根據權利要求8所述的方法,其中,所述網絡設備為SIP無狀 態代理。
10. 根據權利要求1到6中任何一項權利要求所述的方法,其中, 所述SIP消息的消息類型和傳輸方向是通過對所接收的SIP消息進行 部分消息解析獲得的。
11. 一種用在會話發起協議應用體系結構、即SIP應用體系結構 中拒絕所接收的冗餘重傳的SIP消息的重傳拒絕設備,其中所述SIP 消息的消息類型和傳輸方向是已知的,所述設備包括重傳識別器,用於確定所述接收的從SIP終端發往SIP應用服務 器的SIP消息是否為冗餘重傳的;以及消息處理器,用於轉發所接收的所有從SIP應用伺服器發往SIP 終端的SIP消息,丟棄所接收的所有從SIP終端冗餘重傳至SIP應用 伺服器的SIP消息,並且根據所述丟棄的SIP消息的消息類型,對所 丟棄的SIP消息重新做出應答。
12. 如權利要求11所述的重傳拒絕設備,還包括 亊務查詢及生成器,用於對所接收的SIP消息進行事務查詢,在亊務表中查找是否存在與所接收的SIP消息相對應的事務信息,其中,所述亊務信息包括與SIP消息有關的事務ID、消息到達時 間、相應的響應。
13. 如權利要求12所述的重傳拒絕設備,其中,所述事務查詢及 生成器還用於如果亊務表中不存在相應的事務信息,而且所述SIP消 息為一個請求,則在事務表中創建一個亊務項目,用於記錄與該消息 相對應的亊務信息。
14. 根據權利要求12所述的重傳拒絕設備,其中,所述消息處理 器還用於當在所述亊務表中找到了所述亊務項目,並且從SIP應用服 務器發往SIP終端的SIP消息是響應或確認ACK的第一次傳輸時, 將該消息記錄在所述亊務表的所述事務項目中.
15. 根據權利要求12所述的重傳拒絕設備,其中,所述消息處理 器還用於如果所述接收的從SIP終端發往SIP應用伺服器的SIP消息 不是冗餘重傳的,則將所述消息記錄在所述事務表的所述事務項目中, 並且轉發該消息。
16. 根據權利要求12所述的重傳拒絕設備,其中,所述消息處理 器還用於執行下述功能如果所述接收的從SIP終端發往SIP應用伺服器的SIP消息是冗 餘重傳的,則丟棄所述冗餘重傳的SIP消息,並且, 當所迷丟棄的SIP消息為一個請求時確定所述事務表的所述事務項目中是否存在與該請求相對應 的響應;如果存在所述相對應的響應,則使用該響應對該請求直接做 出應答,如果不存在所述相對應的響應,則直接丟棄該消息;以及 當所述丟棄的SIP消息為INVITE事務的最終響應時 確定是否接收到相應的確認ACK;如果已經接收到了所述確認,則用該確認做出應答;以及 如果還沒有接收到,則等待直到接收到所述確認為止,並且 將所述確認重發預定次數。
17. 根據權利要求11到16中任何一項權利要求所述的重傳拒絕 設備,被包括在位於SIP終端和SIP應用伺服器之間並且處於SIP應 用伺服器的前端的網絡設備中。
18. 根據權利要求17所述的重傳拒絕設備,其中,所述網絡設備 為SIP無狀態代理、路由器、邊緣伺服器之一.
19. 根據權利要求11到16中任何一項權利要求所述的重傳拒絕 設備,其中,所述SIP信令消息的消息類型和傳輸方向是通過對所接 收的SIP消息進行部分消息解析獲得的。
20. —種用在會話發起協議應用體系結構、即SIP應用體系結構 中的網絡設備,位於SIP終端和SIP應用伺服器之間並且處於SIP應 用伺服器的前端,用於拒絕所接收的會話發起協議信令消息、即SIP 消息的冗餘重傳,所述網絡設備包括亊務表,包括存儲了所述SIP信令消息的事務信息的事務項目; 如權利要求11至16中任何一項權利要求所述的重傳拒絕設備。
21. 根據權利要求20所述的網絡設備,其中,所述亊務表是哈希 表、以及包括循環亊務項目表和哈希表的兩級事務表中的一種。
22. 根據權利要求20或21所述的網絡設備,其中,所述網絡設 備是為SIP無狀態代理、路由器、邊緣伺服器之一。
23. —種用於在會話發起協議應用體系結構、即SIP應用體系結 構中快速地拒絕所接收的冗餘重傳的SIP消息的方法,包括如下步驟對所接收的SIP消息進行重傳檢測,以便確定所述消息是否為重 傳的消息;一旦檢測到消息的重傳,就更新消息發送方的重傳指示器; 根據消息發送方的重傳指示器的值,對所接收的SIP消息進行消息分類,以便確定所述消息是否比較傾向於進行重傳;以及對於比較傾向於進行重傳的SIP消息,執行根據權利要求1至6中任何一項所述的方法的步驟。
24. 根據權利要求23所述的方法,其中,所述方法在位於SIP終 端和SIP應用伺服器之間並且處於SIP應用伺服器的前端的網絡設備 中執行。
25. 根據權利要求23所述的方法,其中,所述網絡設備為網絡設 備是為SIP無狀態代理、路由器、邊緣伺服器之一。
26. 根據權利要求23到25中任何一項權利要求所述的方法,其 中,所述SIP消息的消息類型和傳輸方向是通過對所接收的SIP消息 進行部分消息解析獲得的。
27. —種用在會話發起協議應用體系結構、即SIP應用體系結構 中的網絡設備,位於SIP終端和SIP應用伺服器之間並且處於SIP應 用伺服器的前端,用於拒絕所接收的冗餘重傳的SIP消息,所述網絡 設備包括亊務表,包括存儲了所述SIP消息的亊務信息的事務項目; 重傳檢測器,用於對所接收的SIP消息進行重傳檢測,以便確定 所述消息是否為重傳的消息,並且一旦檢測到消息的重傳,就通知消息分類器更新消息發送方的重傳指示器;消息分類器,用於根據消息發送方的重傳指示器的值,對所接收的SIP消息進行消息分類,以便確定所述消息是否比較傾向於進行重 傳;以及如權利要求11至16中任何一項權利要求所述的重傳拒絕設備, 用於對比較傾向於進行重傳的SIP消息進行重傳拒絕處理.
28. 根據權利要求27所述的網絡設備,其中,所述事務表是哈希 表、以及包括循環事務項目表和哈希表的兩級事務表中的一種。
29. 根據權利要求27所述的網絡設備,其中,所述重傳檢測器的 核心部分為三狀態的Bloom過濾器。
30. 根據權利要求27所述的網絡設備,其中,所述消息分類器的 核心部分為可計數的Bloom過濾器。
31. 根據權利要求27至30中任何一項所述的網絡設備,其中, 所述網絡設備為SIP無狀態代理、路由器、邊緣伺服器之一。
全文摘要
本發明提供了一種用於在SIP應用體系結構中拒絕所接收的冗餘重傳的SIP消息的方法,所述方法包括根據SIP消息的傳輸方向,轉發所有從SIP應用伺服器發往SIP終端的SIP消息,並且丟棄所接收的所有從SIP終端冗餘重傳至SIP應用伺服器的SIP消息,然後根據所述丟棄的消息的消息類型,對所丟棄的SIP消息做出相應的應答。此外,本發明還提供了相應的重傳拒絕設備以及包括它的網絡設備,並且還提供了用於在存儲空間有限的情況下快速地拒絕冗餘重傳的SIP消息的方法和設備。本發明可以應用在位於SIP應用伺服器前端的網絡設備、例如SIP無狀態代理中。
文檔編號H04L29/06GK101163139SQ20061014236
公開日2008年4月16日 申請日期2006年10月11日 優先權日2006年10月11日
發明者博 楊, 王慶波, 田瑞雄, 胡進鋒, 薇 陸 申請人:國際商業機器公司