在系统的维护或排查问题时,我们检查使用一些必要的手段打印日志以方便技术人员跟踪处理流程。一般软件系统或操作系统都会支持类似的方式帮助技术人员排查处理流程。在开源软交换Kamalio/OpenSIPS中也同样支持类似的功能帮助技术人员排查呼叫的流程。append_hf() 就是一个非常方便的方法来打印呼叫流程设置。笔者在本讲座中简单介绍一下如何使用append_hf(),以及如何通过抓包工具来查找插入的字符串信息。
首先让我们解释一下具体的使用方式和其cfg配置文件的用法(完整的本案例配置文件为会晚一点上传到www.kamailio.org.cn)。append_hf() 函数的作用是在SIP头中添加相应的字符串,帮助用户能够判断整体呼叫流程的状态,方便技术人员排查问题。具体的用法是:
txt- Header field to be appended. The value can contain pseudo-variables which will be replaced at run time.
hdr- Header name after which the 'txt' is appended.
在本讲座中,我们使用四个追加的信息来跟踪呼叫流程:
append_hf("P-hint: (1)sequential request/rr-enforced \r\n");
append_hf("P-hint: (2)initial request/usrloc applied\r\n");
append_hf("P-hint: (3)reply thru onreply_route[2]\r\n");
append_hf("P-hint: (4)new request in failure_route[2]\r\n");
通过对SIP头添加以上四个跟踪信息,整个呼叫流程会实现以下流程:
现在,让我们开始具体的测试步骤。开始测试前,读者需要更新到本案例中的cfg文件,重新加载一次cfg文件。然后使用此命令对端口进行抓包保存:
ngrep –p –q –W byline port 5060 >rr-stateful
执行以上命令后,使用已注册两个分机进行分机呼叫。呼叫完成后,停止ngrep命令。通过保存的日志文件查看我们的打印跟踪记录。读者会看到我们在cfg文件中设置的打印字符串信息。
本章节主要技术如何使用append_hf()来跟踪一个完整的呼叫对话流程,另外介绍了如何对其跟踪日志进行抓包的方法。通过本讲座的学习,用户可以了解通过对SIP头追加相应的字符串信息理解呼叫对话过程。
参考资料:http://www.opensips.org/html/docs/modules/2.2.x/sipmsgops.html
领取专属 10元无门槛券
私享最新 技术干货