Unable to configure iceTransportPolicy to "relay" in Isaac Sim WebRTC

Isaac Sim Version

4.2.0

Operating System

Ubuntu 22.04

Topic Description

Problem Description

I’m trying to deploy both Isaac Sim and Coturn TURN server on the same cloud NAT server to reduce resource usage. While the distributed deployment (Isaac Sim and Coturn on separate servers) works perfectly, the integrated deployment fails to establish WebRTC connections.

Environment Setup:

  • Isaac Sim 4.2
  • Coturn 4.6
  • Cloud NAT server with public IP: 101.126.xxx.xx, internal IP: 172.28.xxx.xx
  • Client browser accessing via: http://101.126.xxx.xx:8211/streaming/webrtc-client/?server=101.126.xxx.xx

Root Cause Analysis:
The issue occurs because Isaac Sim doesn’t use the TURN server when deployed on the same machine. From the logs and WebRTC internals, I found:

  1. TURN server logs: Only show browser connections, no Isaac Sim connections
  2. WebRTC Internals: Isaac Sim generates only host candidates (127.0.0.1:1024, 172.28.xxx.xx:1024), no relay candidates
  3. Network connectivity: Verified that Isaac Sim can connect to TURN server (telnet 101.126.xxx.xx 3478 succeeds)

This suggests Isaac Sim has built-in logic that skips TURN when the server is on the same machine, which causes connection failure in NAT environments.

Attempted Solutions

  1. Verified network connectivity: Both internal and external access to TURN server works
  2. Confirmed TURN server configuration: Coturn is properly configured and listening on all interfaces
  3. Tested with turnutils_uclient: TURN allocation and media relay work correctly
  4. Modified Isaac Sim WebRTC configuration in isaacsim_webrtc.toml:
    ice_servers = [{ 
        urls = ["turn:101.126.xxx.xx:3478?transport=udp","turn:101.126.xxx.xx:3478?transport=tcp"], 
        username = "user", 
        credential = "pass" 
    }]
    
    # Attempted to force relay mode
    iceTransportPolicy = "relay"
    force_relay = true
    disable_host_candidates = true
    

Current Result

Despite adding the relay enforcement configurations, the WebRTC internals still show:

iceTransportPolicy: all, bundlePolicy: balanced, rtcpMuxPolicy: require

The iceTransportPolicy remains “all” instead of “relay”, indicating the configuration is not being applied.

Question

How can I properly configure Isaac Sim WebRTC to force relay mode and disable host candidates for same-machine TURN deployment?

Is there a documented way to:

  1. Set iceTransportPolicy to “relay”
  2. Force Isaac Sim to use TURN server even when co-located
  3. Disable host candidate generation

This would enable resource-efficient single-server deployments while maintaining WebRTC connectivity.

Have you tried our latest version Isaac Sim 5.0?

Yes; But considering that the official version of 5.0 has not been fully released yet, we are currently using 4.2 and 4.5 uniformly. So I would like to ask if there are any related settings about iceTransportPolicy in version 4.2.

I have reached out to the internal team about this issue. I will let you know if there is any update.

Please have an upgrade to 4.5 or 5.0. Isaac Sim 4.2 is EOL. Both 4.2 and that old WebRTC client is no longer supported.
In 4.5 and later, the official streaming client is the Isaac Sim WebRTC streaming Client.

Okay, Thanks for your reply

Long story short, setting relay doesn’t work, I tried. Best is avoid complex NAT system… For me works 5.0.0

Just want to say this stuff is configured on frontend, when connection established. The frontend is stored in the webrtc kits, where it also sets static 49100 tcp port to establish websockets connection all in kitplayer.js. It can’t be changed through configs, it needs to be overwritten fully by yourself. And usually trying to change it in the extscache won’t help as it builds it somewhere in .local folder with some other kits, from where it gets loaded.