代理(Proxy)和背靠背用戶代理(B2BUA)

1. 什麼是Proxy模式?

按照RFC3261中的定義,Proxy服務器是一箇中間的實體,它本身即作爲客戶端也作爲服務端,爲其他客戶端提供請求的轉發服務。一個Proxy服務器首先提供的是路由服務,也就是說保證請求被髮到更加”靠近”目標用戶的地方。Proxy服務器在施行某些強制政策時也有用(比如,確認一個用戶是否允許建立一個呼叫等)。而一個Proxy服務器翻譯,如果有需要的話在轉發消息前會重寫該請求消息。

 

2. 什麼是B2BUA?

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

 

3.Proxy模式和B2BUA模式有什麼不同?各有什麼優缺點?

最常見的Proxy服務器僅僅完成兩個UA的連接。而B2BUA服務器則是一個智能的實體,更爲強大,它有一些Proxy無法做到的功能,它更靈活,並漸漸取代一般的Proxy服務器而成爲SIP服務器的主流。

 

根據sip-router.org 的描述,Proxy模式和B2BUA的最大區別是前者是事務有狀態(transaction-stateful),而後者是呼叫有狀態(call stateful)。 也就是說,代理服務器只在SIP事務交互時(會話的開始和終結)保持狀態,而並不是在整個呼叫中維護狀態。而B2BUA則在兩個或多個UA通過某種手段互聯時起作用,B2BUA在整個呼叫中會維護一些狀態(通常是內存中的一些結構)。B2BUA與SIP代理服務器不同,B2BUA可以接收呼叫,並能對其進行修改,以其它形式代表發起呼叫的UA向終端目標發起呼叫,並能充當呼叫雙方的媒體協商代表或對其進行監控管理。B2BUA可以對經過它的來自於私網的呼叫進行處理完成NAT的穿越。爲適應所有類型NAT的環境,B2BUA也需要做媒體流的中介。這就讓B2BUA有了一些Proxy沒有的特性,例如,B2BUA可以終結一個已經存在的呼叫,而Proxy不行。運行商常常爲了不泄露其網絡拓撲而多使用B2BUA。在B2BUA中,我們可以提供點對點呼叫的增值業務能力或者多點呼叫控制能力,而其他的SIP服務器,比如Proxy就不能提供如此複雜的增值業務。而所有這一切的背後都是由B2BUA有一個寬泛的定義所致,這使得它有無限的能力去擴展(當然,這也是爭議所在)。我們可以看下邊的這個結構圖:

dRAD 1(1)

 

我們舉幾個B2BUA獨有支持的業務:

a.第三方呼叫控制機(3PCC)

dRAD 2(1)

這個業務的特點是一個實體(往往是一個控制器)爲兩個或多個對端建立連接,常用於運營商業務和電話會議。一些典型的應用是:在線計費、QoS、資源優先分配,呼叫轉移、點擊撥號、呼叫中階段通知送達等。由於例如Proxy服務器都是維護一個被動的非呼叫有狀態是無法發起這樣的業務的,這就成了B2BUA的專利。用B2BUA可以自動的觸發3PCC動作,比如在一個在線計費系統中,根據餘額來掛掉一個呼叫。當然,這些也可以通過一個遠程管理控制(remote administrative control (OSS))系統來完成,比如,去邀請多方加入一個多點會議會話中。

b.互操作性的網絡互連功能(IWF 

IWF(Inter-working Functions )是爲了解決SIP強大的擴展性所帶來的詬病,它對一個強大的SIP服務器有比較寬泛的定義,來完成對不同協議實現或者支持不同能力的SIP客戶端的互連。當它被使用在客戶端和網絡時,它實際就是一種接入設備。

dRAD 3(1)

例如:

  • 通過添加或者刪除IMS中對於連接ISM網絡很重要的SIP協議擴展(AKA P-Headers) 來對SIP終端和IMS 網絡進行連接。
  • 連接兩個不同會話計時器設置的客戶端。
  • 通過在兩個不同控制會話類型中進行轉述來連接有不同媒體能力和不同SDP消息的兩個終端。
  • 來支持不同的網絡類型(v4,v6)、和不同的傳輸類型,TCP/UDP/SCTP/TLS

c.多點呼叫管理

這個場景中多個CPE(CPE是“CustomerPremiseEquipment”的縮寫,直譯爲“用戶前端設備”)與B2BUA相連,由B2BUA爲所有CPE提供業務。

d.融入IMS網絡

在3GPP的IMS標準中,IMS的大量邏輯實體都是定義爲B2BUA模式的,這樣做的原因是增值業務往往都是呼叫有狀態的,而這個要求遠遠超過了基本呼叫代理所能及的範圍。在B2BUA應用服務器之上的應用可以充分的完成SIP UA、SIP註冊服務器、SIP代理服務器等角色。

我們在給出是一些B2BUA的應用例子:

  • 在線計費、預付費功能
  • 支持資源優先權和QoS的服務器
  • 多點會議服務器
  • IVR服務器
  • PBX應用和軟交換
  • 應用層網關
  • 防火牆/NAT穿越應用
  • 私有服務器
  • 第三方呼叫控制應用
  • 業務生成環境運行時引擎
  • 會話邊界控制器
  • IMS中的S-CSCF/P-CSCF/I-CSCF
  • SIP網間互聯網關
  • 安全網關
  • 語音呼叫連續性業務

另一方面,B2BUA面臨着諸多挑戰,比如產品上市週期、一致性、互操作性,爲私有業務提供定製,支持高可用性和冗餘等等。尤其是在可伸縮性上很容易成爲瓶頸。一個健壯的B2BUA框架應該有模塊化的程序設計結構以應對增長的靈活性、抽象性需求。對於通信雙方來說,呼叫控制信令和媒體流在傳輸過程中均增加了一跳,隨着用戶的增加,B2BUA將成爲系統瓶頸。

我們舉一個B2BUA是如何實現PBX的例子, B2BUA擔當兩臺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協議會話功能直接實現。

 

參考文獻:

1.http://colocation.tmcnet.com/topics/sip-and-open-standards/articles/18257-back-back-user-agents-telecommunications.htm

2.http://blog.sina.com.cn/s/blog_414e587f01000b9g.html

 

關於SIP的呼叫/對話/會話/事務概念,請參看:http://blog.csdn.net/gnuhpc/archive/2009/12/28/5089613.aspx


From :http://blog.csdn.net/gnuhpc/article/details/5511709

發佈了86 篇原創文章 · 獲贊 14 · 訪問量 64萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章