<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc='yes'?>
<?rfc tocdepth='5'?>

<?rfc compact='yes'?>
<?rfc subcompact='no'?>

<rfc ipr="full3978" category="std">


    <front>
        <title abbrev="ICE Support">
Indicating Support for Interactive Connectivity Establishment
(ICE) in the Session Initiation Protocol (SIP)</title>
    
        <author initials="J.R." surname="Rosenberg"
                fullname="Jonathan Rosenberg">
            <organization>Cisco</organization>
    
            <address>
                <postal>
                    <city>Edison</city> <region>NJ</region>
                    <country>US</country>
                </postal>
    
                <email>jdrosen@cisco.com</email>
                <uri>http://www.jdrosen.net</uri>
            </address>
        </author>
    
        <date month="June" year="2007" />
    
        <area>RAI</area>
        <workgroup>SIP</workgroup>
        <keyword>SIP</keyword>
        <keyword>NAT</keyword>
        <abstract>
            <t>This specification defines a media feature tag and an
            option tag for use with the Session Initiation Protocol
            (SIP). The media feature tag allows a UA to communicate to
            its registrar that it supports ICE. The option tag allows
            a User Agent (UA) to require support for ICE in order for
            a call to proceed.</t>
        </abstract>
    </front>

<middle>

<section title="Introduction">

<t> RFC 3264 <xref target="RFC3264"/> defines a two-phase exchange of
Session Description Protocol (SDP) messages <xref
target="RFC4566"/> for the purposes of establishment
of multimedia sessions. This offer/answer mechanism is used by
protocols such as the <xref target="RFC3261">Session Initiation
Protocol (SIP)</xref>.  </t>

<t>Protocols using offer/answer are difficult to
operate through Network Address Translators (NAT). Because their
purpose is to establish a flow of media packets, they tend to carry IP
addresses within their messages, which is known to be problematic
through NAT <xref target="RFC3235"/>. To remedy this, an extension to
SDP, called Interactive Connectivity Establishment (ICE) has been
defined <xref target="I-D.ietf-mmusic-ice"/>. ICE defines procedures
by which agents gather a multiplicity of addresses, include all of
them in an SDP offer or answer, and then use peer-to-peer Simple
Traversal Underneath NAT (STUN) <xref
target="I-D.ietf-behave-rfc3489bis"/> connectivity checks to determine
a valid address.</t>

<t>
This specification defines a media feature tag, "sip.ice", and a SIP
option tag, "ice",  that can be used by SIP user agents that make use
of ICE. <xref
target="sec-motivation"/> motivates the need for the media feature tag
and option tag, and <xref target="sec-media-tag"/> and 
<xref target="sec-define"/> formally define them.
</t>

</section>

<section title="Terminology">

<t> 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 <xref
target="RFC2119">RFC 2119</xref>.  </t>

</section>

<section anchor="sec-motivation" title="Motivation">

<t>
There are two primary motivations for defining an option tag and a
media feature tag. They are support for gateways, and requiring ICE
for a call.
</t>

<section title="Gateways">

<t>
Unfortunately, ICE requires both endpoints to support it in order for
it to be used. Within a domain, there will typically be user agents
that do and do not support ICE. In order to
facilitate deployment of ICE, it is anticipated that domains will make
use of gateways which act as ICE agents on one side, an non-ICE agents
on the other side. This would allow a call from domain A into domain B
to make use of ICE, even if the device in domain B does not itself yet
support ICE. However, when domain B receives a call, it will need to
know whether the call needs to pass through such a gateway, or whether
it can go to the terminating UA directly. 
</t>

<t>
In order to make such a determination, this specification defines a
media feature tag, "sip.ice", which can be included in the Contact
header field of a REGISTER request <xref target="RFC3840"/>. This
allows the registrar to track whether a UA supports ICE or not. This
information can be accessed by a proxy in order to determine whether a
call needs to route through a gateway or not.
</t>

</section>

<section title="Mandating Support for ICE">

<t>
Although ICE provides a built in fall back to non-ICE operation when
the answerer doesn't support it, there are cases where the offerer
would rather abort the call rather than proceed without
ICE. Typically, this is because they would like to choose a different
m/c-line address for a non-ICE peer than they would for an ICE capable
peer. 
</t>

<t>
To do this, the "ice" SIP option tag can be included in the Require
header field of an INVITE request. 
</t>

</section>

</section>

<section anchor="sec-media-tag" title="Media Feature Tag Definition">

