メニュー

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Video Regions and Global Low Latency

概要

Programmable Video Developers can select the geolocation of the Twilio infrastructure that serves their Rooms. Two mechanisms are available:

  • Explicit region selection
  • Global Low Latency (GLL)

Understanding these mechanisms is important for creating high quality Real-Time Communication (RTC) applications.

目次

Geolocation and Quality

On the Internet, latency and packet loss depend on geolocation. When the connection between a sender and a receiver spans the globe, latency and jitter are increased by the distance between the parties. Packet loss is also more likely, due to the number of routers in the connection path. This affects quality in several ways:

  • Signaling messages will have higher latency, increasing the time for Participant operations like connecting to a Room, and sending and receiving the first media samples.
  • After joining, publishing and subscribing to new Tracks will take longer.
  • In Group Rooms media latency will increase and media fidelity will decrease.

In order to minimize these effects, the Twilio infrastructure that serves a Room should be as close as possible to the Room's Participants. This guide provides best practices and recommendations on how to choose regions for your applications.

Twilio Regions

Programmable Video developers have the following options when working with regions:

リージョン ID 所在地
gll Global Low Latency (see section below)
au1 オーストラリア
br1 ブラジル
de1 ドイツ
ie1 アイルランド
in1 インド
jp1 日本
sg1 シンガポール
us1 米国東海岸(バージニア)
us2 米国西海岸(オレゴン)

Twilio Programmable Video regions worldwide

Regions and GLL

Twilio Programmable Video regions are architected around two concepts: the Signaling Region and the Media Region.

The Signaling Region:

  • It is a per-Participant property. Hence, each Participant may have a different Signaling Region.
  • It is the ingress / egress point for the Participant's signaling traffic and Twilio's cloud.
  • The Participant's TLS encryption session is terminated at the edge Server.

The Media Region:

  • It is a Room level property. Hence, all the Participants in a Group Room share the same Media Region.
  • It is the location of the Server where media processing takes place.
  • Each Participant's DTLS encryption session is terminated at the Server

Unless there are legal or compliance reasons, developers should select the region having less latency with a Participant as the Signaling Region of that Participant.

For the Media Region, we recommend to use the region minimizing the average latency to all the Group Room Participants. Many times it's not possible to have a priori knowledge of Participants location. In that case, a simple rule of thumb that typically works is to select the region closest to the first Participant.

Applying these recommendations may be complex and sometimes developers prefer Twilio to select the region on their behalf. This can be achieved using GLL (Global Low Latency).

Selecting the Signaling Region (P2P and Group Rooms)

Our Video SDKs use gll as the default Signaling Region. In that case, Participants will connect to the region having minimum latency to their location. This can be overridden with Signaling Region selection, which is supported in the following SDK versions:

Twilio Video SDK Required version
Android v5.0.0-beta1+
iOS v3.0.0-beta1+
JavaScript v2.0.0-beta11+

The Signaling Region can be specified using the region property at connect time. For example, the following snippets illustrate how to connect to de1:

Android (v5.0.0-beta1+)

Java

ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)
    .region("de1")
    .roomName("my-room")
    .build();

room = Video.connect(context, connectOptions, roomListener);

Kotlin

val connectOptions = new ConnectOptions.Builder(accessToken)
    .region("de1")
    .roomName("my-room")
    .build()

room = Video.connect(context, connectOptions, roomListener)

iOS (v3.0.0-beta1+)

let connectOptions = ConnectOptions(token: accessToken) { (builder) in
    builder.region = "de1"
    builder.roomName = "my-room"
}
self.room = TwilioVideoSDK.connect(with: connectOptions, delegate: self)

JavaScript (v2.0.0-beta11+)

const { connect } = require('twilio-video');

const room = await connect(token, {
  name: 'my-room',
  region: 'de1'
});

Selecting the Media Region (Group Rooms)

コンソールの使用

By default, your Twilio account is configured with us1 as the Media Region. You can modify the default media region in Video/Rooms/Settings, as the following picture illustrates:

Region Selection at the Twilio Console

Using the Rooms API

You can override the default region specified in the console by using the Rooms REST API. This can be done by setting the MediaRegion POST parameter to the desired Region ID. For further information see the Room Creation Example.

Understanding GLL: an Example

Current Twilio region selection is based on two principles:

  • When the Signaling Region is gll then the region with minimum latency to the client is selected for signaling traffic.
  • When the Media Region is gll then the Signaling Region of the first participant connecting to the Group Room is selected for media traffic. Note, that due to this, in ad-hoc Rooms Media Region can be specified at connect time from the first Participant SDK.

Let’s use an example to better illustrate how this works. Imagine a Group Room with the following participants:

  • Alice connects first from New York (lowest latency region is us1)
  • Then Markus connects from Berlin (lowest latency region is de1)

The following table shows the actual chosen regions as a function of the specified (at the console or with the APIs) Signaling and Media Regions:

Specified Media Region Specified Signaling Region (Alice) Specified Signaling Region (Markus) Chosen Media Region Chosen Signaling Region (Alice) Chosen Signaling Region (Markus)
- - - us1 us1 de1
gll - - us1 us1 de1
gll gll gll us1 us1 de1
ie1 - - ie1 us1 de1
gll ie1 ie1 ie1 de1
gll ie1 gll ie1 ie1 de1
ie1 au1 br1 ie1 au1 br1

Remark that gll performs DNS latency-based routing. This type of routing could return poor results when:

  • A 3rd party DNS provider is used.
  • A VPN is used, and DNS queries are routed through it.

Security Considerations

Twilio's Programmable Video SDKs must communicate with Twilio's cloud. Hence, firewalls may need to be configured to whitelist Twilio’s Signaling and Media Servers IPs:

  • Developers using explicit regions should whitelist the IP ranges in their selected Media and Signaling regions.
  • Developers using gll should whitelist the IP ranges in all regions.

The IP ranges and domain names assigned to every region can be found in our IP Address Whitelisting Guide.

Luis Lopez
Rate this page:

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。