Network Working Group E. Ivov
Internet-Draft Jitsi
Intended status: Standards Track E. Marocco
Expires: August 3, 2013 Telecom Italia
C. Holmberg
Ericsson
January 30, 2013
A Session Initiation Protocol (SIP) usage for Trickle ICE
draft-ivov-mmusic-trickle-ice-sip-00
Abstract
The Interactive Connectivity Establishment (ICE) protocol describes a
Network Address Translator (NAT) traversal for UDP-based multimedia
sessions established with the offer/answer model. The ICE extension
for Incremental Provisioning of Candidates (Trickle ICE) defines a
mechanism that allows ICE agents to shorten session establishment
delays by making the candidate gathering and connectivity checking
phases of ICE non-blocking.
This document defines usage semantics for Trickle ICE with SIP.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 3, 2013.
Copyright Notice
Copyright (c) 2013 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
Ivov, et al. Expires August 3, 2013 [Page 1]
Internet-Draft Trickle ICE for SIP January 2013
(http://trustee.ietf.org/license-info) 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 . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Half vs Full Trickle . . . . . . . . . . . . . . . . . . . . . 3
4. Encoding and Sending Candidate Information . . . . . . . . . . 4
5. Info Package . . . . . . . . . . . . . . . . . . . . . . . . . 5
5.1. Overall Description . . . . . . . . . . . . . . . . . . . . 5
5.2. Applicability . . . . . . . . . . . . . . . . . . . . . . . 5
5.3. INFO Package Name . . . . . . . . . . . . . . . . . . . . . 5
5.4. INFO Package Parameters . . . . . . . . . . . . . . . . . . 5
5.5. SIP Option-Tags . . . . . . . . . . . . . . . . . . . . . . 5
5.6. INFO Message Body Parts . . . . . . . . . . . . . . . . . . 5
6. Example Flows . . . . . . . . . . . . . . . . . . . . . . . . . 6
7. Security Considerations . . . . . . . . . . . . . . . . . . . . 7
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 7
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 7
9.1. Normative References . . . . . . . . . . . . . . . . . . . 7
9.2. Informative References . . . . . . . . . . . . . . . . . . 7
Appendix A. Open issues . . . . . . . . . . . . . . . . . . . . . 8
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 8
Ivov, et al. Expires August 3, 2013 [Page 2]
Internet-Draft Trickle ICE for SIP January 2013
1. Introduction
The vanilla specification of the Interactive Connectivity
Establishment (vanilla ICE) protocol [RFC5245] describes a mechanism
for NAT traversal that consists of three main phases: a phase where
an agent gathers a set of candidate 5-tuples (source IP address and
port, destination IP address and port and a transport protocol), a
second phase where these candidates are sent to a remote agent and
this gathering is repeated and then a third phase where connectivity
between all candidates in both sets is checked (connectivity checks).
Only then can both agents begin communication, provided of course
that ICE processing has successfully completed. According to that
specification the three phases above happen consecutively, in a
blocking way, which may lead to undesirable latency during session
establishment.
The trickle ICE extension defined in [I-D.ivov-mmusic-trickle-ice]
defines generic semantics required for these ICE phases to happen
simultaneously, in a non-blocking way and hence speed up session
establishment.
This specification defines a usage of trickle ICE with the Session
Initiation Protocol (SIP). In describes how and when SIP agents use
the full and half trickle modes of operation, how they encode
additional candidates and how they exchange them through use of SIP
INFO requests.
This document also defines a new Info Package for use with Trickle
ICE.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
This specification makes use of all terminology defined by the
protocol for Interactive Connectivity Establishment in [RFC5245] and
its Trickle ICE extension [I-D.ivov-mmusic-trickle-ice]. It is
assumed that the reader will be familiar with the terminology from
both of them.
3. Half vs Full Trickle
Trickle ICE defines a mode of operation called "half trickle". With
half trickle the first offer in a session contains all candidates and
Ivov, et al. Expires August 3, 2013 [Page 3]
Internet-Draft Trickle ICE for SIP January 2013
subsequent trickling occurs from the offerer in this first offer/
answer negotiation. Half trickle offers can hence be processed by
both vanilla and trickle ICE agents, which offers an interesting
advantage in cases where support for trickle cannot be verified prior
to sending an offer.
Unless agents are running within controlled environments or using
GRUU, this would be the case with SIP. In spite of mechanisms such
as the one defined in [RFC3840], a SIP UA cannot rely on consecutive
requests reaching the same destination. An OPTIONS request querying
capabilities can hence be routed to and answered by one entity and a
subsequent INVITE by a completely different one.
For all these reasons SIP UAs implementing trickle ICE SHOULD always
perform half trickle, unless that behaviour is specifically
overridden by configuration (which could be the case in controlled
environments where every agent supports trickle ICE).
[TODO maybe define a way for GRUU supporting agents to do full
trickle]
4. Encoding and Sending Candidate Information
Trickled candidates and end-of-candidates indications sent by trickle
ICE SIP UAs are transported as payload in SIP INFO requests sent
within the already established dialog. Such payloads are encoded in
an SDP format as specified in [I-D.ivov-mmusic-trickle-ice].
Since neither the "a=candidate" nor the "a=end-of-candidates" lines
contain information matching them to a stream, this is handled
through the use of MID [RFC3388] as follows:
INFO sip:alice@example.com SIP/2.0
...
Info-Package: trickle-ice
Content-type: application/sdp
Content-Disposition: Info-Package
Content-length: ...
a=mid:1
a=candidate:1 1 UDP 1658497328 192.168.100.33 5000 typ host
a=candidate:2 1 UDP 1658497328 96.1.2.3 5000 typ srflx
a=m-line-id:2
a=candidate:2 1 UDP 1658497328 96.1.2.3 5002 typ srflx
a=end-of-candidates
Ivov, et al. Expires August 3, 2013 [Page 4]
Internet-Draft Trickle ICE for SIP January 2013
5. Info Package
5.1. Overall Description
This specification defines an INFO package meant for use by SIP user
agents implementing Trickle ICE. Typically INFO requests would carry
ICE candidates discovered after the user agent has sent or received a
trickle-ice offer.
5.2. Applicability
The purpose of the ICE protocol is to establish a media path. The
candidates that this specification transports in INFO requests are
part of this establishment. There is hence no way for them to be
transported through the not yet existing media path.
Candidates sent by a trickle ICE agent after the offer, are meant to
follow the same signalling path and reach the same entity as the
offer itself. While it is true that GRUUs can be used to achieve
this, one of the goals of this specification is to allow operation of
trickle ICE in as many environments as possible including those with
no GRUU support. Using out-of-dialog SUBSCRIBE/NOTIFY requests would
not satisfy this goal.
5.3. INFO Package Name
This document defines a SIP INFO Package as per [RFC6086]. The INFO
Package token name for this package is "trickle-ice"
5.4. INFO Package Parameters
This document does not define any INFO package parameters.
5.5. SIP Option-Tags
[RFC6086] allows Info Package specifications to define SIP option-
tags. This document therefore stipulates that SIP entities that
support trickle ICE and this specification MUST place the 'trickle-
ice' option-tag in a SIP Supported header field.
When responding to, or generating a SIP OPTIONS request a SIP entity
MUST also include the 'trickle-ice' option-tag in a SIP Supported
header field.
5.6. INFO Message Body Parts
Entities implementing this specification MUST include SDP encoded ICE
candidates in all SIP INFO requests. The MIME type for the payload
Ivov, et al. Expires August 3, 2013 [Page 5]
Internet-Draft Trickle ICE for SIP January 2013
MUST be of type 'application/sdp' as defined in Section 4 and
[I-D.ivov-mmusic-trickle-ice].
6. Example Flows
A typical successful (half) trickle ICE exchange with SIP would look
this way:
STUN/Turn STUN/TURN
Servers Alice Bob Servers
| | | |
|<--------------| | |
| | | |
| | | |
| Candidate | | |
| | | |
| | | |
| Discovery | | |
| | | |
| | | |
|-------------->| INVITE (Offer) | |
| |------------------------>| |
| | 180 (Answer) |-------------->|
| |<------------------------| |
| | | |
| | INFO (more candidates) | Candidate |
| |<------------------------| |
| | Connectivity Checks | |
| |<=======================>| Discovery |
| | INFO (more candidates) | |
| |<------------------------| |
| | Connectivity Checks |<--------------|
| |<=======================>| |
| | | |
| | 200 OK | |
| |<------------------------| |
| | | |
| | 5245 SIP re-INVITE | |
| |------------------------>| |
| | 200 OK | |
| |<------------------------| |
| | | |
| | | |
| |<===== MEDIA FLOWS =====>| |
| | | |
Ivov, et al. Expires August 3, 2013 [Page 6]
Internet-Draft Trickle ICE for SIP January 2013
Figure 1: Example
7. Security Considerations
[TODO]
8. Acknowledgements
[TODO]
9. References
9.1. Normative References
[I-D.ivov-mmusic-trickle-ice]
Ivov, E., Rescorla, E., and J. Uberti, "Trickle ICE:
Incremental Provisioning of Candidates for the Interactive
Connectivity Establishment (ICE) Protocol",
draft-ivov-mmusic-trickle-ice-00 (work in progress),
January 2013.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", RFC 3264,
June 2002.
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
Description Protocol", RFC 4566, July 2006.
[RFC5245] Rosenberg, J., "Interactive Connectivity Establishment
(ICE): A Protocol for Network Address Translator (NAT)
Traversal for Offer/Answer Protocols", RFC 5245,
April 2010.
[RFC6086] Holmberg, C., Burger, E., and H. Kaplan, "Session
Initiation Protocol (SIP) INFO Method and Package
Framework", RFC 6086, January 2011.
9.2. Informative References
[I-D.keranen-mmusic-ice-address-selection]
Keraenen, A. and J. Arkko, "Update on Candidate Address
Selection for Interactive Connectivity Establishment
Ivov, et al. Expires August 3, 2013 [Page 7]
Internet-Draft Trickle ICE for SIP January 2013
(ICE)", draft-keranen-mmusic-ice-address-selection-01
(work in progress), July 2012.
[RFC1918] Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G., and
E. Lear, "Address Allocation for Private Internets",
BCP 5, RFC 1918, February 1996.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002.
[RFC3388] Camarillo, G., Eriksson, G., Holler, J., and H.
Schulzrinne, "Grouping of Media Lines in the Session
Description Protocol (SDP)", RFC 3388, December 2002.
[RFC3840] Rosenberg, J., Schulzrinne, H., and P. Kyzivat,
"Indicating User Agent Capabilities in the Session
Initiation Protocol (SIP)", RFC 3840, August 2004.
[RFC4787] Audet, F. and C. Jennings, "Network Address Translation
(NAT) Behavioral Requirements for Unicast UDP", BCP 127,
RFC 4787, January 2007.
[RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing,
"Session Traversal Utilities for NAT (STUN)", RFC 5389,
October 2008.
[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, April 2010.
Appendix A. Open issues
At the time of writing of this document the authors have no clear
view on how and if the following list of issues should be address
here:
1. Should we allow for full trickle if support can be verified
automatically and confirmed for a gruu with [RFC3840].
2. Can we pick between MID and stream indices for stream
identification.
Ivov, et al. Expires August 3, 2013 [Page 8]
Internet-Draft Trickle ICE for SIP January 2013
Authors' Addresses
Emil Ivov
Jitsi
Strasbourg 67000
France
Phone: +33 6 72 81 15 55
Email: emcho@jitsi.org
Enrico Marocco
Telecom Italia
Via G. Reiss Romoli, 274
Turin 10148
Italy
Email: enrico.marocco@telecomitalia.it
Christer Holmberg
Ericsson
Hirsalantie 11
Jorvas 02420
Finland
Email: christer.holmberg@ericsson.com
Ivov, et al. Expires August 3, 2013 [Page 9]