Hello Drew, thank you for your patience.
To shed some more light on the issue, regarding the restrictions of IPs and Ports.
The minimum IP addresses you should have available for Pixel Streaming are:
- An IP address for the UE instance
- An IP address for the signalling server
- Optionally, an IP address for the TURN server (if used)
Pixel Streaming doesn’t enforce any specific IP addresses/ranges, though for our internal testing we generally run IPv4.
There are 3 methods that are best suited for Pixel Streaming for your scenario (a enterprise/restricted network). I’ll list them in order of best latency/experience to worst latency/experience.
Direct Peer-to-Peer in an Internal Network:
If the experience is being run entirely in an internal network and you know the users specific IP addresses, you should be able to give those users access to the large port range that P2P WebRTC requires. This will allow a direct peer-to-peer connection and has the highest stream quality and fidelity of all the options.
TURN Relay:
If the experience is being streamed externally or opening that large port range is not an option for those users, your second best option is to use a TURN server. A TURN server can be configured to relay all connections through a specified UDP port, for example by default the CoTURN server we configure when you run start_turn.bat will relay all media traffic over UDP port 19303. This is a common option for Pixel Streaming set-ups on restricted networks as it allows some limiting of ports for users by still allows media traffic to go over UDP (which is optimal). If you’re happy to run with the default turn configuration you can simply run start_turn.bat --default-turn alongside your signalling server and open UDP port 19303 for your users receiving the stream.
A key note is due to the nature of the TURN server relaying everything through that port, there will be an impact in latency and performance compared to the direct peer-to-peer approach mentioned above.
TCP 80 and 443:
This is a last resort option and is not recommended. This option is technically the most secure, but has a heavy performance and latency impact for Pixel Streaming that it’s nigh unusable for any streamed experience that needs any considerable video bitrate/low latency operation. This setup is more commonly used for things like conference calling, but, given that you’re using Level Streaming we believe this won’t be ideal.
This method involves having the TURN server relay the connection through common TCP ports such as 80 or 443. This would require some manual adjustment and args of the TURN server as we don’t ship this configuration out of the box, but the positive is you don’t have to open any ports on the client side.
Given your use case, I suspect the UDP TURN relay may be your best option, but I’m happy to explore the other options with you as well.
Please let me know if you had any other questions!
Kind Regards,
Michael