git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@2292 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2008-09-30 14:50:43 +00:00
parent 14f0e3e144
commit 9949f6c733
1 changed files with 24 additions and 54 deletions

View File

@ -27,6 +27,12 @@
&stpeter; &stpeter;
&hildjj; &hildjj;
&seanegan; &seanegan;
<revision>
<version>0.22</version>
<date>2008-09-30</date>
<initials>psa</initials>
<remark><p>Corrected fallback scenario to use transport-replace and transport-accept.</p></remark>
</revision>
<revision> <revision>
<version>0.21</version> <version>0.21</version>
<date>2008-09-25</date> <date>2008-09-25</date>
@ -115,7 +121,7 @@
<version>0.8</version> <version>0.8</version>
<date>2007-04-17</date> <date>2007-04-17</date>
<initials>psa</initials> <initials>psa</initials>
<remark><p>Separately defined ice-tcp and ice-udp transport methods to enable clearer definition of transport methods and reuse by application types; specified Jingle conformance, including definition of ice-udp as lossy and ice-tcp as reliable.</p></remark> <remark><p>Separately defined ice-tcp and ice-udp transport methods to enable clearer definition of transport methods and reuse by application types; specified Jingle conformance, including definition of ice-udp as datagram and ice-tcp as streaming.</p></remark>
</revision> </revision>
<revision> <revision>
<version>0.7</version> <version>0.7</version>
@ -162,7 +168,7 @@
</header> </header>
<section1 topic='Introduction' anchor='intro'> <section1 topic='Introduction' anchor='intro'>
<p>&xep0166; defines a framework for negotiating and managing out-of-band data sessions over XMPP. In order to provide a flexible framework, the base Jingle specification defines neither data transport methods nor application formats, leaving that up to separate specifications.</p> <p>&xep0166; defines a framework for negotiating and managing out-of-band data sessions over XMPP. In order to provide a flexible framework, the base Jingle specification defines neither data transport methods nor application formats, leaving that up to separate specifications.</p>
<p>The current document defines a transport method for establishing and managing data exchanges between XMPP entities over the User Datagram Protocol (see &rfc0768;), using the ICE methodology developed within the IETF and specified in &ice; (hereafter referred to as &icecore;). Use of the <strong>ice-udp</strong> method results in a lossy transport suitable for media applications where some packet loss is tolerable (e.g., audio and video).</p> <p>The current document defines a transport method for establishing and managing data exchanges between XMPP entities over the User Datagram Protocol (see &rfc0768;), using the ICE methodology developed within the IETF and specified in &ice; (hereafter referred to as &icecore;). Use of the <strong>ice-udp</strong> method results in a datagram transport suitable for media applications where some packet loss is tolerable (e.g., audio and video).</p>
<p>Note: &icecore; has been approved for publication as an RFC but has not yet been published as an RFC. While every effort has been made to keep this document synchronized with &icecore;, the interested reader is referred to &icecore; for a detailed description of the ICE methodology.</p> <p>Note: &icecore; has been approved for publication as an RFC but has not yet been published as an RFC. While every effort has been made to keep this document synchronized with &icecore;, the interested reader is referred to &icecore; for a detailed description of the ICE methodology.</p>
<p>The process for ICE negotiation is largely the same in Jingle as it is in ICE. There are several differences:</p> <p>The process for ICE negotiation is largely the same in Jingle as it is in ICE. There are several differences:</p>
<ul> <ul>
@ -190,7 +196,7 @@
<ol> <ol>
<li><p>The transport negotiation process is defined in the <link url='#protocol'>Protocol Description</link> section of this document.</p></li> <li><p>The transport negotiation process is defined in the <link url='#protocol'>Protocol Description</link> section of this document.</p></li>
<li><p>The semantics of the &TRANSPORT; element are defined in the <link url='#protocol-negotiate'>ICE Negotiation</link> section of this document.</p></li> <li><p>The semantics of the &TRANSPORT; element are defined in the <link url='#protocol-negotiate'>ICE Negotiation</link> section of this document.</p></li>
<li><p>Successful negotiation of the ice-udp method results in use of a lossy transport that is suitable for applications where some packet loss is tolerable, such as audio and video.</p></li> <li><p>Successful negotiation of the ice-udp method results in use of a datagram transport that is suitable for applications where some packet loss is tolerable, such as audio and video.</p></li>
<li><p>If multiple components are to be communicated over the transport in the context of the Real-time Transport Protocol (RTP; see &rfc3550;), the component numbered "1" shall be associated with RTP and the component numbered "2" shall be associated with the Real Time Control Protocol (RTCP).</p></li> <li><p>If multiple components are to be communicated over the transport in the context of the Real-time Transport Protocol (RTP; see &rfc3550;), the component numbered "1" shall be associated with RTP and the component numbered "2" shall be associated with the Real Time Control Protocol (RTCP).</p></li>
</ol> </ol>
</section1> </section1>
@ -856,12 +862,12 @@ Romeo Gateway Juliet
|------------------------>| | |------------------------>| |
| ack | | | ack | |
|<------------------------| | |<------------------------| |
| content-add | | | transport-replace | |
| (Raw UDP) | | | (Raw UDP) | |
|<------------------------| | |<------------------------| |
| ack | | | ack | |
|------------------------>| | |------------------------>| |
| content-accept | | | transport-accept | |
|------------------------>| | |------------------------>| |
| ack | | | ack | |
|<------------------------| SIP INVITE | |<------------------------| SIP INVITE |
@ -912,20 +918,17 @@ Romeo Gateway Juliet
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
type='result'/> type='result'/>
]]></example> ]]></example>
<p>Immediately the gateway sends a content-add action to Romeo, specifying a transport of Raw UDP with a candidate whose IP address and port identify a media relay at the gateway.</p> <p>Immediately the gateway sends a transport-replace action to Romeo, specifying a transport of Raw UDP with a candidate whose IP address and port identify a media relay at the gateway.</p>
<example caption="Gateway sends content-add on behalf of responder"><![CDATA[ <example caption="Gateway sends transport-replace on behalf of responder"><![CDATA[
<iq from='juliet@capulet.lit/balcony' <iq from='juliet@capulet.lit/balcony'
id='add1' id='replace1'
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
type='set'> type='set'>
<jingle xmlns='urn:xmpp:jingle:0' <jingle xmlns='urn:xmpp:jingle:0'
action='content-add' action='transport-replace'
initiator='romeo@montague.lit/orchard' initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<content creator='responder' name='voice2'> <content creator='initiator' name='voice1'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<payload-type id='18' name='G729'/>
</description>
<transport xmlns='urn:xmpp:jingle:transports:raw-udp:0'> <transport xmlns='urn:xmpp:jingle:transports:raw-udp:0'>
<candidate generation='0' <candidate generation='0'
id='a9j3mnbtu1' id='a9j3mnbtu1'
@ -936,26 +939,23 @@ Romeo Gateway Juliet
</jingle> </jingle>
</iq> </iq>
]]></example> ]]></example>
<p>Romeo then acknowledges the content-add action and immediately also sends a content-accept.</p> <p>Romeo then acknowledges the transport-replace action and immediately also sends a transport-accept.</p>
<example caption="Initiator acknowledges content-add"><![CDATA[ <example caption="Initiator acknowledges transport-replace"><![CDATA[
<iq from='romeo@montague.lit/orchard' <iq from='romeo@montague.lit/orchard'
id='add1' id='replace1'
to='juliet@capulet.lit/balcony' to='juliet@capulet.lit/balcony'
type='result'/> type='result'/>
]]></example> ]]></example>
<example caption="Initiator accepts new content definition"><![CDATA[ <example caption="Initiator accepts new transport"><![CDATA[
<iq from='romeo@montague.lit/orchard' <iq from='romeo@montague.lit/orchard'
id='accept1' id='accept1'
to='juliet@capulet.lit/balcony' to='juliet@capulet.lit/balcony'
type='set'> type='set'>
<jingle xmlns='urn:xmpp:jingle:0' <jingle xmlns='urn:xmpp:jingle:0'
action='content-accept' action='transport-accept'
initiator='romeo@montague.lit/orchard' initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'> sid='a73sjjvkla37jfea'>
<content creator='responder' name='voice2'> <content creator='responder' name='voice2'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<payload-type id='18' name='G729'/>
</description>
<transport xmlns='urn:xmpp:jingle:transports:raw-udp:0'> <transport xmlns='urn:xmpp:jingle:transports:raw-udp:0'>
<candidate generation='0' <candidate generation='0'
id='a9j3mnbtu1' id='a9j3mnbtu1'
@ -967,43 +967,13 @@ Romeo Gateway Juliet
</iq> </iq>
]]></example> ]]></example>
<p>The gateway then acknowledges the acceptance on behalf of Juliet.</p> <p>The gateway then acknowledges the acceptance on behalf of Juliet.</p>
<example caption="Gateway acknowledges content-accept"><![CDATA[ <example caption="Gateway acknowledges transport-accept"><![CDATA[
<iq from='juliet@capulet.lit/balcony' <iq from='juliet@capulet.lit/balcony'
id='accept1' id='accept1'
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
type='result'/> type='result'/>
]]></example> ]]></example>
<p>Now the gateway removes the old content definition based on the ICE-UDP transport.</p> <p>Eventually, the responder sends a session-accept through the gateway.</p>
<example caption="Gateway sends content-remove on behalf of responder"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='remove1'
to='romeo@montague.lit/orchard'
type='set'>
<jingle xmlns='urn:xmpp:jingle:0'
action='content-add'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice2'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
<payload-type id='103' name='L16' clockrate='16000' channels='2'/>
<payload-type id='98' name='x-ISAC' clockrate='8000'/>
</description>
<transport xmlns='urn:xmpp:jingle:transports:ice-udp:0'/>
</content>
</jingle>
</iq>
]]></example>
<p>Romeo then acknowledges the content-replace action.</p>
<example caption="Initiator acknowledges content-add"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='add1'
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>Eventually, the responder sends a session-accept.</p>
<example caption="Responder sends session-accept"><![CDATA[ <example caption="Responder sends session-accept"><![CDATA[
<iq from='juliet@capulet.lit/balcony' <iq from='juliet@capulet.lit/balcony'
id='accept1' id='accept1'
@ -1177,7 +1147,7 @@ Romeo Gateway Juliet
methodology when resulting in the use of UDP as the methodology when resulting in the use of UDP as the
transport protocol. transport protocol.
</desc> </desc>
<type>lossy</type> <type>datagram</type>
<doc>XEP-0176</doc> <doc>XEP-0176</doc>
</transport> </transport>
]]></code> ]]></code>