freeswitch配置SBC的方案

news2024/11/27 0:47:31

 

概述

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场景进行生产环境的配置介绍。

空空如常

求真得真

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT简单串口通信终端实现

1.工程文件 工程文件中添加serilport QT serialport 2.主程序 主程序文件main.cpp #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } …

xray长亭是自动化Web漏洞扫描神器

xray长亭一款完善的安全评估工具&#xff0c;支持常见 web 安全问题扫描和自定义 。 xray 是一款功能强大的安全评估工具&#xff0c;由多名经验丰富的一线安全从业者呕心打造而成&#xff0c;主要特性有: 检测速度快。发包速度快; 漏洞检测算法效率高。支持范围广。大至 OWAS…

Python error:Compressed file ended before the end-of-stream marker was reached

功能描述 在做http协议处理时&#xff0c;经常遇到gzip格式的数据需要进行还原解压缩处理。 解压缩用到的Python库为 import gzip 报错 unpack_gzip error:Compressed file ended before the end-of-stream marker was reached 压缩文件在到达流结束标记之前结束 原因 该…

上海亚商投顾:沪指创反弹新高 房地产板块掀涨停潮

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪三大股指今日窄幅震荡&#xff0c;最终尾盘小幅收红。房地产板块午后跳水&#xff0c;首开股份跌停&#xff0c;粤宏…

遥感指数应用汇编

引言 现在遥感应用领域&#xff0c;尤其是农业遥感、土地覆盖、矿物识别等等地物精细识别探测任务中&#xff0c;遥感指数已经如日中天。它们的共同特点都是采用了比值运算和归一化(normalization)处理。因此数值范围介于{-1&#xff0c;1}之间。由于进行了比值计算&#xff0c…

虹科活动 | SWCF 2022卫星通信与仿真测试线上研讨会倒计时,快来报名吧!

您是否在因线下论坛的地点限制而错失技术干货分享&#xff1f;您是否因时间安排而无法亲临现场与行业专家交流&#xff1f;虹科举办全新线上论坛SWCF&#xff0c;与行业专家一起为您带来最新热点话题讨论与技术干货分享&#xff01; 什么是SWCF 虹科每年将开展卫星与无线通信…

架构重构技巧

架构重构定义 代码重构 定义 对软件代码做任何改变以增加可读性或者简化结构而不影响输出结果 目的 增加可读性、增加可维护性、可扩展性 关键点 不影响输出不修正错误不增加新的功能性 架构重构 定义 通过调整系统结构&#xff08;Rank、Role、Relation、Rule&#…

Java8--Stream的各种用法(二):collect、Collectors

Collectors中的方法&#xff1a; 其中我们常用的是前三个&#xff1a;将流中的元素放到集合中、分组、toMap。 下面我们逐个介绍这些方法的使用. 基础类&#xff1a; Student public class Student {private Integer id;private String name;private String className;priva…

Linux21 --- 计算机网络基础概论(网络基本概念、网络分层模型、网络应用程序通信流程)

一、网络基本概念 1、网络 网络是由若干结点和连接这些结点的链路组成&#xff0c;网络中的结点可以是计算机&#xff0c;交换机、 路由器等设备。 网络设备有&#xff1a;交换机、路由器、集线器 传输介质有&#xff1a;双绞线、同轴电缆、光纤 下图是一个简单的网络示意图…

应急启动电源+充气一体式方案设计

汽车应急启动电源是为驾车出行的爱车人士和商务人士所开发出来的一款多功能便携式移动电源。它的特色功能是用于汽车亏电或者其他原因无法启动汽车的时候能启动汽车。同时将充气泵与应急电源、户外照明等功能结合起来&#xff0c;是户外出行必备的产品之一。 汽车应急启动电源应…

springboot源码编译报错Unable to start the daemon process

官方网址&#xff1a;GitHub - spring-projects/spring-boot: Spring Boot springboot版本&#xff1a; 报错截图&#xff1a; 报错代码&#xff1a; Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For examp…

jsp196ssm毕业设计选题管理系统hsg4361B6

本系统选用Windows作为服务器端的操作系统&#xff0c;开发语言选用Java&#xff0c;数据库选用Mysql&#xff0c;使用mybatis数据库连接技术&#xff0c;使用Myeclipse作为系统应用程序的开发工具&#xff0c;Web服务器选用Tomcat版本。 下面分别简单阐述一下这几个功能模块需…

pytest配置文件合集(一)-----------conftest.py应用

配置文件&#xff1a; 配置文件一般存在项目的根目录下&#xff0c;官方文档介绍了四种配置文件&#xff0c;每种文件有各自的用处。 pytest.ini&#xff1a;主配置文件&#xff0c;最常用&#xff0c;优先匹配配置项 tox.ini &#xff1a;可以理解为pytest.ini的另一种写法&…

接口测试方法论——WebSocket一点通

WebSocket是HTML5提供的一种能在单个TCP连接上进行全双工通信的协议。前面介绍过&#xff0c;HTTP是一种无状态、无连接、单向的应用层协议。 HTTP采用了请求/响应模型&#xff1a;通信请求只能由客户端发起&#xff0c;服务器负责对请求做出应答处理。但这会出现一个很严重的…

【Java集合】List接口常用方法及实现子类

文章目录List接口> List 接口的常用方法> List的三种遍历方式> List 排序练习※ ArrayList 使用注意事项※ ArrayList 底层结构※ Vector 底层结构※ LinkedList 底层结构 &#xff08;双向链表和增删改查案例&#xff09;> ArrayList 和 LinkedList 比较List接口 …

字节跳动岗位薪酬体系曝光,看完感叹:不服不行

曾经的互联网是PC的时代&#xff0c;随着智能手机的普及&#xff0c;移动互联网开始飞速崛起。而字节跳动抓住了这波机遇&#xff0c;2015年&#xff0c;字节跳动全面加码短视频&#xff0c;从那以后&#xff0c;抖音成为了字节跳动用户、收入和估值的最大增长引擎。 自从字节…

postgresql源码学习(51)—— 提交日志CLOG 提交日志CLOG 原理 用途 管理函数

一、 CLOG是什么 CLOG&#xff08;commit log&#xff09;记录事务的最终状态。 物理上&#xff0c;是$PGDATA/pg_xact目录下的一些文件逻辑上&#xff0c;是一个数组&#xff0c;下标为事务id&#xff0c;值为事务最终状态1. 事务最终状态 clog.h中定义了4种事务状态 /** …

Android开发:Fragment中优雅使用ViewBinding【Java】

目录 前言 官网示例 封装 前言 ViewBinding可以帮助我们减少代码中的大部分findViewById&#xff0c;官网中提到了它的优点和缺点&#xff1a; Null 安全&#xff1a;由于视图绑定会创建对视图的直接引用&#xff0c;因此不存在因视图 ID 无效而引发 Null 指针异常的风险…

Kotlin小知识之高阶函数

文章目录高阶函数定义高阶函数函数类型高阶函数示例内联函数内联函数的作用内联函数的用法noinline与crossinline高阶函数 定义高阶函数 高阶函数和Lambda的关系是密不可分的.像接受Lambda参数的函数就可以称为具有函数式编程风格的API了当我们想要定义自己的函数式API那就得…

使用 Learner Lab - 使用 AWS Lambda 将图片写入 S3

使用 Learner Lab - 使用 AWS Lambda 将图片写入 S3 AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务&#xff0c;让学生可以在 100 USD的金额下&#xff0c;自行练习所要使用的 AWS 服务&#xff0c;以下使用 AWS Lambda 将图片写入 S3。 如何进入 Le…