git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@1777 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2008-04-18 16:34:08 +00:00
parent 1f4af785cd
commit c3a6f0abdd
1 changed files with 81 additions and 70 deletions

View File

@ -27,6 +27,12 @@
&stpeter;
&hildjj;
&seanegan;
<revision>
<version>0.17</version>
<date>2008-03-20</date>
<initials>psa</initials>
<remark><p>Moved pwd and ufrag attributes from candidate element to transport element since they describe session-level or media-level information.</p></remark>
</revision>
<revision>
<version>0.16</version>
<date>2008-02-29</date>
@ -203,7 +209,7 @@ INITIATOR RESPONDER
]]></code>
</section2>
<section2 topic='Transport Initiation' anchor='protocol-initiate'>
<p>In order for the initiator in a Jingle exchange to start the negotiation, it MUST send a Jingle "session-initiate" stanza as described in <cite>XEP-0166</cite>. A content type MUST include one transport method. If the initiator wishes to negotiate the ice-udp transport method for an application format, it MUST include an empty &TRANSPORT; child element qualified by the 'urn:xmpp:tmp:jingle:transports:ice-tcp' namespace &NSNOTE;.</p>
<p>In order for the initiator in a Jingle exchange to start the negotiation, it MUST send a Jingle "session-initiate" stanza as described in <cite>XEP-0166</cite>. A content type MUST include one transport method. If the initiator wishes to negotiate the ice-udp transport method for an application format, it MUST include an empty &TRANSPORT; child element qualified by the 'urn:xmpp:tmp:jingle:transports:ice-udp' namespace &NSNOTE;.</p>
<example caption="Initiation"><![CDATA[
<iq from='romeo@montague.net/orchard'
id='jingle1'
@ -217,11 +223,34 @@ INITIATOR RESPONDER
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp'>
[ ... ]
</description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'/>
</content>
</jingle>
</iq>
]]></example>
<p>The 'pwd' and 'ufrag' attributes MUST be included in the session-initate request, in subsequent content-add and content-replace actions, and when offering candidates via the transport-info action. The attributes SHOULD NOT be included in a session-accept action. The values are separately generated for both the initiator and the receiver, in accordance with &icecore; and as shown in the examples. The attributes are defined as follows.</p>
<table caption='Transport Attributes'>
<tr>
<th>Name</th>
<th>Description</th>
<th>SDP Syntax</th>
<th>Example</th>
</tr>
<tr>
<td>pwd</td>
<td>A Password as defined in &icecore;.</td>
<td>a=ice-pwd line</td>
<td>asd88fgpdd777uzjYhagZg</td>
</tr>
<tr>
<td>ufrag</td>
<td>A User Fragment as defined in &icecore;.</td>
<td>a=ice-ufrag line</td>
<td>8hhy</td>
</tr>
</table>
</section2>
<section2 topic='Response' anchor='protocol-response'>
<p>As described in <cite>XEP-0166</cite>, to acknowledge receipt of the session initiation request, the responder returns an IQ-result:</p>
@ -247,9 +276,7 @@ INITIATOR RESPONDER
port='8998'
priority='2130706431'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
type='host'
ufrag='8hhy'/>
type='host'/>
]]></example>
<p>The attributes of the &lt;candidate/&gt; element are described in the following table:</p>
<table caption='Candidate Attributes'>
@ -309,12 +336,6 @@ INITIATOR RESPONDER
<td>Transport protocol field in a=candidate line</td>
<td>udp</td>
</tr>
<tr>
<td>pwd</td>
<td>A Password as defined in &icecore;.</td>
<td>a=ice-pwd line</td>
<td>asd88fgpdd777uzjYhagZg</td>
</tr>
<tr>
<td>rel-addr</td>
<td>A related address as defined in &icecore;.</td>
@ -345,12 +366,6 @@ INITIATOR RESPONDER
<td>Typ field in a=candidate line</td>
<td>srflx</td>
</tr>
<tr>
<td>ufrag</td>
<td>A User Fragment as defined in &icecore;.</td>
<td>a=ice-ufrag line</td>
<td>8hhy</td>
</tr>
</table>
</section3>
<section3 topic='Exchange of Candidates' anchor='protocol-candidates-exchange'>
@ -368,7 +383,9 @@ INITIATOR RESPONDER
initiator='romeo@montague.net/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='this-is-the-audio-content' profile='RTP/AVP'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<candidate component='1'
foundation='1'
generation='0'
@ -377,9 +394,7 @@ INITIATOR RESPONDER
port='8998'
priority='2130706431'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
type='host'
ufrag='8hhy'/>
type='host'/>
</transport>
</content>
</jingle>
@ -394,7 +409,9 @@ INITIATOR RESPONDER
initiator='romeo@montague.net/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='this-is-the-audio-content' profile='RTP/AVP'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<candidate component='1'
foundation='2'
generation='0'
@ -403,11 +420,9 @@ INITIATOR RESPONDER
port='45664'
priority='1694498815'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
rel-addr='10.0.1.1'
rel-port='8998'
type='srflx'
ufrag='8hhy'/>
type='srflx'/>
</transport>
</content>
</jingle>
@ -436,7 +451,9 @@ INITIATOR RESPONDER
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='this-is-the-audio-content' profile='RTP/AVP'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp-udp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='YH75Fviy6338Vbrhrlp8Yh'
ufrag='9uB6'>
<candidate component='1'
foundation='1'
generation='0'
@ -445,9 +462,7 @@ INITIATOR RESPONDER
port='3478'
priority='2130706431'
protocol='udp'
pwd='YH75Fviy6338Vbrhrlp8Yh'
type='host'
ufrag='9uB6'/>
type='host'/>
</transport>
</content>
</jingle>
@ -548,7 +563,9 @@ INITIATOR NAT RESPONDER
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp'>
[ ... ]
</description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<candidate component='1'
foundation='1'
generation='0'
@ -557,13 +574,11 @@ INITIATOR NAT RESPONDER
port='45664'
priority='1694498815'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
rel-addr='10.0.1.1'
rel-port='8998'
rem-addr='192.0.2.1'
rem-port='3478'
type='srflx'
ufrag='8hhy'/>
type='srflx'/>
</transport>
</content>
</jingle>
@ -591,7 +606,7 @@ INITIATOR NAT RESPONDER
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp'>
[ ... ]
</description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>
<candidate component='1'
foundation='1'
generation='0'
@ -600,13 +615,11 @@ INITIATOR NAT RESPONDER
port='45664'
priority='1694498815'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
rel-addr='10.0.1.1'
rel-port='8998'
rem-addr='192.0.2.1'
rem-port='3478'
type='srflx'
ufrag='8hhy'/>
type='srflx'/>
</transport>
</content>
</jingle>
@ -647,7 +660,9 @@ INITIATOR NAT RESPONDER
initiator='romeo@montague.net/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='this-is-the-audio-content' profile='RTP/AVP'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<candidate component='1'
foundation='1'
generation='1'
@ -656,9 +671,7 @@ INITIATOR NAT RESPONDER
port='45665'
priority='1694498815'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
type='srflx'
ufrag='8hhy'/>
type='srflx'/>
</transport>
</content>
</jingle>
@ -686,7 +699,9 @@ INITIATOR NAT RESPONDER
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp'>
[ ... ]
</description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<candidate component='1'
foundation='1'
generation='1'
@ -695,9 +710,7 @@ INITIATOR NAT RESPONDER
port='45665'
priority='1694498815'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
type='srflx'
ufrag='8hhy'/>
type='srflx'/>
</transport>
</content>
</jingle>
@ -724,7 +737,9 @@ INITIATOR NAT RESPONDER
initiator='romeo@montague.net/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='this-is-the-audio-content' profile='RTP/AVP'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<candidate component='1'
foundation='1'
generation='0'
@ -733,9 +748,7 @@ INITIATOR NAT RESPONDER
port='9001'
priority='21149780477'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
type='host'
ufrag='8hhy'/>
type='host'/<
</transport>
</content>
</jingle>
@ -763,7 +776,9 @@ INITIATOR NAT RESPONDER
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp' profile='RTP/AVP'>
[ ... ]
</description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<candidate component='1'
foundation='1'
generation='0'
@ -772,9 +787,7 @@ INITIATOR NAT RESPONDER
port='9001'
priority='21149780477'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
type='host'
ufrag='8hhy'/>
type='host'/>
</transport>
</content>
</jingle>
@ -802,7 +815,9 @@ INITIATOR NAT RESPONDER
<description xmlns='urn:xmpp:tmp:jingle:apps:audio-rtp'>
[ ... ]
</description>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'>
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<candidate component='1'
foundation='1'
generation='0'
@ -811,9 +826,7 @@ INITIATOR NAT RESPONDER
port='9001'
priority='21149780477'
protocol='udp'
pwd='asd88fgpdd777uzjYhagZg'
type='host'
ufrag='8hhy'/>
type='host'/>
</transport>
</content>
</jingle>
@ -831,7 +844,7 @@ INITIATOR NAT RESPONDER
</section1>
<section1 topic='Determining Support' anchor='support'>
<p>If an entity supports the Jingle ice-udp transport, it MUST return a feature of "urn:xmpp:tmp:jingle:transports:ice-tcp" &NSNOTE; in response to &xep0030; information requests.</p>
<p>If an entity supports the Jingle ice-udp transport, it MUST return a feature of "urn:xmpp:tmp:jingle:transports:ice-udp" &NSNOTE; in response to &xep0030; information requests.</p>
<example caption="Service discovery information request"><![CDATA[
<iq from='romeo@montague.net/orchard'
id='disco1'
@ -847,7 +860,7 @@ INITIATOR NAT RESPONDER
type='result'>
<query xmlns='http://jabber.org/protocol/disco#info'>
...
<feature var='urn:xmpp:tmp:jingle:transports:ice-tcp'/>
<feature var='urn:xmpp:tmp:jingle:transports:ice-udp'/>
...
</query>
</iq>
@ -875,7 +888,7 @@ INITIATOR NAT RESPONDER
<section2 topic='Protocol Namespaces' anchor='ns'>
<p>Until this specification advances to a status of Draft, its associated namespaces shall be:</p>
<ul>
<li>urn:xmpp:tmp:jingle:transports:ice-tcp</li>
<li>urn:xmpp:tmp:jingle:transports:ice-udp</li>
</ul>
<p>Upon advancement of this specification, the &REGISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053;.</p>
<p>The following namespaces are requested, and are thought to be unique per the XMPP Registrar's requirements:</p>
@ -907,17 +920,17 @@ INITIATOR NAT RESPONDER
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:tmp:jingle:transports:ice-tcp'
xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'
targetNamespace='urn:xmpp:tmp:jingle:transports:ice-udp'
xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'
elementFormDefault='qualified'>
<xs:element name='transport'>
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element ref='candidate' minOccurs='0' maxOccurs='1'/>
</xs:sequence>
</xs:choice>
<xs:attribute name='pwd' type='xs:string' use='optional'/>
<xs:attribute name='ufrag' type='xs:string' use='optional'/>
</xs:complexType>
</xs:element>
@ -933,7 +946,6 @@ INITIATOR NAT RESPONDER
<xs:attribute name='port' type='xs:unsignedShort' use='required'/>
<xs:attribute name='priority' type='xs:positiveInteger' use='required'/>
<xs:attribute name='protocol' type='xs:NCName' use='required'/>
<xs:attribute name='pwd' type='xs:string' use='required'/>
<xs:attribute name='rel-addr' type='xs:string' use='optional'/>
<xs:attribute name='rel-port' type='xs:unsignedShort' use='optional'/>
<xs:attribute name='rem-addr' type='xs:string' use='optional'/>
@ -948,7 +960,6 @@ INITIATOR NAT RESPONDER
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name='ufrag' type='xs:string' use='required'/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
@ -964,6 +975,6 @@ INITIATOR NAT RESPONDER
]]></code>
</section1>
<section1 topic='Acknowledgements' anchor='ack'>
<p>Thanks to Steffen Larsen for his helpful feedback.</p>
<p>Thanks to Steffen Larsen and Paul Witty for their comments.</p>
</section1>
</xep>