在前面的關(guān)于SIP和NAT問題的講座中,我們花費(fèi)了大量篇幅把整個(gè)關(guān)于SIP和NAT的各種問題做了比較全面和深入的探討,同時(shí),我們也介紹了各種針對(duì)NAT的解決方案,但是那些方案僅解決了SIP在互聯(lián)網(wǎng)環(huán)境下的局部問題,也沒有考慮到整個(gè)企業(yè)IPPBX環(huán)境所要求的其他業(yè)務(wù)能力的支持。盡管那些解決方案在某些特定的環(huán)境中實(shí)現(xiàn)了某些用戶的要求,但是它們本身還是具有一定的局限性和針對(duì)性。SBC則比較好地解決了我們討論的問題,但是目前在市場(chǎng)上很少看到對(duì)SBC技術(shù)的全面介紹和剖析,很多公司的SBC介紹也僅局限于市場(chǎng)需求,使用了太多市場(chǎng)語言把SBC,很多描述可能有一些含糊不清,另外,一些相關(guān)的技術(shù)問題也缺乏更多詳細(xì)說明,用戶在了解和學(xué)習(xí)這些相關(guān)知識(shí)時(shí)會(huì)產(chǎn)生很多困擾。
筆者雖然在差不多6年前開始接觸SBC,這期間也多多少少接觸了一些客戶,基本上了解一些客戶對(duì)SBC的需求和目前存在的潛在問題。為了結(jié)合我們的SIP系列講座,筆者今天對(duì)SBC做一個(gè)比較全面的剖析,盡可能覆蓋大部分用戶所關(guān)心的問題,這樣可以幫助SBC用戶能夠比較全面地對(duì)SBC有一個(gè)概括。我們討論的范圍從SBC使用背景和由來,市場(chǎng)需求,使用場(chǎng)景和存在的問題進(jìn)行一個(gè)基本梳理。筆者不會(huì)在這里討論過多某個(gè)SBC廠家的產(chǎn)品技術(shù)細(xì)節(jié),如果特別需要可能會(huì)適當(dāng)加入一點(diǎn)廠家的SBC內(nèi)容,幫助用戶理解SBC,否則讀者可能產(chǎn)生歧義。
筆者主要從幾個(gè)方面來剖析SBC的全貌,這些內(nèi)容包括:SBC的基本概念,SBC產(chǎn)生的背景原因,SBC的市場(chǎng)情況,SBC的核心功能,SBC運(yùn)營(yíng)商和企業(yè)客戶的使用場(chǎng)景,SBC的功能介紹,SBC錄音時(shí)的性能問題,SBC部署時(shí)的問題,SBC對(duì)SIP的流程的影響,SBC在IMS網(wǎng)絡(luò)中的角色,SBC虛擬化的可能性和基于開源解決方案等方面的內(nèi)容做一個(gè)全面的剖析(盡可能全面),幫助用戶全面了解SBC技術(shù)。
首先讓我們介紹一下SBC產(chǎn)生的背景。任何技術(shù)的產(chǎn)生都是基于一定的背景,只有客戶端需求越來越急迫的時(shí)候,一些對(duì)行業(yè)敏感的廠家就可能抓住機(jī)會(huì)來開發(fā)這樣的產(chǎn)品滿足消費(fèi)者。舉個(gè)例子,故事的大概過程是這樣的。當(dāng)年美國(guó)早期的淘金熱時(shí),Lee牛仔褲的暢銷就是因?yàn)長(zhǎng)ee的老板抓住了商機(jī)。當(dāng)時(shí)西部淘金時(shí)礦工抱怨說為什么沒有一條結(jié)實(shí)一點(diǎn)的褲子,同時(shí)褲兜的地方老是開裂,Lee當(dāng)年正好從事布匹的批發(fā)業(yè)務(wù),他琢磨了半天,把當(dāng)時(shí)做帆船的帆布經(jīng)過改造,結(jié)合褲子上打鉚釘?shù)膭?chuàng)意生產(chǎn)出了非常結(jié)實(shí)的牛仔褲。然后,Lee就開始在全世界大賣。這樣的例子數(shù)不勝數(shù)。VoIP的發(fā)展也是這樣,隨著VoIP的不斷發(fā)展,服務(wù)提供商不只提供一個(gè)簡(jiǎn)單的語音通話的功能,在實(shí)際的VoIP運(yùn)營(yíng)環(huán)境中,SBC設(shè)備沒有真正部署或應(yīng)用之前,市場(chǎng)上沒有專門的設(shè)備為服務(wù)提供商和服務(wù)提供商自己實(shí)現(xiàn)完整的對(duì)接解決方案,同時(shí)也沒有一套完整的解決方案來實(shí)現(xiàn)運(yùn)營(yíng)商和終端客戶之間的對(duì)接支持。為了滿足運(yùn)營(yíng)商服務(wù)的要求,很多廠家開始研發(fā)SBC做為一個(gè)運(yùn)營(yíng)商邊界網(wǎng)絡(luò)的設(shè)備來支持運(yùn)營(yíng)商的需求。在典型的應(yīng)用環(huán)境中,SBC作為運(yùn)營(yíng)商VoIP網(wǎng)絡(luò)邊界的互聯(lián)設(shè)備,這樣運(yùn)營(yíng)商之間可以實(shí)現(xiàn)通信和策略控制。在介紹SBC的細(xì)節(jié)之前,讓我們首先明確幾個(gè)基本的概念:
SBC的全稱是Session Border Controller。簡(jiǎn)單來說,SBC是部署在網(wǎng)絡(luò)邊界,用來控制SIP會(huì)話的設(shè)備或軟件。Session 表示會(huì)話,Border 表示網(wǎng)絡(luò)邊界,Controller 表示控制器。注意,這里的控制器很多用戶理解為是物理設(shè)備,事實(shí)上,也有很多廠家推出了基于軟件的E-SBC。
除了我們討論的SIP相關(guān)的技術(shù)范疇之內(nèi),目前沒有關(guān)于SBC非常明確的定義規(guī)定。
根據(jù)RFC5853的定義,SBC被定義為一個(gè)B2BUAs,它可以實(shí)現(xiàn)對(duì)某些SIP 頭消息和SDP媒體描述進(jìn)行修改。

