5

我正在测试由使用 PJSip 的 iphone 应用程序开发人员编写的 Voip sip 客户端。我个人自己也玩过一些 SIP 开发,但不是专家。

使用我们的 VOIP 软交换(Acme 数据包/Broadsoft),它通过动态确定最佳重新注册时间来处理所有 Nat 处理,以使 Nat 针孔在 nat 设备上保持活动状态。通常,当 iphone 在 NAT 之后,这个时间在 60-90 秒之间。

Iphone 应用程序正在使用 TCP,并且可以愉快地使用 Backgrounding。显然背景是节省电池寿命的理想选择。来电唤醒手机,您可以接听电话。

问题是当应用程序进入后台模式时,它无法保持 Nat 针孔打开。这意味着一旦针孔关闭,防火墙将始终拒绝新来电到达 Iphone 应用程序。这会影响应用程序的来电工作几分钟,然后一段时间不工作,然后当应用程序退出后台并再次注册时,呼入电话再次工作。

根据苹果文档:http: //developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

他们为 voip 应用程序内置了特殊的后台例外,我们可以: 1. 配置应用程序套接字,以便它们仍然可以处理传入的消息。这无济于事,因为如果 nat 针孔关闭,消息将永远不会到达应用程序。2. 使用 Keep alive,但最短时间为 600 秒。这也意味着针孔将关闭。

应用程序是否可以通过某种巧妙的方式发送 Voip Sip 注册消息,例如每 60 秒左右,同时保持在后台。或者应用程序可以每 60 秒唤醒一次做一些工作然后关闭。

我真的很困惑市场上是否有其他 sip 应用程序可以解决这个问题。

4

2 回答 2

0

解决这个问题的方法是让 Acme 向注册到它的设备发送 TCP keepalive,并将过期时间设置为至少 600 秒。您可能希望它更高,因为手机需要一些时间来重新注册,所以像 720s 这样的东西会更好。

如果您将 keepailve 间隔设置得足够低,大约 30 秒左右,这应该会保持 NAT 针孔打开。NAT 应该允许更高的间隔,但这可能需要一些测试。

我知道 ACME SBC 可以处理这个问题。

于 2014-11-25T15:39:43.650 回答
-1

如果间隔不是太短,则允许 TCP 保持活动,我认为这应该保持 NAT 会话打开。你能告诉我们它是否有帮助吗?

于 2012-01-17T14:56:04.800 回答