正确获取 SIP、RTP 和 NAT:谁在做什么?

正确获取 SIP、RTP 和 NAT:谁在做什么?

我有点困惑,在我们的 IP 电话设置中谁(PBX 与电话)在做什么。

我们的电话系统托管在外部。这意味着我们在自己的位置安装了物理 IP 电话,但 PBX 位于其他地方。我们在使用这个解决方案时遇到了各种问题,由于我不明白它们是如何协同工作的,我无法正确排除各种问题,这让我很恼火。我一直在阅读有关 SIP 和 RTP 工作原理的资料,但有几件事我仍然不完全明白。我的问题与 SIP 和 RTP 有关,但也涉及一点 NAT。

我们的场景很简单。PBX 可通过互联网上的某个公共 IP 访问。我们位于防火墙 (NAT) 后面。

首先,据我所知,SIP 数据包不携带音频。它们只是为了确保在电话和 PBX 之间建立会话(如会话发起协议)——例如在即将建立呼叫时。这些数据包通常是 UDP,并且经常在端口 5060 上“传输”。

虽然不特定于 SIP;当 SIP UDP 数据包通过 NAT 时NAT 将源端口“翻译”成其他内容用于传出的数据包,以确保 NAT 可以将响应映射回 NAT 后面的正确的电话。

现在,如果有人想联系我们的一部电话,他们拨打号码并最终联系到 PBX。据我了解,PBX 随后会向相关电话发送 INVITE(SIP UDP 数据包)。该数据包除其他内容外还包含 IP 地址和端口号,电话应连接到这些地址和端口号以建立 RTP 会话(这是实际的音频数据)。

问题 1:我听说电话必须定期向 PBX 发送保持活动请求,以确保 NAT 不会使 UDP 会话过期。这很重要,因为 PBX 发起呼叫的 INVITE 请求,而 NAT 不能使 UDP 会话过期,以便将任何给定的 INVITE 请求映射到正确的电话。这是对的吗?来自 PBX 的任何给定 INVITE 请求是否会使用来自电话的保持活动请求中提供的源端口(该端口将由 NAT 转换)?

问题2:电话是否能够响应任何给定的 INVITE SIP 请求并连接到 PBX?这意味着我在这里不必担心 NAT,因为电话会发送第一个 RTP 数据包并在 NAT 中“打洞”。

问题 3:它是如何“反过来”工作的?也就是说,如果我想用 NAT 后面的一部电话给某人打电话,我的电话会向 PBX 发送 INVITE SIP 请求吗?这对我来说没有意义,因为 PBX 无法与 NAT 后面的我的电话建立 RTP 会话。

答案1

我有一个类似的问题,我昨天问过,涉及 RTP 以及它的实际流程......适用于多个 SIP 提供商的 Cisco ASA PBR 和多个 ISPS

相关内容