- 作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公众号:asterisk-cn
- Asterisk课堂-如何通过源代码安装方式安装Asteisk/dahdi
- Asterisk课堂-系统部署环境要求
- Asterisk课堂-Asterisk技术架构
- Asterisk课堂-拨号规则基础
- Asterisk课堂-创建第一个拨号规则
- Asterisk课堂-拨号规则中的Contexts
- Asterisk课堂-拨号规则中变量的使用
- Asterisk课堂-拨号规则中的Extensions用法
- Asterisk课堂-拨号规则中匹配模式
- Asterisk课堂-IAX2 介绍
- Asterisk课堂-IAX2 呼叫流程
- Asterisk课堂-SIP介绍
- Asterisk课堂-SIP呼叫流程
- Asterisk课堂-终端注册
- Asterisk课堂-SIP Trunk
- Asterisk课堂-SIP debug
视频中介绍了SIP debug 开启对方法,注册流程中的消息,呼叫流程中的发送和asterisk接收消息。另外,视频中介绍了几个第三方的工具。最后解释了服务器端和终端debug的对比排查:

下面我们介绍一下几个SIP的场景,它们包括SIP注册(注册失败,注册成功),SIP分机之间呼叫(失败呼叫和成功的呼叫),然后介绍了第三方的抓包工具,最后还有终端日志排查。
注册消息的排查,用户首先要了解CLI debug 日志开启和关闭的方式。在开始排查SIP消息时,用户需要打开SIP debug 日志。这样,SIP 注册信息就会显示在Asterisk 后台。用户可以根据SIP 注册流程,找到注册,401,再次发送注册消息,Asterisk验证等消息,来判断是否是成功或者失败的注册。通常,用户会看到日志所显示的状态。
注册以后,SIP呼叫流程中,从INVITE 发起呼叫,然后验证,最后Asterisk回复信息可以排查出是否是成功的呼叫,或者失败的呼叫。用户可以在具体消息日志中找出相应的关键词,SIP method 等等相关信息,通过这些信息来判断问题。

抓包是判断问题的主要手段。Asterisk环境中支持了很多Linux 开源的第三方工具,用户可以使用这些国家抓包,然后通过图形界面更加来做进一步分析。除了TCPDUMP, wireshark 以外,还有很多非常方便的SIP抓包工具例如,sngrep。如果用户比较熟悉Linux环境的话,建议使用sngrep 来实时分析SIP数据。

当然,除了通过Asterisk 系统本身抓包实现排查以外,用户也要同时打开终端的SIP debug 设置,通过双方SIP消息对比来进一步发现问题。

最后,Asterisk中的SIP排查涉及了很多方面的内容,我们讨论了比较简单的注册流程,呼叫流程的排查方式。希望用户对SIP的注册,呼叫流程有一个基本的介绍。当然,如果SIP注册或呼叫流程比较复杂的话,用户可能还要考虑防火墙,拨号规则,编码,NAT等等问题。在未来的技术讨论中,我们会涉及编码和NAT等问题。