在我们部署VoIP网络时,经常会遇到一些问题阻碍我们。如果能捕捉到TCP/UDP包,将非常有助于我们发现问题的根源。在本文中,我们建议使用wireshark。Wireshark是个优秀的协议分析工具,具有丰富的VOIP分析特性。我们可以使用Wireshark捕捉并分析SIP消息。
从https://www.wireshark.org/下载并安装Wireshark到计算机中。对于 miniSIPServer 用户,我们同时建议将wireshark安装到MSS同一台计算机中。
启动WireShark后, 请双击您希望抓包的接口(网卡)。例如,在下图中,就是双击箭头所示意的接口,该接口明显有网络流量。
然而在Wireshark窗体中,您会看到非常多TCP/UDP包,因此我们需要过滤这些数据包,过滤出我们需要的SIP数据包和RTP语音流包。在主窗体中,请设置"filter"为"SIP or RTP",并点击"apply"按钮。
如果仅仅关系SIP呼叫,不关心媒体流,也可以将“filter”仅仅设置为“SIP”即可。
完成这些步骤后,请尝试拨打一个SIP呼叫,您将看到大量的SIP消息,例如INVITE, BYE, CANCEL等等。接着,您可以点击菜单“捕获 - 停止”来停止跟踪,接着点击菜单“文件 - 保存”来保存您捕捉的SIP消息。
默认情况下,wireshark会保存所有捕捉到的数据包。这可能保存过多的数据包,而我们实际上仅仅希望保留SIP相关的消息。在前面的步骤中,我们已经设置了"filter"为”SIP“, 因此我们点击菜单“文件 - 导出特定分组”,然后选择”Displayed“项,设置文件名(注意文件名后缀应当是.pcapng)。这样,wireshark就仅仅将已显示的SIP消息保存到文件。