1. 概述
Kamailio是在GPLv2+下发布的开源SIP服务器,每秒能够处理数千个呼叫设置。Kamailio可用于构建VoIP和实时通信的大型平台-存在,WebRTC,即时消息和其他应用程序。此外,它可以轻松用于扩展SIP到PSTN网关,PBX系统或媒体服务器,如Asterisk™,FreeSWITCH™或SEMS。
自2008年以来,Kamailio项目吸收了SIP高速路由器(SER)服务器的功能。换句话说,您可以受益于过去由OpenSER和SER在同一SIP服务器实例中提供的所有功能,以及多年来添加的许多新功能。强大的功能包括:异步TCP,UDP和SCTP,通过TLS进行VoIP安全通信(语音,视频,文本);WebSocket对WebRTC的支持;IPv4和IPv6;简单的即时消息和状态与嵌入式XCAP服务器和MSRP中继;异步操作;用于VoLTE的IMS扩展;枚举;DID和最低成本路由;负载平衡;路由故障转移;账户、认证和授权;支持许多后端系统,如MySQL,Postgres,Oracle,Radius,LDAP,Redis,Cassandra,MongoDB,Memcached;Json和XMLRPC控制接口,SNMP监控。
结合其SIP核心功能和可扩展的API,使用Kamailio(K)构建VoIP和统一通信平台非常简单。

2. Kamailio功能
强大且高性能的SIP服务器
- 注册器服务器
- 位置服务器
- 代理服务器
- SIP应用程序服务器
- 重定向服务器
布署灵活
- 占用空间小–适用于嵌入式设备–二进制文件体积小,可通过模块剥离/添加功能
- 即插即用模块接口–能够在不接触内核的情况下添加新扩展,从而确保核心组件的高度稳定性
- 模块化架构–核心、内部库和模块接口,用于扩展服务器的功能
- 令人印象深刻的扩展存储库–Kamailio源代码树中总共包含150多个模块
3. SIP路由功能
- 无状态和事务性有状态SIP代理处理
- 串行和并行分叉
- 对SIP和RTP流量的NAT遍历支持
- 具有多种分发算法和故障转移支持的负载平衡
- 灵活的最低成本路由
- 路由故障转移
- 高可用性(HA)复制
SIP传输层
支持通过UDP、TCP、TLS和SCTP进行通信IPv4和IPv6
传输层网关(IPv4到IPv6,UDP到TLS,a.s.o.)
SCTP多宿主和多流
WebSocketforWebRTC
异步处理
- 异步TCP处理
- 异步SIP消息处理
- 异步进程间消息队列通信系统
- 分布式消息队列
安全通信
- 摘要式SIP用户身份验证
- 通过ACL或组成员身份进行授权
- IP和网络身份验证
- 对SIP信令的TLS支持
- 透明处理SRTP以确保音频安全
- TLS域名扩展支持
- 针对数据库(MySQL,PostgreSQL,UnixODBC,BerkeleyDB,Oracle,文本文件),RADIUS和DIAMETER的身份验证和授权
IP和域名解析
支持SRV和NAPTRDNS查找SRVDNS故障转移
DNSsec支持
枚举支持
内部DNS缓存系统–避免DNS阻止
IP级别黑名单
多宿主和多域支持
拓扑隐藏–隐藏SIP标头中的IP地址以保护您的网络架构
账户管理
- 基于事件的账户
- 可配置的账户数据详细信息
- 多段呼叫记帐
- 存储到数据库,半径或直径
- 预付费引擎
配置文件
配置文件的脚本语言。该配置采用类似于脚本语言的语法,提供了一种强大而灵活的方法来部署自定义SIP服务。伪变量,用于访问和管理特定于用户和服务器的SIP消息和属性的部分
转换以修改现有的伪变量,仅访问信息的所需部分
超过1000个参数,变量和函数导出到配置文件
运行时更新框架–避免在需要更改配置参数时重新启动SIP服务器
外部互动联接
- RPC控制接口–通过XMLRPC、JSONRPC、UDP或TCP
- RabbitMQ和NSQ连接器
丰富的通信服务
- SIP简单在线状态服务器(丰富的在线状态)
- 在线状态用户代理
- XCAP客户端功能
- 嵌入式XCAP服务器
- 状态对话框信息支持–SLA/BLA
- 即时通讯
- 嵌入式建议零售价继电器
监控和故障排除
- SNMP–简单网络管理协议的接口
- 配置文件分步调试器
- 通过XMLRPC进行远程控制
- 通过RPC和SNMP导出的内部统计信息
- 灵活的调试和错误消息记录系统–记录自定义消息,包括任何标头或伪变量以及SIP消息结构的一部分。
可扩展性API
- Perl编程接口–嵌入用Perl编写的扩展
- JavaSIPServletApplicationInterface–编写JavaSIPServlet以扩展您的VoIP服务并与Web服务集成
- Lua编程接口
- JavaScript编程接口
- 托管代码(C#)编程接口
- 蟒蛇编程接口
- Java编程接口
- 通过TCP连接的通用事件API
多个数据库后端
- (MySQL,PostgreSQL,SQLite,UnixODBC,BerkeleyDB,Oracle,文本文件)和其他具有unixodbc驱动程序的数据库类型
- 连接池
- 可以同时使用不同的后端(例如,对Oracle的记帐和针对MySQL的授权)
- 用于Memcached,Redis,MongoDB和Cassandrano-SQL后端的连接器
互联互通
- 与PSTN网关的直接互连
- 短信或XMPP和其他IM服务的网关
- 与支持SIP的设备和应用程序(如SIP电话(Snom、Cisco等)、媒体服务器(Asterisk、FreeSwitch等))的互操作性
IMS
- 支持与认证
- I-CSCF,P-CSCF,S-CSCF
- 充电、质量校准、国际学习时间
Miscellaneous
- CPL–呼叫处理语言(RFC3880)
- 内部通用缓存系统
- 内存缓存连接器
- RedisNoSQL数据库连接器
- CLI–kamctl和sercmd
- 网络管理界面:西雷米斯
- SIP-T和SIP-I
- 音乐保持队列
- 邮件正文压缩/解压缩(gzip压缩)
- ss7解析器到JSON转换器
- 面向管理员和开发人员的提供大量文档
可扩展性:
Kamailio可以在资源有限的嵌入式系统上运行-性能可以达到每秒数百个呼叫设置Kamailio用作无状态模式下的负载均衡器,每秒可以处理超过5000个呼叫设置
在具有4GB内存的系统上,Kamailio可以为超过300万在线订户提供服务
系统可以通过添加更多Kamailio服务器轻松扩展
Kamailio可用于地理分布式VoIP平台
Kamailio最低成本路由可扩展到数百万个路由规则
直接的故障转移和冗余
