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

UNISTIM

Unistim 是 Nortel 专有的 VOIP 协议。它是比 SIP 或大多数其他 VOIP 协议更低层的协议。始终把电话看作一个非常“笨”的终端,这一点很重要。使用 SIP 时,电话对电话呼叫有基本理解;而在 Unistim 中,电话只知道如何发送按键事件、显示文本、闪灯以及传输音频流。所有智能都在交换机层。与 SIP 一样,Unistim 也使用 RTP 作为其音频传输。Nortel 将命令划分为 6 个 manager,每个 manager 都有一组由电话发起和由交换机发起的命令。这些 manager 是 Basic、Broadcast、Audio、Key/Indicator、Display、Broadcast。Unistim 的一般布局:

| RUDP Sequence ID MSB | | ... | | ... | | RUDP Sequence ID LSB | | ACK/NAK/Payload | | Unistim/Unistim with Term id | | Term ID MSB (if from phone) | | ... | | ... | | Term ID LSB | | CMD1 Address (Manager) msb 1=phone 0=switch | | CMD1 Length includes address | | CMD1 ID | | if necessary additional data | | ... | | CMD2 Address if applicable | | CMD2 Length includes address | | CMD2 ID | | if necessary additional data | | ... |

Nortel 的 RUDP:

简而言之,从交换机或电话发送的每个 payload packet 都有一个 sequence id。数据包接收方必须用该 sequence id 发回 ACK。如果设备期望 id 1000,但实际收到 1004,它会在 packet 1000 上发送 NAK,发送方必须从 1000 开始重新发送所有 packet。电话和交换机拥有独立的 sequence number。

0xFFFFFFFF 作为 sequence number 具有特殊意义。电话启动时会发送 0xFFFFFFFF,交换机会随后 NAK;但该 NAK 的 sequence number 是交换机希望电话用作起点的 sequence number。此外,如果交换机故障转移到备份设备,它会使用 0xFFFFFFFF 向电话发出信号,表示已发生故障转移,电话应采取适当操作。

历史

据我理解,Unistim 基本上是 Nortel 的 DMS 协议的一种 IP 适配。

协议依赖

  • UDP:通常,UNIStim 使用 UDP 作为其传输协议。UNISTIM 流量众所周知的 UDP 端口是 5000。

示例流量

来自交换机的多个命令示例:

电话发送按键事件并显示 terminal id 的示例:

Wireshark

Unistim 解析器具备部分功能。Nortel 发布过一份描述该协议的 pdf,但在我编写解析器时发现了若干不一致之处。有些可以解读,有些则不能。有少数命令会传输 icon bitmaps 或 font descriptions,我选择将其显示为 hex data。

首选项设置

目前无

示例捕获文件

  • SampleCaptures/unistim_phone_startup.pcap

  • SampleCaptures/unistim-call.pcap

显示过滤器

UNISTIM 显示过滤器字段的完整列表可在显示过滤器参考中找到

仅显示基于 UNISTIM 的流量:

 unistim

捕获过滤器

捕获时不能直接过滤 UNISTIM 协议。不过,如果你知道所使用的 UDP 端口(见上文),可以按该端口过滤。

只捕获默认端口(5000)上的 Unistim 流量:

 udp port 5000

外部链接

Nortel 电话

讨论

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

原始页面图片

cmd_array_from_switch.gif
cmd_array_from_switch.gif
phone_cmd.gif
phone_cmd.gif

相关 Wireshark Wiki 页面

网络分析技术档案