【NGN學習筆記】6 代理(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

?




本文轉自gnuhpc博客園博客,原文鏈接http://www.cnblogs.com/gnuhpc/archive/2012/12/11/2813499.html,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392192.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392192.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392192.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分布與并行計算—并行計算π(Java)

并行計算π public class pithread extends Thread {private static long mini1000000000;private long start,diff;double sum0;double cur1/(double)mini;public pithread(long start,long diff) {this.startstart;this.diffdiff;}Overridepublic void run() {long istart;f…

linux復制文件跳過相同,Linux cp指令,怎么跳過相同的文件

1、使用cp命令的-n參數即可跳過相同的文件 。2、cp命令使用詳解:1)、用法:cp [選項]... [-T] 源文件 目標文件或:cp [選項]... 源文件... 目錄或:cp [選項]... -t 目錄 源文件...將源文件復制至目標文件,或將多個源文件…

eclipse類自動生成注釋

1.創建新類時自動生成注釋 window->preference->java->code styple->code template 當你選擇到這部的時候就會看見右側有一個框顯示出code這個選項,你點開這個選項,點一下他下面的New …

rman恢復

--建表create table sales( product_id number(10), sales_date date, sales_cost number(10,2), status varchar2(20));--插數據insert into sales values (1,sysdate-90,18.23,inactive);commit; --啟用rman做全庫備份 運行D:\autobackup\rman\backup_orcl.bat 生成…

微軟大數據_我對Microsoft的數據科學采訪

微軟大數據Microsoft was one of the software companies that come to hire interns at my university for 2021 summers. This year, it was the first time that Microsoft offered any Data Science Internship for pre-final year undergraduate students.微軟是到2021年夏…

再次檢查打印機名稱 并確保_我們的公司名稱糟透了。 這是確保您沒有的方法。...

再次檢查打印機名稱 并確保by Dawid Cedrych通過戴維德塞德里奇 我們的公司名稱糟透了。 這是確保您沒有的方法。 (Our company name sucked. Here’s how to make sure yours doesn’t.) It is harder than one might think to find a good business name. Paul Graham of Y …

linux中文本查找命令,Linux常用的文本查找命令 find

一、常用的文本查找命令grep、egrep命令grep:文本搜索工具,根據用戶指定的文本模式對目標文件進行逐行搜索,先是能夠被模式匹配到的行。后面跟正則表達式,讓grep工具相當強大。-E之后還支持擴展的正則表達式。# grep [options] …

分布與并行計算—日志挖掘(Java)

日志挖掘——處理數據、計費統計 1、讀取附件中日志的內容,找出自己學號停車場中對應的進出車次數(in/out配對的記錄數,1條in、1條out,視為一個車次,本日志中in/out為一一對應,不存在缺失某條進或出記錄&a…

《人人都該買保險》讀書筆記

內容目錄: 1.你必須知道的保險知識 2.家庭理財的必需品 3.保障型保險產品 4.儲蓄型保險產品 5.投資型保險產品 6.明明白白買保險 現在我所在的公司Manulife是一家金融保險公司,主打業務就是保險,因此我需要熟悉一下保險的基礎知識&#xff0c…

Linux下查看txt文檔

當我們在使用Window操作系統的時候,可能使用最多的文本格式就是txt了,可是當我們將Window平臺下的txt文本文檔復制到Linux平臺下查看時,發現原來的中文所有變成了亂碼。沒錯, 引起這個結果的原因就是兩個平臺下,編輯器…

如何擊敗騰訊_擊敗股市

如何擊敗騰訊個人項目 (Personal Proyects) Note from Towards Data Science’s editors: While we allow independent authors to publish articles in accordance with our rules and guidelines, we do not endorse each author’s contribution. You should not rely on an…

滑塊 組件_組件制作:如何使用鏈接的輸入創建滑塊

滑塊 組件by Robin Sandborg羅賓桑德伯格(Robin Sandborg) 組件制作:如何使用鏈接的輸入創建滑塊 (Component crafting: how to create a slider with a linked input) Here at Stacc, we’re huge fans of React and the render-props pattern. When it came time…

配置靜態IPV6 NAT-PT

一.概述: IPV6 NAT-PT( Network Address Translation - Port Translation)應用與ipv4和ipv6網絡互訪的情況,根據參考鏈接配置時出現一些問題,所以記錄下來。參考鏈接:http://www.cisco.com/en/US/tech/tk648/tk361/technologies_c…

linux 線程與進程 pid,linux下線程所屬進程號問題

這一段看《unix環境高級編程》,一個關于線程的小例子。#include#include#includepthread_t ntid;void printids(const char *s){pid_t pid;pthread_t tid;pidgetpid();tidpthread_self();printf("%s pid %u tid %u (0x%x)n",s,(unsigned int)pid,(unsigne…

python3虛擬環境中解決 ModuleNotFoundError: No module named '_ssl'

前提是已經安裝了openssl 問題 當我在python3虛擬環境中導入ssl模塊時報錯,報錯如下: (py3) [rootlocalhost Python-3.6.3]# python3 Python 3.6.3 (default, Nov 19 2018, 14:18:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux Type "help…

python 使用c模塊_您可能沒有使用(但應該使用)的很棒的Python模塊

python 使用c模塊by Adam Goldschmidt亞當戈德施密特(Adam Goldschmidt) 您可能沒有使用(但應該使用)的很棒的Python模塊 (Awesome Python modules you probably aren’t using (but should be)) Python is a beautiful language, and it contains many built-in modules that…

分布與并行計算—生產者消費者模型實現(Java)

在實際的軟件開發過程中,經常會碰到如下場景:某個模塊負責產生數據,這些數據由另一個模塊來負責處理(此處的模塊是廣義的,可以是類、函數、線程、進程等)。產生數據的模塊,就形象地稱為生產者&a…

通過Xshell登錄遠程服務器實時查看log日志

主要想總結以下幾點: 1.如何使用生成密鑰的方式來登錄Xshell連接遠端服務器 2.在遠程服務器上如何上傳和下載文件(下載log文件到本地) 3.如何實時查看log,提取錯誤信息 一. 使用生成密鑰的方式來登錄Xshell連接遠端服務器 ssh登錄…

如何將Jupyter Notebook連接到遠程Spark集群并每天運行Spark作業?

As a data scientist, you are developing notebooks that process large data that does not fit in your laptop using Spark. What would you do? This is not a trivial problem.作為數據科學家,您正在開發使用Spark處理筆記本電腦無法容納的大數據的筆記本電腦…

是銀彈嗎?業務基線方法論

Fred.Brooks在1987年就提出:沒有銀彈。沒有任何一項技術或方法可以能讓軟件工程的生產力在十年內提高十倍。 我無意挑戰這個理論,只想討論一個方案,一個可能大幅提高業務系統開發效率的方案。 方案描述 我管這個方案叫做“由基線擴展…