概述

freeswitch是一款简单好用的VOIP开源软交换平台。

现在的VOIP服务越来越倾向于云端服务,包括呼叫中心云服务,线路云平台。

而云平台对多个客户的服务就需要做好隔离,包括数据隔离、线路隔离、服务隔离等。

freeswitch内部的多租户模式根据不同用户SIP域的配置,来实现呼叫的服务隔离。

环境

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

freeswitch:v1.10.7

GCC:4.8.5

多租户模式

云端的服务不可能只提供给一个客户使用,如何在服务上区分客户,做到数据和资源的隔离。

服务中的多租户模式意味着多个客户可以同时使用一套服务,但又要求不会互相影响。

对于VOIP服务来说,多租户代表在整个服务系统中,多家公司通过一定的规则实现号码、路由规则、资源的互相隔离,同时又互不影响,最大程度的利用好有限的资源。

对于云端PBX来说,多个客户甚至可以使用相同的sip账号注册和呼叫,又各自独立。

fs已经实现了通过SIP域的方式,达到多租户模式的效果。

配置方案

复制并修改注册端口文件conf/sip_profile/internal5062.xml,不再强制修改用户注册SIP域为"$${domain}"。

<!-- <param name="force-register-domain" value="$${domain}"/> -->

<!-- <param name="force-subscription-domain" value="$${domain}"/> -->

<!-- <param name="force-register-db-domain" value="$${domain}"/> -->

修改sip终端10011账户注册信息,使用“test123.com”的SIP域注册。

domain修改为”test123.com”。

domain proxy的send outbound via设置为”10.55.55.138:5062”。

10011终端的注册信令如下。

REGISTER sip:test123.com SIP/2.0

Via: SIP/2.0/UDP 10.9.0.16:14542;branch=z9hG4bK-d87543-ef1e50670e66bb09-1--d87543-;rport

Max-Forwards: 70

Contact: <sip:10011@10.9.0.16:14542;rinstance=1937ab4fc61e1076>

To: "10011"<sip:10011@test123.com>

From: "10011"<sip:10011@test123.com>;tag=0479973d

Call-ID: MzU2MjgzMmI2NWM3ZmM2YTE5YTJmYzZmM2E2NTdlZjM.

CSeq: 1 REGISTER

Expires: 3600

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO

User-Agent: eyeBeam release 1004p stamp 31962

Content-Length: 0

freeswitch注册告警信息,注册失败,因为还没有设置”test123.com”对应的SIP域信息。

2022-12-12 16:05:17.568684 [WARNING] sofia_reg.c:2973 Can't find user [10011@test123.com] from 10.9.0.16

You must define a domain called 'test123.com' in your directory and add a user with the id="10011" attribute

and you must configure your device to use the proper domain in it's authentication credentials.

复制并修改conf/directory/default5062.xml,设置”test123.com”对应的SIP域信息,域用户的user_context使用test123.com。

<domain name="test123.com">

...

<variables>

<variable name="user_context" value="test123.com"/>

</variables>

...

<group name="default">

<users>

<X-PRE-PROCESS cmd="include" data="default5062/*.xml"/>

</users>

</group>

复制并修改conf/directory/default5062/10011.xml,删除账户默认的user_context设置,统一使用SIP域设置的user_context。

删除行<variable name="user_context" value="default"/>

修改conf/dialplan/test.xml拨号计划,增加context为test123.com的呼叫流程。

<context name="test123.com">

<extension name="test123">

<condition field="destination_number" expression="^(\d+)$">

<action application="bridge" data="user/$1@test123.com"/>

</condition>

</extension>

</context>

测试

使用10011呼叫1002,测试日志如下。

2022-12-12 17:29:03.375298 [INFO] mod_dialplan_xml.c:637 Processing 10011 <10011>->1002 in context test123.com

Dialplan: sofia/internal5062/10011@test123.com parsing [test123.com->test123] continue=false

Dialplan: sofia/internal5062/10011@test123.com Regex (PASS) [test123] destination_number(1002) =~ /^(\d+)$/ break=on-false

Dialplan: sofia/internal5062/10011@test123.com Action bridge(user/1002@test123.com)

10011账户的呼出流程使用“context test123.com”的拨号计划。

总结

freeswitch可以通过不同的SIP域配置实现多租户模式,针对云端服务的用户配置有一定的参考意义。

多租户模式的呼出流程通过注册SIP域实现隔离,回呼流程则需要根据号码或端口的方式来区分目标SIP域。

空空如常

求真得真

