《Kamailio实战》推荐语及推荐序

2022-08-22 00:00 [kamailio]

感谢各位老师、前辈、同仁对我的新书《Kamailio实战》的肯定与支持。下面是本书的推荐语及推荐序。

推荐语

本书可以视为《FreeSWITCH权威指南》的姊妹篇,秉承杜金房老师的一贯风格:庖丁解牛,代码说话。既有系统大局观,又有详实实操步骤,是学习Kamailio和SIP服务技术的一本工具宝典。 —— 宋利 上海交通大学教授

杜老师在项目开发和与客户的交流中发现单机版的FreeSWITCH已经无法满足需求,因此撰写了本书。本书融入了杜老师丰富的Kamailio软件开发经验,他在书中列举了大量Kamailio操作实例,还加入了FreeSWITCH、Lua等快速入门内容。本书是一本实用、详细的Kamailio教程,一定会像《FreeSWITCH权威指南》一样大受欢迎。 —— 张昊,中南大学计算机学院教授,博士生导师,腾讯云最具价值专家(TVP)

从2015年在声网主办的实时互联网大会(RTE大会)上认识杜金房先生以来,他始终致力于开源电信项目的贡献和研究,在这方面也笔耕不辍、著作等身。他在FreeSWITCH方面的很多书籍文章已成为这个领域的基本资料,帮助了不少电信和WebRTC领域的开发者。这本书对Kamailio相关知识的介绍深入浅出,相信对Kamailio有兴趣的同好们能从中受益。 —— 赵斌 声网创始人CEO

杜老师热爱分享,通过写书、讲课、建社区,极大拉低了VoIP开发的技术门槛。经他培训出来的技术人员正在为通信行业贡献力量。杜老师为RTC行业发展做出的贡献有目共睹。Kamailio是很好的开源软件,希望这本书能成为从事RTC开发的伙伴们的案头书,帮助其降低时间成本,提高开发效率。 ——王文敏 中移在线高级技术专家

我和老杜是因为开源认识的,我现在做的产品TDengine和Kamailio一样都是开源的。老杜的这本关于Kamailio书写得深入浅出,我读完后对Kamailio的了解加深很多。这本书主要是用Lua写路由脚本,这让我觉得很亲切。如果你在做通信领域工作,推荐一定要读一读,特别是在做SIP相关工作的朋友。 —— 陶建辉 TDengine创始人

一本深入浅出介绍SIP基础知识、Kamailio(开源SIP服务器)实战的好书。作为一个诞生20年的成熟开源项目,终于有了中文版图书,强烈推荐给每一位对SIP感兴趣的朋友。认真研读,必有收获。 —— 庄表伟 开源社理事

金房老师在互联网音视频和通信网语音技术体系,有着十余年的丰富经历和独到见解,作为腾讯云最具价值专家(TVP),在业界有着广泛影响力。

本书在原理和实战两方面入手,从SIP协议出发,深入浅出地对Kamailio的基本原理、组件及高效使用进行了全面阐述,生动且不失深度,适合通信网开发及维护人员、互联网音视频从业者以及相关专业高校学生等快速入手;相信通过本书,作者能将其丰富经验和深刻见解传递给更多业界同仁。 —— 王军 腾讯云通信 副总经理

杜老师是国内的SIP信令协议和音视频领域的专家,一直积极参与FreeSWITCH开源项目,并热衷于在社区布道,使用过FreeSWITCH的同学可能都受益过他的书或者分享,是我辈技术人的榜样。Kamailio作为SIP代理服务器,可以很好的帮助构建FreeSWITCH集群,杜老师作为这一领域的专家,这一本介绍Kamailio的书非常推荐,对于想要了解Kamailio、想要构建FreeSWITCH集群的同学是一个本非常值得阅读的书。 —— 赵加雨 钉钉副总裁,音视频负责人

推荐序一

杜金房先生邀我为他的新书写一个推荐序,我非常高兴。我曾在通信行业工作的,创业之前,在 Motorola、3Com 等公司研发通信产品 10 余年,对通信类的技术非常感兴趣。 不过我之前对 Kamailio 不是很了解,因此利用周末时间学习了一下。

Kamailio 是一款有 20 多年历史的开源软件,能历经这么多年仍然保持强大的生命力,足⻅其不凡。老杜的书写得深入浅出,让我轻松理解了 Kamailio,也让我对老杜产生了由衷的佩服。

