2008年1月28日 星期一

理解SIP 的B2BUA

RFC3261對B2BUA做了如下定義:
背對背的用戶代理(B2BUA)是一個邏輯實體,它就像用戶代理服務器(UAS)一樣接收和處理請求。為了決定該如何應答一個請求,B2BUA就像UAC一樣工作,並且發出請求。但是它不像代理服務器(proxy),它維持對話狀態,並且參與已經建立的對話中的每一個請求。由於它是直接的UAC和UAS的串連,所以,不需要對他有額外的定義。

B2BUA與SIP代理服務器不同,B2BUA可以接收呼叫,並能對其進行修改,以其它形式代表發起呼叫的UA向終端目標發起呼叫,並能充當呼叫雙方的媒體協商代表或對其進行監控管理。B2BUA可以對經過它的來自於私網的呼叫進行處理完成NAT的穿越。為適應所有類型NAT的環境,B2BUA也需要做媒體流的中介,因此,對於通信雙方來說,呼叫控制信令和媒體流在傳輸過程中均增加了一跳,隨著用戶的增加,B2BUA將成為系統瓶頸。
B2BUA典型的應用有:PBX,Third Party Call Control(3PCC),FW/NAT traversal等.
B2BUA是如何實現PBX的呢? B2BUA實質上為一類SIP服務器,擔當兩台UA(用戶代理服務器)功能,其中一台模擬接收器,一台模擬發送器,二者之間安裝有控制邏輯。在這種控制邏輯下,B2BUA能控制SIP數據流,將其轉換為PSTN信號模式或廠商的專用控制協議方式,這是大多數廠商採用的PBX方式.
另外一些SIP廠商採用的是純SIP代理方式,它不同於通常意義上的代理服務器。運用SIP代理服務,SIP信號流直接在兩UA間傳輸。
毫無疑問,完善的SIP網缺少不了B2BUA功能,因為要連接到PSTN。但如果要在VoIP網關的核心實現B2BUA功能,則難度大多了。
  事實上,PBX廠商提供B2BUA功能實現成本要比SIP代理高得多,部分原因是體系結構實現難。由於SIP代理在呼叫建立階段不直接處理信號流,因而保持有關會話的狀態信息要比B2BUA方式少。而且,SIP代理的支撐硬件也比B2BUA方式少,在同一平台易於擴展支持更多UA。而且,企業電話運營所需的核心功能基於PBX實現,而不是B2BUA,這進一步增加了成本。
  另外,SIP代理方式在安全性與可靠性方面也略勝一籌。由於B2BUA會重寫數據包核心,存在潛在弱點,有受攻擊可能;而SIP代理在處理進程中僅暴露SIP標題。B2BUA操作失敗的可能性也高於SIP代理方式,從而會影響到所有呼叫通過;SIP代理失敗僅影響新到呼叫,現行呼叫或已到達目標並為設備所俘獲的呼叫並不受影響。
  最後,SIP代理服務器比B2BUA適應性更強。由於B2BUA會中斷媒體會話,如果B2BUA不支持,UA功能就很難發揮。這意味著,如果UA功能實現與B2BUA各異,一家廠商的電話就有可能無法與另一廠商的協同工作。運用SIP代理服務器就不一樣了,UA協議會話功能直接實現。

沒有留言: