Scenario: PeerA want to stream a video to PeerB and PeerC. PeerA wont receive anything from PeerB and PeerC and there is no communication between PeerB and PeerC. Hole punching happens between the Peers and SFU as SFU being a WebRTC endpoint. The resources and bandwidth on PeerA can be saved using SFU solution. But SFU communicates to peers through random ports acquired from hole punching process. Whereas Turn Server allocated a single endpoint (ip:port) for a peer.
Now unfortunately PeerB and PeerC happen to be behind a Symmetric NAT.
- My observation is that SFU approach will fail here as it cannot successfully complete the hole punching process with PeerB and PeerC
- So PeerA sends the feed to PeerB and PeerC via turn server. Basically it means that PeerA is sending the feed twice and this is an inefficient method.
Question:
- Can SFU with a public IP replace the need for a TURN server and connect to peers via a defined port? "In this case SFU can save PeerA's bandwidth by acquiring only one feed from peerA whereas Turn Server approach would have required a two feeds from PeerA for both PeerB and PeerC".