freeswitch的多租户模式的更多相关文章

  1. K8S-OVS使用Openvswitch为提供SDN功能支持单租户模式和多租户模式

    k8s-ovs ============================== 最近在寻求一些工作机会,如果有kubernetes相关研发招聘的朋友,欢迎随时联系我.我的个人简历可以通过百度网盘:htt ...

  2. SaaS多租户模式数据存储方案

    云计算多租户几乎用于所有软件即服务 (Software as a Service, SaaS) 应用程序,因为计算资源是可伸缩的,而且这些资源的分配由实际使用决定.话虽如此,用户可以通过 Intern ...

  3. SaaS多租户模式数据存储方案比较

    云计算多租户几乎用于所有软件即服务 (Software as a Service, SaaS) 应用程序,因为计算资源是可伸缩的,而且这些资源的分配由实际使用决定.话虽如此,用户可以通过 Intern ...

  4. 近乎产品MVC架构介绍-多租户模式

    应用的数据部分支持多租户,租户可以是呈现区域(PersentArea)也可以是另一个应用.在数据库设计方面采用最简单的方式,在应用数据表中增加TenantTypeId(存储对应的Application ...

  5. Azure AD(五)使用多租户应用程序模式让任何 Azure Active Directory 用户登录

    一,引言 距离上次分享关于 “Azure AD" 的知识过去差不多2个多月了, 今天最近刚好也是学习,分享一下关于Azure AD 使用多租户应用程序模式让任何 Azure Active D ...

  6. Module-Zero之租户管理

    返回<Module Zero学习目录> 开启多租户 租户实体 租户管理者 默认租户 开启多租户 ABP和Module-Zero可以运行多租户或单租户模式.多租户默认是禁用的.我们可以在mo ...

  7. OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  8. ABP Zero 多租户管理

    ABPZero - 多租户管理 启用多租户 ASP.NET Boilerplate和module-zero可以运行多租户或单租户模式.多租户默认为禁用.我们可以在我们的模块PreInitialize方 ...

  9. 番外篇--Moddule Zero多租户管理

    番外篇--Moddule Zero多租户管理 2.1.1 关于多租户 强烈建议阅读这个文件前阅读多租户文档. 2.1.2 启用多租户 ASP.NET Boilerplate和module-zero可以 ...

  10. 数据层的多租户浅谈(SAAS多租户数据库设计)

    在上一篇“浅析多租户在 Java 平台和某些 PaaS 上的实现”中我们谈到了应用层面的多租户架构,涉及到 PaaS.JVM.OS 等,与之相应的是数据层也有多租户的支持. 数据层的多租户综述 多租户 ...

随机推荐

  1. chrome浏览器出现《您的连接不是私密链接》

    问题现象 键盘切换到英文输入 点击页面,就页面中间随意点一下即可 不是输入框!不是输入框!不是输入框! 不是找啦!不是找啦!不是找啦! 在chrome该页面上,直接键盘敲入这11个字符:thisisu ...

  2. C# 输出的格式转换,占位/补位,字符串拼接、字符串内插法

    // "0"描述:占位符,如果可能,填充位           Console.WriteLine(string.Format("{0:000000}", 12 ...

  3. 免费背景音人声分离解决方案MVSEP-MDX23,足以和Spleeter分庭抗礼

    在音视频领域,把已经发布的混音歌曲或者音频文件逆向分离一直是世界性的课题.音波混合的物理特性导致在没有原始工程文件的情况下,将其还原和分离是一件很有难度的事情. 言及背景音人声分离技术,就不能不提Sp ...

  4. MyBatisPlus-使用步骤

    MyBatisPlus-使用步骤 第一步 引入maven坐标依赖 <dependency> <groupId>com.baomidou</groupId> < ...

  5. linux中创建新用户并且放到用户组中

    1.打开终端并以 root 用户身份登录到 Linux 系统 2.使用以下命令创建一个新用户 sudo useradd -m username 将 "username" 替换为你要 ...

  6. MySQL进阶篇:详解MySQL存储引擎选择

    MySQL进阶篇:第一章_一.五_MySQL存储引擎选择 在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎.对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合. InnoDB: ...

  7. 华为云GaussDB助力工商银行、华夏银行斩获“十佳卓越实践奖”

    近日,2023金融街论坛年会在北京成功举办.活动期间,由北京金融科技产业联盟举办的全球金融科技大会系列活动--分布式数据库金融应用研究与实践大赛获奖结果正式公布.其中,由华为云GaussDB参与支持的 ...

  8. 教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  9. 华为云 UCS (On-Premises):运行在您本地数据中心的CCE集群

    摘要:华为云分布式云原生UCS服务,是面向分布式云场景下的新一代云原生产品,提供UCS (Huawei Cloud).UCS (Partner Cloud).UCS (Multi-Cloud).UCS ...

  10. 如何通过jstat命令进行查看堆内存使用情况?

    摘要:jstat命令可以查看堆内存各部分的使用量,以及加载类的数量. 本文分享自华为云社区<JVM之通过jstat命令进行查看堆内存使用情况>,作者:共饮一杯无 . 基本概念 jstat是 ...