---
title: "ICE in WebRTC: Server Setup and Relative Performance – WebRTC.ventures"
description: When WebRTC calls are between parties who are not on the same network, have symmetric public-private pairing (NAT), or have firewall restrictions there are a number of protocols that can be used. This post describes relative QoS performance working with no ICE Servers, a public STUN server, and a self-hosted CoTURN server.
image: https://blog.webrtc.ventures/hubfs/Imported_Blog_Media/ICE-in-WebRTC-Server-Setup-and-Relative-Performance.png
---

[Skip to content](https://blog.webrtc.ventures/2022/04/ice-in-webrtc#main-content)

![WebRTC.ventures](https://blog.webrtc.ventures/hubfs/logo-main-light.svg)

- [WebRTC Services](https://webrtc.ventures/webrtc-development-services/)
  
  Show submenu for WebRTC Services 
  
    - [Assess](https://webrtc.ventures/services/assess/)
    - [Build](https://webrtc.ventures/services/build/)
    - [Integrate](https://webrtc.ventures/services/integrate/)
    - [Test](https://webrtc.ventures/services/test/)
    - [Manage](https://webrtc.ventures/services/manage/)
    - [Migrating From Twilio Video](https://webrtc.ventures/twilio-video/)
- Our Partners
  
  Show submenu for Our Partners 
  
    - [Amazon Chime SDK](https://webrtc.ventures/partners/amazon-chime-sdk/)
- Stories of Success
  
  Show submenu for Stories of Success 
  
    - [Remote Video Interpreting Platform with Agent Routing](https://webrtc.ventures/successes/remote-video-translation-platform/)
    - [WebRTC to SIP Gateway for ASL Interpreters](https://webrtc.ventures/successes/webrtc-to-sip-gateway-for-asl-interpreters/)
    - [Audio Listening Device to Improve Surgical Outcomes](https://webrtc.ventures/successes/audio-listening-device-to-improve-surgical-outcomes/)
    - [Albania’s First Telemedicine Platform](https://webrtc.ventures/successes/albanias-first-telemedicine-platform/)
    - [Automated Video Storytelling with the Amazon Chime SDK](https://webrtc.ventures/successes/automated-video-storytelling-with-the-amazon-chime-sdk/)
    - [Large Scale Video Conferencing](https://webrtc.ventures/successes/large-scale-video-conferencing/)
    - [Broadcasting and Webcast Control Room](https://webrtc.ventures/successes/live-video-broadcasting-and-webcast-control-room/)
- WebRTC Resources
  
  Show submenu for WebRTC Resources 
  
    - [WebRTC Live](https://webrtc.ventures/webrtc-live/)
    - [WebRTC Tips](https://www.youtube.com/playlist?list=PLayYqdnyegt3QvxX-Rt6wbFIK8727Z5Oz)
    - [WebRTC.ventures Blog](https://webrtc.ventures/blog/)
    - [Migrating From Twilio Video](https://webrtc.ventures/twilio-video/)
    - [WebRTC.ventures Training Program](https://webrtc.ventures/webrtc-ventures-training-program/)
- [About Us](https://webrtc.ventures/our-team/)
  
  Show submenu for About Us 
  
    - [Blog](https://webrtc.ventures/blog/)
    - [Our Team](https://webrtc.ventures/our-team/)
    - [Jobs](https://webrtc.ventures/jobs/)

Open main navigation

Close main navigation

- [WebRTC Services](https://webrtc.ventures/webrtc-development-services/)
  
  Show submenu for WebRTC Services 
  
    - [Assess](https://webrtc.ventures/services/assess/)
    - [Build](https://webrtc.ventures/services/build/)
    - [Integrate](https://webrtc.ventures/services/integrate/)
    - [Test](https://webrtc.ventures/services/test/)
    - [Manage](https://webrtc.ventures/services/manage/)
    - [Migrating From Twilio Video](https://webrtc.ventures/twilio-video/)
- Our Partners
  
  Show submenu for Our Partners 
  
    - [Amazon Chime SDK](https://webrtc.ventures/partners/amazon-chime-sdk/)
- Stories of Success
  
  Show submenu for Stories of Success 
  
    - [Remote Video Interpreting Platform with Agent Routing](https://webrtc.ventures/successes/remote-video-translation-platform/)
    - [WebRTC to SIP Gateway for ASL Interpreters](https://webrtc.ventures/successes/webrtc-to-sip-gateway-for-asl-interpreters/)
    - [Audio Listening Device to Improve Surgical Outcomes](https://webrtc.ventures/successes/audio-listening-device-to-improve-surgical-outcomes/)
    - [Albania’s First Telemedicine Platform](https://webrtc.ventures/successes/albanias-first-telemedicine-platform/)
    - [Automated Video Storytelling with the Amazon Chime SDK](https://webrtc.ventures/successes/automated-video-storytelling-with-the-amazon-chime-sdk/)
    - [Large Scale Video Conferencing](https://webrtc.ventures/successes/large-scale-video-conferencing/)
    - [Broadcasting and Webcast Control Room](https://webrtc.ventures/successes/live-video-broadcasting-and-webcast-control-room/)
- WebRTC Resources
  
  Show submenu for WebRTC Resources 
  
    - [WebRTC Live](https://webrtc.ventures/webrtc-live/)
    - [WebRTC Tips](https://www.youtube.com/playlist?list=PLayYqdnyegt3QvxX-Rt6wbFIK8727Z5Oz)
    - [WebRTC.ventures Blog](https://webrtc.ventures/blog/)
    - [Migrating From Twilio Video](https://webrtc.ventures/twilio-video/)
    - [WebRTC.ventures Training Program](https://webrtc.ventures/webrtc-ventures-training-program/)
- [About Us](https://webrtc.ventures/our-team/)
  
  Show submenu for About Us 
  
    - [Blog](https://webrtc.ventures/blog/)
    - [Our Team](https://webrtc.ventures/our-team/)
    - [Jobs](https://webrtc.ventures/jobs/)
- [Contact us](https://webrtc.ventures/contact/)

[Contact us](https://webrtc.ventures/contact/)

 Apr 19, 2022 12:00:00 AM

# ICE in WebRTC: Server Setup and Relative Performance

![Picture of Jen Oppenheimer](https://blog.webrtc.ventures/hs-fs/hubfs/Our-Team-Jen.jpg?width=50&name=Our-Team-Jen.jpg) [Jen Oppenheimer](https://blog.webrtc.ventures/author/jen-oppenheimer)

Share: [linkedin-in icon](http://www.linkedin.com/shareArticle?mini=true&url=https://blog.webrtc.ventures/2022/04/ice-in-webrtc) [X Twitter icon](https://twitter.com/intent/tweet?url=https://blog.webrtc.ventures/2022/04/ice-in-webrtc) [envelope icon](mailto:?body=https://blog.webrtc.ventures/2022/04/ice-in-webrtc)

Private WebRTC endpoints are often shielded from the public internet by a network that does the mapping from source to the destination. The mapping facilitates traffic going in or out of the private systems to reach the correct host. This process is called Network Address Translation, or NAT.

While not necessarily restrictive, these interfaces need to be pin-holed to create a public-private pair for media streams to flow from the outside world into the WebRTC browser. This process of gathering candidates and prioritizing them in order to make a successful media connection with the remote peer, as defined in in [RFC 8445](https://datatracker.ietf.org/doc/html/rfc8445), is called Interactive Connectivity Establishment, or ICE.

A large percentage of WebRTC calls have network restrictions for calls between parties who are not on the same network. This includes calls from a peer with symmetric public-private pairing (NAT) or calls from a network having additional firewall restrictions such as in universities or office spaces. These can face black video issues (missing feed/no packet reception) or fail at the ICE gathering stage leading to no connection. Such cases can benefit from two main protocols:

1. **STUN (Session Traversal Utilities for NAT)** for IP discovery to get an external network address.
2. **TURN (Traversal Using Relays around NAT)** which is used to relay the traffic between peers by means of relaying media through it. This has been an effective way to bypass restrictive firewalls. 
     - UDP: preferable 
     - TCP: less preferred as the guaranteed ordered delivery of packets implies overhead

Additionally, there is TURN over TLS:

1. **TURNS (Secure Traversal Using Relay around NAT)** is used to relay media on a TCP/TLS connection via the TURN server. It passes through a TLS socket to bypass extremely restrictive firewall rules.

This post describes relative performance working with no ICE Servers, a public STUN server, and a self-hosted CoTURN server. The experiments are carried out through multiple restrictive network firewalls, public internet connections, broadband, as well as 4G data connection. The observations are noted at the end of each section.

# Without ICE Servers: Blocking network fails to make a media connection

If the peers have a blocking firewall policy and no means of establishing interconnectivity, the media stream will fail to reach remote from local or vice versa leading to either no connection or black remote video.

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A1.jpg?width=384&height=274&name=A1.jpg) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A1.jpg?width=384&height=274&name=A1.jpg)

 Figure depicting blocked media traffic leading to failed WebRTC media session via firewall when no ICE Server is used.

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A2-1.png?width=512&height=138&name=A2-1.png) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A2-1.png?width=512&height=138&name=A2-1.png)

 Screenshot of failed ICE gathering as WebRTC client was not able to gather candidates to establish peer to peer media connection without STUN or TURN. 

A successfully ICE candidate pairing:

```
ICE connection state: new => checking => connected
Connection state: new => connecting => connected
Signaling state: new => have-local-offer => stable
ICE Candidate pair: 66.194.72.49:15695 <=> 129.203.xxx.xxx:28043
```

An unsuccessful ICE candidate pairing:

```
ICE connection state: new => checking => disconnected
Connection state: new => connecting => failed
Signaling state: new => have-local-offer => stable
ICE Candidate pair: (not connected)
```

## ICE Terminology

- **Trickle ICE:** Fastens the connection setup if the endpoints are in the same network. Check from [this repo](https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/) if the TURN server responds to request for ICE.

- **ICE Candidate Types ** 
    - **Host**: Gathered directly from the local network adapter, host candidates are the internal IP address and port of a computer on a LAN. They can only route between peers on the same subnet.
    - **Srflx**: server reflexive candidate which is an intermediary address assigned by the STUN server.
    - **Prflx**: peer reflexive candidate which is alike the srflx however this is gathered directly by the peer usually after the connection has been established ( for example if the existing connection is failing)
    - **Relay**: IP address used by the TURN server to forward the media between the peers.

- **NAT** (**N**etwork **A**ddress **T**ranslation) translates public IP to private systems with internal IPs in a local network. Agents such as routers facilitate this mapping. Broadly NAT is of type 
    - **Symmetric NAT:** 1:1 relationship between NAT mapping and L4, i.e., a connection is unique for any unique combination of socket (protocol, local IP and port, destination IP and port)
    - **Asymmetric NAT:** connection of a protocol, local IP, and port with different destination IP and port. 

# STUN: Successful connections in less guarded networks, but not for most enterprise firewalls and network policies

Some ICE Candidates gathered using the STUN server provided by Google.

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A3.jpg?width=512&height=104&name=A3.jpg) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A3.jpg?width=512&height=104&name=A3.jpg)

These work for simple NATing scenarios where private IP is linkedin to a public IP in a network such as Telecom provided networks (4G) or majority of Wifi networks. However, it does not work as well when there is a firewall restriction. Highlighting one such case below:

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A4.jpg?width=384&height=274&name=A4.jpg) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A4.jpg?width=384&height=274&name=A4.jpg)

 Figure depicting blocked media traffic when firewall is restrictive and STUN provided IP address fail to make WebRTC media session.

The configuration for this setup is non SIP, using only Google-provided STUN server.

```
https://<ip>:8081/index.html#34900, { iceServers: [stun:stun.l.google.com:19302], iceTransportPolicy: all, bundlePolicy: balanced, rtcpMuxPolicy: require, iceCandidatePoolSize: 0, sdpSemantics: "unified-plan", extmapAllowMixed: true }
```

A use case of WebRTC internals where the WebRTC client was not able to gather enough candidates to establish peer to peer media connection is shared below:

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A5.png?width=511&height=512&name=A5.png) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A5.png?width=511&height=512&name=A5.png)

 Screenshot of failed ICE gathering. WebRTC client was not able to gather enough candidates to establish peer to peer media connection in spite of STUN.

# Self-Hosted TURN Server, CoTURN

STUN performs network discovery and hole punching in a best effort to connect local and remote without directly affecting the media streams and steps out of the picture once connection is established. In contrast, a TURN server remains in the media path after the connection has been established, relaying the media packets through itself.

CoTURN is an open-source STUN and TURN-supported ICE Server. It is well contributed by the developer community. It is RFC-compliant and frequently used by VoIP Integrators for their real time communication solutions. 

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A6.jpg?width=384&height=274&name=A6.jpg) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A6.jpg?width=384&height=274&name=A6.jpg)

 Figure depicting WebRTC media traffic via TURN relay in presence of restrictive firewall.

## Setup for CoTURN

Here is a quick overview of installation CoTURN and its usage for a non-SIP communication client: [https://webrtc.ventures/2017/08/quick-guide-stunturn-webrtc/](https://webrtc.ventures/2017/08/quick-guide-stunturn-webrtc/). Once the CoTURN service is running, we will need the following adding in our JavaScript WebRTC webpage:

```
iceServers: [
{ 'url': 'stun: <username>@<serverip>: <port>'},
{ 'url': 'turn: <username>@<serverip>: <port>', 'credential': '<password>'}]
```

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A7.png?width=512&height=132&name=A7.png) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A7.png?width=512&height=132&name=A7.png)

 Screenshot of successful network connection using CoTURN Server. 

From the WebRTC internal dumps file downloaded and using the tool provided at [https://fippo.github.io/webrtc-dump-importer/](https://fippo.github.io/webrtc-dump-importer/), we can post analyze the WebRTC session: 

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A8.jpg?width=512&height=89&name=A8.jpg) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A8.jpg?width=512&height=89&name=A8.jpg)

 Screenshot and annotation to show the UDP TCP ICE via self-hosted CoTURN.

Ensure the ICE Candidate is an active pair by observing the highlighted section of the traces. For example, in the trace the active pair is highlighted in bold:

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A9-1.jpg?width=512&height=435&name=A9-1.jpg) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A9-1.jpg?width=512&height=435&name=A9-1.jpg)

## CoTURN Performance 

TURN’s relay-based ICE candidates are generally prioritized lower than STUN’s reflexive candidates. The QoS metrics for this study, given no firewall restrictions, shows indistinguishable performance for local connections (i.e., within the same region and network). However, TURN performs significantly better than STUN over long distances (i.e., WebRTC peers across continents). With firewalls, TURN is the best proven and widely used methodology to overcome network restriction and establish peer to peer stream.

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A10-1.png?width=512&height=251&name=A10-1.png) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A10-1.png?width=512&height=251&name=A10-1.png)

 Screenshot to show media streaming through TURN Server.    
ICE candidates: Local udp prflx, Remote udp relay 

## Performance for peer reflexive candidate on local and relay candidate on remote

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A11.png?width=512&height=182&name=A11.png) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A11.png?width=512&height=182&name=A11.png)

 Screenshot for bitrate performance of CoTURN established media session.

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A13-1.png?width=512&height=181&name=A13-1.png) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A13-1.png?width=512&height=181&name=A13-1.png)

 Screenshot for Packet sent and received performance of CoTURN established media session.

![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A14.png?width=512&height=180&name=A14.png) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/A14.png?width=512&height=180&name=A14.png)

 Screenshot for QoS Attributes of CoTURN established media session.

## About the Author: Altanai Bisht

[![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/author-Altanai-2-Apr-03-2024-06-07-04-4128-PM.jpg?width=867&height=335&name=author-Altanai-2-Apr-03-2024-06-07-04-4128-PM.jpg) ![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/author-Altanai-2-Apr-03-2024-06-07-04-4128-PM.jpg?width=867&height=335&name=author-Altanai-2-Apr-03-2024-06-07-04-4128-PM.jpg)](https://www.linkedin.com/in/altanai/)

**Here at [WebRTC.ventures](https://webrtc.ventures/contact/), we pride ourselves on offering our clients the opportunity to work with extremely bright developers, like Altanai. Don’t trust your [custom video solution](https://webrtc.ventures/custom-applications/) to just anyone. Trust the experts!**

[CPaaS](https://blog.webrtc.ventures/tag/cpaas), [Managed Services](https://blog.webrtc.ventures/tag/managed-services), [Events](https://blog.webrtc.ventures/tag/events), [Video Conferencing](https://blog.webrtc.ventures/tag/video-conferencing), [Real Time Weekly](https://blog.webrtc.ventures/tag/real-time-weekly), [WebRTC Architecture](https://blog.webrtc.ventures/tag/webrtc-architecture), [Broadcasting](https://blog.webrtc.ventures/tag/broadcasting), [Medical](https://blog.webrtc.ventures/tag/medical), [WebRTC Live](https://blog.webrtc.ventures/tag/webrtc-live), [Showcase](https://blog.webrtc.ventures/tag/showcase), [Thoughts](https://blog.webrtc.ventures/tag/thoughts), [Vonage](https://blog.webrtc.ventures/tag/vonage), [Daily](https://blog.webrtc.ventures/tag/daily), [Jobs](https://blog.webrtc.ventures/tag/jobs), [Contact Centers](https://blog.webrtc.ventures/tag/contact-centers), [Telehealth](https://blog.webrtc.ventures/tag/telehealth), [Education](https://blog.webrtc.ventures/tag/education), [Technical](https://blog.webrtc.ventures/tag/technical), [General](https://blog.webrtc.ventures/tag/general), [Story of success](https://blog.webrtc.ventures/tag/story-of-success), [The WebRTC.ventures Blog](https://blog.webrtc.ventures/tag/the-webrtc-ventures-blog), [Testing](https://blog.webrtc.ventures/tag/testing), [Gaming](https://blog.webrtc.ventures/tag/gaming), [DevOps](https://blog.webrtc.ventures/tag/devops), [Symbl.ai](https://blog.webrtc.ventures/tag/symbl-ai)

## Related posts

[![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/Self-hosted-TURN-and-Our-Experience-Using-Subspace.png?height=200&name=Self-hosted-TURN-and-Our-Experience-Using-Subspace.png)](https://blog.webrtc.ventures/2022/03/self-hosted-turn-and-subspace)

## [Self-hosted TURN and Our Experience Using Subspace](https://blog.webrtc.ventures/2022/03/self-hosted-turn-and-subspace)

[Altanai Bisht](https://blog.webrtc.ventures/author/altanai-bisht) 

 Mar 30, 2022 12:00:00 AM

Subspace WebRTC-CDN not only delivers STUN and TURN based interconnectivity establishments, but...

[Read more](https://blog.webrtc.ventures/2022/03/self-hosted-turn-and-subspace)

[![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/ICE-Issues-On-Restrictive-Networks-and-How-To-Alleviate-Them.png?height=200&name=ICE-Issues-On-Restrictive-Networks-and-How-To-Alleviate-Them.png)](https://blog.webrtc.ventures/2021/12/ice-issues-on-restrictive-networks-and-how-to-alleviate-them)

## [ICE Issues On Restrictive Networks and How To Alleviate Them](https://blog.webrtc.ventures/2021/12/ice-issues-on-restrictive-networks-and-how-to-alleviate-them)

[Alberto Gonzalez](https://blog.webrtc.ventures/author/alberto-gonzalez) 

 Dec 7, 2021 12:00:00 AM

Recently, we faced some issues with an on-premise telehealth platform related to connectivity. It...

[Read more](https://blog.webrtc.ventures/2021/12/ice-issues-on-restrictive-networks-and-how-to-alleviate-them)

[![](https://blog.webrtc.ventures/hs-fs/hubfs/Imported_Blog_Media/Watch-WebRTC-Live-57.png?height=200&name=Watch-WebRTC-Live-57.png)](https://blog.webrtc.ventures/2021/07/webrtclive-scaling)

## [Watch WebRTC Live #57 - How To Successfully Scale Your WebRTC in 2021](https://blog.webrtc.ventures/2021/07/webrtclive-scaling)

![Picture of Jen Oppenheimer](https://blog.webrtc.ventures/hs-fs/hubfs/Our-Team-Jen.jpg?width=50&name=Our-Team-Jen.jpg) [Jen Oppenheimer](https://blog.webrtc.ventures/author/jen-oppenheimer) 

 Jul 21, 2021 12:00:00 AM

On the July 14, 2021 episode of WebRTC Live, we welcomed another new face to WebRTC Live. Anton...

[Read more](https://blog.webrtc.ventures/2021/07/webrtclive-scaling)

### WebRTC.Ventures Services

...

- Assess
- Build
- Integrate
- Test
- Deploy & Manage

### Contact Us

...

**Video should be an opportunity, not a headache.**   
 We’re here to build, integrate, assess and optimize, test, and even deploy and manage your live video application. 

[Contact us](https://blog.webrtc.ventures/2022/04/ice-in-webrtc#contact)

### WebRTC Live

...

 View [past episodes](https://blog.webrtc.ventures/webrtc-live/) of our webinar interview series about the latest webRTC use cases and technical updates. Join our mailing list to learn about upcoming episodes! 

![WebRTC Live](https://blog.webrtc.ventures/hs-fs/hubfs/Template%20Images/widged-bannet.webp?height=90&name=widged-bannet.webp)

![logo-main-light](https://blog.webrtc.ventures/hubfs/logo-main-light.svg "logo-main-light")

We’re one of the few agencies in the world dedicated to WebRTC development. This dedication and experience is why so many people trust us to help bring live video application dreams to life.

 

### Let's get started!

###### **[Contact us today](https://webrtc.ventures/contact/)**

**[info@webrtc.ventures](mailto:info@webrtc.ventures)**

<https://www.linkedin.com/company/webrtc-ventures> <https://www.youtube.com/@WebrtcVentures>

### Join our mailing list

We don't e-mail often (a few times a month max), and it will be worth it when we do! Of course, we respect your privacy and will not share your contact information.

© 2023 WebRTC.ventures, an [AgilityFeat](https://agilityfeat.com/) company / [Privacy Policy](https://webrtc.ventures/privacy-policy//)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Jen Oppenheimer",
    "url" : "https://blog.webrtc.ventures/author/jen-oppenheimer"
  },
  "dateModified" : "2024-04-03T18:08:50.418Z",
  "datePublished" : "2022-04-19T04:00:00.000Z",
  "headline" : "ICE in WebRTC: Server Setup and Relative Performance – WebRTC.ventures",
  "image" : [ "https://blog.webrtc.ventures/hubfs/Imported_Blog_Media/ICE-in-WebRTC-Server-Setup-and-Relative-Performance.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blog.webrtc.ventures/2022/04/ice-in-webrtc",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blog.webrtc.ventures/hubfs/logo-main-light.svg"
    }
  }
}
```