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/ |