In this article, we are going to give you a list of ICE servers that you can use in your project. We are also going to give you free as well as paid providers of ICE servers along with their benefits and drawbacks

Here is what we are going to learn in this article

  • What are ICE Servers
  • What is WebRTC
  • What is Signalling in WebRTC

Premium ICE Servers

  • Metered ICE Servers

Free ICE Servers

  • Open Relay ICE Servers
  • CoTURN ICE Servers
  • AWS ICE Servers
  • Azure ICE Servers
  • Digital Ocean ICE Servers

What are ICE Servers

Interactive Connectivity Establishment (ICE) is a protocol and servers that are used for NAT traversal and overcoming firewall rules in various webRTC communications

Such as VoIP and Video calling and other p2p technologies

ICE operates by gathering all the candidates (That is the possible ways to connect peers with each other) from local private networks multiple NATs and firewall rules through internet to other devices that are in other private networks and NAT and firewall rules

These candidates include STUN and TURN servers, once all the candidates are gathered then ICE tests the connection through path, each starting with the most effcient and functional pathway to more complicated until a path is found for the media to stream directly between peers

Here is an ICE server array with free stun servers

const iceServers = [
    { urls: "stun:stun.l.google.com:19302" },
    { urls: "stun:stun.l.google.com:5349" },
    { urls: "stun:stun1.l.google.com:3478" },
    { urls: "stun:stun1.l.google.com:5349" },
    { urls: "stun:stun2.l.google.com:19302" },
    { urls: "stun:stun2.l.google.com:5349" },
    { urls: "stun:stun3.l.google.com:3478" },
    { urls: "stun:stun3.l.google.com:5349" },
    { urls: "stun:stun4.l.google.com:19302" },
    { urls: "stun:stun4.l.google.com:5349" }
];
Free ICE server array

Premium ICE Servers

Metered ICE Servers

Metered.ca is a Canadian provider of Global ICE Servers these include STUN and TURN servers. With Global server you get very fast connections with very low latency

Here are some of the features of Metered TURN servers

Metered TURN servers

Metered Global TURN servers

  1. Global Geo-Location targeting: Automatically directs traffic to the nearest servers, for lowest possible latency and highest quality performance.
  2. Servers in 12 Regions of the world: Toronto, Miami, San Francisco, Amsterdam, London, Frankfurt, Bangalore, Singapore,Sydney
  3. Low Latency: less than 50 ms latency, anywhere across the world.
  4. Cost-Effective: pay-as-you-go pricing with bandwidth and volume discounts available.
  5. Easy Administration: Get usage logs, emails when accounts reach threshold limits, billing records and email and phone support.
  6. Standards Compliant: Conforms to RFCs 5389, 5769, 5780, 5766, 6062, 6156, 5245, 5768, 6336, 6544, 5928 over UDP, TCP, TLS, and DTLS.
  7. Multi‑Tenancy: Create multiple credentials and separate the usage by customer, or different apps. Get Usage logs, billing records and threshold alerts.
  8. Enterprise Reliability: 99.999% Uptime with SLA.
  9. Enterprise Scale: : With no limit on concurrent traffic or total traffic. Metered TURN Servers provide Enterprise Scalability
  10. 5 GB/mo Free: Get 50 GB every month free TURN server usage with the Free Plan

Here is a metered ice server array:

var myPeerConnection = new RTCPeerConnection({
  iceServers: [
      {
        urls: "stun:something.meteredstun.ca:89032",
      },
      {
        urls: "turn:global.relay.metered.ca:80",
        username: "f6507426c0f4f89d0bda02e2",
        credential: "7YF0907XexAfvkbL",
      },
      {
        urls: "turn:global.relay.metered.ca:80?transport=tcp",
        username: "f6507426c0f4f89d0bda02e2",
        credential: "7YF0907XexAfvkbL",
      },
      {
        urls: "turn:global.relay.metered.ca:443",
        username: "f6507426c0f4f89d0bda02e2",
        credential: "7YF0907XexAfvkbL",
      },
      {
        urls: "turns:global.relay.metered.ca:443?transport=tcp",
        username: "f6507426c0f4f89d0bda02e2",
        credential: "7YF0907XexAfvkbL",
      },
  ],
});
ICE server array

AWS ICE Servers

