如何学习opensips/kamailio/openser

为什么把这三者放一起,不知道的朋友必然有疑问,先简单解释下这三者之间的关系。openser是其他两位的父亲;opensips算是二儿子,长大了就出去单干了;而kamailio继承了正统,直接是openser的延续,所以现在从openser延续下来的就是kamailio和opensips,但他们两个都是同一个父亲,所以他们流着同样的血液,对程序而言就是相同的内核、接口、配置方式。
他们能做什么?以下是他们各自的宣传:
OpenSIPS is a multi-functional, multi-purpose signaling SIP server - it can act as SIP Router/Switch, SIP Registrar, Application Server, Redirect Server, Load Balancer / Dispatcher, Back-to-Back User Agent, Presence Server, IM Server, Session Border Controller, SIP Front-End, NAT traversal Server, IP Gateway (SMS, XMPP) and others - see the full Set of Features.
Kamailio™ (former OpenSER) is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second. Among features: asynchronous TCP, UDP and SCTP, secure communication via TLS for VoIP (voice, video); WebSocket support for WebRTC; IPv4 and IPv6; SIMPLE instant messaging and presence with embedded XCAP server and MSRP relay; IMS extensions; ENUM; DID and least cost routing; load balancing; routing fail-over; accounting, authentication and authorization; support for many backend systems such as MySQL, Postgres, Oracle, Radius, LDAP, Redis, Cassandra; XMLRPC control interface, SNMP monitoring. It can be used to build large VoIP servicing platforms or to scale up SIP-to-PSTN gateways, PBX systems or media servers like Asterisk™, FreeSWITCH™ or SEMS. Kamailio and the SIP Express Router (SER) teamed up for the integration of the two applications and new development.
重点就是:高性能sip proxy、支持众多扩展协议、配置灵活。
进行以下内容需要对Linux操作系统有基本的认识,熟悉基本管理命令。
使用SIPP实际测试,SIP/UDP协议会话外消息转发可达到1.6W CPS, TCP可以达到6K;单台SIP/TCP连接可以支持到20-25W。但正是因为他们配置灵活,所以比较复杂难懂,刚一接触不知如何下手。他们的文档是非常丰富的,主要是他们官网上的英文文档,所以想要学好英文这关必须要过。

1.先学习SIP协议
why:他们的配置主要都是对SIP协议进行操作,如果对SIP协议不清楚,就不知道如何改,更不知道改了会产生哪些后果。
what:包括但不限于呼叫流程、事务、会话、无状态、有状态、Via、Route、Record-Route等概念,清楚这些概念跟哪些header有关以及与sip proxy的关系。
how:这个只有网上搜了,也有讲SIP的书。

2.基本安装和基本命令

opensipskamailio备注
安装教程http://www.opensips.org/Documentation/Install-CompileAndInstall-1-9http://www.kamailio.org/wiki/install/4.0.x/git
主程序opensipskamailio都可能过-h参数查看可支持的所有启动参数
动态管理配置opensipsctlkamctl可直接进行配置,比如账号,domain等等信息
管理控制台忘记了kamcmd进入CLI,输入问号显示帮助列表
在这部分内容里面,具体要熟悉通过修改Makefile进行编译内容的调整,还需要熟悉几个常用的MAKE 参数:http://sip-router.org/wiki/tutorials/makefile-system

3.opensips/kamailio系统参数、模块参数、脚本、伪变量等

