部署到 TURN 服务器而不会耗尽呼叫

Deploying to TURN servers without call draining

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

TURN 开箱即用地支持这类功能吗?例如,我们可以使用 STUN Error 300 - alternate-server 机制让客户在实时通话期间从 TURN server A 转移到 TURN server B 吗?

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

我们也在考虑,也许我们可以使用多对等功能来拆分流,然后在 TURN 服务器周围随机播放。有点像滚动部署。

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

客户端正在使用 PJSIP。

TURN 不支持开箱即用。您可以做的最接近的事情是在下次客户端尝试刷新分配时将服务器修改为 return 备用服务器错误,然后让客户端处理并重新启动 ICE(假设客户端执行 ICE)使用新服务器。