Network requirements for Polaris
Read network documentation ↗Plan your Polaris deployment with the ports, protocols, and endpoints your network team needs to review. Start with the cloud connections, check the local sharing paths, and use the reference design to assess your VLAN rules.
Connect Pods and clients to cloud services
Allow outbound HTTPS on TCP 443 from both the Pod VLAN and the client VLAN to the endpoints below. These connections support signaling, licensing, and management. When the sharing device and Pod are on the same network, their shared content does not travel through these cloud endpoints.
| Port | Protocol | Endpoint | Purpose |
|---|---|---|---|
| TCP 443 | HTTPS/TLS | app.mersive.com | Portal / signaling server |
| TCP 443 | HTTPS/TLS | display.mersive.com | Mersive display app |
| TCP 443 | HTTPS/TLS | mcsapi.mersive.com | Polaris API service |
| TCP 443 | HTTPS/TLS | webrtc.mersive.com | WebRTC signaling server |
| TCP 443 | HTTPS/TLS | hosted.mender.io | Update server |
| TCP 443 | HTTPS/TLS | hosted-mender-artifacts.s3.amazonaws.com | Update artifacts (AWS S3) |
| TCP 443 | HTTPS/TLS | c271964d41749feb10da762816c952ee.r2.cloudflarestorage.com | Update artifacts (Cloudflare R2) |
| TCP 443 | HTTPS/TLS | app.launchdarkly.com | Feature flags |
| TCP 443 | HTTPS/TLS | clientstream.launchdarkly.com | Feature flag streaming |
| TCP 443 | HTTPS/TLS | events.launchdarkly.com | Feature flag events |
| TCP 443 | HTTPS/TLS | firestore.googleapis.com | Real-time state sync |
| TCP 443 | HTTPS/TLS | firebasestorage.googleapis.com | Storage & licensing info |
| TCP 443 | HTTPS/TLS | identitytoolkit.googleapis.com | Authentication (identity) |
| TCP 443 | HTTPS/TLS | securetoken.googleapis.com | Authentication (token) |
Allow time sync and NAT traversal
Allow the outbound UDP traffic below through your firewall and NAT policies. Clock drift over two minutes breaks TLS certificate validation.
| Port | Protocol | Endpoint | Purpose |
|---|---|---|---|
| UDP 123 | NTP | ntp.mersive.com | Time sync (fallback: time.google.com) |
| UDP 19302 | STUN | stun.l.google.com | WebRTC NAT traversal |
| UDP 19302 | STUN | stun1.l.google.com | NAT traversal (backup) |
Allow the TURN relay for restrictive networks
The TURN relay is optional and enabled per organization. Media goes through it only when no direct or STUN-assisted path can form, or when an administrator forces relayed connections. Pods and sharing clients connect to it outbound only, so nothing needs to be opened inbound. The relay is IPv4 only.
| Port | Protocol | Endpoint | Purpose |
|---|---|---|---|
| UDP 3478 | TURN / STUN | Mersive TURN relay (address in your organization's ICE settings in the Polaris portal) | Relay allocation and NAT discovery |
| TCP 3478 | TURN | Mersive TURN relay | Relay allocation where outbound UDP 3478 is blocked |
| UDP 49152–49751 | TURN relay | Mersive TURN relay | Relayed media |
The relay port range may change as capacity is adjusted. The Mersive relay has no TLS or port 443 path. Organizations that need one should use the Cloudflare relay below.
If your organization uses the Cloudflare relay, allow these instead:
| Port | Protocol | Endpoint | Purpose |
|---|---|---|---|
| UDP 3478 (alt. UDP 443) | TURN | turn.cloudflare.com | Relay over UDP |
| TCP 3478 (alt. TCP 80) | TURN | turn.cloudflare.com | Relay over TCP |
| TCP 5349 (alt. TCP 443) | TURN over TLS | turn.cloudflare.com | Relay over TLS |
| UDP 3478 | STUN | stun.cloudflare.com | NAT discovery |
Cloudflare serves its relay from an anycast network and publishes no fixed relay port range.
Allow multicast discovery on the Pod VLAN
AirPlay and Google Cast use local discovery to find the room. Allow the multicast traffic below on the Pod VLAN. Filtering this traffic prevents native casting discovery; joining through the browser is unaffected.
| Port | Protocol | Multicast address | Purpose |
|---|---|---|---|
| UDP 5353 | mDNS | 224.0.0.251 | AirPlay + Mersive discovery (Bonjour) |
| UDP 1900 | SSDP | 239.255.255.250 | Google Cast / UPnP discovery |
Connect the client VLAN to the Pod VLAN
When Pods and client devices are on separate VLANs, allow traffic to the Pod-side ports below for casting and sharing. The WebRTC media path also requires bidirectional UDP traffic between the two VLANs.
| Port | Protocol | Purpose |
|---|---|---|
| TCP 7000 | AirPlay | AirPlay service |
| TCP 7001 | AirPlay | AirPlay mirroring |
| TCP 7100 | AirPlay | AirPlay control channel |
| TCP 7236 | Miracast | Miracast RTSP / control |
| TCP 8008 | Google Cast | Cast HTTP |
| TCP 8009 | Google Cast | Cast TLS |
| TCP 8443 | Mersive | Mersive secure service |
| TCP 443 | HTTPS | Reachability (diagnostic validation) |
| Port range | Protocol | Direction | Purpose |
|---|---|---|---|
| UDP 40000–49999 | RTP/RTCP | Client VLAN ⇄ Pod VLAN | WebRTC media stream (screen sharing), bidirectional |
The required production range is UDP 40000–49999. The diagnostic tool samples that range and also spot-checks UDP 32768–39999 and UDP 50000–65535 to identify partial blocks. Those additional probes are diagnostic checks, not additional production port requirements.
Review the VLAN reference design
This reference design separates client devices on VLAN 10 from Pods on VLAN 20, with a stateful firewall between them. Use the traffic flows below alongside the detailed tables above when reviewing your network rules.
| Traffic flow | Ports | Purpose |
|---|---|---|
| VLAN 10 (client) → internet | TCP 443 outbound | The 14 cloud endpoints above |
| VLAN 20 (pod) → internet | TCP 443 outbound | The 14 cloud endpoints above |
| VLAN 10 → VLAN 20 | TCP 7000–7001, 7100, 7236, 8008–8009, 8443 | Casting and discovery |
| VLAN 10 ⇄ VLAN 20 | UDP 40000–49999 | WebRTC media (screen sharing) |
| Both VLANs → internet | UDP 19302 outbound | STUN (NAT traversal) |
| Both VLANs → internet | UDP/TCP 3478, UDP 49152–49751 outbound | TURN relay (when enabled for your organization) |
| Both VLANs → internet | UDP 123 outbound | NTP time sync |
| VLAN 20 (local) | UDP 5353, 1900 multicast | mDNS / SSDP discovery |
Check the network from each VLAN
Use mersive_network_diag.py to check connectivity from a machine on the target network. The tool requires Python 3.7 or later and uses the standard library, with no additional packages to install. Choose the checks below for the network path you are testing.
| Command | What it does |
|---|---|
| python3 mersive_network_diag.py | Opens the diagnostic in your browser and runs the full check |
| python3 mersive_network_diag.py --quick | Five-second smoke test: DNS, STUN, NAT, and NTP |
| python3 mersive_network_diag.py --cloud-only | DNS and TLS checks against the 14 cloud endpoints |
| python3 mersive_network_diag.py --pod-ip 10.0.2.50 | Adds a cross-VLAN probe against a specific pod |
| python3 mersive_network_diag.py --json | Machine-readable output |
| python3 mersive_network_diag.py --send-to-support | Saves the report and opens your email client, addressed to support |
For a deployment with separate VLANs, run the tool once from the client VLAN and once from the Pod VLAN. To check the path between them, run it from the client VLAN and specify a Pod-VLAN address with --pod-ip. Replace 10.0.2.50 in the example with the Pod address you want to test.
NAT symmetry: symmetric NAT silently breaks WebRTC even when every port appears open, because each destination sees a different external port and no direct path can be formed. The tool validates NAT type against both STUN servers and reports symmetric NAT as a critical failure.
Get help with your network review
Bring your deployment questions to Mersive support, or review the security documentation with your IT team.
Get deployment support Review security documentation