6

作为一个对开源 PBX 项目(例如Asteriskand )非常陌生的人FreeSWITCH,我正在努力解决一些信息过载问题。已阅读 Wiki 上的基本 FreeSWITCH 文档,但仍有一些问题。由于我对术语不是很熟悉,因此我将尝试使用近似值。

尝试创建 FreeSWITCH 的小型/简约构建,需要在相当旧的笔记本电脑(Celeron 1GHz,512MB RAM,20GB HDD,已经运行 Debian“Wheezy”)上运行,并将其设置为 6 端口 GSM-SIP /Jabber 网关。因此,“小”和“简约”是指没有绝对必要的模块/可选软件(例如,不需要 IVR 公告或 Skype 集成)——以保持最小的内存占用,并且占用较少的硬盘空间。

粗略的想法是有6个GSM端口(通过'GSM-open module',类似于chan_dongle)到公共电话网络,大约60个SIP分机,最多支持6个涉及GSM端口的呼叫,以及大约6个SIP-SIP呼叫(内部 PBX),在此设置上。我读过 GSMopen 模块的 CPU 开销非常低,所以我猜这是可能的。

  1. 有人可以确认这是一个现实的目标吗?
  2. 为简约构建选择的最小模块集可能是什么?
  3. 对于初始构建期间未选择的模块,以后可以添加吗?如果是这样,是否需要我完全重建 FreeSWITCH,只重建模块,或者构建所有内容,但只需要更改配置以确保加载和配置模块?
  4. 有没有粗略估计在这种配置中可以支持的最大呼叫率是多少?对于 SIP-SIP 呼叫?考虑到处理器功率不足和 RAM 很少(根据现代标准),我猜这两者都将成为瓶颈,但添加 RAM 仍然是可能的(即使成本高昂且困难重重)。
  5. 我已经读过可以使用 Lua/Python/Java 等创建“钩子”。但是,如果有人分享一些使用此类钩子可能实现的例子,它会使概念更清晰。是否可以希望使用这些钩子来编写像“未接来电记录”或“无应答重定向”这样的应用程序?
4

2 回答 2

5

有人可以确认这是一个现实的目标吗?

是的,这很现实。您需要尽可能少地进行转码,因为那是需要 CPU 资源的地方。但即使使用 1Ghz Celeron,6 个转码会话似乎也很现实。但它需要测试:)

为简约构建选择的最小模块集可能是什么?

只需从默认的模块列表开始,然后添加 gsmopen(我没有使用 gsm 网关的经验,对此部分无能为力)。内存占用非常低,您以后可能需要其中一些模块。

对于初始构建期间未选择的模块,以后可以添加吗?

据我记得,Wiki 描述了这个过程。您编辑 modules.conf 并制作特定模块。

有没有粗略估计在这种配置中可以支持的最大呼叫率是多少?对于 SIP-SIP 呼叫?考虑到处理器功率不足和 RAM 很少(根据现代标准),我猜这两者都将成为瓶颈,但添加 RAM 仍然是可能的(即使成本高昂且困难重重)。

这实际上取决于您的拨号方案的复杂性。每个上下文都包含许多条件,这些条件对通道变量进行正则表达式匹配。所以,你的拨号方案越复杂,你得到的 CPS 就越少。但对于 6 通道网关,我认为这不是问题。GSM 网络会比你的盒子慢得多 :)

我已经读过可以使用 Lua/Python/Java 等创建“钩子”。但是,如果有人分享一些使用此类钩子可能实现的例子,它会使概念更清晰。是否可以希望使用这些钩子来编写像“未接来电记录”或“无应答重定向”这样的应用程序?

您可以使用 FreeSWITCH 控制 FreeSWITCH 行为的各个方面。甚至还有一些例子,完整的拨号方案由外部程序重新实现(Kazoo 就是这样做的)。

最简单的操作模式是当你的 Lua/JS/Perl/Python 脚本从拨号方案中启动时:然后它接收一个“会话”对象,你可以对调用做任何你想做的事情:播放声音、桥接、转发、拨打一个新电话并将它们连接在一起,等等。在我的博客中,有一个实际的例子。

然后,您可以构建一个外部应用程序,该应用程序连接到 FS 套接字并监视事件并对活动调用执行操作。

此外,它可以在相反的方向完成:你运行一个服务器,FS 用它的套接字库连接到它。

此外,您可以拥有一个 HTTP 服务,它将 XML 配置片段传递给 FreeSWITCH,并在每次调用时请求这些配置(这将是 CPU 最密集的应用程序)。这样,您可以从一些内部数据库中提供 FS,并构建容错系统。

我希望这会有所帮助 :) 如果需要,您也可以在 Skype 中找到我。

于 2013-08-21T13:36:20.123 回答
2

FreeSWITCH 并不需要大量内存,您可以简单地从默认的模块集开始(最好是使用预构建的 Debian 软件包)。例如,在我的 64 位机器上,FreeSWIITH 进程只占用 35MB 内存。

freeswitch@vx03:~$ uname -a
Linux vx03 2.6.32-5-xen-amd64 #1 SMP Thu Nov 3 05:42:31 UTC 2011 x86_64 GNU/Linux
freeswitch@vx03:~$ ps -p 11873 v
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
11873 ?        S<l   10:29      0     0 258136 36852  2.3 /opt/freeswitch/bin/freeswitch -nc -rp -nonat -u freeswitch -g freeswitch

我将在今天晚些时候回答你剩下的问题

于 2013-08-21T10:55:02.597 回答