《Kamailio实战》内容及特色
本书从Kamailio的历史、基本概念和逻辑讲起,即使没有相关经验的读者也能轻松入门。如果读者还有一些通信相关的行业背景以及相关的计算机网络基础知识,读起来就会更轻松。为了照顾对通信和SIP不太熟悉的读者,本书附带了大量的脚注信息和相关链接,供读者查阅。本书的附录部分也有FreeSWITCH、Docker和Lua语言等的相关基础知识,即使不熟悉这些内容的读者也能快速入门并无障碍地阅读本书。此外,如果你读过《FreeSWITCH权威指南》,你就有了阅读本书的非常良好的基础。
本书的内容安排如下:
第一章:从Kamailio的历史讲起,讲了SIP相关的名词术语、基本概念和网络拓扑,也讲了Kamailio路由脚本的基本架构。这些都是后续阅读的必备的基础知识。
第二章:深入讲解Kamailio的配置文件,对比原生配置文件与Lua路由脚本的区别。对初学者而言,读完本章,就算是一脚门里,一脚门外了。“好读书,不求甚解”,如果对本章的内容不是很理解,那是很正常的,我们会在后续的章节中抽丝拨茧,深入分析,看完后面的章节一定记着回过来再多读几遍本章。本章相当于即是起点,又是终点,又会是你在项目中真正上手实践的起点。如果读者已经熟悉Kamailio的原生脚本,本章带你快速入门Lua脚本。
第三章:讲Kamailio的基本概念和核心组件。本章内容大部分来自Kamailio的官方网站,很多概念与OpenSIPS中也都是相通的。如果想深入理解Kamailio,这一章是必须要学好的。
第四章:讲KEMI,即Kamailio中最新的嵌入式语言接口。KEMI支持Lua、Python、Javascript等。这一章与具体语言与无关,因此,如果你喜欢Python,那也完全可以学好本章使用Python写路由脚本。本章讲了KEMI支持的脚本语言与原生语言的异同,函数和变量的使用方法等。后面章节中的脚本示例都是基于Lua语言来讲解的,学好本章对深入理解后面的示例相当重要。
第五章:讲Kamailio的运行环境和实例。本书重视实践,因此,有了前面的基础知识,从本章起,你就可以同时运行Kamailio,一边学习一边实践了。本章除了带领你运行Kamailio外,也讲了一些命令行工具和调试手段,帮助你在遇到问题时快速地调试和排错,避免被“卡住”。
第六章:讲Kamailio做路由转发的实际案例。从最基本的讲起,比如无状态转发和有状态转发、并行转发和串行转发,现在看起来也就很简单的几个函数、一目了然,但笔者在初学时可是满世界地找资料。后面还有负载均衡和API路由等,可以说读完本章,基本可以轻松搭建一个SIP路由转发系统了。
第七章:讲Kamailio中数据库的操作与使用方法。Kamailio中很多模块都用到数据库,也支持很多类型的数据库。网上能找到比较多的关于Kamailio搭配MySQL数据库的资料,而对PostgreSQL的介绍则比较少。因而,本章及本书的例子也就更侧重PostgreSQL。
第八章:这是本书最长的一章,大量的示例都放到了本章。有些也是因为示例本身依赖于数据库,而直到第七章我们才讲到数据库。总之本章的示例可以说涵盖到了Kamailio常见的模块和用法的方方面面,还有一些高级的话题如SBC、媒体代理和拓扑隐藏、WebRTC相关的信令及媒体转换等。如果说本书是Kamailio的百科全书,那就是指本章。
第九章:讲Kamailio的性能测试,构建高性能SIP服务器需要注意的地方以及Kamailio高性能的内部秘密。
第十章:没有安全就没有一切,本章讲生产系统常见的安全问题以及Kamailio的解决方案。
附录:Kamailio是一个历史悠久的项目,因而生态复杂,支持的系统和特性众多。为了方便读者在阅读中同时动手实验,本书也准备好了相关代码和实验环境。考虑到每位读者的系统和条件不同,本书的实验统一以Docker和FreeSWITCH为例,为了照顾不熟悉这些系统的读者,本书特意增加了这些附录,希望能一扫所有读者所有的阅读障碍。
鉴于本书的章节安排,本书适合顺序阅读。当然,所谓顺序阅读也不需要逐字逐句阅读。尤其是第三章中列出的参数众多,初次阅读观其大略1即可。读完一遍后,再反复阅读某些章节,相信每次你都会有新的收获。
本书的主要特色是KEMI,以及通过Lua写路由脚本。Lua是一门真正的编程语言,同时又非常轻量级,非常适合这项工作。Lua除了用在Kamailio中外,还广泛用在FreeSWITCH、Nginx(OpenResty)、PostgreSQL、VLC、Wireshark等这些非常有名的软件中。“英雄所见略同”,大概如此吧。
-
《魏略》记载:孔明在荆州,与石广元、徐元直、孟公威俱游学,三人务于精熟,而亮独观其大略。 ↩