我现在做的产品 TDengine 就是开源的,认识老杜也是因为开源。大概是由于我比较高调,老杜很早就来到我们的用户微信群跟我们交流用 TDengine 来处理话单的存储和查询的感受。在 2021 年的一次开源大会上,老杜还拉着我在嘈杂的晚会一⻆聊了半个小时。

TDengine 是我现在带领团队在做的创业项目。2016 年下半年,我发现大家都习惯性采用 Hadoop 大数据平台来处理从机器、传感器、智能硬件上采集到的数据。其实这些数据是很有特点的,比如时序、结构化、很少删除等,我便想到应该充分利用这些数据特点,开发一个专用的大数据处理平台,来大幅提高系统的处理效率,减少系统研发和维护的复杂度。我个人判断,今后世界上 90% 的数据都是机器、传感器产生的,而不会是人产生的,这是一个巨大的市场,很有想象空间,因此我决定再次创业,专注于物联网、工业互联网领域,打造一个专用的高效时序大数据处理平台。

跟 Kamailio 类似,TDengine 也是使用 C 语言开发的。当然,20 多年前做 Kamailio 这样的软件,除了 C 语言几乎没什么其他选择,而现在我们有了更多的选择,比如被誉为互联网时代的 C 语言的 Go 语言等。但是因为我个人一直用 C 语言做研发,而且底层软件, 包括几乎所有流行的数据库,都是用 C 语言开发的,所以我还是毫不犹豫地选择了 C 语 言。老杜也是 C 语言的忠实用户,看到他在 FreeSWITCH 开源项目中 10 多年间贡献了超过 15 万行代码,我还是非常佩服的。向开源项目做贡献跟自己做开源项目不一样,比如我自己 的 TDengine 由我自主可控,可以提交任何我认为正确的代码,而向开源项目做贡献,要得到上游项目方的认可。老杜能够持续多年贡献这么多代码,本身就是一种实力的表现。

上个月老杜发起了一个开源项目:在 FreeSWITCH 中写一个 TDengine 的模块,使用 TDengine 存话单。话单本身就是 TDengine 的一个很好的应用场景,符合时序数据库的特点:数据量大,总体按时间有序,一次写、多次读且不能修改。在开发过程中他还遇到了 TDengine 客户端库与 FreeSWITCH 中符号表冲突的问题,并向我们提出了问题和解决方案。这也是开源的好处,如果不是他,我们可能要过很久才会发现这些潜在的问题,何况他还给我们带来了免费的解决方案。未来必将是开源软件主导的世界,因为这样会让整个社会的协作更有效率,让全球的开发者都能参与进来,产品的质量也更有保障。

IT 技术表面上变化很快,但究其根本,变化很小,因为底层的原理都是一样的。话单,本质上就是时序数据。而时序数据的存储,与 IT 系统中的消息队列的存储几乎没有区别。数据库技术中的集群技术,包括高可靠、高可用等,在通信行业,至少 30 年前就在 研究和应用了。通信行业的集群需要通过分布式技术,让系统处理能力实现水平扩展,让硬件实现热插拔,让软件实现在线升级。因此,如果你精通一个领域的知识,再转到另外一个相关领域,会很容易。

再说回 Kamailio,这本书主要以 Lua 语言来写路由脚本,这对我来说很亲切。我们在 TDengine 客户端库中也用到了 Lua 语言。

这是第一本关于 Kamailio 的中文书,如果你在通信领域工作,特别是在做 SIP 相关工作,推荐你读一读这本书。

陶建辉
TDengine创始人
2022年5月写于美国加州

推荐序二

收到杜总让我写推荐序的邀请后,我一口气看完了杜总发过来的手稿,感到既惶恐又激动。感到惶恐是因为我平时除了写代码之外,很少在其他的“写”上下功夫。一是因为“懒”,二是因为文采实在有限——我的老板经常对我写的材料感到无可奈何(在此,感谢我的老板的宽容,并给我大块的自由时间)。我担心我这写作水平把杜总这么好的书写坏。至于激动,是因为杜总不仅技术水平过硬,而且性格好,交际广。他认识那么多技术专家,却还能想起我,让我觉得荣幸之至。

既然要写推荐序,那么我就按部就班地写两方面的东⻄。一方面是 Kamailio 本身,另 一方面是杜总。

