Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

VoIP 呼叫

本页说明如何在 Wireshark 中查看、过滤、绘制和播放 VoIP 呼叫。它适用于排查 SIP、H.323、ISUP、MGCP、UNISTIM 及其 RTP 媒体流相关问题。

你想做什么在哪里操作容易混淆的点
找出一次通话的起止、主被叫、协议和状态Telephony → VoIP Calls...VoIP Calls 列表显示的是呼叫摘要,不等同于只显示 RTP 包
只看某一次呼叫相关数据包选中呼叫后使用 Prepare Filter该按钮只是准备显示过滤器,不会修改捕获文件
看信令交互方向与媒体流选中一个或多个呼叫后使用 Graph图中的箭头代表消息方向,RTP 会被汇总显示
播放通话音频选中呼叫后使用 Player能否播放取决于已安装的 codec 插件和 Wireshark 版本

西班牙语版本见:http://wiki.wireshark.org/VoIP_calls_spanish

支持的协议

VoIP Calls 对话框可识别以下 VoIP 信令协议,并关联对应的 RTP 流:

协议说明
SIP常见 VoIP 信令协议
H323H.323 呼叫信令
ISUP电话信令相关呼叫
MGCP媒体网关控制协议相关呼叫
UNISTIMUNISTIM 终端相关呼叫
RTP与上述呼叫相关的媒体流

VoIP 协议族概览可参考 VOIPProtocolFamily。示例捕获文件可参考 SampleCaptures/rtp_example.raw.gz,其中包含一个 H.323 呼叫示例,涉及 H225、H245、RTP 和 RTCP 数据包。

查看 VoIP 呼叫列表

打开 Telephony → VoIP Calls... 后,列表会按呼叫展示关键信息:

列名含义
Start Time呼叫开始时间
Stop Time呼叫结束时间
Initial Speaker发起呼叫数据包的 IP 源地址
FromH323/ISUP 中为主叫号码;SIP 中为 INVITE 的 From 字段;MGCP 中为 EndpointID 或主叫号码;UNISTIM 中为 Terminal ID
ToH323/ISUP 中为被叫号码;SIP 中为 INVITE 的 To 字段;MGCP 中为 EndpointID 或拨打号码;UNISTIM 中为拨打号码
Protocol呼叫使用的信令协议
Packets呼叫涉及的数据包数量
State当前呼叫状态
Comment协议相关注释;例如 H323 呼叫会显示是否使用 Fast Start 或 H245 Tunneling

呼叫状态含义

状态含义
CALL SETUP呼叫正在建立,例如 Setup、Proceeding、Progress 或 Alerting 阶段
RINGING呼叫振铃中;仅支持 MGCP 呼叫
IN CALL呼叫仍处于连接状态
CANCELLED呼叫连接前由发起主叫方释放
COMPLETED呼叫已连接并随后释放
REJECTED呼叫连接前由目的端释放
UNKNOWN呼叫状态未知

为单个呼叫准备过滤器

操作步骤:

  1. 打开 Telephony → VoIP Calls...。
  2. 在列表中选中要分析的呼叫。
  3. 点击 Prepare Filter。
  4. 回到主 Wireshark 窗口,使用生成的显示过滤器查看该呼叫相关数据包。

这个操作在按 CIC 值关联 ISUP 呼叫时尤其有用。

绘制 VoIP 呼叫图

操作步骤:

  1. 在 VoIP Calls 列表中选择一个或多个呼叫。
  2. 点击 Graph。
  3. 在图中查看信令消息、方向、端口和 RTP 汇总流。
  4. 点击图中的某个数据包,主 Wireshark 窗口会选中对应帧。

图形视图会显示:

图形元素含义
最多十列,每列代表一个 IP 地址
颜色属于同一呼叫的数据包使用相同颜色
箭头表示呼叫中每个数据包的方向
箭头标签显示消息类型;可用时也显示媒体编解码器
RTP 宽箭头RTP 流量会汇总为更宽的箭头,并标注对应 codec
端口信息显示每个数据包的 UDP/TCP 源端口和目的端口
注释列显示协议相关信息

不同协议的注释内容:

协议注释内容
H323Fast Start、H245 Tunneling 状态;SETUP 消息中的主叫/被叫号码;RELEASE 消息中的 Q.931 Release cause code
SIP显示消息是 Request 还是 Status;INVITE 还会显示 From 和 To 字段
ISUP格式为 NetworkID-Originating Point Code → NetworkID-Destination Point Code, CIC
MGCPMGCP Endpoint ID,以及该数据包是 Request 还是 Response
UNISTIM消息详细信息和 sequence #
RTPRTP 数据包数量、持续时间(秒)和 SSRC 字段

播放 VoIP 呼叫音频

Wireshark 可以播放已安装插件支持的 codec。Wireshark 也可以把解码后的音频保存为 .au 文件格式:3.2.0 之前只支持用 G.711 codec 保存音频;从 3.2.0 开始,支持使用任何 8000 Hz 采样的 codec 保存音频。

播放步骤:

  1. 在 VoIP Calls 列表中选择一个或多个呼叫。
  2. 点击 Player。
  3. 为 jitter buffer 选择初始值。
  4. 点击 Decode。
  5. 查看所选呼叫可用的 RTP 流。
  6. 点击 Play 在 Wireshark 内播放 RTP 流。

播放窗口中的进度条会显示当前流位置,并在所有正在播放的 RTP 流之间同步。因 jitter buffer 被丢弃的 RTP 数据包会显示为 “Drop by Jitter Buff”,乱序数据包会显示为 “Out of Seq”。

检查本机是否支持某个 codec

Wireshark 支持的 codec 取决于使用的版本和构建方式。官方构建包含 Wireshark 开发者维护的所有插件;自定义构建或发行版构建可能缺少其中某些 codec。

检查步骤:

  1. 打开 Help → About Wireshark。
  2. 切换到 Plugins 选项卡。
  3. 在 Filter by type 中选择 codec。
  4. 查看目标 codec 是否存在。

讨论

如果 rtp_example.raw.gz 对你不起作用,可以尝试 SampleCaptures/SIP_CALL_RTP_G711 中的 VoIP 呼叫捕获文件。

原页面还提到作者有一些关于使用 Wireshark 分析 VoIP 呼叫的视频。

Imported from https://wiki.wireshark.org/VoIP_calls on 2020-08-11 23:27:13 UTC

原始页面图片

voip_calls_list.jpg
voip_calls_list.jpg
voip_calls_graph.jpg
voip_calls_graph.jpg
plugins_codecs.png
plugins_codecs.png
voip_calls_play1.jpg
voip_calls_play1.jpg
voip_calls_play2.jpg
voip_calls_play2.jpg

相关 Wireshark Wiki 页面

网络分析技术档案