Hi! Thank you for your patience. Please see our answers below.
Regarding the system architecture diagram, it appears that WebRTC communication is established from the Enterprise WebRTC media server to the client PCs. We would like to confirm if this interpretation is correct.
Yes, your interpretation is correct. The video stream service sets up a direct bidirectional WebRTC between the media server and the client PC. Each WebRTC connection is authenticated and encrypted.
## Session setup
Therefore, understanding the establishment of the session between the Enterprise WebRTC media server and the client PCs is of importance to us. Could you please provide detailed insights into how this session is established?
We follow the WebRTC protocol, which roughly consist of the following four sequential steps (see this reference a more comprehensive overview and details):
- Signalling
- Connection
- Securing
- Communicating
Each sequential step needs to be 100% successful in order to establish a secure video stream between peers (the client PC and the media server).
During signalling, the client PC and server reach out to each other to exchange the Session Description Protocol (SDP). The signaling is authenticated using OIDC on Azure AD and the communication is encrypted using TLS. Once the signaling is complete, the initial handshake between peers is secured with DTLS.
After signalling is completed successfully, the connecting step starts, in which a bidirectional connection is set up between the client and the server. The process described above is called Interactive Connectivity Establishment (ICE). Each ICE Agent publishes the ways it is reachable, these are known as candidates. A candidate is essentially a transport address of the agent that it believes the other peer can reach. ICE then determines the best pairing of candidates. This page describes in more detail what the substeps and requirements of that connection are.
Specific to InRobot, the STUN server for candidate identification we use is stun:stun2.l.google.com:19302, for which both URL and port might need to be whitelisted in addition to the ones described above. Our TURN servers’ URLs are `*.robotics.cognitedata.com`, with port range 20000-40000, 5000-5050, UDP and RTP (as listed in the previous answer).
Communication. Media (video and audio) are encrypted using SRTP.
The likely reason you cannot see the video stream is because your firewall is blocking the traffic in one of the above mentioned stages. Most likely, your firewall is blocking the RTP packets sent via UDP.
Lastly, you can consider setting up a DMZ in your corporate network specific for InRobot.
We’re happy to help identify the solution for the video streaming, please let us know if you have additional questions!