<t>The "sip.ice" media feature tag indicates support for ICE. An agent
supports ICE if it is either a lite or full implementation,
and consequently, is capable of
including candidate attributes in an SDP offer or answer for at least
one transport protocol. An agent that supports ICE SHOULD include this
media feature tag in the Contact header field of its REGISTER requests
and OPTION responses.
</t>

<t>
An agent MAY include the media feature tag in the Contact header
field of an INVITE or INVITE response; however, doing so is redundant
with ICE attributes in the SDP which indicate the same thing. In cases
where an INVITE omits an offer, the lack or presence of the media
feature tag in the Contact header field cannot be used by the callee
(which will be the offerer) to determine whether the caller supports
ICE. In cases of third party call control <xref target="RFC3725"/>,
the caller may be a controller that supports (or doesn't) ICE, while
the answerer may be an agent which does (or doesn't) support ICE. 
</t>


</section>

<section anchor="sec-define" title="Option Tag Definition">

<t>
This "ice" OPTION tag SHOULD NOT be used in conjunction with the
Supported header field (this SHOULD NOT includes responses to OPTIONS
requests) The media feature tag is used as the one and
only mechanism for indicating support for ICE. The option tag is meant
to be used only with the Require header field. When placed in the
Require header field of an INVITE request, it indicates that the UAS
must support ICE in order to process the call. An agent supports ICE
if it is either a full or lite implementation, and
consequently, is capable of including candidate attributes in an SDP
offer or answer for at least one transport protocol.
</t>

</section>

<section anchor="sec-security" title="Security Considerations">

<t>
A malicious intermediary might attempt to modify a SIP message by
inserting a Require header field containing the "ice" option tag. If
ICE were not supported on the UAS, this would cause the call to fail
when it would otherwise succeed. Of course, this attack is not
specific to ICE, and can be done using any option tag. This attack is
prevented by usage of the SIPS mechanism as defined in RFC 3261.
</t>

<t>
Similarly, an intermediary might attempt to remove the media feature
tag from a REGISTER request or OPTIONS request, which might cause a
call to skip ICE processing when it otherwise might make use of
it. This attack is also prevented using the SIPS mechanism.
</t>

</section>

<section title="IANA Considerations">

<t>This specification defines a new media feature tag and SIP option
tag.
</t>

<section title="Option Tag">

<t>
This section defines a new SIP option tag per the
guidelines in Section 27.1 of RFC 3261.
</t>

<t><list style="hanging">
<t hangText="Name:"> ice </t>
<t hangText="Description:"> This option tag is used to identify the
Interactive Connectivity Establishment (ICE) extension. When present
in a Require header field, it indicates that ICE is required by an
agent.</t>
</list></t>

</section>

<section title="Media Feature Tag">

<t>
This section registers a new media feature tag in the SIP tree,
defined in Section 12.1 of RFC 3840 <xref target="RFC3840"/>. 
</t>

<list style="hanging">
<t hangText="Media feature tag name:"> sip.ice</t>

<t hangText="ASN.1 Identifier:"> 1.3.6.1.8.4.22 </t>

<t hangText="Summary of the media feature indicated by this tag:"> This
feature tag indicates that the device supports Interactive
Connectivity Establishment (ICE).</t>

<t hangText="Values appropriate for use with this feature tag:">
Boolean.</t>

<t hangText="The feature tag is intended primarily for use in the following
applications, protocols, services, or negotiation mechanisms:"> This
feature tag is most useful in a communications application, for
describing the capabilities of a device, such as a phone or PDA.</t>

<t hangText="Examples of typical use:"> Routing a call to a phone that can
support ICE.</t>

<t hangText="Related standards or documents:"> RFC XXXX [[Note to IANA: Please
replace XXXX with the RFC number of this specification.]]</t>

<t hangText="Security Considerations:"> Security considerations for this
media feature tag are discussed in <xref target="sec-security"/> of
RFC XXXX . [[Note to  IANA: Please replace XXXX with the RFC number of
this specification.]]</t>

</list>

</section>

</section>

</middle>

<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
<?rfc include="reference.RFC.3261"?>
<?rfc include="reference.RFC.3264"?>
<?rfc include="reference.RFC.3840"?>
<?rfc include="reference.RFC.4566"?>
<?rfc include="reference.I-D.ietf-mmusic-ice"?>
</references>

<references title="Informative References">
<?rfc include="reference.RFC.3235"?>
<?rfc include="reference.RFC.3725"?>
<?rfc include="reference.I-D.ietf-behave-rfc3489bis"?>
</references>


</back>

</rfc>