rfc8838v3.txt   rfc8838.txt 
Internet Engineering Task Force (IETF) E. Ivov Internet Engineering Task Force (IETF) E. Ivov
Request for Comments: 8838 8x8 / Jitsi Request for Comments: 8838 8x8 / Jitsi
Category: Standards Track J. Uberti Category: Standards Track J. Uberti
ISSN: 2070-1721 Google ISSN: 2070-1721 Google
P. Saint-Andre P. Saint-Andre
Mozilla Mozilla
November 2020 January 2021
Trickle ICE: Incremental Provisioning of Candidates for the Interactive Trickle ICE: Incremental Provisioning of Candidates for the Interactive
Connectivity Establishment (ICE) Protocol Connectivity Establishment (ICE) Protocol
Abstract Abstract
This document describes "Trickle ICE", an extension to the This document describes "Trickle ICE", an extension to the
Interactive Connectivity Establishment (ICE) protocol that enables Interactive Connectivity Establishment (ICE) protocol that enables
ICE agents to begin connectivity checks while they are still ICE agents to begin connectivity checks while they are still
gathering candidates, by incrementally exchanging candidates over gathering candidates, by incrementally exchanging candidates over
skipping to change at line 38 skipping to change at line 38
received public review and has been approved for publication by the received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841. Internet Standards is available in Section 2 of RFC 7841.
Information about the current status of this document, any errata, Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc8838. https://www.rfc-editor.org/info/rfc8838.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at line 95 skipping to change at line 95
describes how an ICE agent gathers candidates, exchanges candidates describes how an ICE agent gathers candidates, exchanges candidates
with a peer ICE agent, and creates candidate pairs. Once the pairs with a peer ICE agent, and creates candidate pairs. Once the pairs
have been gathered, the ICE agent will perform connectivity checks have been gathered, the ICE agent will perform connectivity checks
and eventually nominate and select pairs that will be used for and eventually nominate and select pairs that will be used for
sending and receiving data within a communication session. sending and receiving data within a communication session.
Following the procedures in [RFC8445] can lead to somewhat lengthy Following the procedures in [RFC8445] can lead to somewhat lengthy
establishment times for communication sessions, because candidate establishment times for communication sessions, because candidate
gathering often involves querying Session Traversal Utilities for NAT gathering often involves querying Session Traversal Utilities for NAT
(STUN) servers [RFC5389] and allocating relayed candidates on (STUN) servers [RFC5389] and allocating relayed candidates on
Traversal Using Relay NAT (TURN) servers [RFC8656]. Although many Traversal Using Relay NAT (TURN) servers [RFC5766]. Although many
ICE procedures can be completed in parallel, the pacing requirements ICE procedures can be completed in parallel, the pacing requirements
from [RFC8445] still need to be followed. from [RFC8445] still need to be followed.
This document defines "Trickle ICE", a supplementary mode of ICE This document defines "Trickle ICE", a supplementary mode of ICE
operation in which candidates can be exchanged incrementally as soon operation in which candidates can be exchanged incrementally as soon
as they become available (and simultaneously with the gathering of as they become available (and simultaneously with the gathering of
other candidates). Connectivity checks can also start as soon as other candidates). Connectivity checks can also start as soon as
candidate pairs have been created. Because Trickle ICE enables candidate pairs have been created. Because Trickle ICE enables
candidate gathering and connectivity checks to be done in parallel, candidate gathering and connectivity checks to be done in parallel,
the method can considerably accelerate the process of establishing a the method can considerably accelerate the process of establishing a
skipping to change at line 989 skipping to change at line 989
[RFC4787] Audet, F., Ed. and C. Jennings, "Network Address [RFC4787] Audet, F., Ed. and C. Jennings, "Network Address
Translation (NAT) Behavioral Requirements for Unicast Translation (NAT) Behavioral Requirements for Unicast
UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, January
2007, <https://www.rfc-editor.org/info/rfc4787>. 2007, <https://www.rfc-editor.org/info/rfc4787>.
[RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing, [RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing,
"Session Traversal Utilities for NAT (STUN)", RFC 5389, "Session Traversal Utilities for NAT (STUN)", RFC 5389,
DOI 10.17487/RFC5389, October 2008, DOI 10.17487/RFC5389, October 2008,
<https://www.rfc-editor.org/info/rfc5389>. <https://www.rfc-editor.org/info/rfc5389>.
[RFC5766] Mahy, R., Matthews, P., and J. Rosenberg, "Traversal Using
Relays around NAT (TURN): Relay Extensions to Session
Traversal Utilities for NAT (STUN)", RFC 5766,
DOI 10.17487/RFC5766, April 2010,
<https://www.rfc-editor.org/info/rfc5766>.
[RFC6120] Saint-Andre, P., "Extensible Messaging and Presence [RFC6120] Saint-Andre, P., "Extensible Messaging and Presence
Protocol (XMPP): Core", RFC 6120, DOI 10.17487/RFC6120, Protocol (XMPP): Core", RFC 6120, DOI 10.17487/RFC6120,
March 2011, <https://www.rfc-editor.org/info/rfc6120>. March 2011, <https://www.rfc-editor.org/info/rfc6120>.
[RFC6336] Westerlund, M. and C. Perkins, "IANA Registry for [RFC6336] Westerlund, M. and C. Perkins, "IANA Registry for
Interactive Connectivity Establishment (ICE) Options", Interactive Connectivity Establishment (ICE) Options",
RFC 6336, DOI 10.17487/RFC6336, July 2011, RFC 6336, DOI 10.17487/RFC6336, July 2011,
<https://www.rfc-editor.org/info/rfc6336>. <https://www.rfc-editor.org/info/rfc6336>.
[RFC8656] Reddy, T., Ed., Johnston, A., Ed., Matthews, P., and J.
Rosenberg, "Traversal Using Relays around NAT (TURN):
Relay Extensions to Session Traversal Utilities for NAT
(STUN)", RFC 8656, DOI 10.17487/RFC8656, February 2020,
<https://www.rfc-editor.org/info/rfc8656>.
[RFC8828] Uberti, J. and G. Shieh, "WebRTC IP Address Handling [RFC8828] Uberti, J. and G. Shieh, "WebRTC IP Address Handling
Requirements", DOI 10.17487/RFC8828, RFC 8828, May 2020, Requirements", RFC 8828, DOI 10.17487/RFC8828, January
<https://www.rfc-editor.org/info/rfc8828>. 2021, <https://www.rfc-editor.org/info/rfc8828>.
[RFC8840] Ivov, E., Stach, T., Marocco, E., and C. Holmberg, "A [RFC8840] Ivov, E., Stach, T., Marocco, E., and C. Holmberg, "A
Session Initiation Protocol (SIP) Usage for Incremental Session Initiation Protocol (SIP) Usage for Incremental
Provisioning of Candidates for the Interactive Provisioning of Candidates for the Interactive
Connectivity Establishment (Trickle ICE)", Connectivity Establishment (Trickle ICE)", RFC 8840,
DOI 10.17487/RFC8840, RFC 8840, June 2018, DOI 10.17487/RFC8840, January 2021,
<https://www.rfc-editor.org/info/rfc8840>. <https://www.rfc-editor.org/info/rfc8840>.
[XEP-0030] Hildebrand, J., Millard, P., Eatmon, R., and P. Saint- [XEP-0030] Hildebrand, J., Millard, P., Eatmon, R., and P. Saint-
Andre, "XEP-0030: Service Discovery", XMPP Standards Andre, "XEP-0030: Service Discovery", XMPP Standards
Foundation, XEP-0030, June 2008. Foundation, XEP-0030, June 2008.
[XEP-0176] Beda, J., Ludwig, S., Saint-Andre, P., Hildebrand, J., [XEP-0176] Beda, J., Ludwig, S., Saint-Andre, P., Hildebrand, J.,
Egan, S., and R. McQueen, "XEP-0176: Jingle ICE-UDP Egan, S., and R. McQueen, "XEP-0176: Jingle ICE-UDP
Transport Method", XMPP Standards Foundation, XEP-0176, Transport Method", XMPP Standards Foundation, XEP-0176,
June 2009. June 2009.
skipping to change at line 1037 skipping to change at line 1037
adapt to as many network environments as possible. Despite that adapt to as many network environments as possible. Despite that
flexibility, ICE as specified in [RFC8445] does not by itself support flexibility, ICE as specified in [RFC8445] does not by itself support
Trickle ICE. This section describes how trickling of candidates Trickle ICE. This section describes how trickling of candidates
interacts with ICE. interacts with ICE.
[RFC8445] describes the conditions required to update checklists and [RFC8445] describes the conditions required to update checklists and
timer states while an ICE agent is in the Running state. These timer states while an ICE agent is in the Running state. These
conditions are verified upon transaction completion, and one of them conditions are verified upon transaction completion, and one of them
stipulates that: stipulates that:
If there is not a pair in the valid list for each component of the | if there is not a valid pair in the valid list for each component
data stream, the state of the checklist is set to Failed. | of the data stream associated with the checklist, the state of the
| checklist is set to Failed.
This could be a problem and cause ICE processing to fail prematurely This could be a problem and cause ICE processing to fail prematurely
in a number of scenarios. Consider the following case: in a number of scenarios. Consider the following case:
1. Alice and Bob are both located in different networks with Network 1. Alice and Bob are both located in different networks with Network
Address Translation (NAT). Alice and Bob themselves have Address Translation (NAT). Alice and Bob themselves have
different addresses, but both networks use the same private different addresses, but both networks use the same private
internet block (e.g., the "20-bit block" 172.16/12 specified in internet block (e.g., the "20-bit block" 172.16/12 specified in
[RFC1918]). [RFC1918]).
skipping to change at line 1146 skipping to change at line 1147
Acknowledgements Acknowledgements
The authors would like to thank Bernard Aboba, Flemming Andreasen, The authors would like to thank Bernard Aboba, Flemming Andreasen,
Rajmohan Banavi, Taylor Brandstetter, Philipp Hancke, Christer Rajmohan Banavi, Taylor Brandstetter, Philipp Hancke, Christer
Holmberg, Ari Keränen, Paul Kyzivat, Jonathan Lennox, Enrico Marocco, Holmberg, Ari Keränen, Paul Kyzivat, Jonathan Lennox, Enrico Marocco,
Pal Martinsen, Nils Ohlmeier, Thomas Stach, Peter Thatcher, Martin Pal Martinsen, Nils Ohlmeier, Thomas Stach, Peter Thatcher, Martin
Thomson, Brandon Williams, and Dale Worley for their reviews and Thomson, Brandon Williams, and Dale Worley for their reviews and
suggestions on improving this document. Sarah Banks, Roni Even, and suggestions on improving this document. Sarah Banks, Roni Even, and
David Mandelberg completed OPSDIR, GenART, and security reviews, David Mandelberg completed OPSDIR, GenART, and security reviews,
respectively. Thanks also to Ari Keranen and Peter Thatcher in their respectively. Thanks also to Ari Keränen and Peter Thatcher in their
role as chairs and Ben Campbell in his role as responsible Area role as chairs and Ben Campbell in his role as responsible Area
Director. Director.
Authors' Addresses Authors' Addresses
Emil Ivov Emil Ivov
8x8, Inc. / Jitsi 8x8, Inc. / Jitsi
675 Creekside Way 675 Creekside Way
Campbell, CA 95008 Campbell, CA 95008
United States of America United States of America
 End of changes. 9 change blocks. 
16 lines changed or deleted 17 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/