在下面的圖例中,橙色部分就是經(jīng)過SBC處理以后的相關(guān)參數(shù)。注意,不同廠家的SBC或不同的業(yè)務(wù)需求對(duì)參數(shù)修改可能有所不同。這里的案例僅做示例來幫助用戶了解SBC的流程。

很多時(shí)候,一些客戶使用常用的概念來表示SBC的部署邊界。SBC在不同場(chǎng)景使用時(shí)的幾個(gè)主要概念:Peering SBC支持服務(wù)提供商對(duì)服務(wù)提供商的對(duì)接,Access SBC提供運(yùn)營(yíng)商和企業(yè)用戶SBC的對(duì)接,Enterprise SBC提供企業(yè)之間的對(duì)接。

市場(chǎng)發(fā)展的要求
綜合前面討論的幾個(gè)NAT解決方案的介紹,無論從技術(shù)層面還是未來網(wǎng)絡(luò)的拓展性方面,那些解決方案很難說是一個(gè)最終的解決辦法。這些解決方案可能存在以下幾個(gè)方面的問題和挑戰(zhàn):
不同客戶的不同需求,幾種NAT類型的解決方案面對(duì)的是不同的客戶問題,不同的網(wǎng)絡(luò)環(huán)境,不同的客戶要求,所以,這些解決方案很難構(gòu)成一個(gè)完整的解決方案去支持大部分的客戶要求。
對(duì)服務(wù)提供商技術(shù)的挑戰(zhàn),幾種解決方案對(duì)不同的公司有不同的要求,他們要求部署集成商提供專業(yè)的的技術(shù)水平,足夠的網(wǎng)絡(luò)帶寬,良好的網(wǎng)絡(luò)穩(wěn)定性和兼容性。
終端用戶的多樣性,終端用戶很難控制對(duì)端網(wǎng)絡(luò),對(duì)網(wǎng)絡(luò)服務(wù),語音質(zhì)量,安全機(jī)制失了可控性,例如使用第三方的STUN/TURN服務(wù)。
缺乏統(tǒng)一管理的平臺(tái)機(jī)制,對(duì)網(wǎng)絡(luò)設(shè)置和安全機(jī)制的設(shè)置缺乏一個(gè)統(tǒng)一的管理機(jī)制。
終端對(duì)STUN,TURN和防火墻問題,對(duì)不同終端所要求的支持能力也可能完全不同。
未來的可拓展性,以上幾種NAT解決方案缺乏對(duì)目前最新的SIP業(yè)務(wù)需求完整支持,例如IMS,電話轉(zhuǎn)接業(yè)務(wù),錄音等要求。
對(duì)服務(wù)提供商的標(biāo)準(zhǔn)不同,缺乏對(duì)各種SIP服務(wù)提供商的兼容性測(cè)試標(biāo)準(zhǔn),這樣失去了對(duì)業(yè)務(wù)能力的保證。
對(duì)融合通信的支持問題,它們也缺乏融合通信的業(yè)務(wù)能力的支持包括未來業(yè)務(wù)的升級(jí)和拓展。
通過以上各種問題的總結(jié),我們可以看到,SBC可能是目前SIP業(yè)務(wù)最佳的一種解決方案,這也是為什么最近幾年SBC逐漸受到重視的原因。
市場(chǎng)調(diào)查
根據(jù)美國(guó)專注融合通信市場(chǎng)研究的Infonetrics所做的調(diào)查,到2018年, 預(yù)計(jì)SBC的市場(chǎng)需求是365 million 美金,大家可以看到這是一個(gè)非常龐大的市場(chǎng)。2013年是250 million 美金,到2018年則增長(zhǎng)到了365 million 美金。增長(zhǎng)速度非常驚人。

