XEP-0343 v0.2 - Add optional explicit signaling of channels to the transport element.

This commit is contained in:
Matthew A. Miller 2014-07-20 14:13:35 -04:00
parent 127c14d14f
commit 4289a95cf1
1 changed files with 54 additions and 5 deletions

View File

@ -4,13 +4,14 @@
<!ENTITY SCTPMAP "&lt;sctpmap/&gt;">
<!ENTITY FINGERPRINT "&lt;fingerprint/&gt;">
<!ENTITY webrtc-protocol "<span class='ref'><link url='http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol-04'>WebRTC Data Channel Protocol</link></span> <note>WebRTC Data Channel Protocol &lt;<link url='http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol-04'>http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol-04</link>&gt;.</note>" >
<!ENTITY w3-webrtc-draft "<span class='ref'><link url='http://www.w3.org/TR/2013/WD-webrtc-20130910/'>WebRTC 1.0: Real-time Communication Between Browsers</link></span> <note>WebRTC 1.0: Real-time Communication Between Browsers &lt;<link url='http://www.w3.org/TR/2013/WD-webrtc-20130910/'>http://www.w3.org/TR/2013/WD-webrtc-20130910/</link>&gt;.</note>" >
<!ENTITY rfc3758 "<span class='ref'><link url='http://tools.ietf.org/html/rfc3758'>RFC 3758</link></span> <note>RFC 3758: Stream Control Transmission Protocol (SCTP) Partial Reliability Extension &lt;<link url='http://tools.ietf.org/html/rfc3758'>http://tools.ietf.org/html/rfc3758</link>&gt;.</note>" >
%ents;
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep>
<header>
<title>Use of DTLS/SCTP in Jingle ICE-UDP</title>
<title>Signaling WebRTC datachannels in Jingle</title>
<abstract>This specification defines how to use the ICE-UDP Jingle transport method to send media data using WebRTC DataChannels, so technically uses DTLS/SCTP on top of the Interactive Connectivity Establishment (ICE) methodology, which provides robust NAT traversal for media traffic.</abstract>
&LEGALNOTICE;
<number>0343</number>
@ -24,12 +25,18 @@
</dependencies>
<supersedes/>
<supersededby/>
<shortname>NOT_YET_ASSIGNED</shortname>
<shortname>jingle-webrtc-datachannels</shortname>
<author>
<firstname>Jens</firstname>
<surname>Bavendiek</surname>
<email>bavendiek@dbis.rwth-aachen.de</email>
</author>
<revision>
<version>0.2</version>
<date>2014-07-15</date>
<initials>ph</initials>
<remark><p>Add optional explicit signaling of channels to the transport element.</p></remark>
</revision>
<revision>
<version>0.1</version>
<date>2014-01-23</date>
@ -123,10 +130,22 @@
</iq>
]]></example>
<p>As seen in the example, there is no notion about DataChannel internals. The only things negotiated here are the port on which the SCTP Stream runs and the name of the DataChannel. Further negotiation is happening through the &webrtc-protocol;, thus the DataChannel is identified through the content name.</p>
<p>For some uses like negotiated datachannels, it might be required to explicitly signal the channel properties. This is done by including a &lt;channel/&gt; element qualified by the 'urn:xmpp:jingle:transports:webrtc-datachannel:0' namespace &VNOTE; as child of the &TRANSPORT; for each channel that has to be signaled. An abbreviated example follows:</p>
<example caption="Initiation (with explicit channel signaling)"><![CDATA[
[...]
<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1'
pwd='asd88fgpdd777uzjYhagZg'
ufrag='8hhy'>
<sctpmap xmlns='urn:xmpp:jingle:transports:dtls-sctp:1' number='5000' protocol='webrtc-datachannel' streams='1024'/>
<channel xmlns='urn:xmpp:jingle:transports:webrtc-datachannel:0' id="1" negotiated="true"/>
<channel xmlns='urn:xmpp:jingle:transports:webrtc-datachannel:0' id="3" negotiated="true"/>
<fingerprint mlns='urn:xmpp:jingle:apps:dtls:0' hash='sha-256' setup='actpass'>
[...]
]]></example>
</section2>
<section2 topic='Syntax' anchor='protocol-syntax'>
<p>The values and names for the &SCTPMAP; element are taken from the corresponding SDP. The attributes of the &lt;sctpmap/&gt; element are as follows.</p>
<table caption='Sctmpap Attributes'>
<p>The values and names for the &SCTPMAP; element are taken from the corresponding SDP. The attributes of the &lt;sctpmap/&gt; element are as follows.</p>
<table caption='Sctpmap Attributes'>
<tr>
<th>Name</th>
<th>Description</th>
@ -152,6 +171,7 @@
<td>16</td>
</tr>
</table>
<p>The attributes of the &lt;channel/&gt; element map directly to the attributes of the <link url="http://www.w3.org/TR/2013/WD-webrtc-20130910/#dictionary-rtcdatachannelinit-members">RTCDataChannelInit</link> dictionary as defined in &w3-webrtc-draft;.</p>
</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 immediately returns an IQ-result.</p>
@ -258,6 +278,7 @@
<p>This specification defines the following XML namespace:</p>
<ul>
<li>urn:xmpp:jingle:transports:dtls-sctp:1</li>
<li>urn:xmpp:jingle:transports:webrtc-datachannel:0</li>
</ul>
<p>The &REGISTRAR; includes the foregoing namespace in its registry at &NAMESPACES;, as governed by &xep0053;.</p>
</section2>
@ -290,7 +311,7 @@
<xs:annotation>
<xs:documentation>
The protocol documented by this schema is defined in
XEP-xxxx: http://www.xmpp.org/extensions/xep-xxxx.html
XEP-0343: http://www.xmpp.org/extensions/xep-0343.html
</xs:documentation>
</xs:annotation>
@ -305,7 +326,35 @@
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:jingle:transports:webrtc-datachannel:0'
xmlns='urn:xmpp:jingle:transports:webrtc-datachannel:0'
elementFormDefault='qualified'>
<xs:annotation>
<xs:documentation>
The protocol documented by this schema is defined in
XEP-0343: http://www.xmpp.org/extensions/xep-0343.html
</xs:documentation>
</xs:annotation>
<xs:element name='channel'>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='xs:string'>
<xs:attribute name='id' type='xs:unsignedShort' use='optional'/>
<xs:attribute name='maxPacketLifeTime' type='xs:unsignedShort' use='optional'/>
<xs:attribute name='maxRetransmits' type='xs:unsignedShort' use='optional'/>
<xs:attribute name='negotiated' type='xs:boolean' use='optional' default='false'/>
<xs:attribute name='ordered' type='xs:boolean' use='optional' default='true'/>
<xs:attribute name='protocol' type='xs:string' use='optional'/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
]]></code>
</section1>