FreeSWITCH 基础

Stella981
• 阅读 647

【1】FreeSWITCH 是什么?

FreeSWITCH是一个开源的电话交换平台。

世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交换平台。

从技术上讲,FreeSWITCH是一个B2BUA。

FreeSWITCH 基础

FreeSWITCH是一个背靠背的用户代理,用来帮助通信的双方进行实时的语音视频通信。

【2】FreeSWITCH背靠背用户代理

(1)代理服务器(Proxy Server)

设想Bob和Alice是经人介绍认识的,而他们还不熟悉,Bob想请Alice吃饭就需要一个中间人(M)传话,而这个中间人就叫代理服务器。

(2)重定向服务器(Redirect Server)

它以类似于这样的方式工作──中间人M告诉Bob,我也不知道Alice在哪里,但我爱人知道,要不然我告诉你我爱人的电话,你直接问她吧,我爱人叫W。

这样,M就成了一个重定向服务器(把Bob对他的请求重定向到他的爱人,这样Bob接下来要直接联系他的爱人),而他的爱人W是真正的代理服务器。

这两种服务器都是UAS,它们主要是提供一对欲通话的UA之间的路由选择功能。

(3)注册服务器(Register Server)

试想这样一种情况:Alice还是个学生,没有自己的手机,但它又希望Bob能随时找到她。于是,

当她在学校时就告诉中间人M说她在学校,如果有事找她可以打宿舍的固定电话;

如果她要回家,也通知M说有事打家里电话;

或许某一天她要去姥姥家,也要把她姥姥家的电话告诉M。

总之,只要Alice换一个新的位置,它就要向M重新“注册”,以让M能随时找到她,这时候M就相当于一个注册服务器。

(4)背靠背用户代理(Back-to-Back UA,B2BUA)。

需要指出,其实RFC 3261并没有定义B2BUA的功能,它只是一对UAS和UAC的串联。

FreeSWITCH就是一个典型的B2BUA,为了理解B2BUA,我们来看上述故事的另一个版本。M和W是一对恩爱夫妻。M认识Bob而W认识Alice。

M和W有意撮合两个年轻人,但见面时由于两人太腼腆而互相没留电话号码。

事后Bob想知道Alice对他感觉如何,于是打电话问M,M不认识Alice,就转身问爱人W(注意这次M没有直接把W的电话给Bob)。

W紧接着打电话给Alice,Alice说印象还不错,W就把这句话告诉M,M又转过身告诉Bob。

这样,M和W一个面向Bob,一个对着Alice,他们两个合在一起,称为B2BUA。

其实这里UAC和UAS的概念也不是那么重要,重要的是要理解这个背靠背的用户代理。

因为事情还没有完,Bob一听说Alice对他印象还不错,开心得不得了,便想请抽空请Alice吃饭,他将这一想法告诉M,M告诉W,W又告诉Alice。

然后Alice问去哪里吃啊,W又只好问M,M再问Bob……在这对年轻人挂断电话之前,M和W只能“背对背”不停地工作。

FreeSWITCH 基础

从图B2BUA可以看出,四个人其实全是UA。

当然,虽然FreeSWITCH是B2BUA,但也可以经过特殊的配置,实现一些代理服务器和重定向服务器的功能,甚至也可以从中间劈开,两边分别作为一个普通的UA来工作。

这没有什么奇怪的,在SIP世界中,所有UA都是平等的。具体到实物,则M和W就组成了实现软交换功能的交换机,它们对外说的语言是SIP,而在内部它们使用自己家的语言沟通。

Bob和Alice就分别成了我们常见的软电话,或者硬件的SIP话机。

Good Good Study, Day Day Up.

顺序 选择 循环 总结

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
JsSIP和FreeSWITCH整合
写在前面:FreeSWITCH作为服务器,通过SIP协议,Web端使用jssipwebrtc和其他软电话进行通信一、先配置FreeSWITCH(用的版本1.6.20)的配置:1、修改vars.xml文件,找到下面字段,并设置<XPREPROCESScmd"set"data"internal_ssl_enabletrue"
Stella981 Stella981
3年前
FreeSWITCH 学习笔记(一)
【1】FreeSWITCH学习笔记1、Windows安装包下载地址:http://files.freeswitch.org/windows/installer/2、源码下载地址:http://files.freeswitch.org/freeswitch1.2.10.tar.gz3、FreeSWITCH后台模式启动命令:freesw
Stella981 Stella981
3年前
FreeSWITCH 安装
\TOC\FreeSWITCH安装!FreeSWITCH(https://gitee.com/yaozhf/mypictures/raw/master/0003.png"FreeSWITCH")FreeSWITCH是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供语音和聊天的产品驱动。
Stella981 Stella981
3年前
FreeSWITCH1.6安装教程Centos
介绍FreeSWITCH是个网络电话转化器,相当与网络转换器,不过这个是用于IP电话,构建公司的电话通讯系统需要用该技术,因为按照官方文档无法成功安装。本文目的:FreeSWITCH安装步骤官方参考:https://freeswitch.org/confluence/display/FREESWITC
Stella981 Stella981
3年前
Freeswitch配置之sofia
  SIP模块 mod\_sofiaSIP 模块是 FreeSWITCH的主要模块。在 FreeSWITCH中,实现一些互联协议接口的模块称为 Endpoint。FreeSWITH支持很多的 Endpoint,如 SIP、H232等。那么实现 SIP 的模块为什么不支持叫 mod\_sip呢?这是由于 FreeSWITCH的 Endpoint 
Stella981 Stella981
3年前
FreeSWITCH测试拨号规则实例
现在用户电话已经注册到 FreeSWITCH, 用户可以发起呼叫测试。跳到 TestingtheexampleDialplan 部分。FreeSWITCH 支持通过本地声卡或者外部的耳机连接到 FreeSWITCH 。可以编译可选模块 PortAudiomodule(mod\_portaudio) 启用这个功能。访问http://wiki.fr
Wesley13 Wesley13
3年前
ubuntu16.0.4安装freeswitch
1\.安装freeswitch库gitclonehttps://github.com/signalwire/freeswitch.git2\.安装环境依赖aptgetinstalllibeditdevlibldnsdevlibpcre3devlibspeexdspdevlibspeexdevl