在此報(bào)告中同時(shí)列出了幾個(gè)主要的SBC廠家:

在未來的5G/IMS網(wǎng)絡(luò)中,SBC也扮演著非常重要的角色。我們?cè)诒菊鹿?jié)的后續(xù)部分會(huì)介紹SBC在IMS網(wǎng)絡(luò)中所扮演的角色。

SBC在運(yùn)營(yíng)商和企業(yè)用戶的部署場(chǎng)景
大部分情況下,在介紹SBC的功能時(shí),很多廠家的功能介紹解釋的比較含糊,這樣會(huì)導(dǎo)致用戶對(duì)產(chǎn)品的認(rèn)識(shí)缺乏明確的概念,客戶可能喪失了購(gòu)買信心。事實(shí)上,根據(jù)SBC使用的場(chǎng)景不同,SBC的功能有一定差別的。一般情況下,SBC 針對(duì)服務(wù)提供商和終端客戶兩種不同的場(chǎng)景需求,F(xiàn)在我們分別介紹一些功能要求。

以下圖例標(biāo)識(shí)了運(yùn)營(yíng)商和運(yùn)營(yíng)商對(duì)接的方式:


目前,綜合各種SBC的功能需求,筆者把SBC的功能歸納為十大主要功能。根據(jù)服務(wù)提供商和企業(yè)終端客戶的需求不同,我們分別予以介紹。這里,筆者僅對(duì)不同服務(wù)根據(jù)業(yè)務(wù)的側(cè)重點(diǎn)不同進(jìn)行的簡(jiǎn)單分類,以方便用戶掌握,不等于說運(yùn)營(yíng)商SBC和企業(yè)SBC功能上有什么特別的不同。SBC可以對(duì)服務(wù)提供商提供的支持包括:
- IP地址隱藏
權(quán)限訪問控制,控制用戶訪問權(quán)限,控制呼叫數(shù)量。
安全策略設(shè)置
QoS 保障
計(jì)費(fèi)功能
服務(wù)提供商之間應(yīng)該可以提供更大的拓展能力

SBC可以對(duì)本地企業(yè)IPPBX的功能包括:
- 自動(dòng)切換服務(wù)線路,如果服務(wù)提供商的工作中繼出現(xiàn)問題,SBC可以自動(dòng)切換到服務(wù)提供商的備份服務(wù)器。
- 提供對(duì)本地IPPBX進(jìn)行標(biāo)準(zhǔn)化處理,例如修改SIP SDP信息,編碼轉(zhuǎn)換,SIP-SS7的映射功能。
- 提供QoS保障。
- 可以提供協(xié)議的轉(zhuǎn)換功能,例如內(nèi)網(wǎng)使用TCP連接,連接服務(wù)提供商時(shí)則使用UDP連接。
- 防止非法侵入和網(wǎng)絡(luò)詐騙電話。來自Acme Packet的Kaplan總結(jié)了以下幾種關(guān)于VOIP的攻擊方式:

NAT支持,遠(yuǎn)端終端通過外網(wǎng)實(shí)現(xiàn)對(duì)內(nèi)網(wǎng)IPPBX注冊(cè)。
筆者根據(jù)不同的場(chǎng)景提供幾個(gè)不同的解決方案圖例:遠(yuǎn)端用戶注冊(cè)到企業(yè)內(nèi)網(wǎng)SBC解決方案。托管IPPBX通過SBC對(duì)接的解決方案和企業(yè)SIP trunk的解決方案。

托管IPPBX通過SBC對(duì)接的案例。

企業(yè)用戶接入SBC的案例:

當(dāng)然,以上每一種功能都不一定是SBC用戶必須使用的功能,根據(jù)融合通信行業(yè)著名市場(chǎng)分析公司IHS Markit的報(bào)告,它把SBC的幾個(gè)主要核心功能概括為:編碼轉(zhuǎn)換,協(xié)議轉(zhuǎn)換,NAT,拓?fù)潆[藏,權(quán)限控制和安全控制。

另外,隨著IMS網(wǎng)絡(luò)的進(jìn)一步普及,SBC需要支持IMS網(wǎng)絡(luò)環(huán)境中,SBC需要支持sigaling plane(P-CSCF,I-BCF)和media plane(IMS-AGW,TrGW)。很多運(yùn)營(yíng)商已經(jīng)對(duì)SBC在IMS網(wǎng)絡(luò)的應(yīng)用提出了非常緊迫的要求。因此,為了滿足未來IMS的網(wǎng)絡(luò)要求,SBC的功能不得不進(jìn)行升級(jí)。在3GPP環(huán)境中,SBC必須實(shí)現(xiàn)可拓展性,虛擬化和分布式部署。

SBC在IMS網(wǎng)絡(luò)中的功能模塊:

在IMS架構(gòu)中需要合并UNI邊界部分和NNI的部分功能來實(shí)現(xiàn)SBC控制器功能。在UNI邊界中的SBC控制部分:

在NNI邊界部分的SBC控制部分,這里僅涉及了R7的訪問。

目前,市場(chǎng)上比較領(lǐng)先的SBC設(shè)備一般集成IMS支持能力,也支持了以上幾個(gè)主要的核心模塊成為一個(gè)設(shè)備解決方案。

IMS網(wǎng)絡(luò)非常復(fù)雜,筆者水平有限,加之篇幅問題,不能完整介紹整個(gè)IMS的架構(gòu)。具體關(guān)于IMS網(wǎng)絡(luò)的介紹,請(qǐng)讀者查閱網(wǎng)絡(luò)文檔獲得更加詳細(xì)的介紹。
SBC功能詳解
通過以上的篇幅,我們介紹了SBC的一些基本的功能和概念,筆者對(duì)SBC所支持功能歸納為十個(gè)具體的功能,它們分別是:

- DoS預(yù)防:防止外網(wǎng)用戶對(duì)內(nèi)外IPPBX進(jìn)行網(wǎng)絡(luò)攻擊,SBC可以提前設(shè)置一些策略來預(yù)防攻擊。
- DoS保護(hù),如果有DoS攻擊的話,SBC的處理能力可以支持DoS攻擊,設(shè)置黑名單,設(shè)置嘗試注冊(cè)次數(shù)都是比較好的手段。
- 權(quán)限控制:SBC可以控制用戶認(rèn)證身份,可以控制計(jì)費(fèi)能力,可以控制呼叫能力權(quán)限。
- QoS保障,通過SBC設(shè)置可以提供對(duì)QoS的語音保障。
- 標(biāo)準(zhǔn)化重構(gòu),這里的標(biāo)準(zhǔn)化重構(gòu)的含義是對(duì)用戶提供的媒體能力,業(yè)務(wù)能力提供相應(yīng)的轉(zhuǎn)化,并且能夠靈活地對(duì)對(duì)端進(jìn)行支持,例如支持編碼轉(zhuǎn)換,SDP 消息體修改,SIP-SS7消息映射。
- 檢測(cè)功能,SBC可以檢測(cè)網(wǎng)絡(luò)狀態(tài),SIP信令狀態(tài),語音質(zhì)量等相關(guān)信息。
- VPN分離,SBC可以針對(duì)不同用戶設(shè)置不同的VPN隧道功能。
- 拓?fù)潆[藏,SBC提供了內(nèi)網(wǎng)IPPBX對(duì)外網(wǎng)不可見的能力,SBC提供修改后的IP地址相關(guān)信息,這樣,外網(wǎng)用戶不會(huì)看到內(nèi)網(wǎng)PBX信息。但是,讀者要注意,根據(jù) RFC 5853中3.1.2的說明,SBC不能很好的配合Authenticated Identity Management 工作。
- 系統(tǒng)資源優(yōu)化,SBC可以提供SIP注冊(cè)能力的均衡負(fù)載,SIP trunk的均衡負(fù)載,監(jiān)控系統(tǒng)閥值,提供SIP/PSTN的逃生處理,保障系統(tǒng)達(dá)到最佳資源狀態(tài)。
- 防止非法入侵,SBC提供了對(duì)用戶的認(rèn)證和簽權(quán)功能,同時(shí)提供了對(duì)信令語音的加密功能,SBC可以保障非法用戶的入侵。
部署SBC需要關(guān)注的問題
盡管筆者花了很多時(shí)間介紹SBC的“好”, 但是在用戶部署環(huán)境中仍然有一些問題需要用戶考慮:
- 性能處理的問題,因?yàn)楸旧砑軜?gòu)的問題,SBC是一個(gè)B2BUA,簡(jiǎn)單來說,就是SIP路徑上的一個(gè)中間人。這樣會(huì)導(dǎo)致很多問題出現(xiàn),例如標(biāo)準(zhǔn)重構(gòu)時(shí)需要處理大量的SDP消息,同時(shí)可能需要進(jìn)行編碼轉(zhuǎn)換(關(guān)于編碼轉(zhuǎn)換的問題筆者以前專門做過介紹),可能還要接收和發(fā)送大量的注冊(cè)消息,這些功能需要消耗大量的CPU資源和網(wǎng)絡(luò)接口資源,可能導(dǎo)致SBC穩(wěn)定性降低。
- 需要擴(kuò)展逃生功能支持傳統(tǒng)的PSTN,單純的SBC設(shè)備為了支持SIP的服務(wù),為了保證企業(yè)電話系統(tǒng)100%正常工作,需要增加多個(gè)trunk智能支持,也同時(shí)需要傳統(tǒng)PSTN的接入。
- 國(guó)家法律的要求錄音功能,大家知道,中國(guó)已經(jīng)在最近幾年開始要求一些敏感部門對(duì)電話進(jìn)行錄音。其實(shí),美國(guó)在1994年就已經(jīng)制定了關(guān)于通信設(shè)備支持電話偵聽到法案( CALEA)。在RFC 3924中也相應(yīng)地規(guī)定了錄音的要求。如果SBC不能支持錄音的話,SBC的功能需求就大打折扣,很多項(xiàng)目中,客戶也不敢使用不支持錄音的SBC。但是,如果支持錄音的話,SBC性能會(huì)受到很大影響,Menghui YANG 幾年前發(fā)表了VoIP網(wǎng)絡(luò)電話呼叫偵聽對(duì)SBC性能的影響,以下是研究報(bào)告關(guān)于錄音和不錄音狀態(tài)下,SBC的并發(fā)處理數(shù)據(jù)。通過此報(bào)告數(shù)據(jù)可以看出,錄音或不錄音狀態(tài)下,對(duì)SBC的并發(fā)處理能力有很大差別。