关于 Kamailio,我是在 2012 年开始使用的。在那之前,我们几个人开发了一套完整的 VoIP 产品,并于 2009 年卖给了美国一家公司。两年之后,我厌倦了安逸,萌生了再开发一套 VoIP 产品的念头。重起炉灶,从零开始是不现实的,那也是对全球源码贡献 者的不尊重。当时在我们面前有几个优秀的开源栈:Resiprocate、Yate、FreeSWITCH、OpenSIPS、BellSIP、Kamailio、Sofia等。由于当时我们还有大量的客户使用 E1/T1 中继,所以还要考虑 IMS、SIGTRAN、SS7 相关模块的开发。经过将近半年的摸索、压测、比对,我们在系统方面选择了 FreeSWITCH+Kamailio+Yate 的组合,以求在终端方面提供基于 IMS 架构的 SIP 软电话和 WebRTC 网⻚软电话。

在这里,我简单说一下我对产品的理解。相对来说,我觉得 FreeSWITCH、Kamailio 等都不算是一个完整的产品。一个产品是需要从整体用户需求、稳定性、可靠性、可兼容性、可维护性等方面来综合设计的(先声明,我不是产品经理),比如负载均衡、路由分发、资源重组、信令媒体分离、信令协议栈适配、音视频媒体分离、传输和编解码算法分离⋯⋯所以,很多国内精通 FreeSWITCH 或者 Kamailio 的程序员,不一定能做出一个很好的产品。

Kamailio 和 OpenSIPS 都是 OpenSER 的分支,为什么我们选择了 Kamailio 呢?这和 我们当时的产品思想有关。这主要体现在如下几方面。

第一方面,我们使用 FreeSWITCH 做媒体,并通过 dialplan 的 Lua 接口,使用 Lua 语 言开发了一套 B2BUA 模块。这个 B2BUA 模块可以在不使用 Socket 的情况下,直接在 应用层对接 Kamailio 的 Lua 模块并进行进程间的交互,从而形成 SIPServer(Kamailio) +B2BUA+MediaServer(FreeSWITCH)的标准 VoIP 分布式架构。

第二方面,Kamailio 能够很好地支持 WebSocket 交互,从而支持 WebRTC 通信。

第三方面,Kamailio 能够方便对接 Yate 的 SIGTRAN 模块,进而驱动 M3K、M5K 等 外部 SIGTRAN 设备。这样 Kamailio 就成了一个功能比较⻬全的网关模块(支持 SIP、 SIGTRAN、WSS 等)。

第四方面,Kamailio 能够很完美地支持 IMS 架构中的 P-CSCF 和 S-CSCF(虽然还是 修改了一些代码)对接。现在随着 5G 的全面部署,4G 中的 IMS 模块也变成了 v-IMS 模 块,Kamailio 能完美实现对新网元的功能对接。

当然,其他的开源栈并非不优秀,只是基于我们的产品设计,我们选择了 Kamailio, 并且它也确实很好用!

关于杜总,我们年纪相同,相识于 2017 年。当时,他正为声网的 RTC 四处奔波。实 际上,我和杜总身上有一些共同的标签,比如技术控,所以,几次交流后就变成了好朋 友。但杜总身上有很多我不具备的优秀品质,比如勤奋、热爱分享。

杜总出版了多本书,最有名的是《FreeSWITCH权威指南》。书很好,我看了好几遍。其实,我要比杜总更早接触 FreeSWITCH 和 Kamailio。但我总是宁愿看晦涩的英文文档,也从没动过把自己踩的坑好好整理成中文书的念头。2019 年,我和杜总曾计划联合写一本书,书名和目录都定下来了,但我却一直停工到现在。看到杜总又一本新书即将出版,我愈加觉得自己的“懒癌症”有点严重了!

杜总通过出书、讲课、建社区,极大地拉低了 VoIP 开发的技术⻔槛,培训出了无数优秀的技术人员,他为 RTC 行业发展做出了有目共睹的贡献。

最后,对于这本书,我希望在从事 RTC 开发的伙伴能够人手一本,因为它会帮大家降低时间成本,提高开发效率。

王文敏
中移在线高级技术专家




《大道至简》


微信公众账号
FreeSWITCH-CN


小樱桃科技


RTS VIP


RTS 实时解决方案