wiki:Using_Trickle_ICE

Version 3 (modified by bennylp, 14 months ago) (diff)

--

Using Trickle ICE

Table of Contents

  1. Brief info about Trickle ICE (moved)
  2. How to enable
    1. For app using PJSUA
    2. For app using PJSUA2
    3. For pjsua app
  3. References


Brief info about Trickle ICE (moved)

Moved to http://docs.pjsip.org/en/latest/specific-guides/network_nat/trickle_ice.html

Trickle ICE is a supplementary mode of ICE operation in which candidates can be exchanged incrementally as soon as they become available (and simultaneously with the gathering of other candidates). Connectivity checks can also start as soon as candidate pairs have been created. Because Trickle ICE enables candidate gathering and connectivity checks to be done in parallel, the method can considerably accelerate the process of establishing a communication session.

Two operation modes of trickle ICE:

  1. Full trickle, the typical mode of operation for Trickle ICE agents, an agent is supposed to enable this mode only when it knows that remote supports trickle ICE. Determining support of trickle ICE can be done by following the recommendations described here and specifically for SIP here.
  1. Half trickle, mode of operation in which the initiator gathers a full generation of candidates strictly before creating and conveying the initial ICE description. Once conveyed, this candidate information can be processed by regular ICE agents, which do not require support for Trickle ICE. It also allows Trickle ICE capable responders to still gather candidates and perform connectivity checks in a non-blocking way, thus providing roughly "half" the advantages of Trickle ICE. The half trickle mechanism is mostly meant for use when the responder's support for Trickle ICE cannot be confirmed prior to conveying the initial ICE description.

How to enable

For app using PJSUA

  1. Enable and configure ICE as usual.
  2. Configure trickle ICE, it can be configured globally (for all SIP accounts) or per account basis:
    • global setting: set pjsua_media_config.ice_opt.trickle to PJ_ICE_SESS_TRICKLE_HALF or PJ_ICE_SESS_TRICKLE_FULL.
    • account setting:
      • set pjsua_acc_config.ice_cfg_use to PJSUA_ICE_CONFIG_USE_CUSTOM
      • set pjsua_acc_config.ice_cfg.ice_opt.trickle to PJ_ICE_SESS_TRICKLE_HALF or PJ_ICE_SESS_TRICKLE_FULL.

For app using PJSUA2

  1. Enable and configure ICE as usual.
  2. Configure trickle ICE, it can only be configured per account basis:
    • set AccountConfig.natConfig.iceTrickle to PJ_ICE_SESS_TRICKLE_HALF or PJ_ICE_SESS_TRICKLE_FULL.

For pjsua app

  1. Enable and configure ICE as usual, e.g: --use-ice, STUN & TURN settings.
  2. Add pjsua param --ice-trickle=N, note: N=0:disabled, 1:half, 2:full.

References