SIP REFER消息支持問題或呼叫業(yè)務(wù)轉(zhuǎn)接支持也是一個(gè)值得重視的問題,有時(shí),如果本地用戶需要執(zhí)行轉(zhuǎn)接功能的話,運(yùn)營(yíng)商有兩種處理方式,第一種運(yùn)營(yíng)商可能支持REFER,一般可能執(zhí)行重新計(jì)費(fèi)。當(dāng)然,這里不排除利用轉(zhuǎn)電話接功能實(shí)現(xiàn)長(zhǎng)途呼叫功能,繞過運(yùn)營(yíng)商本地計(jì)費(fèi),事實(shí)上,這也是一種詐騙的方式。所以,運(yùn)營(yíng)商執(zhí)行重新計(jì)費(fèi)。第二種方式就是返回一個(gè)405 Method not Allowed消息,不支持本地用戶的呼轉(zhuǎn)服務(wù)。

以下圖例說明了在內(nèi)網(wǎng)沒有SBC的狀況下,運(yùn)營(yíng)商會(huì)直接返回一個(gè)405消息,轉(zhuǎn)接服務(wù)被拒絕。

如果終端客戶部署了SBC后,前面我們已經(jīng)介紹過,SBC是一個(gè)B2BUA,可以修改SIP消息,重新發(fā)送一個(gè)帶本地ID的Re-INVITE消息,運(yùn)營(yíng)商仍然看作是同一個(gè)呼叫,這樣運(yùn)營(yíng)商會(huì)接受這個(gè)轉(zhuǎn)接呼叫服務(wù)。

再次說明,因?yàn)镽EFER存在著一個(gè)潛在的不安全因素,所以運(yùn)營(yíng)商一般會(huì)拒絕這個(gè)請(qǐng)求。關(guān)于REFER安全的討論,大家可以查閱RFC3515的Authorization Consideration for REFER。
- 關(guān)于號(hào)碼歸屬地的問題。號(hào)碼歸屬地可能導(dǎo)致計(jì)費(fèi)錯(cuò)誤,大部分情況這種可能性不會(huì)發(fā)生,但是有的運(yùn)營(yíng)商會(huì)根據(jù)SIP頭帶的號(hào)碼來做一個(gè)簡(jiǎn)單的判斷,判斷號(hào)碼屬性。在用戶多個(gè)分公司部署的環(huán)境下,如果沒有嚴(yán)格設(shè)置號(hào)碼路由,很可能出現(xiàn)分公司內(nèi)網(wǎng)用戶呼叫外地用戶就變成長(zhǎng)途呼叫的可能。例如,如果在深圳的分公司通過北京總部的PBX出局呼叫北京或者河北的用戶,運(yùn)營(yíng)商很可能根據(jù)SIP帶的號(hào)碼歸屬地,認(rèn)為這是來自深圳的呼叫,從而以長(zhǎng)途計(jì)費(fèi)。如果通過SBC重新修改成一個(gè)標(biāo)識(shí)為本地PBX出局的號(hào)碼身份,則運(yùn)營(yíng)商就會(huì)認(rèn)為這是本地客戶電話系統(tǒng)的呼叫,而不是一個(gè)來自外地的呼叫。SBC同時(shí)也可以根據(jù)路由的要求,添加一個(gè)號(hào)碼歸屬地前綴,表示國(guó)家或者地區(qū)的屬性。SBC也可以實(shí)現(xiàn)對(duì)tgrp的支持,通過添加tgrp標(biāo)簽,運(yùn)營(yíng)商也可以正確識(shí)別客戶的SIP身份。
- SBC結(jié)合IPPBX的兼容性測(cè)試問題,網(wǎng)絡(luò)有很多的討論,筆者推薦根據(jù)Avaya的兼容性測(cè)試流程來進(jìn)行測(cè)試。

