mirror of https://github.com/moparisthebest/xeps
0.22
git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@2292 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
parent
14f0e3e144
commit
9949f6c733
78
xep-0176.xml
78
xep-0176.xml
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue