Kamailio实战
上QQ阅读APP看书,第一时间看更新

1.1 什么是Kamailio

Kamailio主要处理SIP,因此了解SIP对更快地学习Kamailio有很大帮助,而学好Kamailio又有助于进一步了解SIP,两者相辅相成。即使没有这两者太多的基础,相信通过本章的讲解,你也能初窥门径。

Kamailio基于GPLv2+开源协议发布,它可以支持每秒建立和释放成千上万次的呼叫(Call Attempt Per Second,CAPS),可用于构建大型的VoIP实时通信服务——音视频通信、状态呈现(Presence)、WebRTC、实时消息等;也可以构建易扩容的SIP-to-PSTN网关、IP-PBX系统,以及连接Asterisk、FreeSWITCH、SEMS等。

Kamailio具有如下特性:

□ 支持异步的TCP、UDP、SCTP、TLS、WebSocket。

□ 支持WebRTC,支持IPv4和IPv6。

□ 支持IM消息及状态呈现。

□ 支持XCAP和MSRP Relay。

□ 支持异步操作。

□ 支持VoLTE相关的IMS扩展。

□ 支持ENUM、DID以及LCR路由。

□ 支持负载均衡、主备用路由(Fail-Over)。

□ 支持AAA(记账、鉴权和授权)。

□ 支持很多SQL和NoSQL数据库后端,如MySQL、PostgreSQL、Oracle、Radius、LDAP、Redis、Cassandra、MongoDB、Memcached等。

□ 支持消息队列,如RabbitMQ、Kafka、NATS等。

□ 支持JSON-RPC、XML-RPC控制协议以及SNMP监控。

Kamailio从2001年开始开发[3],至今也有20余年的历史了。Kamailio的读法是Kah-Mah-Illie-Oh,或简单一点,Ka-Ma-ili-o,或Kama-ilio,谷歌翻译成“卡迈里奥”,但笔者觉得翻译成“卡马伊里奥”或简称“卡马”[4]更为合适。

Kamailio与FreeSWITCH配合使用最常用的场景是Kamailio作为注册服务器和呼叫负载均衡服务器(一般主备配置),FreeSWITCH进行媒体相关的处理(如转码、放音、录音、呼叫排队等),如图1-1所示。

图1-1 Kamailio与FreeSWITCH配合使用

简单总结一下,Kamailio是一个:

□ SIP服务器(SIP Server)。

□ SIP代理服务器(SIP Proxy Server)。

□ SIP注册服务器(SIP Registrar Server)。

□ SIP地址查询服务器(SIP Location Server)。

□ SIP重定向服务器(SIP Redirection Server)。

□ SIP应用服务器(SIP Application Server)。

□ SIP负载均衡服务器(SIP Load balance Server)。

□ SIP WebSocket服务器(SIP WebSocket Server)。

□ SIP SBC服务器(SIP SBC Server)。

相对而言,Kamailio不是:

□ SIP软电话(SIP Phone)。

□ 媒体服务器(Media Server)。

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

它有以下特性:

□ 快。

□ 可靠。

□ 灵活。

但它不做以下事情:

□ 发起通话。

□ 应答通话。

□ 做音、视频等媒体处理。