Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol
RFC 8838

Document Type RFC - Proposed Standard (January 2021; No errata)
Updated by RFC 8863
Authors Emil Ivov  , Eric Rescorla  , Justin Uberti  , Peter Saint-Andre 
Last updated 2021-01-18
Replaces draft-ietf-mmusic-trickle-ice
Stream IETF
Formats plain text html xml pdf htmlized bibtex
Stream WG state Submitted to IESG for Publication
Document shepherd Nils Ohlmeier
Shepherd write-up Show (last changed 2018-01-24)
IESG IESG state RFC 8838 (Proposed Standard)
Consensus Boilerplate Yes
Telechat date
Responsible AD Ben Campbell
Send notices to Nils Ohlmeier <>
IANA IANA review state Version Changed - Review Needed
IANA action state RFC-Ed-Ack

Internet Engineering Task Force (IETF)                           E. Ivov
Request for Comments: 8838                                   8x8 / Jitsi
Category: Standards Track                                      J. Uberti
ISSN: 2070-1721                                                   Google
                                                          P. Saint-Andre
                                                            January 2021

Trickle ICE: Incremental Provisioning of Candidates for the Interactive
               Connectivity Establishment (ICE) Protocol


   This document describes "Trickle ICE", an extension to the
   Interactive Connectivity Establishment (ICE) protocol that enables
   ICE agents to begin connectivity checks while they are still
   gathering candidates, by incrementally exchanging candidates over
   time instead of all at once.  This method can considerably accelerate
   the process of establishing a communication session.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at

Copyright Notice

   Copyright (c) 2021 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   ( in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction
   2.  Terminology
   3.  Determining Support for Trickle ICE
   4.  Generating the Initial ICE Description
   5.  Handling the Initial ICE Description and Generating the Initial
           ICE Response
   6.  Handling the Initial ICE Response
   7.  Forming Checklists
   8.  Performing Connectivity Checks
   9.  Gathering and Conveying Newly Gathered Local Candidates
   10. Pairing Newly Gathered Local Candidates
   11. Receiving Trickled Candidates
   12. Inserting Trickled Candidate Pairs into a Checklist
   13. Generating an End-of-Candidates Indication
   14. Receiving an End-of-Candidates Indication
   15. Subsequent Exchanges and ICE Restarts
   16. Half Trickle
   17. Preserving Candidate Order While Trickling
   18. Requirements for Using Protocols
   19. IANA Considerations
   20. Security Considerations
   21. References
     21.1.  Normative References
     21.2.  Informative References
   Appendix A.  Interaction with Regular ICE
   Appendix B.  Interaction with ICE-Lite
   Authors' Addresses

1.  Introduction

   The Interactive Connectivity Establishment (ICE) protocol [RFC8445]
   describes how an ICE agent gathers candidates, exchanges candidates
   with a peer ICE agent, and creates candidate pairs.  Once the pairs
   have been gathered, the ICE agent will perform connectivity checks
   and eventually nominate and select pairs that will be used for
   sending and receiving data within a communication session.

   Following the procedures in [RFC8445] can lead to somewhat lengthy
   establishment times for communication sessions, because candidate
   gathering often involves querying Session Traversal Utilities for NAT
   (STUN) servers [RFC5389] and allocating relayed candidates on
   Traversal Using Relay NAT (TURN) servers [RFC5766].  Although many
   ICE procedures can be completed in parallel, the pacing requirements
   from [RFC8445] still need to be followed.

   This document defines "Trickle ICE", 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.

   This document also defines how to discover support for Trickle ICE,
   how the procedures in [RFC8445] are modified or supplemented when
   using Trickle ICE, and how a Trickle ICE agent can interoperate with
Show full document text