freeswitch配置SBC的方案

求真得真 發佈 2022-11-30T13:07:40.783013+00:00

概述freeswitch 是一款好用的開源軟交換平台。但是,fs不是專為SBC而開發的,所以需要做一些定製化的配置和開發。本文主要介紹如何利用fs的基本功能配置一個簡單的SBC方案,滿足一般化需求,如果有定製化的需求需要定製開發。



概述

freeswitch 是一款好用的開源軟交換平台。

但是,fs不是專為SBC而開發的,所以需要做一些定製化的配置和開發。

本文主要介紹如何利用fs的基本功能配置一個簡單的SBC方案,滿足一般化需求,如果有定製化的需求需要定製開發。

環境

centos:CentOS release 7.0 (Final)或以上版本

freeswitch:v1.8.7

GCC:4.8.5

SBC簡介

會話邊界控制器(Session Border Controller,簡稱SBC)。

看完名稱定義,我就在想,什麼是會話,什麼樣的邊界,控制什麼。

SBC最早作為IMS系統的重要網元,主要解決運營商語音業務中的安全問題、NAT問題、互通問題。

安全問題,包括IP對接名單,非法攔截,內網拓撲屏蔽等。邊界和控制。

NAT問題,主要針對外網和內網的隔離轉換。邊界。

互通問題,包括會話信令的適配互通和媒體流的互通。會話和控制。


隨著企業級VOIP通信網絡的發展,內部組網結構越來越複雜,在對外呼叫和跨域通信的場景下,SBC作為內外互通、會話控制和邊界控制的重要節點,有其獨特的作用和地位。

fs配置sbc的方案

在fs的官方文檔中,對於sbc的介紹有以下幾種方式。

一,利用mod_lcr和mod_easyroute模塊建立sbc,主要針對多個運營商線路的場景。

二,python_sbc,使用python腳本監控esl接口中的event事件並對事件響應操作,主要是利用302重定向消息,和通常意義中的sbc有區別。

三,sbc_setup,利用fs和kamailio互相配合實現,文檔和版本都非常老,不適用新版本fs。

四,SBC FreeSWITCH Configuration Example 2,通過dialplan撥號計劃實現基本的sbc功能。官方文檔見「https://freeswitch.org/confluence/display/FREESWITCH/SBC+FreeSWITCH+Configuration+Example+2」

第四種場景是我們在企業組網中經常會用到的,適用性非常好,只需要簡單的配置和測試就可以直接使用。

SBC配置示例

「SBC FreeSWITCH Configuration Example 2」文檔中介紹的dialplan例子。

<include>
<extension name="customer_my_public_desk">
<condition field="${network_addr}" expression="pu.bl.ic.ip"/>
<condition field="destination_number" expression="^\+?1?(\d+)$">
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=true"/>
<\!-- THIS WORKS FOR CALL DISTRIBUTION --\>
<\!-- <action application="bridge" data="sofia/external/${destination_number}@${distributor(dist_list)}"/> -->
<\!-- THIS WORKS FOR SINGLE PROXY --\>
<action application="bridge" data="sofia/external/${destination_number}@127.0.0.1:5062"/>
</condition>
</extension>
<extension name="customer_my_private_desk">
<condition field="${network_addr}" expression="pr.iv.ate.ip"/>
<condition field="destination_number" expression="^\+?1?(\d+)$">
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=true"/>
<action application="bridge" data="sofia/internal/${destination_number}@127.0.0.1:5062"/>
</condition>
</extension>
</include>

例子比較簡單,僅僅涉及了單個IP過濾、固定號碼格式匹配、distributor分發。

實際生產環境的sbc配置會涉及更多方面。

總結

本文對fs官方文檔中與sbc有關的介紹進行了梳理,對四種sbc配置方案進行了簡單的介紹。

對於第四種sbc場景的配置方案僅僅列舉了一個簡單的例子,後續會對該種sbc場景進行生產環境的配置介紹。


空空如常

求真得真

關鍵字: