http://blog.csdn.net/gnuhpc/article/details/5511709
1.
什么是Proxy模式?
按照RFC3261中的定義,Proxy服務(wù)器是一個(gè)中間的實(shí)體,它本身即作為客戶端也作為服務(wù)端,為其他客戶端提供請(qǐng)求的轉(zhuǎn)發(fā)服務(wù)。一個(gè)
Proxy服務(wù)器首先提供的是路由服務(wù),也就是說保證請(qǐng)求被發(fā)到更加”靠近”目標(biāo)用戶的地方。Proxy服務(wù)器在施行某些強(qiáng)制政策時(shí)也有用(比如,確認(rèn)一
個(gè)用戶是否允許建立一個(gè)呼叫等)。而一個(gè)Proxy服務(wù)器翻譯,如果有需要的話在轉(zhuǎn)發(fā)消息前會(huì)重寫該請(qǐng)求消息。
2.
什么是B2BUA?
按照RFC3261中的定義,背對(duì)背的用戶代理(B2BUA)是一個(gè)邏輯實(shí)體,它就像用戶代理服務(wù)器(UAS)一樣接收和處理請(qǐng)求。為了決定該如何應(yīng)答一個(gè)請(qǐng)求,B2BUA就像UAC一樣工作,并且發(fā)出請(qǐng)求。但是它不像代理服務(wù)器(proxy),它維持對(duì)話狀態(tài),并且參與已經(jīng)建立的對(duì)話中的每一個(gè)請(qǐng)求。由于它是直接的UAC和UAS的串連,所以,不需要對(duì)他有額外的定義。
3.Proxy模式和B2BUA模式有什么不同?各有什么優(yōu)缺點(diǎn)?
最常見的Proxy服務(wù)器僅僅完成兩個(gè)UA的連接。而B2BUA服務(wù)器則是一個(gè)智能的實(shí)體,更為強(qiáng)大,它有一些Proxy無法做到的功能,它更靈活,并漸漸取代一般的Proxy服務(wù)器而成為SIP服務(wù)器的主流。
根據(jù)sip-router.org
的描述,Proxy模式和B2BUA的最大區(qū)別是前者是事務(wù)有狀態(tài)(transaction-stateful),而后者是呼叫有狀態(tài)(call stateful)。
也就是說,代理服務(wù)器只在SIP事務(wù)交互時(shí)(會(huì)話的開始和終結(jié))保持狀態(tài),而并不是在整個(gè)呼叫中維護(hù)狀態(tài)。而B2BUA則在兩個(gè)或多個(gè)UA通過某種手段互
聯(lián)時(shí)起作用,B2BUA在整個(gè)呼叫中會(huì)維護(hù)一些狀態(tài)(通常是內(nèi)存中的一些結(jié)構(gòu))。B2BUA與SIP代理服務(wù)器不同,B2BUA可以接收呼叫,并能對(duì)其進(jìn)
行修改,以其它形式代表發(fā)起呼叫的UA向終端目標(biāo)發(fā)起呼叫,并能充當(dāng)呼叫雙方的媒體協(xié)商代表或?qū)ζ溥M(jìn)行監(jiān)控管理。B2BUA可以對(duì)經(jīng)過它的來自于私網(wǎng)的呼
叫進(jìn)行處理完成NAT的穿越。為適應(yīng)所有類型NAT的環(huán)境,B2BUA也需要做媒體流的中介。這就讓B2BUA有了一些Proxy沒有的特性,例
如,B2BUA可以終結(jié)一個(gè)已經(jīng)存在的呼叫,而Proxy不行。運(yùn)行商常常為了不泄露其網(wǎng)絡(luò)拓?fù)涠嗍褂肂2BUA。在B2BUA中,我們可以提供點(diǎn)對(duì)點(diǎn)
呼叫的增值業(yè)務(wù)能力或者多點(diǎn)呼叫控制能力,而其他的SIP服務(wù)器,比如Proxy就不能提供如此復(fù)雜的增值業(yè)務(wù)。而所有這一切的背后都是由B2BUA有一
個(gè)寬泛的定義所致,這使得它有無限的能力去擴(kuò)展(當(dāng)然,這也是爭(zhēng)議所在)。我們可以看下邊的這個(gè)結(jié)構(gòu)圖:
我們舉幾個(gè)B2BUA獨(dú)有支持的業(yè)務(wù):
a.第三方呼叫控制機(jī)(3PCC)
這個(gè)業(yè)務(wù)的特點(diǎn)是一個(gè)實(shí)體(往往是一個(gè)控制器)為兩個(gè)或多個(gè)對(duì)端建立連接,常用于運(yùn)營(yíng)商業(yè)務(wù)和電話會(huì)議。一些典型的應(yīng)用是:在線計(jì)費(fèi)、QoS、資源
優(yōu)先分配,呼叫轉(zhuǎn)移、點(diǎn)擊撥號(hào)、呼叫中階段通知送達(dá)等。由于例如Proxy服務(wù)器都是維護(hù)一個(gè)被動(dòng)的非呼叫有狀態(tài)是無法發(fā)起這樣的業(yè)務(wù)的,這就成了
B2BUA的專利。用B2BUA可以自動(dòng)的觸發(fā)3PCC動(dòng)作,比如在一個(gè)在線計(jì)費(fèi)系統(tǒng)中,根據(jù)余額來掛掉一個(gè)呼叫。當(dāng)然,這些也可以通過一個(gè)遠(yuǎn)程管理控制
(remote administrative control (OSS))系統(tǒng)來完成,比如,去邀請(qǐng)多方加入一個(gè)多點(diǎn)會(huì)議會(huì)話中。
b.互操作性的網(wǎng)絡(luò)互連功能(IWF
)
IWF(Inter-working Functions )是為了解決SIP強(qiáng)大的擴(kuò)展性所帶來的詬病,它對(duì)一個(gè)強(qiáng)大的SIP服務(wù)器有比較寬泛的定義,來完成對(duì)不同協(xié)議實(shí)現(xiàn)或者支持不同能力的SIP客戶端的互連。當(dāng)它被使用在客戶端和網(wǎng)絡(luò)時(shí),它實(shí)際就是一種接入設(shè)備。
例如:
- 通過添加或者刪除IMS中對(duì)于連接ISM網(wǎng)絡(luò)很重要的SIP協(xié)議擴(kuò)展(AKA P-Headers) 來對(duì)SIP終端和IMS 網(wǎng)絡(luò)進(jìn)行連接。
- 連接兩個(gè)不同會(huì)話計(jì)時(shí)器設(shè)置的客戶端。
- 通過在兩個(gè)不同控制會(huì)話類型中進(jìn)行轉(zhuǎn)述來連接有不同媒體能力和不同SDP消息的兩個(gè)終端。
- 來支持不同的網(wǎng)絡(luò)類型(v4,v6)、和不同的傳輸類型,TCP/UDP/SCTP/TLS
c.多點(diǎn)呼叫管理
這個(gè)場(chǎng)景中多個(gè)CPE(CPE是“CustomerPremiseEquipment”的縮寫,直譯為“用戶前端設(shè)備”)與B2BUA相連,由B2BUA為所有CPE提供業(yè)務(wù)。
d.融入IMS網(wǎng)絡(luò)
在3GPP的IMS標(biāo)準(zhǔn)中,IMS的大量邏輯實(shí)體都是定義為B2BUA模式的,這樣做的原因是增值業(yè)務(wù)往往都是呼叫有狀態(tài)的,而這個(gè)要求遠(yuǎn)遠(yuǎn)超過了
基本呼叫代理所能及的范圍。在B2BUA應(yīng)用服務(wù)器之上的應(yīng)用可以充分的完成SIP UA、SIP注冊(cè)服務(wù)器、SIP代理服務(wù)器等角色。
我們?cè)诮o出是一些B2BUA的應(yīng)用例子:
- 在線計(jì)費(fèi)、預(yù)付費(fèi)功能
- 支持資源優(yōu)先權(quán)和QoS的服務(wù)器
- 多點(diǎn)會(huì)議服務(wù)器
- IVR服務(wù)器
- PBX應(yīng)用和軟交換
- 應(yīng)用層網(wǎng)關(guān)
- 防火墻/NAT穿越應(yīng)用
- 私有服務(wù)器
- 第三方呼叫控制應(yīng)用
- 業(yè)務(wù)生成環(huán)境運(yùn)行時(shí)引擎
- 會(huì)話邊界控制器
- IMS中的S-CSCF/P-CSCF/I-CSCF
- SIP網(wǎng)間互聯(lián)網(wǎng)關(guān)
- 安全網(wǎng)關(guān)
- 語音呼叫連續(xù)性業(yè)務(wù)
另一方面,B2BUA面臨著諸多挑戰(zhàn),比如產(chǎn)品上市周期、一致性、互操作性,為私有業(yè)務(wù)提供定制,支持高可用性和冗余等等。尤其是在可伸縮性上很容
易成為瓶頸。一個(gè)健壯的B2BUA框架應(yīng)該有模塊化的程序設(shè)計(jì)結(jié)構(gòu)以應(yīng)對(duì)增長(zhǎng)的靈活性、抽象性需求。對(duì)于通信雙方來說,呼叫控制信令和媒體流在傳輸過程中
均增加了一跳,隨著用戶的增加,B2BUA將成為系統(tǒng)瓶頸。
我們舉一個(gè)B2BUA是如何實(shí)現(xiàn)PBX的例子,
B2BUA擔(dān)當(dāng)兩臺(tái)UA(用戶代理服務(wù)器)功能,其中一臺(tái)模擬接收器,一臺(tái)模擬發(fā)送器,二者之間安裝有控制邏輯。在這種控制邏輯下,B2BUA能控制
SIP數(shù)據(jù)流,將其轉(zhuǎn)換為PSTN信令模式或廠商的專用控制協(xié)議方式,這是大多數(shù)廠商采用的PBX方式.另外一些SIP廠商采用的是純SIP代理方式,它
不同于通常意義上的代理服務(wù)器。運(yùn)用SIP代理服務(wù),SIP信令流直接在兩UA間傳輸。毫無疑問,完善的SIP網(wǎng)絡(luò)缺少不了B2BUA功能,因?yàn)橐B接到
PSTN。但如果要在VoIP網(wǎng)關(guān)的核心實(shí)現(xiàn)B2BUA功能,則難度大多了。事實(shí)上,PBX廠商提供B2BUA功能實(shí)現(xiàn)成本要比SIP代理高得多,部分原
因是體系結(jié)構(gòu)實(shí)現(xiàn)難。由于SIP代理在呼叫建立階段不直接處理信令流,因而保持有關(guān)會(huì)話的狀態(tài)信息要比B2BUA方式少。而且,SIP代理的支撐硬件也比
B2BUA方式少,在同一平臺(tái)易于擴(kuò)展支持更多UA。而且,企業(yè)電話運(yùn)營(yíng)所需的核心功能基于PBX實(shí)現(xiàn),而不是B2BUA,這進(jìn)一步增加了成本。
另外,SIP代理方式在安全性與可靠性方面也略勝一籌。由于B2BUA會(huì)重寫數(shù)據(jù)包核心,存在潛在弱點(diǎn),有受攻擊可能;而SIP代理在處理進(jìn)程中僅
暴露SIP標(biāo)題。B2BUA操作失敗的可能性也高于SIP代理方式,從而會(huì)影響到所有呼叫通過;SIP代理失敗僅影響新到呼叫,現(xiàn)行呼叫或已到達(dá)目標(biāo)并為
設(shè)備所俘獲的呼叫并不受影響。
最后,SIP代理服務(wù)器比B2BUA適應(yīng)性更強(qiáng)。由于B2BUA會(huì)中斷媒體會(huì)話,如果B2BUA不支持,UA功能就很難發(fā)揮。這意味著,如果UA功
能實(shí)現(xiàn)與B2BUA各異,一家廠商的電話就有可能無法與另一廠商的協(xié)同工作。運(yùn)用SIP代理服務(wù)器就不一樣了,UA協(xié)議會(huì)話功能直接實(shí)現(xiàn)。
參考文獻(xiàn):
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
|