了解WebRTC中的SFU和TURN服务器

时间:2020-04-18 09:39:59

标签: webrtc kurento stun turn

如果我要构建WebRTC应用程序并使用选择性转发单元媒体服务器,这是否意味着我将不需要STUN / TURN服务器?

据我了解,STUN服务器用于客户端发现其公共IP /端口,而TURN服务器用于在客户端之间无法通过STUN直接连接时在客户端之间中继数据。

我的问题是,如果我使用公共地址部署SFU媒体服务器,这是否消除了对STUN和TURN服务器的需要?由于数据将始终通过SFU进行中继,并且客户端/对等端实际上不会直接相互通信?

但是,我注意到Kurento(具有SFU功能的流行媒体服务器)的安装指南包含有关configuring STUN or TURN servers的部分。为什么需要STUN或TURN服务器?

1 个答案:

答案 0 :(得分:7)

运行SFU时,仍应使用TURN服务器。稍微了解一下ICE将有所帮助。所有SFU的工作方式略有不同,但这对于大多数情况都是如此。

  • 对于每个PeerConnection,SFU将在随机UDP(有时是TCP端口)上侦听
  • 此IP /端口组合将给予尝试与SFU联系的每个对等方。
  • 然后,SFU检查传入的数据包是否包含有效的哈希(由upwd确定)。这样可以确保没有攻击者连接到该端口。

TURN服务器的工作原理

  • 提供对等方可以连接的单个分配端口。您可以使用UDP,DTLS,TCP或TLS。您需要一个有效的用户名/密码。
  • 通过身份验证后,您将通过此连接发送数据包,而TURN服务器将为您中继数据包。
  • 然后,TURN服务器将在随机端口上侦听,以便其他人可以将内容发送回对等方。

因此TURN服务器具有SFU不能提供的一些优点

  • 您只需要在单个公共端口上侦听即可。如果您要与不在Internet上的服务进行通信,则只能让您的客户仅连接到分配中
  • 您还可以通过UDP,DTLS,TCP和TLS使服务可用。大多数ICE实现仅支持UDP。

这两个因素在政府/医院情况中确实很重要。您的网络仅允许通过端口443进行TLS通信。因此,TURN服务器是您唯一的解决方案(您可以在TLS 443上运行分配)

因此,您需要根据需要设计系统。但是IMO,您应该始终在现实环境中运行配置良好的TURN服务器。