具體的測(cè)試項(xiàng)目包括:通過SBC IPPBX用戶的呼出呼入測(cè)試,直接點(diǎn)對(duì)點(diǎn)的IP呼叫測(cè)試,DTMF測(cè)試-使用RFC2833進(jìn)行IVR測(cè)試,語音等待測(cè)試流程測(cè)試,呼叫專接,電話會(huì)議,長(zhǎng)時(shí)間呼叫摘機(jī)測(cè)試,錄音測(cè)試和T38傳真收發(fā)測(cè)試。如果讀者真正想進(jìn)行完整權(quán)威地對(duì)接測(cè)試,筆者建議參考SIPconnect 社區(qū)的測(cè)試標(biāo)準(zhǔn)來進(jìn)行對(duì)接測(cè)試。
用戶根據(jù)架構(gòu)圖實(shí)現(xiàn)兼容性測(cè)試,具體測(cè)試要求查閱參考資料的鏈接。以下是SIPConnect-2.0 的測(cè)試流程圖:

- SBC對(duì)WebRTC的支持問題。WebRTC技術(shù)是最近幾年發(fā)展非常火的技術(shù),在和SIP結(jié)合時(shí),很多公司也建議使用SBC來解決編碼轉(zhuǎn)換的問題和語音加密的問題。這里需要注意,一些SBC編碼轉(zhuǎn)換功能可能還不能完全支持VP8 或最新的VP9。

SBC虛擬化的可行性研究
實(shí)際上,隨著IMS 用戶的不斷增加,運(yùn)營(yíng)商對(duì)SBC的維護(hù)部署也有了新的要求,例如使用基于云的計(jì)算平臺(tái),使用虛擬化的解決方案都是可行的。首先了解一下傳統(tǒng)的SBC架構(gòu),它是一種一體機(jī)設(shè)備的解決方案,包括DSP,Cryto 處理加密,TCAM處理媒體,CPU的核心要件。

