基于 FreeSWITCH 搭建互联网电话交换机

Introduction

本篇文章笔者将介绍一种简单的基于 SIP 协议的 VoIP 电话网络系统的搭建。我们这次搭建的并不是传统意义上的使用程控交换机操作的双芯铜线座机电话网络(也称 PSTN,公共交换电话网络),而是一种网络IP电话网络。

这里先解释以下问题:

What is a switch?

交换机,就像一个不知疲倦的高效率的接线员一样,当A发起到B的通讯请求时,本“接线员”就将A->B的链路接到一起,使A与B之间可以互相交流。

Why VoIP?

大家肯定都注意到,移动早在去年推出了在纯 4G 分组数据网络上的高清通话(VoLTE),而电信在家家户户升级光纤,拆除进户电话线后,传统的固话竟然直接接在ONU设备(光猫)上。这一切的背后到底是人性的扭曲还是道德的沦丧?啊呸呸呸,不论是 VoLTE,VoWiFi,电信光猫上的语音功能,他们的本质都是一个,VoIP,即在承载网络上传输语音数据。所以 VoLTE 就是在 LTE 接入的网络中传递语音(而不需要回落到类似PSTN的传统2G的电路交换,上网通话都在 4G 环境下),VoWiFi 就是在现有 Wi-Fi 环境下,利用 Wi-Fi 网络来传递语音。现代电话采用IP网络来作为载体是一种明显的趋势,满足了现在人们对快速高清通话、富媒体传输的需要。

QQ的语音平台模型可能比较容易解释这套系统:张三通过QQ语音服务器联系上了李四,像这样:    张三 <--> QQ语音服务器 <--> 李四

Related Communication Protocols

以上提到的几乎所有现代电话通信方式,其本质大都是基于 SIP 协议实现的 VoIP 。而整个这样一套接入控制系统,也称 IMS。

SIP:(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。是 VoIP 系统中最主要的协议,通话前期它控制信令(如拨号给张三)的传播,并维护后期的数据传输通道。

IMS:(IP Multimedia Subsystem)IP多媒体子系统,是对上述 VoIP 接入控制交换这一套系统的总称。

具体定义这不阐述,自行G一下。

Set-up Platforms

任意常见的操作系统平台,类 Unix/Windows 都可以,所以本套电话网络可以搭建在树莓派上!

核心软件:FreeSWITCH (免费开源,超强大的说)

笔者提示:本软件可以在官方网站上获取源代码与预编译好的二进制代码。编译完成后,可以使用 FreeSWITCH.exe / fs_cli 来启用控制台。在默认情况下, FreeSWITCH 提供了 1000-1019 这一些默认帐号可以提供测试目的的使用。下面,笔者将介绍 FreeSWITCH 的重要配置目录与文件。

conf/dialplan:这里就是拨号规则的配置文件夹。其中包含默认拨号规则文件 (default.xml)。通过修改这些文件可以实现拨号行为的调整。

下面是对其中一规则的摘录:

上面演示了 FreeSWITCH 在拨号时的处理流程。

conf/directory/default:这里存放了本交换机中用户的配置文件。例如:

conf/vars.xml:这是 FreeSWITCH 的变量主要配置文件。下面摘录一些重要的配置项:

Available Clients:

现在各大平台都有可以使用的SIP客户端软件。笔者这里推荐几款:X-Lite(Windows,免费),JusVoIP(Android&iOS,免费),Mac 下同样在 App Store 里有很多可选的客户端。

4条评论

  1. 写得不错,持续关注中?

  2. 如果有公网IP就好了,可以搞到你的腾讯云上,给你的朋友们分享一下
    如果搞到Android手机上,能利用手机网络通话的话,扩展性就强了很多
    不过现阶段通话几乎都免费,没有搞这个的动力了

    1. 在TX云上试过,效果不错。不过很多国外IP会进来扫帐号,很是麻烦…

  3. 你可以了解一下VOS和Asterisk

添加评论