我的Kamailio修炼历程

大约六年前我在工程上用到Kamailio,只是用用,谈不上熟悉。如果没有特别的原因,估计也就这样了:拿过来,研究下,可以跑起来,但很多问题解释不了,解决不了,更谈不上从Kamailio的角度思考问题。

转折点就是疫情,疫情刚开始时有段时间没什么事情,难得有这样的机会,于是仔细阅读Kamailio官网资料。大概坚持了一月左右,终于入门了。然后全网找相关资料,取长补短,在工程上不断印证。大概就是这样一个过程。

我的体会如下:

  • Kamailio体系不大,但有难度

sip协议看着简单其实很难,sip协议的中文资料不容易找,遇到难题不容易找到能解决问题的同行。另外,Kamailio的表达比较特别,比如$du和$ru到底是什么含义,我费了很多功夫才能了解

  • 兴趣是最好的老师

这虽然是句老话,但是很有道理。我的体会是得有进步,如果不断进步,自然就有兴趣了。反之,如果老是那点东西,迟早会腻。

  • 碰到问题的时候不要着急,用已知推未知,把难题分成几小步

issue,pr, mail list,博客,多找找相关资料,还有,研究源码(增加日志等)

一旦能独立解决问题了,就会感觉眼界不同,境界不同

列举下我对社区的贡献(只能说是微薄之力):

  • 有个kemi函数文档上说有但其实没实现

提issue,micond很快就修复了

  • dispatcher模块的某个rpc函数,支持的参数少

提issue,当天就修复了

  • ndb_redis模块有bug

跟另外一个人一起复现了,一起研究,找到了问题所在。那人提pr,但很遗憾没合并。过了没多久其他人碰到了同样的问题,那人的pr合进去了

  • uacreg的pr

这次很幸运,合进去了。这个问题说来话长,我另外改了一些代码,自己用,加了一些特性,是没办法合进去的。

顺便提下,usrloc模块有个陈年的bug,一直到现在都没解决,dbmode为2(write back)的情况下,有时数据库location表的记录数非常少(内存是对的)。实验室很难复现,但我在生产环境上碰到过,mail list里面也有人提过。

你可能感兴趣的:(Kamailio,信息与通信)