kamailioopensips
系统参数以及系统内置函数、脚本流程等http://www.kamailio.org/wiki/cookbooks/4.0.x/corehttp://www.opensips.org/Documentation/Script-CoreParameters-1-10
http://www.opensips.org/Documentation/Script-CoreFunctions-1-10
http://www.opensips.org/Documentation/Script-Routes-1-10
伪变量:分系统内置的和脚本及模块输出的
这些伪变量可直接在配置文件中使用,非常方便
http://www.kamailio.org/wiki/cookbooks/4.0.x/pseudovariableshttp://www.opensips.org/Documentation/Script-CoreVar-1-10
变量操作及转换http://www.kamailio.org/wiki/cookbooks/4.0.x/transformationshttp://www.opensips.org/Documentation/Script-Tran-1-10
模块列表及每个模块输出函数、参数、avp、mi等http://kamailio.org/docs/modules/4.0.x/http://www.opensips.org/Documentation/Modules-1-10
开发文档 kamailio提供的是文档教程
opensips提供的是视频录像及代码。
http://www.asipto.com/pub/kamailio-devel-guide/http://www.opensips.org/Documentation/Development-Tutorials




用他们来配合asterisk/freeswitch能够构建超大容量的VOIP平台,下次再分享架构。
推荐网友老黑翻译的《使用OpenSER构建电话通信系统》http://blog.chinaunix.net/uid-2555411-id-68025.html,适合入门阅读。


新浪微博:@安静的发狂者
QQ:229675152 欢迎交流
本文为原创,转载请联系作者
kamailio/opensips 技术交流QQ群:118791050


### 不修改 FreeSWITCH 源码情况下实现功能替代 OpenSIPSKamailio #### 实现可能性 在不修改 FreeSWITCH 源码的情况下,确实可以实现某些特定功能来替代 OpenSIPSKamailio 的部分角色。这种实现主要依赖于 FreeSWITCH 自身强大的模块化架构以及其内置的 SIP 处理能力[^1]。 FreeSWITCH 提供了一系列丰富的模块支持,例如 `mod_sofia` 用于处理 SIP 协议栈,`mod_dptools` 和其他工具模块则提供了灵活的呼叫路由、认证等功能。通过合理配置这些模块并结合 Lua 脚本或其他脚本语言(如 Python),可以在无需更改核心代码的前提下完成复杂的逻辑定制。 #### 替代 OpenSIPS/Kamailio 功能的具体方法 以下是几种常见的场景及其解决方案: 1. **SIP 注册与代理** 使用 FreeSWITCH 中的 `sofia.conf.xml` 配置文件定义 SIP 域名和服务端口,并启用注册功能。这使得 FreeSWITCH 可以作为独立的 SIP 注册服务器运行。 2. **呼叫路由策略** 利用拨号计划 (dialplan),可以通过正则表达式匹配来电号码并执行相应的操作,比如转发到指定目标或触发 IVR 流程。此过程完全基于 XML 文件编辑即可完成。 3. **负载均衡与高可用性** 尽管 FreeSWITCH 主要定位于媒体网关而非纯粹的信令控制器,但它仍然具备一定的集群扩展能力。借助第三方中间件或者 NAT 穿透技术,可构建多节点部署环境下的动态流量分配机制。 4. **安全防护措施** 对抗恶意攻击方面,除了常规防火墙规则外,还可以利用 mod_spamc 来检测垃圾电话;同时开启 TLS 加密传输通道保护敏感数据免受窃听威胁。 #### 方案对比分析 | 特性 | FreeSWITCH | OpenSIPS / Kamailio | |--------------------|-------------------------------------|------------------------------------| | 开发难度 | 较低 | 中等到较高 | | 性能表现 | 更擅长实时音视频流处理 | 更专注于高效的消息传递 | | 社区活跃度 | 积极 | 广泛 | | 易用性和学习曲线 | 图形界面友好 | 文档详尽但需深入理解协议细节 | 从上表可以看出,在仅考虑功能性而不涉及性能调优时,采用未经改动的标准版 FreeSWITCH 往往能满足大多数中小型企业的需求。然而对于超大规模并发请求处理或是极端苛刻延迟要求的应用场合,则可能仍需倚重像 OpenSIPS 这样专门优化过的软件产品[^2]。 ```bash # 示例命令展示如何查看当前加载了哪些模块 fs_cli -x 'module show' ``` 上述 CLI 指令可以帮助管理员确认系统状态以便进一步调整参数设定达到最佳效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值