了解SFU';s、 在WebRTC中打开服务器

了解SFU';s、 在WebRTC中打开服务器,webrtc,kurento,stun,turn,Webrtc,Kurento,Stun,Turn,如果我正在构建一个WebRTC应用程序并使用一个选择性转发单元媒体服务器,这是否意味着我将不需要STUN/TURN服务器 据我所知,STUN服务器用于客户端发现其公共IP/端口,TURN服务器用于在客户端无法通过STUN直接连接时在客户端之间中继数据 我的问题是,如果我使用公共地址部署我的SFU媒体服务器,这是否消除了对STUN和TURN服务器的需要?因为数据总是通过SFU中继,客户机/对等机永远不会直接相互通信 但是,我注意到Kurento(一种具有SFU功能的流行媒体服务器)的安装指南中包含

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

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

我的问题是,如果我使用公共地址部署我的SFU媒体服务器,这是否消除了对STUN和TURN服务器的需要?因为数据总是通过SFU中继,客户机/对等机永远不会直接相互通信


但是,我注意到Kurento(一种具有SFU功能的流行媒体服务器)的安装指南中包含了一节关于。为什么需要关闭或关闭服务器?

在运行SFU时,仍应使用关闭服务器。稍微了解一下潜入冰中会有所帮助。所有SFU的工作方式都略有不同,但对大多数SFU来说都是如此

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

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

  • 您只需在单个公共端口上侦听。如果您正在与不在internet上的服务通信,您可以让您的客户端仅连接到分配
  • 您还可以通过UDP、DTLS、TCP和TLS使您的服务可用。大多数ICE实现只支持UDP
这两个因素在政府/医院情况下非常重要。您的网络只允许通过端口443进行TLS通信。因此,TURN服务器是您唯一的解决方案(您在TLS 443上运行分配)


因此,您需要根据自己的需要设计系统。但在我看来,您应该始终在真实环境中运行配置良好的TURN服务器

谢谢你的澄清结构应该是这样的:Client-A-TURN-SFU-TURN-Client-B.我说的对吗?--如果是这样,是不是有点不合适/不均衡?因为流必须通过TURN服务器和SFU。我已经测试了pion/ion SFU,它在没有任何TURN实现的情况下工作,但流质量不合适。我不知道pion/ion项目有一个网状网络类型,因此我搜索了在pion/webrtc上使用网状网络类型功能创建的网状网络类型。在SFU上,质量与pion/ion相同,但当我配置为运行网状网络类型时,对等方无法连接(对等方的ISP在STUN和对等/meth类型的webrtc方面存在一些问题)。->@M.Rostami如果你正在做一个只有两个参与者的p2p呼叫,那么SFU不会增加太多价值,反而会增加一些延迟(除非你想要一些服务器端截获来记录呼叫等)。在3-4个以上的节点上,SFU可能会显示更好的结果。然后,客户端可以建立一个连接(到SFU),而不是多个连接(到所有对等方)-这样可以节省上游带宽,只需将视频发送到一个端点。@AnimeshJain是的!谢谢你的澄清。但是我们应该考虑服务器的(SFU级)带宽。