1.2 背景
Kamailio起源于一个研究项目——SER。SER项目的全称是SIP Express Router,最早是由位于德国柏林的FhG FOKUS研究所开发的,并以GPL协议发布。核心研发人员有Andrei Pelinescu-Onciul、Bogdan-Andrei Iancu、Daniel-Constantin Mierla、Jan Janak以及Jiri Kuthan。2004年FhG FOKUS在SER的基础上启动了一个新项目IPtel(iptel. org),次年该项目的商业部分卖给了Tekelec,核心开发团队中部分成员去了iptel.org,而Bogdan和Daniel离开FhG FOKUS创建了一家新的公司Voice-System,并开始维护开源版本的SER——OpenSER[5]。后来,OpenSER分出两个项目[6],一个是Kamailio,另一个是OpenSIPS。再后来,Kamailio与OpenSER项目合并,这使得Kamailio看起来更“正宗”一些。不管怎样,两者最初的代码都是一样的,但由于思路和方向不同,后来的版本差异就比较大了。本书中我们主要讨论Kamailio。下面是Kamailio的发展简史。
□ 2001年9月,SER项目,Andrei Pelinescu-Onciul在德国FhG FOKUS研究所写下第一行代码。
□ 2005年6月,分离为SER与OpenSER两个项目。
□ 2008年8月,OpenSER分为Kamailio与OpenSIPS,首个Kamailio版本是1.4.0。
□ 2008年11月,OpenSER与Kamailio代码合并,两者的模块可以通用,但分为不同的模块目录。
□ 2009年3月,发布Kamailio v1.5.0,这是代码合并后的第一个大版本,该版本引入了很多新特性。
□ 2013年3月,发布Kamailio v4.0.0,彻底整合了OpenSER的模块,使用同一个模块目录。
□ 2017年2月,发布Kamailio v5.0.0,增加了KEMI支持,移除了MI控制接口,将相关功能统一到RPC管理接口。
□ 2017年12月,发布Kamailio v5.1.0,增强了KEMI支持,增加了sipdump等9个新模块。
□ 2018年11月,发布Kamailio v5.2.0,继续增强KEMI支持,增强了dispatcher模块,支持rtpengine转码功能,增加了acc_json等6个新模块。
□ 2019年11月,发布Kamailio v5.3.0,继续增强KEMI支持,增强dispatcher模块,支持HAProxy协议,增加了rtp_media_server等6个新模块。
□ 2020年7月,发布Kamailio v5.4.0,继续增强KEMI支持,支持STIR/SHAKEN,增加了JSON格式日志支持,增加了secsipid、kafka等5个新模块。
□ 2021年5月5日,发布Kamailio v5.5.0,继续增强KEMI支持,增加rtpengine的Websocket控制接口支持,增加jwt等6个新模块。
□ 2022年2月27日,发布Kamailio v5.5.4,本书开始写作时最新的版本,包含一些缺陷更新。
□ 2022年5月,发布Kamailio v5.6.0,本书截稿时,该版本已冻结更新并准备发布。完整的特性列表尚未公布。当你拿到本书时,相信该版本就已经发布了。
Kamailio简史如图1-2所示。
图1-2 Kamailio简史(参考Daniel-Constantin Mierla在ClueCon 2020上的演讲)