You can create your own TURN servers using AWS. With AWS you can install the open source CoTURN servers on your AWS Instance and run your own turn server

  • You have to do the installation and configuration of the TURN server yourself
  • You need to do the devops for maintenance of the TURN server yourself
  • Although you might think AWS as a cheaper option there are costs associated with running your TURN server on AWS
  • Instance costs: Running a TURN server requires high CPU and ram to run, so you need to estimate your usage and determine which instance to purchase before running the turn server. Here is an article that better illustrates the costs associated with running your own turn server: turn server costs
  • Bandwidth costs: AWS also charges for bandwidth, so depending on your usage you might have to pay bandwidth costs as well.
  • Also, with global providers such as Metered you get low latency whereas if you are running a local service you can opt for AWS.
  • Still, if you wish to run your own TURN server on AWS you can use this guide to setup a server on aws: AWS TURN server setup

Azure TURN Server

Like AWS Azure also provides cloud servers that you can use to setup your own turn server using the open souce coturn TURN server.

  • You can setup your own TURN server on Azure by following this guide: https://www.metered.ca/blog/azure-turn-server/
  • As with AWS you need to determine which instance will be best for your TURN server usage
  • You also need to bear instance costs an bandwidth costs associated with running a TURN server
  • As with any service running on cloud providers you need to do devops and maintainence as well on your turn server
  • It is not plug and play as it will be if you opt for a TURN server service
  • If you are looking for a cost effective alternative you can opt for Open Relay Project. They provide a free turn server or
  • If you are looking for premium TURN servers with ultra low latency and high throughput you can consider Metered TURN servers

Open Relay Project ICE Servers

the open relay project provides free ICE Servers to be used in any project. you can visit the openrelayproject on the website: https://openrelayproject.org

The Open Relay runs on port 80 and 443 to bypass corporate firewalls, many corporate/enterprise firewall only allow port 80 or 443, it also supports turns + SSL for maximum compatibility.

  • ✅ Runs on port 80 and 443
  • ✅ Tested to bypass most firewall rules
  • ✅ Enterprise grade reliability (99.999% uptime)
  • ✅ Support TURNS + SSL to allow connections through deep packet inspection firewalls.
  • ✅ Support STUN
  • ✅ Supports both TCP and UDP
  • ✅ Dynamic routing to the nearest server
  • ✅ Production Ready

CoTURN Open Source Project

If you are looking for a open source TURN project, that you can use on any cloud project. AWS, Azure etc

Then it is the coturn project. If you want the guide on how to install coturn project in your cloud provider here is a guide: https://www.metered.ca/blog/coturn/

You can also run the coturn project in a docker container as well. If you are looking for a guide on how to install coturn in docker

What is WebRTC?

WebRTC is an open source project that lets web browsers and apps conduct real time communication with REST APIs

WebRTC supports video, voice and generic data that can be send between peers, allowing developers to build powerful voice and video communications with the need for internal and external plugin.

WebRTC enables applications such as video conferencing , live streaming, telemedicine, online education thus making it an accessable and important for creating seamless and platform indipendent technology for building communication directly in the browser

Role of ICE Servers in WebRTC

ICE servers are used to facilitate the direct connection between WebRTC clients that are behind NATs and firewall rule.

When implementing WebRTC and online communication between two clients the most important challenge is to over come NATs and firewall rules that do not allow for a direct connection with outside clients

Here ICE servers came into play. ICE uses a combination of methods like STUN and TURN servers.

  • STUN Servers: STUN server can be used to discover what is the public IP address of a device which is behind a NAT? The router or a NAT device assigns private IP addresses to the devices that are behind it and channels all the traffic though a single or a few public IP addresses, thus running multiple devices on a single IP address.
  • TURN server: TURN servers are a critical fallback when STUN servers fail. STUN fails most of the time because of complex NAT and firewall rules that obstruct the flow of peer to peer traffic. TURN servers act as an middleman, they relay traffic from one peer to another and thus bypass NAT and firewall restrictions. All the traffic that is passing through TURN servers is end to end encrypted.

What is Signalling?

In the context of WebRTC, signalling is the process of exchanging information that is needed to discover and establish peer to peer connection

WebRTC requires that both ends of the connection negotiates the session parameters before real time communication can take place. This negotiation requires a signalling server, which facilitates the exchange of media metadata, network information and other messages that are required to set up and maintain a connection

Signalling in webRTC is not inherently defined by webrtc standareds, instead you can use any compatible signalling server as needed. The following information is exchanged during the signalling process

  • Session description protocol SDP information: This describes the media capabilities of the clients for example audio and video formats etc
  • Candidate information: This information is derived from the ICE protocol and it includes the potential networking paths such as through STUN and TURN servers for the media including IP addresses and port numbers
  • Control messsages: Session initiation, session termination, error messages and other information and notification related to communication session