FreeSWITCH 基础

【1】FreeSWITCH 是什么?

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

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

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

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

【2】FreeSWITCH背靠背用户代理

(1)代理服务器Proxy Server

BobAlice是经人介绍认识的,而他们还不熟悉,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 UAB2BUA)。

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结

posted @   kaizenly  阅读(2591)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2018-05-29 书籍
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示