在WebRTC中,参与者是否需要连接到同一个TURN服务器?

在WebRTC中,参与者是否需要连接到同一个TURN服务器?,webrtc,turn,Webrtc,Turn,在WebRTC中,当由于流量增加而必须增加TURN服务器的数量(水平扩展)时,似乎有两种方法来解决这个问题 第一种方法是简单地拥有多个TURN服务器,并将它们直接公开到internet,并向客户端显式提供它们的完整列表。虽然我听说这会减慢发现过程,但这似乎是一种可能的方法 第二种方法是在负载均衡器/1IP后面有多个TURN服务器,并向客户端提供一个地址。在这种情况下,负载平衡器将把请求分发到不同的turn服务器 无论我采用哪种方法,都不能保证同一房间/小组中的所有参与者都将连接到同一个TURN服

在WebRTC中,当由于流量增加而必须增加TURN服务器的数量(水平扩展)时,似乎有两种方法来解决这个问题

  • 第一种方法是简单地拥有多个TURN服务器,并将它们直接公开到internet,并向客户端显式提供它们的完整列表。虽然我听说这会减慢发现过程,但这似乎是一种可能的方法
  • 第二种方法是在负载均衡器/1IP后面有多个TURN服务器,并向客户端提供一个地址。在这种情况下,负载平衡器将把请求分发到不同的turn服务器
  • 无论我采用哪种方法,都不能保证同一房间/小组中的所有参与者都将连接到同一个TURN服务器。我想知道这样行吗?TURN和客户端之间的通信是无状态的,这样对等方可以连接到任何一个可用的TURN服务器,并且数据中继仍然可以发生吗?

    TURN只需在TURN服务器上打开一个(udp)端口。TURN服务器将打开客户端发送的STUN数据包(STUN发送指示或通道),并将其发送到远程端。远程端可能是另一个TURN服务器,但TURN服务器不关心——客户端也不关心。就使用的协议而言,如下所示:

    Client --(STUN)-->TURN Server --("raw" udp)-->Another TURN Server--(STUN)-->Second client
    Client --(STUN)-->TURN Server --("raw" udp)-->Second client
    
    请注意,两个客户端可能都使用翻转TCP与各自的翻转服务器进行通信,但分配通常通过udp进行(在webrtc中)

    第一种方法更常见,它在参与者被分配到最近的TURN服务器位置的情况下效果更好,如果参与者来自不同的大陆,则可能不同。

    TURN只需在TURN服务器上打开一个(udp)端口。TURN服务器将打开客户端发送的STUN数据包(STUN发送指示或通道),并将其发送到远程端。远程端可能是另一个TURN服务器,但TURN服务器不关心——客户端也不关心。就使用的协议而言,如下所示:

    Client --(STUN)-->TURN Server --("raw" udp)-->Another TURN Server--(STUN)-->Second client
    Client --(STUN)-->TURN Server --("raw" udp)-->Second client
    
    请注意,两个客户端可能都使用翻转TCP与各自的翻转服务器进行通信,但分配通常通过udp进行(在webrtc中)


    第一种方法更常见,当参与者被分配到最近的TURN服务器位置时效果更好,如果参与者来自不同的大陆,这可能会有所不同。

    那么在其他几个可用的TURN服务器中,一个TURN服务器如何知道它需要将数据中继到几个TURN服务器中的哪一个?(据推测,对于可以将数据转发到第二个客户端的TURN服务器)TURN服务器严格来说是1:1。它们不是媒体服务器或SFU,如果您正在寻找后者,可以很好地介绍级联。因此,在其他几个可用的TURN服务器中,一个TURN服务器如何知道它需要将数据中继到几个TURN服务器中的哪一个?(据推测,对于可以将数据转发到第二个客户端的TURN服务器)TURN服务器严格来说是1:1。它们不是媒体服务器或SFU,如果您正在寻找后者,可以很好地介绍级联。