國(guó)外一些公司已經(jīng)開始著手進(jìn)行SBC虛擬化解決方案的可行性研究,一些公司的虛擬化SBC解決方案已開始測(cè)試。他們的研究是基于目前比較成熟的云平臺(tái)來實(shí)現(xiàn)。研究人員認(rèn)為基本的云計(jì)算技術(shù)架構(gòu)已經(jīng)可以滿足SBC的虛擬化部署,其主要根據(jù)是:
- Intel CPU的發(fā)展可以支持多核處理,支持虛擬化。
- Linux X86 結(jié)合強(qiáng)大的CPU 實(shí)現(xiàn)并行處理的能力不斷強(qiáng)化,為SBC容量擴(kuò)展提供了硬件支持。
- 開發(fā)自有的軟件DSP負(fù)責(zé)編碼轉(zhuǎn)換,這里,研究人員也考慮了DSP的成本問題,不過,無論軟硬件的DSP,成本一般都比較高。
- CPU可以被充分利用,DSP只做編碼處理。
- 亞馬遜的AWS對(duì)信令處理的性能比較滿意,媒體處理能力也相對(duì)比較好。
- 分布式部署,信令和媒體獨(dú)立處理,提高了擴(kuò)容的可能性。
以上關(guān)于SBC虛擬化可行性的研究討論都是基于云平臺(tái)技術(shù)本身,當(dāng)然也有賴于開發(fā)人員的技術(shù)實(shí)力。
SBC對(duì)SIP網(wǎng)絡(luò)流程帶來的挑戰(zhàn)
我們?cè)谇懊娴暮芏嗾鹿?jié)中討論了很多使用SBC的好處,但是SBC在實(shí)際網(wǎng)絡(luò)環(huán)境的使用中,用戶仍然需要面對(duì)很多不可知的挑戰(zhàn):
- SBC會(huì)破壞整個(gè)端對(duì)端SIP的邏輯流程的自然屬性。如果部署相對(duì)封閉的VoIP解決方案,SBC可能是一個(gè)需要考慮的問題。
- SBC會(huì)破壞整個(gè)端對(duì)端SIP的呼叫流程,這樣會(huì)導(dǎo)致UAS對(duì)SIP呼叫流程的監(jiān)控和狀態(tài)失去作用,并且增加了技術(shù)排查難度,可能增加其他設(shè)備或軟件來彌補(bǔ)SBC帶來的問題。
- SBC不僅對(duì)信令進(jìn)行二次處理,也對(duì)媒體進(jìn)行二次處理,例如編碼轉(zhuǎn)換的流程。這樣的話,會(huì)給雙方的語音呼叫帶來進(jìn)一步的延遲,增加了運(yùn)營(yíng)商的帶寬成本。但是,我們經(jīng)常遇到的是,運(yùn)營(yíng)商提供的是相對(duì)占用帶寬比較低的G.729, 這樣就需要終端客戶自己進(jìn)行編碼處理,這樣就會(huì)導(dǎo)致本地IPPBX,網(wǎng)關(guān)或SBC必須做編碼轉(zhuǎn)換,同樣增加本地用戶的部署成本。
- 加密以后的SIP和SBC結(jié)合會(huì)帶來更加復(fù)雜的問題。記得一位麻省理工多媒體實(shí)驗(yàn)室的學(xué)者說過這樣一句話- “Your advantages are your disadvantages”。 任何事情都帶有兩面性。具有諷刺意味的是,大家知道我們使用SBC是為了更加安全,如果IPPBX和終端之間已經(jīng)使用了加密機(jī)制的話,SBC是最有可能出現(xiàn)問題的一個(gè)中間環(huán)節(jié)。根據(jù)RFC 5853 3.1.2 部分的說明,假設(shè)SIP終端都已經(jīng)設(shè)置了加密的方式和IPPBX進(jìn)行通信驗(yàn)證,SBC則需要獲得SIP頭內(nèi)容和SDP的體,這里就要求SBC需要首先讀取對(duì)發(fā)送到呼叫方的加密消息,并且SBC還要需要獲得被呼叫方的確認(rèn)和信任。訪問被呼叫方的私鑰可能還要涉及其他的服務(wù)認(rèn)證設(shè)置。這樣的流程就完全可能導(dǎo)致終端的協(xié)商失敗。如果SBC移除加密機(jī)制,重新設(shè)置加密機(jī)制的話,那么SBC就會(huì)打破SIP終端之間的加密認(rèn)證機(jī)制。這里再次提醒用戶,根據(jù) RFC 5853中3.1.2的說明,SBC不能很好地配合Authenticated Identity Management工作,具體說明讀者可查閱RFC5853。
- SBC支持媒體流量管理帶來的問題。大家知道,SBC不僅僅對(duì)信令做出處理,同時(shí)也負(fù)責(zé)媒體的管理也包括媒體流量的管理。有時(shí),SBC可以檢測(cè)丟失Bye消息的媒體會(huì)話,丟失Bye消息可能就意味著這個(gè)呼叫在中間某個(gè)環(huán)節(jié)已經(jīng)出現(xiàn)異常或者死掉,SBC必須通過檢測(cè)媒體狀態(tài),然后返回信令掛機(jī)消息。有時(shí),運(yùn)營(yíng)商會(huì)根據(jù)數(shù)據(jù)流量來計(jì)費(fèi),如果在媒體路徑上部署了SBC的話,媒體經(jīng)過SBC的轉(zhuǎn)發(fā)處理,可能導(dǎo)致媒體數(shù)據(jù)丟失的問題,同時(shí)增加了SBC的負(fù)載。另外,和我們上面介紹的一樣,如果終端客戶雙方進(jìn)行了加密處理,SBC沒有獲得雙方的許可,那么RTP加密認(rèn)證又是一個(gè)問題。
- SBC對(duì)標(biāo)準(zhǔn)化重構(gòu)的支持問題。雖然SBC支持標(biāo)準(zhǔn)化重構(gòu)。很多情況下,終端之間完全可能出現(xiàn)支持能力不同的問題,雙方所各自支持的功能可能不完全匹配,這時(shí)運(yùn)營(yíng)商需要SBC重新進(jìn)行標(biāo)準(zhǔn)化重構(gòu)的機(jī)制,這樣就可以滿足雙方的通話要求。如果在大并發(fā)處理的環(huán)境中出現(xiàn)大量類似的不同功能的標(biāo)準(zhǔn)化重構(gòu)的話,SBC就需要支持大量的配置機(jī)制,并且能夠保證并行處理大量的流程處理。例如,同時(shí)處理IPv4 和IPv6 轉(zhuǎn)換,也可能同時(shí)處理G.711到G.729的轉(zhuǎn)換,還有可能同時(shí)處理VP8 到G.711的轉(zhuǎn)換或者TCP到UDP的轉(zhuǎn)換。這個(gè)問題需要SBC用戶盡可能做一些進(jìn)一步的研究,選擇真正有處理能力,能夠完全支持復(fù)雜環(huán)境的SBC產(chǎn)品。
- SBC備份的問題。如果一個(gè)單點(diǎn)SBC出現(xiàn)故障需要備份的話,主從服務(wù)器之間需要非常緊密的配合才能實(shí)現(xiàn)媒體和信令的成功切換,否則極有可能出現(xiàn)大批用戶突然失去連接的問題。
- SBC未來的功能支持,這個(gè)內(nèi)容對(duì)于筆者來說太大,筆者僅根據(jù)RFC5853的一些建議對(duì)此做一個(gè)簡(jiǎn)單總結(jié)。SBC在未來的設(shè)計(jì)中應(yīng)該支持一個(gè)對(duì)SIP更加友好的拓?fù)潆[藏方式,應(yīng)該支持一個(gè)對(duì)SIP更加友好的媒體流量管理方式,應(yīng)該支持一個(gè)對(duì)SIP更加友好的標(biāo)準(zhǔn)化重構(gòu)方式。
SBC開源解決方案
Kamalio,OpenSIPs結(jié)合Asterisk或者FreeSWITCH是一種相對(duì)比較“經(jīng)濟(jì)”的SBC解決方案。關(guān)于使用以上開源解決方案實(shí)現(xiàn)SBC的功能,筆者在幾年前也做過類似的探討,這里不會(huì)再次做過多詳細(xì)的介紹,網(wǎng)絡(luò)上有很多類似的文檔可以參考。但是,客觀地說,如果通過以上類似的非常龐大的軟交換平臺(tái)開發(fā)成為一個(gè)SBC的話,它距離真正的生產(chǎn)環(huán)境和商業(yè)使用還有很長(zhǎng)的距離,需要開發(fā)人員投入很大的精力去完善。這里,筆者有幾個(gè)方面的建議用戶可以考慮:
使用以上開源平臺(tái),是否有足夠的人力去開發(fā)維護(hù)。
目前網(wǎng)絡(luò)上看到的SBC解決方案僅實(shí)現(xiàn)了SBC的部分功能,大部分僅實(shí)現(xiàn)了拓?fù)潆[藏,防攻擊,NAT基本功能,如果嚴(yán)格地說,還不能算一個(gè)完整的SBC解決方案。另外,很多公開的開源的SBC設(shè)置文檔也缺乏對(duì)底層的優(yōu)化,如果需要真正部署在用戶環(huán)境,仍然需要優(yōu)化。
Kamalio/OpenSIPs 可以實(shí)現(xiàn)媒體的處理,但是需要第三方媒體服務(wù)器參與才能支持一個(gè)比較完整的SBC功能。
編碼轉(zhuǎn)換需要開發(fā)人員進(jìn)一步投入才能完成,目前,還沒有真正的開源的媒體轉(zhuǎn)換的功能能夠支持大量的媒體轉(zhuǎn)換,過多可能還是有賴于Asterisk或者FreeSWITCH實(shí)現(xiàn)媒體轉(zhuǎn)換的功能。
Asterisk或者FreeSWITCH平臺(tái)的SIP和媒體耦合度太緊密,媒體和信令獨(dú)立或分離的可能性不大,這樣的話就可能導(dǎo)致SBC缺乏真正的可拓展性。當(dāng)然,用戶確實(shí)有非常強(qiáng)大的技術(shù)研發(fā)隊(duì)伍也可以進(jìn)一步優(yōu)化。
Kamailio/OpenSIPs對(duì)SIP RFC的兼容性支持相當(dāng)強(qiáng)大靈活,但是需要非常高的技術(shù)要求。
個(gè)人覺得,目前比較可行的企業(yè)級(jí)SBC開源解決方案是Kamailio做信令服務(wù)器,F(xiàn)reeSWITCH作為一個(gè)媒體服務(wù)器,負(fù)責(zé)錄音和編碼轉(zhuǎn)換。編碼轉(zhuǎn)換可以使用基于硬件的編碼轉(zhuǎn)換卡來獲得編碼能力的支持,并且編碼處理能力也可以做分布式部署拓展發(fā)布。關(guān)于此開源解決方案具體的部署方式,用戶可以訪問Kamailio或FreeSWITCH官方網(wǎng)站獲得詳細(xì)配置文件。

使用OpenSIPS作為SBC來使用,OpenSIPS本身支持B2BUA模塊,也可以實(shí)現(xiàn)SBC的功能,而且結(jié)合編碼轉(zhuǎn)換卡可以實(shí)現(xiàn)編碼轉(zhuǎn)換的功能,但是仍然缺乏媒體服務(wù)器的支持,還是需要依賴第三方的媒體服務(wù)器實(shí)現(xiàn)媒體的控制。

在本章節(jié)中,我們簡(jiǎn)單回顧了以前章節(jié)的一些NAT解決方案的內(nèi)容和存在的問題,然后介紹了SBC的產(chǎn)生背景,SBC的用戶場(chǎng)景和SBC的主要功能,同時(shí),我們也探討了SBC在部署時(shí)需要用戶注意到問題,還有目前SBC對(duì)SIP的影響,最后我們分別介紹了SBC的虛擬化可行性研究探討和基于開源解決方案的簡(jiǎn)單論述。通過以上大篇幅的介紹,我們希望給用戶一個(gè)比較完整的SBC解決方案的剖析,然后用戶要根據(jù)自己的使用場(chǎng)景,部署成本,可維護(hù)性,拓展性做一個(gè)正確的評(píng)價(jià)。最后,因?yàn)閭(gè)人能力有限和篇幅的局限,很多技術(shù)細(xì)節(jié)沒有深入太多討論,也可能出現(xiàn)很多錯(cuò)誤,希望諒解指正。
參考資料:
https://tools.ietf.org/html/rfc5853
http://kb.asipto.com/freeswitch:kamailio-3.1.x-freeswitch-1.0.6d-sbc
https://www.opensips.org/Documentation/Tutorials-SangomaVoiceTranscoding
https://www.nanog.org/meetings/nanog34/presentations/kaplan.pdf
https://datatracker.ietf.org/doc/rfc3924/
https://www.sipforum.org/download/sipconnect-technical-recommendation-version-2-0/?wpdmdl=2818
部署VoIP呼叫實(shí)現(xiàn)網(wǎng)絡(luò)偵聽對(duì)SBC性能影響:Implementation and Performance for Lawful Intercept of VoIP calls based on SIP Session Border Controller