【问题标题】:Deploying to TURN servers without call draining部署到 TURN 服务器而不会耗尽呼叫
【发布时间】:2019-02-17 16:13:06
【问题描述】:

我们目前在世界各地部署了一组 TURN 服务器,为每个服务器部署新软件可能需要相当长的时间。我们一直在尝试集思广益,在不耗尽呼叫的情况下部署到 TURN(即将呼叫从一个 TURN 服务器转移到另一个现场)。

TURN 是否支持这种开箱即用的功能?例如,我们是否可以在实时通话期间使用STUN Error 300 - alternate-server 机制让客户离开TURN server A 并进入TURN server B

我们当前的设置是client <-> TURN <-> TURN <-> client

我们也在考虑也许我们可以使用多点功能来拆分流,然后在 TURN 服务器周围进行某种洗牌。有点像滚动部署。

最后一个选项是用 Rust 或支持我们每个用例的东西编写自定义 SFU。但是,我们必须因此更新客户端代码,这在这一点上似乎......非常困难:)。

客户端正在使用 PJSIP。

【问题讨论】:

    标签: webrtc stun turn


    【解决方案1】:

    TURN 不支持此功能。您可以做的最接近的事情是修改服务器以在下次客户端尝试刷新分配时返回备用服务器错误,然后让客户端处理该问题并使用新服务器重新启动 ICE(假设客户端执行 ICE) .

    【讨论】:

    • 您知道客户在重新谈判期间会经历多少停机时间吗?理想情况下,我们希望在他们没有真正注意到它发生的情况下这样做。
    • 这取决于客户端的实现。 ICE 重新启动(可能仅在 webrtc 中)遵循“先建立后中断”模式,即在旧连接被丢弃之前建立新连接。但是,我没有使用 pjsip 的经验。
    • 好的,谢谢您的信息。如果是这种情况,这可能是我们必须做的……我在想: 1. 使用新软件创建一个相同大小的新车队。 2. 将所有人转移到新车队。 3. 在没有剩余呼叫时杀死旧舰队。
    • 是的。主要问题是如何将“我们正在耗尽”从服务器传达给客户端,并在下一次分配刷新时响应 300 错误(通常每 10 分钟发生一次,具体取决于客户端和/或服务器)似乎最好的方法。
    • 是否可以在实时通话期间添加对等点?例如,我可以告诉客户不仅要发送到Peer A,还要发送到Peer B?在这种情况下,两个对等点都是其他 TURN 服务器。我真的很努力不在这里从头开始写 SFU 哈哈
    猜你喜欢
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多