| rfc8848xml2.original.xml | rfc8848.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
| <?rfc toc='yes'?> | ||||
| <?rfc tocdepth='4'?> | ||||
| <?rfc compact="yes"?> | ||||
| <rfc category="std" ipr="trust200902" docName='draft-ietf-clue-signaling-15'> | ||||
| <!--56789012345678901234567890123456789012345678901234567890123456789--> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="exp" ipr="trust200902" | ||||
| number="8848" docName="draft-ietf-clue-signaling-15" obsoletes="" updates="" s | ||||
| ubmissionType="IETF" consensus="true" xml:lang="en" tocInclude="true" tocDepth=" | ||||
| 4" symRefs="true" sortRefs="true" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 2.38.1 --> | ||||
| <front> | <front> | |||
| <title abbrev="CLUE Signaling"> | <title abbrev="CLUE Signaling"> | |||
| Session Signaling for Controlling Multiple Streams for Telepresence (CLUE) | Session Signaling for Controlling Multiple Streams for Telepresence (CLUE) | |||
| </title> | </title> | |||
| <author initials="R." surname="Hanton" fullname="Robert Hanton"> | <seriesInfo name="RFC" value="8848"/> | |||
| <author initials="R." surname="Hanton" fullname="Robert Hanton"> | ||||
| <organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
| <address> | <address> | |||
| <email>rohanse2@cisco.com</email> | <email>rohanse2@cisco.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="P." surname="Kyzivat" fullname="Paul Kyzivat"> | <author initials="P." surname="Kyzivat" fullname="Paul Kyzivat"> | |||
| <address> | <address> | |||
| <email>pkyzivat@alum.mit.edu</email> | <email>pkyzivat@alum.mit.edu</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="L." surname="Xiao" fullname="Lennard Xiao"> | ||||
| <organization>Huawei</organization> | <author initials="L." surname="Xiao" fullname="Lennard Xiao"> | |||
| <organization>Beijing Chuangshiyoulian</organization> | ||||
| <address> | <address> | |||
| <email>lennard.xiao@huawei.com</email> | <email>lennard.xiao@outlook.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="C." surname="Groves" fullname="Christian Groves"> | <author initials="C." surname="Groves" fullname="Christian Groves"> | |||
| <address> | <address> | |||
| <email>cngroves.std@gmail.com</email> | <email>cngroves.std@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="January" year="2021"/> | ||||
| <date year="2019" /> | <abstract> | |||
| <abstract> | ||||
| <t> | <t> | |||
| This document specifies how CLUE-specific signaling such as the CLUE | This document is about Controlling Multiple Streams for Telepresence | |||
| protocol and the CLUE data channel are used in conjunction with each | (CLUE) signaling. It specifies how the CLUE protocol and the CLUE | |||
| other and with existing signaling mechanisms such as SIP and SDP to | data channel are used in conjunction with each other and with existing | |||
| produce a telepresence call. | signaling mechanisms, such as SIP and the Session Description Protocol | |||
| (SDP), to produce a telepresence call. | ||||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Introduction</name> | |||
| To enable devices to participate in a telepresence call, selecting the sources | <t> | |||
| they wish to view, receiving those media sources and displaying them in an | To enable devices to participate in a telepresence call, where they select the s | |||
| optimal fashion, CLUE (ControLling mUltiple streams for tElepresence) employs | ources | |||
| two principal and inter-related protocol negotiations. | they wish to view, receive those media sources, and display them in an | |||
| <xref target="RFC4566">SDP</xref>, conveyed via | optimal fashion, Controlling Multiple Streams for Telepresence (CLUE) employs | |||
| <xref target="RFC3261">SIP</xref>, is used to negotiate the specific media | two principal and interrelated protocol negotiations. | |||
| SDP <xref target="RFC4566" format="default"/>, conveyed via | ||||
| SIP <xref target="RFC3261" format="default"/>, is used to negotiate the specific | ||||
| media | ||||
| capabilities that can be delivered to specific addresses on a device. | capabilities that can be delivered to specific addresses on a device. | |||
| Meanwhile, <xref target="I-D.ietf-clue-protocol">CLUE protocol</xref> | Meanwhile, CLUE protocol messages <xref target="RFC8847" format="default"/>, tra | |||
| messages, transported via a | nsported via a | |||
| <xref target="I-D.ietf-clue-datachannel">CLUE data channel</xref>, are used to | CLUE data channel <xref target="RFC8850" format="default"/>, are used to | |||
| negotiate the Capture Sources available, their attributes and any constraints | negotiate the Capture Sources available, their attributes, and any constraints | |||
| in their use. They also allow the far end device to specify which Captures | in their use. They also allow the far-end device to specify which Captures | |||
| they wish to receive. It is recommended that those documents be read prior to | they wish to receive. It is recommended that those documents be read prior to | |||
| this one as this document assumes familiarity with those protocols and hence | this one as this document assumes familiarity with those protocols and hence | |||
| uses terminology from each with limited introduction. | uses terminology from each with limited introduction. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Beyond negotiating the CLUE channel, SDP is also used to negotiate the details | Beyond negotiating the CLUE channel, SDP is also used to negotiate the details | |||
| of supported media streams and the maximum capability of each of those | of supported media streams and the maximum capability of each of those | |||
| streams. As the <xref target="I-D.ietf-clue-framework">CLUE Framework</xref> | streams. As the CLUE Framework <xref target="RFC8845" format="default"/> | |||
| defines a manner in which the Media Provider expresses their maximum encoding | defines a manner in which the Media Provider expresses their maximum Encoding | |||
| group capabilities, SDP is also used to express the encoding limits for each | Group capabilities, SDP is also used to express the encoding limits for each | |||
| potential Encoding. | potential Encoding. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Backwards-compatibility is an important consideration of the protocol: it is | Backwards compatibility is an important consideration of the protocol: it is | |||
| vital that a CLUE-capable device contacting a device that does not support | vital that a CLUE-capable device contacting a device that does not support | |||
| CLUE is able to fall back to a fully functional non-CLUE call. The document | CLUE is able to fall back to a fully functional non-CLUE call. The document | |||
| also defines how a non-CLUE call may be upgraded to CLUE in mid-call, and | also defines how a non-CLUE call may be upgraded to CLUE mid-call and, | |||
| similarly how CLUE functionality can be removed mid-call to return to a | similarly, how CLUE functionality can be removed mid-call to return to a | |||
| standard non-CLUE call. | standard non-CLUE call. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Terminology"> | <name>Terminology</name> | |||
| <t> | <t> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
| NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| "MAY", and "OPTIONAL" in this document are to be interpreted as | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| and only when, they appear in all capitals, as shown here. | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
| </t> | be interpreted as | |||
| <t> | described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | |||
| This document uses terminology defined in the | when, and only when, they appear in all capitals, as shown here. | |||
| <xref target="I-D.ietf-clue-framework">CLUE Framework</xref>. | ||||
| </t> | ||||
| <t> | ||||
| A few additional terms specific to this document are defined as follows: | ||||
| </t> | ||||
| <t> | ||||
| <list style='hanging'> | ||||
| <t hangText="non-CLUE device:"> | ||||
| A device that supports standard SIP and SDP, but either does not support CLUE, | ||||
| or that does but does not currently wish to invoke CLUE capabilities. | ||||
| </t> | </t> | |||
| <t hangText="CLUE-controlled media:"> | <t> | |||
| This document uses terminology defined in the CLUE Framework | ||||
| <xref target="RFC8845" format="default"/>. | ||||
| </t> | ||||
| <t> | ||||
| A few additional terms specific to this document are defined as follows: | ||||
| </t> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>CLUE-controlled media:</dt> | ||||
| <dd> | ||||
| A media "m=" line that is under CLUE control; the Capture Source that provides | A media "m=" line that is under CLUE control; the Capture Source that provides | |||
| the media on this "m=" line is negotiated in CLUE. See | the media on this "m=" line is negotiated in CLUE. See | |||
| <xref target="sec.group" /> for details of how this control is signaled in | <xref target="sec.group" format="default"/> for details on how this control is s ignaled in | |||
| SDP. There is a corresponding "non-CLUE-controlled" media term. | SDP. There is a corresponding "non-CLUE-controlled" media term. | |||
| </t> | </dd> | |||
| </list> | <dt>non-CLUE device:</dt> | |||
| </t> | <dd> | |||
| </section> | A device that supports standard SIP and SDP but either does not support CLUE | |||
| or does support CLUE but does not currently wish to invoke CLUE capabilities. | ||||
| <section title="Media Feature Tag Definition" anchor="sec.tag"> | </dd> | |||
| <t> | <dt>RTCP:</dt><dd>RTP Control Protocol.</dd> | |||
| The "sip.clue" media feature tag <xref target="RFC3840"/> indicates | <dt>SCTP:</dt><dd>Stream Control Transmission Protocol.</dd> | |||
| support for CLUE in <xref target="RFC3261">SIP</xref> calls. A CLUE-capable | <dt>STUN:</dt><dd>Session Traversal Utilities for NAT.</dd> | |||
| device SHOULD include this media feature tag in its REGISTER requests and | </dl> | |||
| OPTION responses. It SHOULD also include the media feature tag in INVITE and | </section> | |||
| UPDATE <xref target="RFC3311" /> requests and responses. | <section anchor="sec.tag" numbered="true" toc="default"> | |||
| </t> | <name>Media Feature Tag Definition</name> | |||
| <t> | ||||
| Presence of the media feature tag in the contact field of a request or | ||||
| response can be used to determine that the far end supports CLUE. | ||||
| </t> | ||||
| </section> | ||||
| <section title="SDP Grouping Framework CLUE Extension Semantics" anchor="sec.g | ||||
| roup"> | ||||
| <section title="General"> | ||||
| <t> | <t> | |||
| This section defines a new SDP Grouping Framework <xref target="RFC5888" /> | The "sip.clue" media feature tag <xref target="RFC3840" format="default"/> indic | |||
| extension called 'CLUE'. | ates | |||
| support for CLUE in SIP <xref target="RFC3261" format="default"/> calls. A CLUE- | ||||
| capable | ||||
| device <bcp14>SHOULD</bcp14> include this media feature tag in its REGISTER requ | ||||
| ests and | ||||
| OPTION responses. It <bcp14>SHOULD</bcp14> also include the media feature tag in | ||||
| INVITE and | ||||
| UPDATE <xref target="RFC3311" format="default"/> requests and responses. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Presence of the media feature tag in the contact field of a request or | ||||
| response can be used to determine that the far end supports CLUE. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="sec.group" numbered="true" toc="default"> | ||||
| <name>SDP Grouping Framework CLUE Extension Semantics</name> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>General</name> | ||||
| <t> | ||||
| This section defines a new SDP Grouping Framework <xref target="RFC5888" format= | ||||
| "default"/> | ||||
| extension called 'CLUE'. | ||||
| </t> | ||||
| <t> | ||||
| The CLUE extension can be indicated using an SDP session-level | The CLUE extension can be indicated using an SDP session-level | |||
| 'group' attribute. Each SDP media "m=" line that is included in this group, | 'group' attribute. Each SDP media "m=" line that is included in this group, | |||
| using SDP media-level mid attributes, is CLUE-controlled, by a CLUE data | using SDP media-level mid attributes, is CLUE controlled by a CLUE data | |||
| channel also included in this CLUE group. | channel that is also included in this CLUE group. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Currently only support for a single CLUE group is specified; support for | Currently, only support for a single CLUE group is specified; support for | |||
| multiple CLUE groups in a single session is outside the scope of this | multiple CLUE groups in a single session is outside the scope of this | |||
| document. A device MUST NOT include more than one CLUE group in its SDP | document. A device <bcp14>MUST NOT</bcp14> include more than one CLUE group in i ts SDP | |||
| message unless it is following a specification that defines how multiple CLUE | message unless it is following a specification that defines how multiple CLUE | |||
| channels are signaled, and is either able to determine that the other side of | channels are signaled and is able to either determine that the other side of | |||
| the SDP exchange supports multiple CLUE channels, or is able to fail | the SDP exchange supports multiple CLUE channels or fail | |||
| gracefully in the event it does not. | gracefully in the event it does not. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="The CLUE data channel and the CLUE grouping semantic"> | <name>The CLUE Data Channel and the CLUE Grouping Semantic</name> | |||
| <t> | <t> | |||
| The <xref target="I-D.ietf-clue-datachannel">CLUE data channel</xref> is a | The CLUE data channel <xref target="RFC8850" format="default"/> is a | |||
| bidirectional <xref target="I-D.ietf-rtcweb-data-channel">data channel</xref> | bidirectional data channel <xref target="RFC8831" format="default"/> | |||
| used for the transport of CLUE messages, conveyed within an SCTP over DTLS | used for the transport of CLUE messages, conveyed within an SCTP over DTLS | |||
| connection. This channel must be established before CLUE protocol messages can | connection. This channel must be established before CLUE protocol messages can | |||
| be exchanged and CLUE-controlled media can be sent. | be exchanged and CLUE-controlled media can be sent. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The data channel is negotiated over SDP as described in | The data channel is negotiated over SDP as described in | |||
| <xref target="I-D.ietf-mmusic-data-channel-sdpneg"/>. A CLUE-capable | <xref target="RFC8864" format="default"/>. A CLUE-capable | |||
| device wishing to negotiate CLUE MUST also include a CLUE group in their SDP | device wishing to negotiate CLUE <bcp14>MUST</bcp14> also include a CLUE group i | |||
| offer or answer and include the "mid" of the "m=" line for the data channel in | n their SDP | |||
| that group. The CLUE group MUST include the "mid" of the "m=" line for one | Offer or Answer and include the "mid" of the "m=" line for the data channel in | |||
| that group. The CLUE group <bcp14>MUST</bcp14> include the "mid" of the "m=" lin | ||||
| e for one | ||||
| (and only one) data channel. | (and only one) data channel. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Presence of the data channel in the CLUE group in an SDP offer or answer also | Presence of the data channel in the CLUE group in an SDP Offer or Answer also | |||
| serves, along with the "sip.clue" media feature tag, as an indication that the | serves, along with the "sip.clue" media feature tag, as an indication that the | |||
| device supports CLUE and wishes to upgrade the call to include CLUE-controlled | device supports CLUE and wishes to upgrade the call to include CLUE-controlled | |||
| media. A CLUE-capable device SHOULD include a data channel "m=" line in offers | media. A CLUE-capable device <bcp14>SHOULD</bcp14> include a data channel "m=" l | |||
| and, when allowed by <xref target="RFC3264" />, answers. | ine in offers | |||
| </t> | and, when allowed by <xref target="RFC3264" format="default"/>, answers. | |||
| </section> | </t> | |||
| </section> | ||||
| <section title="CLUE-controlled media and the CLUE grouping semantic"> | <section numbered="true" toc="default"> | |||
| <t> | <name>CLUE-Controlled Media and the CLUE Grouping Semantic</name> | |||
| <t> | ||||
| CLUE-controlled media lines in an SDP are "m=" lines in which the content of | CLUE-controlled media lines in an SDP are "m=" lines in which the content of | |||
| the media streams to be sent is negotiated via the | the media streams to be sent is negotiated via the CLUE protocol | |||
| <xref target="I-D.ietf-clue-protocol">CLUE protocol</xref>. For an "m=" line | <xref target="RFC8847" format="default"/>. For an "m=" line | |||
| to be CLUE-controlled, its "mid" value MUST be included in the CLUE group. | to be CLUE controlled, its "mid" attribute value <bcp14>MUST</bcp14> be included | |||
| in the CLUE group. | ||||
| CLUE-controlled media is controlled by the CLUE protocol as negotiated on the | CLUE-controlled media is controlled by the CLUE protocol as negotiated on the | |||
| CLUE data channel with an "mid" included in the CLUE group. | CLUE data channel with a "mid" included in the CLUE group. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| "m=" lines not specified as under CLUE control follow normal rules for media | "m=" lines not specified as being under CLUE control follow normal rules for med | |||
| ia | ||||
| streams negotiated in SDP as defined in documents such as | streams negotiated in SDP as defined in documents such as | |||
| <xref target="RFC3264" />. | <xref target="RFC3264" format="default"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The restrictions on CLUE-controlled media that are defined below always apply | The restrictions on CLUE-controlled media that are defined below always apply | |||
| to "m=" lines in an SDP offer or answer, even if negotiation of the data | to "m=" lines in an SDP Offer or Answer, even if negotiation of the data | |||
| channel in SDP failed due to lack of CLUE support by the remote device or for | channel in SDP failed due to lack of CLUE support by the remote device or for | |||
| any other reason, or in an offer if the recipient does not include the "mid" | any other reason, or in an offer if the recipient does not include the "mid" | |||
| of the corresponding "m=" line in their CLUE group. | of the corresponding "m=" line in their CLUE group. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="SDP semantics for CLUE-controlled media"> | <name>SDP Semantics for CLUE-Controlled Media</name> | |||
| <section title="Signaling CLUE Encodings" anchor="sec.sdp_encodings" | <section anchor="sec.sdp_encodings" numbered="true" toc="default"> | |||
| > | <name>Signaling CLUE Encodings</name> | |||
| <t> | <t> | |||
| The <xref target="I-D.ietf-clue-framework">CLUE Framework</xref> defines the | The CLUE Framework <xref target="RFC8845" format="default"/> defines the | |||
| concept of "Encodings", which represent the sender's encode ability. Each | concept of "Encodings", which represent the sender's encode ability. Each | |||
| Encoding the Media Provider wishes to signal is signaled via an "m=" line of | Encoding the Media Provider wishes to signal is done so via an "m=" line of | |||
| the appropriate media type, which MUST be marked as sendonly with the | the appropriate media type, which <bcp14>MUST</bcp14> be marked as sendonly with | |||
| the | ||||
| "a=sendonly" attribute or as inactive with the "a=inactive" attribute. | "a=sendonly" attribute or as inactive with the "a=inactive" attribute. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The encoder limits of active (eg, "a=sendonly") Encodings can then be | The encoder limits of active (e.g., "a=sendonly") Encodings can then be | |||
| expressed using existing SDP syntax. For instance, for H.264 see Table 6 in | expressed using existing SDP syntax. For instance, for H.264, see Table 6 in | |||
| <xref target="RFC6184" /> for a list of valid parameters for representing | <xref target="RFC6184" sectionFormat="of" section="8.2.2"/> for a list of valid | |||
| parameters for representing | ||||
| encoder sender stream limits. | encoder sender stream limits. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| These Encodings are CLUE-controlled and hence MUST include an "mid" in the | These Encodings are CLUE controlled and hence <bcp14>MUST</bcp14> include a "mid | |||
| " in the | ||||
| CLUE group as defined above. | CLUE group as defined above. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| As well as the normal restrictions defined in <xref target="RFC3264" /> the | In addition to the normal restrictions defined in <xref target="RFC3264" format= | |||
| stream MUST be treated as if the "m=" line direction attribute had been set to | "default"/>, the | |||
| stream <bcp14>MUST</bcp14> be treated as if the "m=" line direction attribute ha | ||||
| d been set to | ||||
| "a=inactive" until the Media Provider has received a valid CLUE 'configure' | "a=inactive" until the Media Provider has received a valid CLUE 'configure' | |||
| message specifying the Capture to be used for this stream. This means that | message specifying the Capture to be used for this stream. This means that | |||
| RTP packets MUST NOT be sent until configuration is complete, while | RTP packets <bcp14>MUST NOT</bcp14> be sent until configuration is complete, whi | |||
| non-media packets such as STUN, RTCP and DTLS MUST be sent as per their | le | |||
| relevant specifications if negotiated. | non-media packets such as STUN, RTCP, and DTLS <bcp14>MUST</bcp14> be sent as pe | |||
| </t> | r their | |||
| <t> | relevant specifications, if negotiated. | |||
| Every "m=" line representing a CLUE Encoding MUST contain a "label" attribute | </t> | |||
| as defined in <xref target="RFC4574" />. This label is used to identify the | <t> | |||
| Every "m=" line representing a CLUE Encoding <bcp14>MUST</bcp14> contain a "labe | ||||
| l" attribute | ||||
| as defined in <xref target="RFC4574" format="default"/>. This label is used to i | ||||
| dentify the | ||||
| Encoding by the sender in CLUE 'advertisement' messages and by the receiver in | Encoding by the sender in CLUE 'advertisement' messages and by the receiver in | |||
| CLUE 'configure' messages. Each label used for a CLUE-controlled "m=" line | CLUE 'configure' messages. Each label used for a CLUE-controlled "m=" line | |||
| MUST be different from the label on all other "m=" lines in the CLUE group, | <bcp14>MUST</bcp14> be different from the label on all other "m=" lines in the C LUE group, | |||
| unless an "m=" line represents a dependent stream related to another "m=" line | unless an "m=" line represents a dependent stream related to another "m=" line | |||
| (such as an FEC stream), in which case it MUST have the same label value as | (such as a Forward Error Correction (FEC) stream), in which case it <bcp14>MUST< /bcp14> have the same label value as | |||
| the "m=" line on which it depends. | the "m=" line on which it depends. | |||
| </t> | </t> | |||
| <section title="Referencing Encodings in the CLUE protocol"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Referencing Encodings in the CLUE Protocol</name> | |||
| CLUE Encodings are defined in SDP, but can be referenced from CLUE protocol | <t> | |||
| messages - this is how the protocol defines which Encodings are part of an | CLUE Encodings are defined in SDP but can be referenced from CLUE protocol | |||
| Encoding Group (in 'advertisement' messages) and which Encoding with which to | messages -- this is how the protocol defines which Encodings are a part of an | |||
| encode a specific Capture (in 'configure' messages). The labels on the | Encoding Group (in 'advertisement' messages) and which Encoding is used to encod | |||
| e | ||||
| a specific Capture (in 'configure' messages). The labels on the | ||||
| CLUE-controlled "m=" lines are the references that are used in the CLUE | CLUE-controlled "m=" lines are the references that are used in the CLUE | |||
| protocol. | protocol. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Each <encID> (in encodingIDList) in a CLUE 'advertisement' message | Each <encID> (in encodingIDList) in a CLUE 'advertisement' message | |||
| SHOULD represent an Encoding defined in SDP; the specific Encoding referenced | <bcp14>SHOULD</bcp14> represent an Encoding defined in SDP; the specific Encodin g referenced | |||
| is a CLUE-controlled "m=" line in the most recent SDP Offer/Answer message | is a CLUE-controlled "m=" line in the most recent SDP Offer/Answer message | |||
| sent by the sender of the 'advertisement' message with a label value | sent by the sender of the 'advertisement' message with a label value | |||
| corresponding to the text content of the <encID>. If the <encID> | corresponding to the text content of the <encID>. If the <encID> | |||
| is not defined in SDP it MUST be one it anticipates sending in a subsequent | is not defined in SDP, it <bcp14>MUST</bcp14> be one it anticipates sending in a subsequent | |||
| SDP Offer/Answer exchange. | SDP Offer/Answer exchange. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Each <encodingID> (in captureEncodingType) in a CLUE 'configure' message | Each <encodingID> (in captureEncodingType) in a CLUE 'configure' message | |||
| MUST represent an Encoding defined in SDP; the specific Encoding referenced is | <bcp14>MUST</bcp14> represent an Encoding defined in SDP; the specific Encoding referenced is | |||
| a CLUE-controlled "m=" line in the most recent SDP Offer/Answer message | a CLUE-controlled "m=" line in the most recent SDP Offer/Answer message | |||
| received by the sender of the 'configure' message with a label value | received by the sender of the 'configure' message with a label value | |||
| corresponding to the text content of the <encodingID>. | corresponding to the text content of the <encodingID>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Note that the non-atomic nature of SDP/CLUE protocol interaction may mean that | Note that the non-atomic nature of SDP/CLUE protocol interaction may mean that | |||
| there are temporary periods where an <encID>/<encodingID> in a | there are temporary periods where an <encID>/<encodingID> in a | |||
| CLUE message does not reference an SDP "m=" line, or where an Encoding | CLUE message does not reference an SDP "m=" line, or where an Encoding | |||
| represented in SDP is not referenced in a CLUE protocol message. | represented in SDP is not referenced in a CLUE protocol message. | |||
| See <xref target="sec.coordination" /> for specifics. | See <xref target="sec.coordination" format="default"/> for specifics. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section title="Negotiating receipt of CLUE Capture Encodings in SDP | <section numbered="true" toc="default"> | |||
| "> | <name>Negotiating Receipt of CLUE Capture Encodings in SDP</name> | |||
| <t> | <t> | |||
| A receiver who wishes to receive a CLUE stream via a specific Encoding | A receiver who wishes to receive a CLUE stream via a specific Encoding | |||
| requires an "a=recvonly" "m=" line that matches the "a=sendonly" Encoding. | requires an "a=recvonly" "m=" line that matches the "a=sendonly" Encoding. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| These "m=" lines are CLUE-controlled and hence MUST include their "mid" in the | These "m=" lines are CLUE controlled and hence <bcp14>MUST</bcp14> include their | |||
| CLUE group. They MAY include a "label" attribute, but this is not required by | "mid" in the | |||
| CLUE group. They <bcp14>MAY</bcp14> include a "label" attribute, but this is not | ||||
| required by | ||||
| CLUE, as only label values associated with "a=sendonly" Encodings are | CLUE, as only label values associated with "a=sendonly" Encodings are | |||
| referenced by CLUE protocol messages. | referenced by CLUE protocol messages. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="SDP Offer/Answer Procedures"> | <name>SDP Offer/Answer Procedures</name> | |||
| <section title="Generating the Initial Offer"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Generating the Initial Offer</name> | |||
| A CLUE-capable device sending an initial SDP offer of a SIP session and | <t> | |||
| A CLUE-capable device sending an initial SDP Offer of a SIP session and | ||||
| wishing to negotiate CLUE will include an "m=" line for the data channel to | wishing to negotiate CLUE will include an "m=" line for the data channel to | |||
| convey the CLUE protocol, along with a CLUE group containing the "mid" of the | convey the CLUE protocol, along with a CLUE group containing the "mid" of the | |||
| data channel "m=" line. | data channel "m=" line. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| For interoperability with non-CLUE devices a CLUE-capable device sending an | For interoperability with non-CLUE devices, a CLUE-capable device sending an | |||
| initial SDP offer SHOULD NOT include any "m=" line for CLUE-controlled media | initial SDP Offer <bcp14>SHOULD NOT</bcp14> include any "m=" line for CLUE-contr | |||
| beyond the "m=" line for the CLUE data channel, and SHOULD include at least | olled media | |||
| beyond the "m=" line for the CLUE data channel, and it <bcp14>SHOULD</bcp14> inc | ||||
| lude at least | ||||
| one non-CLUE-controlled media "m=" line. | one non-CLUE-controlled media "m=" line. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If the device has evidence that the receiver is also CLUE-capable, for | If the device has evidence that the receiver is also CLUE capable, for | |||
| instance due to receiving an initial INVITE with no SDP but including a | instance, due to receiving an initial INVITE with no SDP but including a | |||
| "sip.clue" media feature tag, the above recommendation is waived, and the | "sip.clue" media feature tag, the above recommendation is waived, and the | |||
| initial offer MAY contain "m=" lines for CLUE-controlled media. | initial offer <bcp14>MAY</bcp14> contain "m=" lines for CLUE-controlled media. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| With the same interoperability recommendations as for Encodings, the sender of | With the same interoperability recommendations as for Encodings, the sender of | |||
| the initial SDP offer MAY also include "a=recvonly" media lines to | the initial SDP Offer <bcp14>MAY</bcp14> also include "a=recvonly" media lines t | |||
| preallocate "m=" lines to receive media. Alternatively, it MAY wait until CLUE | o | |||
| preallocate "m=" lines to receive media. Alternatively, it <bcp14>MAY</bcp14> wa | ||||
| it until CLUE | ||||
| protocol negotiation has completed before including these lines in a new | protocol negotiation has completed before including these lines in a new | |||
| offer/answer exchange - see <xref target="sec.coordination" /> for | offer/answer exchange -- see <xref target="sec.coordination" format="default"/> for | |||
| recommendations. | recommendations. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Generating the Answer"> | <name>Generating the Answer</name> | |||
| <section title="Negotiating use of CLUE and the CLUE data channe | <section numbered="true" toc="default"> | |||
| l"> | <name>Negotiating Use of CLUE and the CLUE Data Channel</name> | |||
| <t> | <t> | |||
| If the recipient of an initial offer is CLUE-capable, and the offer contains | If the recipient of an initial offer is CLUE capable, and the offer contains | |||
| both an "m=" line for a data channel and a CLUE group containing the "mid" for | both an "m=" line for a data channel and a CLUE group containing the "mid" for | |||
| that "m=" line, they SHOULD negotiate data channel support for an "m=" line, | that "m=" line, they <bcp14>SHOULD</bcp14> negotiate data channel support for an "m=" line | |||
| and include the "mid" of that "m=" line in a corresponding CLUE group. | and include the "mid" of that "m=" line in a corresponding CLUE group. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| A CLUE-capable recipient that receives an "m=" line for a data channel but no | A CLUE-capable recipient that receives an "m=" line for a data channel but no | |||
| corresponding CLUE group containing the "mid" of that "m=" line MAY still | corresponding CLUE group containing the "mid" of that "m=" line <bcp14>MAY</bcp1 4> still | |||
| include a corresponding data channel "m=" line if there are any other non-CLUE | include a corresponding data channel "m=" line if there are any other non-CLUE | |||
| protocols it can convey over that channel, but MUST NOT negotiate use of the | protocols it can convey over that channel, but the use of the CLUE protocol <bcp | |||
| CLUE protocol on this channel. | 14>MUST NOT</bcp14> be negotiated on this channel. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Negotiating CLUE-controlled media"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Negotiating CLUE-Controlled Media</name> | |||
| If the initial offer contained "a=recvonly" CLUE-controlled media lines the | <t> | |||
| recipient SHOULD include corresponding "a=sendonly" CLUE-controlled media | If the initial offer contained "a=recvonly" CLUE-controlled media lines, the | |||
| recipient <bcp14>SHOULD</bcp14> include corresponding "a=sendonly" CLUE-controll | ||||
| ed media | ||||
| lines for accepted Encodings, up to the maximum number of Encodings it | lines for accepted Encodings, up to the maximum number of Encodings it | |||
| wishes to advertise. As CLUE-controlled media, the "mid" of these "m=" lines | wishes to advertise. As CLUE-controlled media, the "mid" of these "m=" lines | |||
| MUST be included in the corresponding CLUE group. The recipient MUST set the | <bcp14>MUST</bcp14> be included in the corresponding CLUE group. The recipient < bcp14>MUST</bcp14> set the | |||
| direction of the corresponding "m=" lines of any remaining "a=recvonly" | direction of the corresponding "m=" lines of any remaining "a=recvonly" | |||
| CLUE-controlled media lines received in the offer to "a=inactive". | CLUE-controlled media lines received in the offer to "a=inactive". | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If the initial offer contained "a=sendonly" CLUE-controlled media lines the | If the initial offer contained "a=sendonly" CLUE-controlled media lines, the | |||
| recipient MAY include corresponding "a=recvonly" CLUE-controlled media lines, | recipient <bcp14>MAY</bcp14> include corresponding "a=recvonly" CLUE-controlled | |||
| media lines, | ||||
| up to the maximum number of Capture Encodings it wishes to receive. | up to the maximum number of Capture Encodings it wishes to receive. | |||
| Alternatively, it MAY wait until CLUE protocol negotiation has completed | Alternatively, it <bcp14>MAY</bcp14> wait until CLUE protocol negotiation has co | |||
| before including these lines in a new offer/answer exchange - see | mpleted | |||
| <xref target="sec.coordination" /> for recommendations. The recipient MUST set | before including these lines in a new offer/answer exchange -- see | |||
| <xref target="sec.coordination" format="default"/> for recommendations. The reci | ||||
| pient <bcp14>MUST</bcp14> set | ||||
| the direction of the corresponding "m=" lines of any remaining "a=sendonly" | the direction of the corresponding "m=" lines of any remaining "a=sendonly" | |||
| CLUE-controlled media lines received in the offer to "a=inactive" | CLUE-controlled media lines received in the offer to "a=inactive". | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Negotiating non-CLUE controlled media"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Negotiating Non-CLUE-controlled Media</name> | |||
| A CLUE-controlled device implementation MAY prefer to render initial, | <t> | |||
| A CLUE-controlled device implementation <bcp14>MAY</bcp14> prefer to render init | ||||
| ial, | ||||
| single-stream audio and/or video for the user as rapidly as possible, | single-stream audio and/or video for the user as rapidly as possible, | |||
| transitioning to CLUE-controlled media once that has been negotiated. | transitioning to CLUE-controlled media once that has been negotiated. | |||
| Alternatively, an implementation MAY wish to suppress initial media, only | Alternatively, an implementation <bcp14>MAY</bcp14> wish to suppress initial med ia, only | |||
| providing media once the final, CLUE-controlled streams have been negotiated. | providing media once the final, CLUE-controlled streams have been negotiated. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The receiver of the initial offer, if making the call CLUE-enabled with their | The receiver of the initial offer, if making the call CLUE-enabled with their | |||
| SDP answer, can make their preference clear by their action in accepting or | SDP Answer, can make their preference clear by their action in accepting or | |||
| rejecting non-CLUE-controlled media lines. Rejecting these "m=" lines will | rejecting non-CLUE-controlled media lines. Rejecting these "m=" lines will | |||
| ensure that no non-CLUE-controlled media flows before the CLUE-controlled | ensure that no non-CLUE-controlled media flows before the CLUE-controlled | |||
| media is negotiated. In contrast, accepting one or more non-CLUE-controlled | media is negotiated. In contrast, accepting one or more non-CLUE-controlled | |||
| "m=" lines in this initial answer will enable initial media to flow. | "m=" lines in this initial answer will enable initial media to flow. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If the answerer chooses to send initial non-CLUE-controlled media in a | If the answerer chooses to send initial non-CLUE-controlled media in a | |||
| CLUE-enabled call, <xref target="sec.clue-media" /> addresses the need to | CLUE-enabled call, <xref target="sec.clue-media" format="default"/> addresses th | |||
| disable it once CLUE-controlled media is fully negotiated. | e need to | |||
| </t> | disable it once the CLUE-controlled media is fully negotiated. | |||
| </section> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| <section title="Processing the initial Offer/Answer negotiation"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Processing the Initial Offer/Answer Negotiation</name> | |||
| In the event that both offer and answer include a data channel "m=" line with | <t> | |||
| a mid value included in corresponding CLUE groups, CLUE has been successfully | In the event that both the offer and answer include a data channel "m=" line wit | |||
| negotiated and the call is now CLUE-enabled. If not then the call is not | h | |||
| CLUE-enabled. | a "mid" value included in corresponding CLUE groups, CLUE has been successfully | |||
| </t> | negotiated, and the call is now CLUE enabled. If not, then the call is not | |||
| <section title="Successful CLUE negotiation"> | CLUE enabled. | |||
| <t> | </t> | |||
| In the event of successful CLUE-enablement of the call, devices MUST now begin | <section numbered="true" toc="default"> | |||
| negotiation of the CLUE channel, see | <name>Successful CLUE Negotiation</name> | |||
| <xref target="I-D.ietf-clue-datachannel" /> for negotiation details. If | <t> | |||
| negotiation is successful, sending of <xref target="I-D.ietf-clue-protocol"> | In the event of successful CLUE enablement of the call, devices <bcp14>MUST</bcp | |||
| CLUE protocol</xref> messages can begin. | 14> now begin | |||
| </t> | negotiation of the CLUE channel; see | |||
| <t> | <xref target="RFC8850" format="default"/> for negotiation details. If | |||
| A CLUE-capable device MAY choose not to send RTP on the non-CLUE-controlled | negotiation is successful, the sending of CLUE protocol messages <xref target="R | |||
| FC8847" format="default"/> can begin. | ||||
| </t> | ||||
| <t> | ||||
| A CLUE-capable device <bcp14>MAY</bcp14> choose not to send RTP on the non-CLUE- | ||||
| controlled | ||||
| channels during the period in which control of the CLUE-controlled media lines | channels during the period in which control of the CLUE-controlled media lines | |||
| is being negotiated (though RTCP MUST still be sent and received as normal). | is being negotiated (though RTCP <bcp14>MUST</bcp14> still be sent and received | |||
| However, a CLUE-capable device MUST still be prepared to receive media on | as normal). | |||
| However, a CLUE-capable device <bcp14>MUST</bcp14> still be prepared to receive | ||||
| media on | ||||
| non-CLUE-controlled media lines that have been successfully negotiated as | non-CLUE-controlled media lines that have been successfully negotiated as | |||
| defined in <xref target="RFC3264" />. | defined in <xref target="RFC3264" format="default"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If either side of the call wishes to add additional CLUE-controlled "m=" lines | If either side of the call wishes to add additional CLUE-controlled "m=" lines | |||
| to send or receive CLUE-controlled media they MAY now send a SIP request with | to send or receive CLUE-controlled media, they <bcp14>MAY</bcp14> now send a SIP | |||
| a new SDP offer following the normal rules of SDP offer/answer and any | request with | |||
| a new SDP Offer following the normal rules of SDP Offer/Answer and any | ||||
| negotiated extensions. | negotiated extensions. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="CLUE negotiation failure"> | <section numbered="true" toc="default"> | |||
| <t> | <name>CLUE Negotiation Failure</name> | |||
| <t> | ||||
| In the event that the negotiation of CLUE fails and the call is not | In the event that the negotiation of CLUE fails and the call is not | |||
| CLUE-enabled once the initial offer/answer negotiation completes then CLUE is | CLUE enabled once the initial offer/answer negotiation completes, then CLUE is | |||
| not in use in the call. The CLUE-capable devices MUST either revert to | not in use in the call. CLUE-capable devices <bcp14>MUST</bcp14> either revert t | |||
| non-CLUE behaviour or terminate the call. | o | |||
| </t> | non-CLUE behavior or terminate the call. | |||
| </section> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| <section title="Modifying the session"> | <section numbered="true" toc="default"> | |||
| <section title="Adding and removing CLUE-controlled media" ancho | <name>Modifying the Session</name> | |||
| r="sec.clue-media"> | <section anchor="sec.clue-media" numbered="true" toc="default"> | |||
| <t> | <name>Adding and Removing CLUE-Controlled Media</name> | |||
| Subsequent offer/answer exchanges MAY add additional "m=" lines for | <t> | |||
| CLUE-controlled media, or activate or deactivate existing "m=" lines per the | Subsequent offer/answer exchanges <bcp14>MAY</bcp14> add additional "m=" lines f | |||
| or | ||||
| CLUE-controlled media or activate or deactivate existing "m=" lines per the | ||||
| standard SDP mechanisms. | standard SDP mechanisms. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| In most cases at least one additional exchange after the initial offer/answer | In most cases, at least one additional exchange after the initial offer/answer | |||
| exchange will be required before both sides have added all the Encodings and | exchange will be required before both sides have added all the Encodings and | |||
| ability to receive Encodings that they desire. Devices MAY delay adding | the ability to receive Encodings that they desire. Devices <bcp14>MAY</bcp14> de lay adding | |||
| "a=recvonly" CLUE-controlled "m=" lines until after CLUE protocol negotiation | "a=recvonly" CLUE-controlled "m=" lines until after CLUE protocol negotiation | |||
| completes - see <xref target="sec.coordination" /> for recommendations. | completes -- see <xref target="sec.coordination" format="default"/> for recommen | |||
| </t> | dations. | |||
| <t> | </t> | |||
| Once CLUE media has been successfully negotiated devices SHOULD ensure that | <t> | |||
| Once CLUE media has been successfully negotiated, devices <bcp14>SHOULD</bcp14> | ||||
| ensure that | ||||
| non-CLUE-controlled media is deactivated by setting their ports to 0 in cases | non-CLUE-controlled media is deactivated by setting their ports to 0 in cases | |||
| where it corresponds to the media type of CLUE-controlled media that has been | where it corresponds to the media type of CLUE-controlled media that has been | |||
| successfully negotiated. This deactivation may require an additional SDP | successfully negotiated. This deactivation may require an additional SDP | |||
| exchange, or may be incorporated into one that is part of the CLUE | exchange or may be incorporated into one that is part of the CLUE | |||
| negotiation. | negotiation. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Enabling CLUE mid-call"> | <name>Enabling CLUE Mid-Call</name> | |||
| <t> | <t> | |||
| A CLUE-capable device that receives an initial SDP offer from a non-CLUE | A CLUE-capable device that receives an initial SDP Offer from a non-CLUE | |||
| device SHOULD include a new data channel "m=" line and corresponding CLUE | device <bcp14>SHOULD</bcp14> include a new data channel "m=" line and correspond | |||
| group in any subsequent offers it sends, to indicate that it is CLUE-capable. | ing CLUE | |||
| </t> | group in any subsequent offers it sends, to indicate that it is CLUE capable. | |||
| <t> | </t> | |||
| If, in an ongoing non-CLUE call, an SDP offer/answer exchange completes with | <t> | |||
| If, in an ongoing non-CLUE call, an SDP Offer/Answer exchange completes with | ||||
| both sides having included a data channel "m=" line in their SDP and with the | both sides having included a data channel "m=" line in their SDP and with the | |||
| "mid" for that channel in a corresponding CLUE group then the call is now | "mid" for that channel in a corresponding CLUE group, then the call is now | |||
| CLUE-enabled; negotiation of the data channel and subsequently the CLUE | CLUE enabled; negotiation of the data channel and subsequently the CLUE | |||
| protocol begins. | protocol begins. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="sec.clue-disable" numbered="true" toc="default"> | ||||
| <section title="Disabling CLUE mid-call" anchor="sec.clue-disabl | <name>Disabling CLUE Mid-Call</name> | |||
| e"> | <t> | |||
| <t> | If, during an ongoing CLUE-enabled call, a device wishes to disable CLUE, it | |||
| If, during an ongoing CLUE-enabled call a device wishes to disable CLUE, it | can do so by following the procedures for closing a data channel as defined in | |||
| can do so by following the procedures for closing a data channel defined in | <xref target="RFC8864" sectionFormat="of" section="6.6.1"/>: sending | |||
| Section 5.2.4 of <xref target="I-D.ietf-mmusic-data-channel-sdpneg"/>: sending | a new SDP Offer/Answer exchange and subsequent SCTP Stream Sequence Number (SSN) | |||
| a new SDP offer/answer exchange and subsequent SCTP SSN reset for the CLUE | reset for the CLUE | |||
| channel. It MUST also remove the CLUE group. Without the CLUE group any "m=" | channel. It <bcp14>MUST</bcp14> also remove the CLUE group. Without the CLUE gro | |||
| lines that were previously CLUE-controlled no longer are; implementations MAY | up, any "m=" | |||
| disable them by setting their ports to 0 or MAY continue to use them - in the | lines that were previously CLUE controlled no longer are; implementations <bcp14 | |||
| latter case how they are used is outside the scope of this document. | >MAY</bcp14> | |||
| </t> | disable them by setting their ports to 0 or <bcp14>MAY</bcp14> continue to use t | |||
| <t> | hem -- in the | |||
| If a device follows the procedure above, or an SDP offer-answer negotiation | latter case, how they are used is outside the scope of this document. | |||
| </t> | ||||
| <t> | ||||
| If a device follows the procedure above, or an SDP Offer/Answer negotiation | ||||
| completes in a fashion in which either the "m=" CLUE data channel line was not | completes in a fashion in which either the "m=" CLUE data channel line was not | |||
| successfully negotiated, and/or one side did not include the data channel in | successfully negotiated and/or one side did not include the data channel in | |||
| the CLUE group then CLUE for this call is disabled. In the event that this | the CLUE group, then CLUE for this call is disabled. In the event that this | |||
| occurs, CLUE is no longer enabled. Any active "m=" lines still included in the | occurs, CLUE is no longer enabled. Any active "m=" lines still included in the | |||
| CLUE group are no longer CLUE-controlled and the implementation MAY either | CLUE group are no longer CLUE controlled, and the implementation <bcp14>MAY</bcp 14> either | |||
| disable them in a subsequent negotiation or continue to use them in some other | disable them in a subsequent negotiation or continue to use them in some other | |||
| fashion. If the data channel is still present but not included in the CLUE | fashion. If the data channel is still present but not included in the CLUE | |||
| group semantic CLUE protocol messages MUST no longer be sent. | group semantic, CLUE protocol messages <bcp14>MUST</bcp14> no longer be sent. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="CLUE protocol failure mid-call"> | <name>CLUE Protocol Failure Mid-Call</name> | |||
| <t> | <t> | |||
| In contrast to the specific disablement of the use of CLUE described above, | In contrast to the specific disablement of the use of CLUE described above, | |||
| the CLUE channel may fail unexpectedly. Two circumstances where this can occur | the CLUE channel may fail unexpectedly. Two circumstances where this can occur | |||
| are: | are: | |||
| <list style='symbols'> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| <li> | ||||
| The CLUE data channel terminates, either gracefully or ungracefully, without | The CLUE data channel terminates, either gracefully or ungracefully, without | |||
| any corresponding SDP renegotiation. | any corresponding SDP renegotiation. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| A channel error of the CLUE protocol causes it to return to the IDLE state as | A channel error of the CLUE protocol causes it to return to the IDLE state as | |||
| defined in Section 6. of <xref target="I-D.ietf-clue-protocol" />. | defined in <xref target="RFC8847" sectionFormat="of" section="6"/>. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | <t> | |||
| <t> | In this circumstance, implementations <bcp14>SHOULD</bcp14> continue to transmit | |||
| In this circumstance implementations SHOULD continue to transmit and receive | and receive | |||
| CLUE-controlled media on the basis of the last negotiated CLUE messages, | CLUE-controlled media on the basis of the last negotiated CLUE messages, | |||
| until the CLUE protocol is re-established (in the event of a channel error) or | until the CLUE protocol is re-established (in the event of a channel error) or | |||
| disabled mid-call by an SDP exchange as defined in | disabled mid-call by an SDP exchange as defined in | |||
| <xref target="sec.clue-disable" />. Implementations MAY choose to send such | <xref target="sec.clue-disable" format="default"/>. Implementations <bcp14>MAY</ | |||
| an SDP request to disable CLUE immediately or MAY continue on in a | bcp14> choose to send such | |||
| an SDP request to disable CLUE immediately or <bcp14>MAY</bcp14> continue on in | ||||
| a | ||||
| call-preservation mode. | call-preservation mode. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="sec.coordination" numbered="true" toc="default"> | ||||
| <section title="Interaction of CLUE protocol and SDP negotiations" anchor="s | <name>Interaction of the CLUE Protocol and SDP Negotiations</name> | |||
| ec.coordination"> | ||||
| <t> | <t> | |||
| Information about media streams in CLUE is split between two message types: | Information about media streams in CLUE is split between two message types: | |||
| SDP, which defines media addresses and limits, and the CLUE channel, | SDP, which defines media addresses and limits, and the CLUE channel, | |||
| which defines properties of Capture Devices available, scene information and | which defines properties of Capture Devices available, scene information, and | |||
| additional constraints. As a result certain operations, such as advertising | additional constraints. As a result, certain operations, such as advertising | |||
| support for a new transmissible Capture with associated stream, cannot be | support for a new transmissible Capture with an associated stream, cannot be | |||
| performed atomically, as they require changes to both SDP and CLUE messaging. | performed atomically, as they require changes to both SDP and CLUE messaging. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| This section defines how the negotiation of the two protocols interact, | This section defines how the negotiation of the two protocols interact, | |||
| provides some recommendations on dealing with intermediate stages in | provides some recommendations on dealing with intermediate stages in | |||
| non-atomic operations, and mandates additional constraints on when | non-atomic operations, and mandates additional constraints on when | |||
| CLUE-configured media can be sent. | CLUE-configured media can be sent. | |||
| </t> | </t> | |||
| <section title="Independence of SDP and CLUE negotiation"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Independence of SDP and CLUE Negotiation</name> | |||
| <t> | ||||
| To avoid the need to implement interlocking state machines with the potential | To avoid the need to implement interlocking state machines with the potential | |||
| to reach invalid states if messages were to be lost, or be rewritten en-route | to reach invalid states if messages were to be lost, or be rewritten en route | |||
| by middle boxes, the state machines in SDP and CLUE operate independently. The | by middleboxes, the state machines in SDP and CLUE operate independently. The | |||
| state of the CLUE channel does not restrict when an implementation may send a | state of the CLUE channel does not restrict when an implementation may send a | |||
| new SDP offer or answer, and likewise the implementation’s ability to send a | new SDP Offer or Answer; likewise, the implementation's ability to send a | |||
| new CLUE 'advertisement' or 'configure' message is not restricted by the | new CLUE 'advertisement' or 'configure' message is not restricted by the | |||
| results of or the state of the most recent SDP negotiation (unless the SDP | results of or the state of the most recent SDP negotiation (unless the SDP | |||
| negotiation has removed the CLUE channel). | negotiation has removed the CLUE channel). | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The primary implication of this is that a device may receive an SDP | The primary implication of this is that a device may receive an SDP | |||
| Offer/Answer message with a CLUE Encoding for which it does not yet have | Offer/Answer message with a CLUE Encoding for which it does not yet have | |||
| Capture information, or receive a CLUE 'configure' message specifying a | Capture information or receive a CLUE 'configure' message specifying a | |||
| Capture Encoding for which the far end has not negotiated a media stream in | Capture Encoding for which the far end has not negotiated a media stream in | |||
| SDP. | SDP. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| CLUE messages contain an <encID> (in encodingIDList) or | CLUE messages contain an <encID> (in encodingIDList) or | |||
| <encodingID> (in captureEncodingType), which is used to identify a | <encodingID> (in captureEncodingType), which is used to identify a | |||
| specific encoding or captureEncoding in SDP; see | specific Encoding or captureEncoding in SDP; see | |||
| <xref target="I-D.ietf-clue-data-model-schema" /> for specifics. | <xref target="RFC8846" format="default"/> for specifics. | |||
| The non-atomic nature of CLUE negotiation means that a sender may wish to send | The non-atomic nature of CLUE negotiation means that a sender may wish to send | |||
| a new CLUE 'advertisement' message before the corresponding SDP message. As | a new CLUE 'advertisement' message before the corresponding SDP message. As | |||
| such the sender of the CLUE message MAY include an <encID> which does | such, the sender of the CLUE message <bcp14>MAY</bcp14> include an <encID> | |||
| not currently match a CLUE-controlled "m=" line label in SDP; A CLUE-capable | that does | |||
| implementation MUST NOT reject a CLUE protocol message solely because it | not currently match a CLUE-controlled "m=" line label in SDP; a CLUE-capable | |||
| implementation <bcp14>MUST NOT</bcp14> reject a CLUE protocol message solely bec | ||||
| ause it | ||||
| contains <encID> elements that do not match a label in SDP. | contains <encID> elements that do not match a label in SDP. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The current state of the CLUE participant or Media Provider/Consumer | The current state of the CLUE Participant or Media Provider/Consumer | |||
| state machines do not affect compliance with any of the normative language of | state machines does not affect compliance with any of the normative language of | |||
| <xref target="RFC3264" />. That is, they MUST NOT delay an ongoing SDP | <xref target="RFC3264" format="default"/>. That is, they <bcp14>MUST NOT</bcp14> | |||
| exchange as part of a SIP server or client transaction; an implementation MUST | delay an ongoing SDP | |||
| NOT delay an SDP exchange while waiting for CLUE negotiation to complete or | exchange as part of a SIP server or client transaction; an implementation <bcp14 | |||
| >MUST | ||||
| NOT</bcp14> delay an SDP exchange while waiting for CLUE negotiation to complete | ||||
| or | ||||
| for a 'configure' message to arrive. | for a 'configure' message to arrive. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Similarly, a device in a CLUE-enabled call MUST NOT delay any mandatory state | Similarly, a device in a CLUE-enabled call <bcp14>MUST NOT</bcp14> delay any man datory state | |||
| transitions in the CLUE Participant or Media Provider/Consumer state machines | transitions in the CLUE Participant or Media Provider/Consumer state machines | |||
| due to the presence or absence of an ongoing SDP exchange. | due to the presence or absence of an ongoing SDP exchange. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| A device with the CLUE Participant state machine in the ACTIVE state | A device with the CLUE Participant state machine in the ACTIVE state | |||
| MAY choose to delay moving from ESTABLISHED to ADV (Media Provider | <bcp14>MAY</bcp14> choose to delay moving from ESTABLISHED to ADV (Media Provide r | |||
| state machine) or from ESTABLISHED to WAIT FOR CONF RESPONSE (Media Consumer | state machine) or from ESTABLISHED to WAIT FOR CONF RESPONSE (Media Consumer | |||
| state machine) based on the SDP state. See | state machine) based on the SDP state. See | |||
| <xref target="I-D.ietf-clue-protocol"/> for CLUE state machine specifics. | <xref target="RFC8847" format="default"/> for CLUE state machine specifics. | |||
| Similarly, a device MAY choose to delay initiating a new SDP exchange based on | Similarly, a device <bcp14>MAY</bcp14> choose to delay initiating a new SDP exch | |||
| ange based on | ||||
| the state of their CLUE state machines. | the state of their CLUE state machines. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Constraints on sending media"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Constraints on Sending Media</name> | |||
| <t> | ||||
| While SDP and CLUE message states do not impose constraints on each other, | While SDP and CLUE message states do not impose constraints on each other, | |||
| both impose constraints on the sending of media - CLUE-controlled media MUST | both impose constraints on the sending of media -- CLUE-controlled media <bcp14> | |||
| NOT be sent unless it has been negotiated in both CLUE and SDP: an | MUST | |||
| implementation MUST NOT send a specific CLUE Capture Encoding unless its most | NOT</bcp14> be sent unless it has been negotiated in both CLUE and SDP: an | |||
| implementation <bcp14>MUST NOT</bcp14> send a specific CLUE Capture Encoding unl | ||||
| ess its most | ||||
| recent SDP exchange contains an active media channel for that Encoding AND | recent SDP exchange contains an active media channel for that Encoding AND | |||
| it has received a CLUE 'configure' message specifying a valid Capture for that | it has received a CLUE 'configure' message specifying a valid Capture for that | |||
| Encoding. | Encoding. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Recommendations for operating with non-atomic operations"> | <section numbered="true" toc="default"> | |||
| <name>Recommendations for Operating with Non-atomic Operations</name> | ||||
| <t> | <t> | |||
| CLUE-capable devices MUST be able to handle states in which CLUE messages make | CLUE-capable devices <bcp14>MUST</bcp14> be able to handle states in which CLUE messages make | |||
| reference to EncodingIDs that do not match the most recently received SDP, | reference to EncodingIDs that do not match the most recently received SDP, | |||
| irrespective of the order in which SDP and CLUE messages are received. While | irrespective of the order in which SDP and CLUE messages are received. While | |||
| these mismatches will usually be transitory a device MUST be able to cope | these mismatches will usually be transitory, a device <bcp14>MUST</bcp14> be abl e to cope | |||
| with such mismatches remaining indefinitely. However, this document makes some | with such mismatches remaining indefinitely. However, this document makes some | |||
| recommendations on message ordering for these non-atomic transitions. | recommendations on message ordering for these non-atomic transitions. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| CLUE-capable devices MUST ensure that any inconsistencies between SDP and | CLUE-capable devices <bcp14>MUST</bcp14> ensure that any inconsistencies between SDP and | |||
| CLUE signaling are temporary by sending updated SDP or CLUE messages as soon | CLUE signaling are temporary by sending updated SDP or CLUE messages as soon | |||
| as the relevant state machines and other constraints permit. | as the relevant state machines and other constraints permit. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Generally, implementations that receive messages for which they have | Generally, implementations that receive messages with | |||
| incomplete information will be most efficient if they wait until they have the | incomplete information will be most efficient if they wait until they have the | |||
| corresponding information they lack before sending messages to make changes | corresponding information they lack before sending messages to make changes | |||
| related to that information. For example, an answerer that receives a new SDP | related to that information. For example, an answerer that receives a new SDP | |||
| offer with three new "a=sendonly" CLUE "m=" lines for which it has received no | Offer with three new "a=sendonly" CLUE "m=" lines for which it has received no | |||
| CLUE 'advertisement' message providing the corresponding capture information | CLUE 'advertisement' message providing the corresponding capture information | |||
| would typically inclue corresponding "a=inactive" lines in its answer, and | would typically include corresponding "a=inactive" lines in its answer, and | |||
| only make a new SDP offer with "a=recvonly" when and if a new 'advertisement' | it would only make a new SDP Offer with "a=recvonly" when and if a new 'advertis | |||
| ement' | ||||
| message arrives with Captures relevant to those Encodings. | message arrives with Captures relevant to those Encodings. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Because of the constraints of SDP offer/answer and because new SDP | Because of the constraints of SDP Offer/Answer and because new SDP | |||
| negotiations are generally more 'costly' than sending a new CLUE message, | negotiations are generally more 'costly' than sending a new CLUE message, | |||
| implementations needing to make changes to both channels SHOULD prioritize | implementations needing to make changes to both channels <bcp14>SHOULD</bcp14> p rioritize | |||
| sending the updated CLUE message over sending the new SDP message. The aim is | sending the updated CLUE message over sending the new SDP message. The aim is | |||
| for the recipient to receive the CLUE changes before the SDP changes, allowing | for the recipient to receive the CLUE changes before the SDP changes, allowing | |||
| the recipient to send their SDP answers without incomplete information, | the recipient to send their SDP Answers without incomplete information and | |||
| reducing the number of new SDP offers required. | reducing the number of new SDP Offers required. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec.capture-id" numbered="true" toc="default"> | ||||
| <section title="Interaction of CLUE protocol and RTP/RTCP CaptureID" anchor=" | <name>Interaction of the CLUE Protocol and RTP/RTCP CaptureID</name> | |||
| sec.capture-id"> | ||||
| <t> | <t> | |||
| The <xref target="I-D.ietf-clue-framework">CLUE Framework</xref> allows for | The CLUE Framework <xref target="RFC8845" format="default"/> allows for | |||
| Multiple Content Captures (MCCs): Captures which contain multiple source | Multiple Content Captures (MCCs): Captures that contain multiple source | |||
| Captures, whether composited into a single stream or switched based on some | Captures, whether composited into a single stream or switched based on some | |||
| metric. | metric. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The Captures that contribute to these MCCs may or may not be defined in the | The Captures that contribute to these MCCs may or may not be defined in the | |||
| 'advertisement' message. If they are defined and the MCC is providing them in | 'advertisement' message. If they are defined and the MCC is providing them in | |||
| a switched format the recipient may wish to determine which originating source | a switched format, the recipient may wish to determine which originating source | |||
| Capture is currently being provided, so that they can apply geometric | Capture is currently being provided, so that they can apply geometric | |||
| corrections based on that Capture's geometry, or take some other action based | corrections based on that Capture's geometry or take some other action based | |||
| on the original Capture information. | on the original Capture information. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| To do this, <xref target="I-D.ietf-clue-rtp-mapping" /> allows for the | To do this, <xref target="RFC8849" format="default"/> allows for the CaptureID o | |||
| CaptureID of the originating Capture to be conveyed via RTP or RTCP. A Media | f the originating Capture to be conveyed via RTP or RTCP. A Media | |||
| Provider sending switched media for an MCC with defined originating sources | Provider sending switched media for an MCC with defined originating sources | |||
| MUST send the CaptureID in both RTP and RTCP, as described | <bcp14>MUST</bcp14> send the CaptureID in both RTP and RTCP, as described | |||
| in the mapping document. | in the mapping document. | |||
| </t> | </t> | |||
| <section title="CaptureID reception during MCC redefinition"> | <section numbered="true" toc="default"> | |||
| <t> | <name>CaptureID Reception during MCC Redefinition</name> | |||
| <t> | ||||
| Because the RTP/RTCP CaptureID is delivered via a different channel to the | Because the RTP/RTCP CaptureID is delivered via a different channel to the | |||
| 'advertisement' message in which in the contents of the MCC are defined there | 'advertisement' message in which in the contents of the MCC are defined, there | |||
| is an intrinsic race condition in cases in which the contents of an MCC are | is an intrinsic race condition in cases where the contents of an MCC are | |||
| redefined. | redefined. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| When a Media Provider redefines an MCC which involves CaptureIDs, the | When a Media Provider redefines an MCC that involves CaptureIDs, the | |||
| reception of the relevant CaptureIDs by the recipient will either lead or lag | reception of the relevant CaptureIDs by the recipient will either lead or lag re | |||
| reception and processing of the new 'advertisement' message by the recipient. | ception and the processing of the new 'advertisement' message by the recipient. | |||
| As such, a Media Consumer MUST NOT be disrupted by any of the following in any | As such, a Media Consumer <bcp14>MUST NOT</bcp14> be disrupted by any of the fol | |||
| lowing scenarios in any | ||||
| CLUE-controlled media stream it is receiving, whether that stream is for a | CLUE-controlled media stream it is receiving, whether that stream is for a | |||
| static Capture or for an MCC (as any static Capture may be redefined to an MCC | static Capture or for an MCC (as any static Capture may be redefined to an MCC | |||
| in a later 'advertisement' message): | in a later 'advertisement' message): | |||
| <list style='symbols'> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| Receiving RTP or RTCP containing a CaptureID when the most recently processed | <li> | |||
| 'advertisement' message means that none are expected. | By receiving RTP or RTCP containing a CaptureID when the most recently processed | |||
| </t> | 'advertisement' message means that no media CaptureIDs are expected. | |||
| <t> | </li> | |||
| Receiving RTP or RTCP without CaptureIDs when the most recently processed | <li> | |||
| By receiving RTP or RTCP without CaptureIDs when the most recently processed | ||||
| 'advertisement' message means that media CaptureIDs are expected. | 'advertisement' message means that media CaptureIDs are expected. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| Receiving a CaptureID in RTP or RTCP for a Capture defined in the most | By receiving a CaptureID in RTP or RTCP for a Capture defined in the most | |||
| recently processed 'advertisement' message, but which the same 'advertisement' | recently processed 'advertisement' message, but which the same 'advertisement' | |||
| message does not include in the MCC. | message does not include in the MCC. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| Receiving a CaptureID in RTP or RTCP for a Capture not defined in the most | By receiving a CaptureID in RTP or RTCP for a Capture not defined in the most | |||
| recently processed 'advertisement' message. | recently processed 'advertisement' message. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-bundle" numbered="true" toc="default"> | ||||
| <section title="Multiplexing of CLUE-controlled media using BUNDLE" anchor="s | <name>Multiplexing of CLUE-Controlled Media Using BUNDLE</name> | |||
| ec-bundle"> | <section numbered="true" toc="default"> | |||
| <section title="Overview"> | <name>Overview</name> | |||
| <t> | <t> | |||
| A CLUE call may involve sending and/or receiving significant numbers of media | A CLUE call may involve sending and/or receiving significant numbers of media | |||
| streams. Conventionally, media streams are sent and received on unique ports. | streams. Conventionally, media streams are sent and received on unique ports. | |||
| However, each separate port used for this purpose may impose costs that a | However, each separate port used for this purpose may impose costs that a | |||
| device wishes to avoid, such as the need to open that port on firewalls and | device wishes to avoid, such as the need to open that port on firewalls and | |||
| NATs, the need to collect <xref target="RFC8445">ICE candidates</xref>, etc. | NATs, the need to collect Interactive Connectivity Establishment (ICE) candidate | |||
| </t> | s <xref target="RFC8445" format="default"/>, etc. | |||
| <t> | </t> | |||
| The <xref target="I-D.ietf-mmusic-sdp-bundle-negotiation">BUNDLE</xref> | <t> | |||
| extension can be used to negotiate the multiplexing of multiple media lines | The BUNDLE extension <xref target="RFC8843" format="default"/> can be used to ne | |||
| gotiate the multiplexing of multiple media lines | ||||
| onto a single 5-tuple for sending and receiving media, allowing devices in | onto a single 5-tuple for sending and receiving media, allowing devices in | |||
| calls to another BUNDLE-supporting device to potentially avoid some of the | calls to another BUNDLE-supporting device to potentially avoid some of the | |||
| above costs. | above costs. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| While CLUE-capable devices MAY support the BUNDLE extension for this purpose | While CLUE-capable devices <bcp14>MAY</bcp14> support the BUNDLE extension for t | |||
| supporting the extension is not mandatory for a device to be CLUE-compliant. | his purpose, | |||
| </t> | supporting the extension is not mandatory for a device to be CLUE compliant. | |||
| <t> | </t> | |||
| A CLUE-capable device that supports BUNDLE SHOULD also support | <t> | |||
| <xref target="RFC5761">rtcp-mux</xref>. However, a CLUE-capable device that | A CLUE-capable device that supports BUNDLE <bcp14>SHOULD</bcp14> also support rt | |||
| cp-mux | ||||
| <xref target="RFC5761" format="default"/>. However, a CLUE-capable device that | ||||
| supports rtcp-mux may or may not support BUNDLE. | supports rtcp-mux may or may not support BUNDLE. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Usage of BUNDLE with CLUE"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Usage of BUNDLE with CLUE</name> | |||
| <t> | ||||
| This specification imposes no additional requirements or restrictions on the | This specification imposes no additional requirements or restrictions on the | |||
| usage of BUNDLE when used with CLUE. There is no restriction on combining | usage of BUNDLE when used with CLUE. There is no restriction on combining | |||
| CLUE-controlled media lines and non-CLUE-controlled media lines in the same | CLUE-controlled media lines and non-CLUE-controlled media lines in the same | |||
| BUNDLE group or in multiple such groups. However, there are several steps an | BUNDLE group or in multiple such groups. However, there are several steps an | |||
| implementation may wish to take to ameliorate the cost and time requirements | implementation may wish to take to ameliorate the cost and time requirements | |||
| of extra SDP offer/answer exchanges between CLUE and BUNDLE. | of extra SDP Offer/Answer exchanges between CLUE and BUNDLE. | |||
| </t> | </t> | |||
| <section title="Generating the Initial Offer"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Generating the Initial Offer</name> | |||
| BUNDLE mandates that the initial SDP offer MUST use a unique address for each | <t> | |||
| BUNDLE mandates that the initial SDP Offer <bcp14>MUST</bcp14> use a unique addr | ||||
| ess for each | ||||
| "m=" line with a non-zero port. Because CLUE implementations generally will | "m=" line with a non-zero port. Because CLUE implementations generally will | |||
| not include CLUE-controlled media lines with the exception of the data | not include CLUE-controlled media lines, with the exception of the data | |||
| channel in the initial SDP offer, CLUE devices that support large numbers of | channel in the initial SDP Offer, CLUE devices that support large numbers of | |||
| streams can avoid ever having to open large numbers of ports if they | streams can avoid ever having to open large numbers of ports if they | |||
| successfully negotiate BUNDLE. | successfully negotiate BUNDLE. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| An implementation that does include CLUE-controlled media lines in its initial | An implementation that does include CLUE-controlled media lines in its initial | |||
| SDP offer while also using BUNDLE must take care to avoid renderings its | SDP Offer while also using BUNDLE must take care to avoid rendering its | |||
| CLUE-controlled media lines unusable in the event the far end does not | CLUE-controlled media lines unusable in the event the far end does not | |||
| negotiate BUNDLE if it wishes to avoid the risk of additional SDP exchanges to | negotiate BUNDLE if it wishes to avoid the risk of additional SDP exchanges to | |||
| resolve this issue. This is best achieved by not sending any CLUE-controlled | resolve this issue. This is best achieved by not sending any CLUE-controlled | |||
| media lines in an initial offer with the 'bundle-only' attribute unless it has | media lines in an initial offer with the 'bundle-only' attribute unless it has | |||
| been established via some other channel that the recipient supports and is | been established via some other channel that the recipient supports and is | |||
| able to use BUNDLE. | able to use BUNDLE. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Multiplexing of the data channel and RTP media"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Multiplexing of the Data Channel and RTP Media</name> | |||
| BUNDLE-supporting CLUE-capable devices MAY include the data channel in the | <t> | |||
| same BUNDLE group as RTP media. In this case the device MUST be able to | BUNDLE-supporting CLUE-capable devices <bcp14>MAY</bcp14> include the data chann | |||
| demultiplex the various transports - see section 9.2 of the | el in the | |||
| <xref target="I-D.ietf-mmusic-sdp-bundle-negotiation">BUNDLE draft</xref>. If | same BUNDLE group as RTP media. In this case, the device <bcp14>MUST</bcp14> be | |||
| the BUNDLE group includes other protocols than the data channel transported | able to | |||
| via DTLS the device MUST also be able to differentiate the various protocols. | demultiplex the various transports -- see Section <xref target="RFC8843" section | |||
| </t> | ="9.2" sectionFormat="bare"/> of the BUNDLE specification <xref target="RFC8843" | |||
| </section> | />. If | |||
| the BUNDLE group includes protocols other than the data channel transported | ||||
| via DTLS, the device <bcp14>MUST</bcp14> also be able to differentiate the vario | ||||
| us protocols. | ||||
| </t> | ||||
| </section> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section title="Example: A call between two CLUE-capable Endpoints" anchor="s | <section anchor="sec-clueexample" numbered="true" toc="default"> | |||
| ec-clueexample"> | <name>Example: A Call between Two CLUE-Capable Endpoints</name> | |||
| <t> | <t> | |||
| This example illustrates a call between two CLUE-capable Endpoints. | This example illustrates a call between two CLUE-capable Endpoints. | |||
| Alice, initiating the call, is a system with three cameras and three screens. | Alice, initiating the call, is a system with three cameras and three screens. | |||
| Bob, receiving the call, is a system with two cameras and two screens. | Bob, receiving the call, is a system with two cameras and two screens. | |||
| A call-flow diagram is presented, followed by a summary of each message. | A call-flow diagram is presented, followed by a summary of each message. | |||
| </t> | </t> | |||
| <t> | <t keepWithPrevious="true"> | |||
| To manage the size of this section the SDP snippets only illustrate video "m=" | To manage the size of this section, the SDP snippets only illustrate video "m=" | |||
| lines. SIP ACKs are not always discussed. Note that BUNDLE is not in use. | lines. SIP ACKs are not always discussed. Note that BUNDLE is not in use. | |||
| </t> | </t> | |||
| <t> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <vspace blankLines="100" /> | ||||
| <figure> | ||||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------+ +-----------+ | +----------+ +-----------+ | |||
| | Alice | | Bob | | | Alice | | Bob | | |||
| | | | | | | | | | | |||
| +----+-----+ +-----+-----+ | +----+-----+ +-----+-----+ | |||
| | | | | | | |||
| | | | | | | |||
| | SIP INVITE 1 | | | SIP INVITE 1 | | |||
| |--------------------------------->| | |--------------------------------->| | |||
| | | | | | | |||
| | | | | | | |||
| skipping to change at line 879 ¶ | skipping to change at line 891 ¶ | |||
| |<---------------------------------| | |<---------------------------------| | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| |<########### MEDIA 3 ############>| | |<########### MEDIA 3 ############>| | |||
| | 2 video A->B, 2 video B->A | | | 2 video A->B, 2 video B->A | | |||
| |<################################>| | |<################################>| | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| v v | v v ]]></artwork> | |||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | <t> | |||
| In SIP INVITE 1, Alice sends Bob a SIP INVITE including in the SDP body the | In SIP INVITE 1, Alice sends Bob a SIP INVITE with the | |||
| basic audio and video capabilities and the data channel as per | basic audio and video capabilities and data channel included in the SIP body as | |||
| <xref target="I-D.ietf-mmusic-sctp-sdp"/>. Alice also includes the "sip.clue" | per | |||
| <xref target="RFC8841" format="default"/>. Alice also includes the "sip.clue" | ||||
| media feature tag in the INVITE. A snippet of the SDP showing the grouping | media feature tag in the INVITE. A snippet of the SDP showing the grouping | |||
| attribute and the video "m=" line are shown below. Alice has included a "CLUE" | attribute and the video "m=" line are shown below. Alice has included a "CLUE" | |||
| group, and included the mid corresponding to a data channel in the group (3). | group and the mid corresponding to a data channel in the group (3). | |||
| Note that Alice has chosen not to include any CLUE-controlled media in the | Note that Alice has chosen not to include any CLUE-controlled media in the | |||
| initial offer - the mid value of the video line is not included in the "CLUE" | initial offer -- the "mid" value of the video line is not included in the "CLUE" | |||
| group. | group. | |||
| <figure> | </t> | |||
| <artwork> | <sourcecode type="sdp"><![CDATA[ ... | |||
| <![CDATA[ | ||||
| ... | ||||
| a=group:CLUE 3 | a=group:CLUE 3 | |||
| ... | ... | |||
| m=video 6002 RTP/AVP 96 | m=video 6002 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=sendrecv | a=sendrecv | |||
| a=mid:2 | a=mid:2 | |||
| ... | ... | |||
| m=application 6100 UDP/DTLS/SCTP webrtc-datachannel | m=application 6100 UDP/DTLS/SCTP webrtc-datachannel | |||
| a=setup:actpass | a=setup:actpass | |||
| a=sctp-port: 5000 | a=sctp-port: 5000 | |||
| a=dcmap:2 subprotocol="CLUE";ordered=true | a=dcmap:2 subprotocol="CLUE";ordered=true | |||
| a=mid:3 | a=mid:3 ]]></sourcecode> | |||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | <t> | |||
| Bob responds with a similar SDP in SIP 200 OK 1, which also has a "CLUE" group | Bob responds with a similar SDP in SIP 200 OK 1, which also has a "CLUE" group | |||
| including the mid value of a data channel; due to their similarity no SDP | including the "mid" value of a data channel; due to their similarity, no SDP | |||
| snippet is shown here. Bob wishes to receive initial media, and so includes | snippet is shown here. Bob wishes to receive initial media and thus includes | |||
| corresponding non-CLUE-controlled audio and video lines. Bob also includes the | corresponding non-CLUE-controlled audio and video lines. Bob also includes the | |||
| "sip.clue" media feature tag in the 200 OK. Alice and Bob are each now able to | "sip.clue" media feature tag in the 200 OK. Alice and Bob are each now able to | |||
| send a single audio and video stream. This is illustrated as MEDIA 1. | send a single audio and video stream. This is illustrated as MEDIA 1. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| With the successful initial SDP Offer/Answer exchange complete Alice and Bob | With the successful initial SDP Offer/Answer exchange complete, Alice and Bob | |||
| are also free to negotiate the CLUE data channel. This is illustrated as CLUE | are also free to negotiate the CLUE data channel. This is illustrated as CLUE | |||
| DATA CHANNEL ESTABLISHED. | DATA CHANNEL ESTABLISHED. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Once the data channel is established CLUE protocol negotiation begins. In this | Once the data channel is established, CLUE protocol negotiation begins. In this | |||
| case Bob was the DTLS client (sending a=active in his SDP answer) and hence is | case, Bob was the DTLS client (sending "a=active" in his SDP Answer) and hence i | |||
| the CLUE Channel Initiator and sends a CLUE OPTIONS message describing his | s | |||
| version support. On receiving that message Alice sends her corresponding CLUE | the CLUE Channel Initiator. He sends a CLUE OPTIONS message describing his | |||
| version support. On receiving that message, Alice sends her corresponding CLUE | ||||
| OPTIONS RESPONSE. | OPTIONS RESPONSE. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| With the OPTIONS phase complete Alice now sends her CLUE 'advertisement' | With the OPTIONS phase complete, Alice now sends her CLUE 'advertisement' | |||
| message (CLUE ADVERTISEMENT 1). She advertises three static Captures | message (CLUE ADVERTISEMENT 1). She advertises three static Captures | |||
| representing her three cameras. She also includes switched Captures suitable | representing her three cameras. She also includes switched Captures suitable | |||
| for two- and one-screen systems. All of these Captures are in a single Capture | for systems with one or two screens. All of these Captures are in a single Captu | |||
| Scene, with suitable Capture Scene Views to tell Bob that he should either | re | |||
| subscribe to the three static Captures, the two switched Captures or the one | Scene, with suitable Capture Scene Views that tell Bob he should | |||
| switched Capture. Alice has no simultaneity constraints, so includes all six | subscribe to the three static Captures, the two switched Captures, or the one | |||
| Captures in one simultaneous set. Finally, Alice includes an Encoding Group | switched Capture. Alice has no simultaneity constraints, so all six | |||
| with three Encoding IDs: "enc1", "enc2" and "enc3". These Encoding IDs aren't | Captures are included in one simultaneous set. Finally, Alice includes an Encodi | |||
| currently valid, but will match the next SDP offer she sends. | ng Group | |||
| with three Encoding IDs: "enc1", "enc2", and "enc3". These Encoding IDs aren't | ||||
| currently valid but will match the next SDP Offer she sends. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Bob received CLUE ADVERTISEMENT 1 but does not yet send a 'configure' message, | Bob received CLUE ADVERTISEMENT 1 but does not yet send a 'configure' message, | |||
| because he has not yet received Alice's Encoding information, so as yet he | because he has not yet received Alice's Encoding information; thus, he | |||
| does not know if she will have sufficient resources to send him the two | does not know if she will have sufficient resources in order to send him the two | |||
| streams he ideally wants at a quality he is happy with. Because Bob is not | streams he ideally wants at a quality he is happy with. Because Bob is not | |||
| sending an immediate 'configure' message with the "ack" element set he must | sending an immediate 'configure' message with the "ack" element set, he must | |||
| send an explicit 'ack' message (CLUE ACK 1) to signal receipt of CLUE | send an explicit 'ack' message (CLUE ACK 1) to signal receipt of CLUE | |||
| ADVERTISEMENT 1. | ADVERTISEMENT 1. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Bob also sends his CLUE 'advertisement' message (CLUE ADVERTISEMENT 2) - | Bob also sends his CLUE 'advertisement' message (CLUE ADVERTISEMENT 2) -- | |||
| though the diagram shows that this occurs after Alice sends CLUE ADVERTISEMENT | though the diagram shows that this occurs after Alice sends CLUE ADVERTISEMENT | |||
| 1 Bob sends his 'advertisement' message independently and does not wait for | 1, Bob sends his 'advertisement' message independently and does not wait for | |||
| CLUE ADVERTISEMENT 1 to arrive. He advertises two static Captures representing | CLUE ADVERTISEMENT 1 to arrive. He advertises two static Captures representing | |||
| his cameras. He also includes a single composed Capture for single-screen | his cameras. He also includes a single composed Capture for single-screen | |||
| systems, in which he will composite the two camera views into a single video | systems, in which he will composite the two camera views into a single video | |||
| stream. All three Captures are in a single Capture Scene, with suitable | stream. All three Captures are in a single Capture Scene, with suitable | |||
| Capture Scene Views to tell Alice that she should either subscribe to the two | Capture Scene Views that tell Alice she should subscribe to either the two | |||
| static Captures, or the single composed Capture. Bob also has no simultaneity | static Captures or the single composed Capture. Bob also has no simultaneity | |||
| constraints, so includes all three Captures in one simultaneous set. Bob also | constraints, so he includes all three Captures in one simultaneous set. Bob also | |||
| includes a single Encoding Group with two Encoding IDs: "foo" and "bar". | includes a single Encoding Group with two Encoding IDs: "foo" and "bar". | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Similarly, Alice receives CLUE ADVERTISEMENT 2 but does not yet send a | Similarly, Alice receives CLUE ADVERTISEMENT 2 but does not yet send a | |||
| 'configure' message, because she has not yet received Bob's Encoding | 'configure' message, because she has not yet received Bob's Encoding | |||
| information, sending instead an 'ack' message (CLUE ACK 2). | information; instead, she sends an 'ack' message (CLUE ACK 2). | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Both sides have now sent their CLUE 'advertisement' messages and an SDP | Both sides have now sent their CLUE 'advertisement' messages, and an SDP | |||
| exchange is required to negotiate Encodings. For simplicity, in this case | exchange is required to negotiate Encodings. For simplicity, in this case, | |||
| Alice is shown sending an INVITE with a new offer; in many implementations | Alice is shown sending an INVITE with a new offer; in many implementations, | |||
| both sides might send an INVITE, which would be resolved by use of the 491 | both sides might send an INVITE, which would be resolved by use of the 491 | |||
| Request Pending resolution mechanism from <xref target="RFC3261"/>. | Request Pending resolution mechanism from <xref target="RFC3261" format="default "/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Alice now sends SIP INVITE 2. She maintains the sendrecv audio, video and CLUE | Alice now sends SIP INVITE 2. She maintains the sendrecv audio, video, and CLUE | |||
| "m=" lines, and she adds three new sendonly "m=" lines to represent the three | "m=" lines, and she adds three new sendonly "m=" lines to represent the three | |||
| CLUE-controlled Encodings she can send. Each of these "m=" lines has a label | CLUE-controlled Encodings she can send. Each of these "m=" lines has a label | |||
| corresponding to one of the Encoding IDs from CLUE ADVERTISEMENT 1. Each also | corresponding to one of the Encoding IDs from CLUE ADVERTISEMENT 1. Each also | |||
| has its mid added to the grouping attribute to show they are controlled by the | has its mid added to the grouping attribute to show they are controlled by the | |||
| CLUE data channel. A snippet of the SDP showing the grouping attribute, data | CLUE data channel. A snippet of the SDP showing the grouping attribute, data | |||
| channel and the video "m=" lines are shown below: | channel, and video "m=" lines are shown below: | |||
| <figure> | </t> | |||
| <artwork> | <sourcecode type="sdp"><![CDATA[ ... | |||
| <![CDATA[ | ||||
| ... | ||||
| a=group:CLUE 3 4 5 6 | a=group:CLUE 3 4 5 6 | |||
| ... | ... | |||
| m=video 6002 RTP/AVP 96 | m=video 6002 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=sendrecv | a=sendrecv | |||
| a=mid:2 | a=mid:2 | |||
| ... | ... | |||
| m=application 6100 UDP/DTLS/SCTP webrtc-datachannel | m=application 6100 UDP/DTLS/SCTP webrtc-datachannel | |||
| a=sctp-port: 5000 | a=sctp-port: 5000 | |||
| skipping to change at line 1023 ¶ | skipping to change at line 1023 ¶ | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016 | a=fmtp:96 profile-level-id=42e016 | |||
| a=sendonly | a=sendonly | |||
| a=mid:5 | a=mid:5 | |||
| a=label:enc2 | a=label:enc2 | |||
| m=video 6008 RTP/AVP 96 | m=video 6008 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016 | a=fmtp:96 profile-level-id=42e016 | |||
| a=sendonly | a=sendonly | |||
| a=mid:6 | a=mid:6 | |||
| a=label:enc3 | a=label:enc3 ]]></sourcecode> | |||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | <t> | |||
| Bob now has all the information he needs to decide which streams to configure, | Bob now has all the information he needs to decide which streams to configure, | |||
| allowing him to send both a CLUE 'configure' message and his SDP answer. As | allowing him to send both a CLUE 'configure' message and his SDP Answer. As | |||
| such he now sends CLUE CONFIGURE 1. This requests the pair of switched | such, he now sends CLUE CONFIGURE 1. This requests the pair of switched | |||
| Captures that represent Alice's scene, and he configures them with encoder ids | Captures that represent Alice's scene, and he configures them with encoder ids | |||
| "enc1" and "enc2". | "enc1" and "enc2". | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Bob also sends his SDP answer as part of SIP 200 OK 2. Alongside his original | Bob also sends his SDP Answer as part of SIP 200 OK 2. Alongside his original | |||
| audio, video and CLUE "m=" lines he includes three additional "m=" lines | audio, video, and CLUE "m=" lines, he includes three additional "m=" lines | |||
| corresponding to the three added by Alice; two active recvonly "m= "lines and | corresponding to the three added by Alice: two active recvonly "m= "lines and | |||
| an inactive "m=" line for the third. He adds their mid values to the grouping | an inactive "m=" line for the third. He adds their "mid" values to the grouping | |||
| attribute to show they are controlled by the CLUE data channel. A snippet of | attribute to show they are controlled by the CLUE data channel. A snippet of | |||
| the SDP showing the grouping attribute and the video "m=" lines are shown | the SDP showing the grouping attribute and the video "m=" lines are shown | |||
| below (mid 100 represents the CLUE data channel, not shown): | below (mid 100 represents the CLUE data channel, which is not shown): | |||
| <figure> | </t> | |||
| <artwork> | <sourcecode type="sdp"><![CDATA[ ... | |||
| <![CDATA[ | ||||
| ... | ||||
| a=group:CLUE 11 12 13 100 | a=group:CLUE 11 12 13 100 | |||
| ... | ... | |||
| m=video 58722 RTP/AVP 96 | m=video 58722 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=sendrecv | a=sendrecv | |||
| a=mid:10 | a=mid:10 | |||
| ... | ... | |||
| m=video 58724 RTP/AVP 96 | m=video 58724 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| skipping to change at line 1069 ¶ | skipping to change at line 1063 ¶ | |||
| a=mid:11 | a=mid:11 | |||
| m=video 58726 RTP/AVP 96 | m=video 58726 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=recvonly | a=recvonly | |||
| a=mid:12 | a=mid:12 | |||
| m=video 58728 RTP/AVP 96 | m=video 58728 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=inactive | a=inactive | |||
| a=mid:13 | a=mid:13 ]]></sourcecode> | |||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | <t> | |||
| Alice receives Bob's message CLUE CONFIGURE 1 and sends CLUE CONFIGURE | Alice receives Bob's CLUE CONFIGURE 1 message and sends CLUE CONFIGURE | |||
| RESPONSE 1 to ack its reception. She does not yet send the Capture Encodings | RESPONSE 1 to acknowledge its reception. She does not yet send the Capture Encod | |||
| specified, because at this stage she hasn't processed Bob's answer SDP and so | ings | |||
| specified, because at this stage, she hasn't processed Bob's answer SDP and thus | ||||
| hasn't negotiated the ability for Bob to receive these streams. | hasn't negotiated the ability for Bob to receive these streams. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| On receiving SIP 200 OK 2 from Bob Alice sends her SIP ACK (SIP ACK 2). She is | On receiving SIP 200 OK 2 from Bob, Alice sends her SIP ACK (SIP ACK 2). She is | |||
| now able to send the two streams of video Bob requested - this is illustrated | now able to send the two streams of video Bob requested -- this is illustrated | |||
| as MEDIA 2. | as MEDIA 2. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The constraints of offer/answer meant that Bob could not include his encoding | The constraints of offer/answer meant that Bob could not include his Encoding | |||
| information as new "m=" lines in SIP 200 OK 2. As such Bob now sends SIP | information as new "m=" lines in SIP 200 OK 2. As such, Bob now sends SIP | |||
| INVITE 3 to generate a new offer. Along with all the streams from SIP 200 OK 2 | INVITE 3 to generate a new offer. Along with all the streams from SIP 200 OK 2, | |||
| Bob also includes two new sendonly streams. Each stream has a label | Bob also includes two new sendonly streams. Each stream has a label | |||
| corresponding to the Encoding IDs in his CLUE ADVERTISEMENT 2 message. He also | corresponding to the Encoding IDs in his CLUE ADVERTISEMENT 2 message. He also | |||
| adds their mid values to the grouping attribute to show they are controlled by | adds their "mid" values to the grouping attribute to show they are controlled by | |||
| the CLUE data channel. A snippet of the SDP showing the grouping attribute and | the CLUE data channel. A snippet of the SDP showing the grouping attribute and | |||
| the video "m=" lines are shown below (mid 100 represents the CLUE data | the video "m=" lines are shown below (mid 100 represents the CLUE data | |||
| channel, not shown): | channel, which is not shown): | |||
| <figure> | </t> | |||
| <artwork> | <sourcecode type="sdp"><![CDATA[ ... | |||
| <![CDATA[ | ||||
| ... | ||||
| a=group:CLUE 11 12 14 15 100 | a=group:CLUE 11 12 14 15 100 | |||
| ... | ... | |||
| m=video 58722 RTP/AVP 96 | m=video 58722 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=sendrecv | a=sendrecv | |||
| a=mid:10 | a=mid:10 | |||
| ... | ... | |||
| m=video 58724 RTP/AVP 96 | m=video 58724 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| skipping to change at line 1130 ¶ | skipping to change at line 1118 ¶ | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016 | a=fmtp:96 profile-level-id=42e016 | |||
| a=sendonly | a=sendonly | |||
| a=label:foo | a=label:foo | |||
| a=mid:14 | a=mid:14 | |||
| m=video 58730 RTP/AVP 96 | m=video 58730 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016 | a=fmtp:96 profile-level-id=42e016 | |||
| a=sendonly | a=sendonly | |||
| a=label:bar | a=label:bar | |||
| a=mid:15 | a=mid:15 ]]></sourcecode> | |||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | <t> | |||
| Having received this, Alice now has all the information she needs to send | Having received this, Alice now has all the information she needs to send | |||
| her CLUE 'configure' message and her SDP answer. In CLUE CONFIGURE 2 she | her CLUE 'configure' message and her SDP Answer. In CLUE CONFIGURE 2, she | |||
| requests the two static Captures from Bob, to be sent on Encodings "foo" and | requests the two static Captures from Bob to be sent on Encodings "foo" and | |||
| "bar". | "bar". | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Alice also sends SIP 200 OK 3, matching two recvonly "m=" lines to Bob's new | Alice also sends SIP 200 OK 3, matching two recvonly "m=" lines to Bob's new | |||
| sendonly lines. She includes their mid values in the grouping attribute to | sendonly lines. She includes their "mid" values in the grouping attribute to | |||
| show they are controlled by the CLUE cdata hannel. Alice also now deactivates | show they are controlled by the CLUE data channel. Alice then deactivates | |||
| the initial non-CLUE-controlled media, as bidirectional CLUE-controlled media | the initial non-CLUE-controlled media, as bidirectional CLUE-controlled media | |||
| is now available. A snippet of the SDP showing the grouping attribute and the | is now available. A snippet of the SDP showing the grouping attribute and the | |||
| video "m=" lines are shown below (mid 3 represents the data channel, not | video "m=" lines are shown below (mid 3 represents the data channel, not | |||
| shown): | shown): | |||
| <figure> | </t> | |||
| <artwork> | <sourcecode type="sdp"><![CDATA[ ... | |||
| <![CDATA[ | ||||
| ... | ||||
| a=group:CLUE 3 4 5 7 8 | a=group:CLUE 3 4 5 7 8 | |||
| ... | ... | |||
| m=video 0 RTP/AVP 96 | m=video 0 RTP/AVP 96 | |||
| a=mid:2 | a=mid:2 | |||
| ... | ... | |||
| m=video 6004 RTP/AVP 96 | m=video 6004 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016 | a=fmtp:96 profile-level-id=42e016 | |||
| a=sendonly | a=sendonly | |||
| a=mid:4 | a=mid:4 | |||
| skipping to change at line 1181 ¶ | skipping to change at line 1163 ¶ | |||
| a=mid:6 | a=mid:6 | |||
| m=video 6010 RTP/AVP 96 | m=video 6010 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=recvonly | a=recvonly | |||
| a=mid:7 | a=mid:7 | |||
| m=video 6012 RTP/AVP 96 | m=video 6012 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=recvonly | a=recvonly | |||
| a=mid:8 | a=mid:8 ]]></sourcecode> | |||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | <t> | |||
| Bob receives Alice's message CLUE CONFIGURE 2 and sends CLUE CONFIGURE | Bob receives Alice's CLUE CONFIGURE 2 message and sends CLUE CONFIGURE | |||
| RESPONSE 2 to ack its reception. Bob does not yet send the Capture Encodings | RESPONSE 2 to acknowledge its reception. Bob does not yet send the Capture Encod | |||
| specified, because he hasn't yet received and processed Alice's SDP answer | ings | |||
| specified, because he hasn't yet received and processed Alice's SDP Answer | ||||
| and negotiated the ability to send these streams. | and negotiated the ability to send these streams. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Finally, on receiving SIP 200 OK 3 Bob is now able to send the two streams of | Finally, on receiving SIP 200 OK 3, Bob is now able to send the two streams of | |||
| video Alice requested - this is illustrated as MEDIA 3. | video Alice requested -- this is illustrated as MEDIA 3. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Both sides of the call are now sending multiple video streams with their | Both sides of the call are now sending multiple video streams with their | |||
| sources defined via CLUE negotiation. As the call progresses either side can | sources defined via CLUE negotiation. As the call progresses, either side can | |||
| send new 'advertisement' or 'configure' message or new SDP offer/answers to | send a new 'advertisement' or 'configure' message or the new SDP Offers/Answers | |||
| add, remove or change what they have available or want to receive. | to | |||
| add, remove, or change what they have available or want to receive. | ||||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="sec-nonclueexample" numbered="true" toc="default"> | ||||
| <section title="Example: A call between a CLUE-capable and non-CLUE Endpoint" | <name>Example: A Call between a CLUE-Capable and Non-CLUE Endpoint</name> | |||
| anchor="sec-nonclueexample"> | ||||
| <t> | <t> | |||
| In this brief example Alice is a CLUE-capable Endpoint making a call to Bob, | In this brief example, Alice is a CLUE-capable Endpoint making a call to Bob, | |||
| who is not CLUE-capable (i.e. is not able to use the CLUE protocol). | who is not CLUE capable (i.e., is not able to use the CLUE protocol). | |||
| </t> | </t> | |||
| <figure> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork> | ||||
| <![CDATA[ | ||||
| +----------+ +-----------+ | +----------+ +-----------+ | |||
| | Alice | | Bob | | | Alice | | Bob | | |||
| | | | | | | | | | | |||
| +----+-----+ +-----+-----+ | +----+-----+ +-----+-----+ | |||
| | | | | | | |||
| | | | | | | |||
| | SIP INVITE 1 | | | SIP INVITE 1 | | |||
| |--------------------------------->| | |--------------------------------->| | |||
| | | | | | | |||
| | | | | | | |||
| skipping to change at line 1239 ¶ | skipping to change at line 1214 ¶ | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| |<########### MEDIA 1 ############>| | |<########### MEDIA 1 ############>| | |||
| | 1 video A->B, 1 video B->A | | | 1 video A->B, 1 video B->A | | |||
| |<################################>| | |<################################>| | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| v v | v v ]]></artwork> | |||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| <t> | <t> | |||
| In SIP INVITE 1, Alice sends Bob a SIP INVITE including in the SDP body the | In SIP INVITE 1, Alice sends Bob a SIP INVITE including the | |||
| basic audio and video capabilities and the data channel as per | basic audio and video capabilities and data channel in the SDP body as per | |||
| <xref target="I-D.ietf-mmusic-sctp-sdp"/>. Alice also includes the "sip.clue" | <xref target="RFC8841" format="default"/>. Alice also includes the "sip.clue" | |||
| media feature tag in the INVITE. A snippet of the SDP showing the grouping | media feature tag in the INVITE. A snippet of the SDP showing the grouping | |||
| attribute and the video "m=" line are shown below. Alice has included a "CLUE" | attribute and the video "m=" line are shown below. Alice has included a "CLUE" | |||
| group, and included the mid corresponding to a data channel in the group (3). | group and the mid corresponding to a data channel in the group (3). | |||
| Note that Alice has chosen not to include any CLUE-controlled media in the | Note that Alice has chosen not to include any CLUE-controlled media in the | |||
| initial offer - the mid value of the video line is not included in the "CLUE" | initial offer -- the "mid" value of the video line is not included in the "CLUE" | |||
| group. | group. | |||
| <figure> | </t> | |||
| <artwork> | <sourcecode type="sdp"><![CDATA[ ... | |||
| <![CDATA[ | ||||
| ... | ||||
| a=group:CLUE 3 | a=group:CLUE 3 | |||
| ... | ... | |||
| m=video 6002 RTP/AVP 96 | m=video 6002 RTP/AVP 96 | |||
| a=rtpmap:96 H264/90000 | a=rtpmap:96 H264/90000 | |||
| a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
| a=sendrecv | a=sendrecv | |||
| a=mid:2 | a=mid:2 | |||
| ... | ... | |||
| m=application 6100 UDP/DTLS/SCTP webrtc-datachannel | m=application 6100 UDP/DTLS/SCTP webrtc-datachannel | |||
| a=sctp-port: 5000 | a=sctp-port: 5000 | |||
| a=dcmap:2 subprotocol="CLUE";ordered=true | a=dcmap:2 subprotocol="CLUE";ordered=true | |||
| a=mid:3 | a=mid:3 ]]></sourcecode> | |||
| ]]> | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| <t> | <t> | |||
| Bob is not CLUE-capable, and hence does not recognize the "CLUE" semantic for | Bob is not CLUE capable and hence does not recognize the "CLUE" semantic for | |||
| grouping attribute, nor does he support the data channel. IN SIP 200 OK 1 he | the grouping attribute, nor does he support the data channel. IN SIP 200 OK 1, h | |||
| responds with an answer with audio and video, but with the data channel | e | |||
| responds with an answer that includes audio and video, but with the data channel | ||||
| zeroed. | zeroed. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| From the lack of a CLUE group Alice understands that Bob does not support | From the lack of a CLUE group, Alice understands that Bob does not support | |||
| CLUE, or does not wish to use it. Both sides are now able to send a single | CLUE, or does not wish to use it. Both sides are now able to send a single | |||
| audio and video stream to each other. Alice at this point begins to send her | audio and video stream to each other. At this point, Alice begins to send her | |||
| fallback video: in this case likely a switched view from whichever camera | fallback video: in this case, it's likely a switched view from whichever camera | |||
| shows the current loudest participant on her side. | shows the current loudest participant on her side. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section title="Acknowledgements"> | ||||
| <t> | ||||
| Besides the authors, the team focusing on this draft consists of: | ||||
| Roni Even, | ||||
| Simon Pietro-Romano, | ||||
| Roberta Presta. | ||||
| </t> | ||||
| <t> | ||||
| Christian Groves, Jonathan Lennox and Adam Roach have contributed detailed | ||||
| comments and suggestions. | ||||
| </t> | ||||
| </section> | ||||
| <section title="IANA Considerations"> | <section numbered="true" toc="default"> | |||
| <section title="New SDP Grouping Framework Attribute"> | <name>IANA Considerations</name> | |||
| <t> | <section numbered="true" toc="default"> | |||
| <name>New SDP Grouping Framework Attribute</name> | ||||
| <t> | ||||
| This document registers the following semantics with IANA in the | This document registers the following semantics with IANA in the | |||
| "Semantics for the "group" SDP Attribute" subregistry (under the | "Semantics for the 'group' SDP Attribute" subregistry (under the | |||
| "Session Description Protocol (SDP) Parameters" registry per | "Session Description Protocol (SDP) Parameters" registry) per | |||
| <xref target="RFC5888"/>: | <xref target="RFC5888" format="default"/>: | |||
| </t> | </t> | |||
| <figure> | ||||
| <artwork> | <table anchor="IANA_table_1" align="left"> | |||
| <![CDATA[ | <thead> | |||
| Semantics Token Reference | <tr> | |||
| CLUE-controlled m-line CLUE [this draft] | <th align='center'>Semantics</th> | |||
| ]]> | <th align='center'>Token</th> | |||
| </artwork> | <th align='center'>Mux Category</th> | |||
| </figure> | <th align='center'>Reference</th> | |||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="center">CLUE-controlled "m=" line</td> | ||||
| <td align="left">CLUE</td> | ||||
| <td align="left">NORMAL</td> | ||||
| <td align="left">RFC 8848</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | </section> | |||
| <section title="New SIP Media Feature Tag"> | <section numbered="true" toc="default"> | |||
| <t> | <name>New SIP Media Feature Tag</name> | |||
| This specification registers a new media feature tag in the | <t> | |||
| <xref target="RFC3261">SIP</xref> tree per the procedures defined in | This specification registers a new media feature tag in the SIP | |||
| <xref target="RFC2506"/> and <xref target="RFC3840"/>. | <xref target="RFC3261" format="default"/> tree per the procedures defined in | |||
| </t> | <xref target="RFC2506" format="default"/> and <xref target="RFC3840" format="def | |||
| <t> | ault"/>. | |||
| Media feature tag name: sip.clue | </t> | |||
| </t> | <dl newline="false" spacing="normal"> | |||
| <t> | <dt>Media feature tag name:</dt><dd>sip.clue</dd> | |||
| ASN.1 Identifier: [to be assigned] | ||||
| </t> | <dt>ASN.1 Identifier:</dt><dd>30</dd> | |||
| <t> | ||||
| Summary of the media feature indicated by this tag: This feature tag indicates | <dt>Summary of the media feature indicated by this tag:</dt><dd>This feature tag | |||
| that the device supports CLUE-controlled media. | indicates | |||
| </t> | that the device supports CLUE-controlled media.</dd> | |||
| <t> | ||||
| Values appropriate for use with this feature tag: Boolean. | <dt>Values appropriate for use with this feature tag:</dt><dd>Boolean.</dd> | |||
| </t> | ||||
| <t> | <dt>The feature tag is intended primarily for use in the following | |||
| The feature tag is intended primarily for use in the following | applications, protocols, services, or negotiation mechanisms:</dt> | |||
| applications, protocols, services, or negotiation mechanisms: | <dd><t><br/>This feature tag is most useful in a communications application for | |||
| </t> | describing the capabilities of a device to use the CLUE control protocol to nego | |||
| <t> | tiate the use of multiple media streams.</t></dd> | |||
| This feature tag is most useful in a communications application for | ||||
| describing the capabilities of a device to use the CLUE control protocol to | <dt>Related standards or documents:</dt><dd>RFC 8848</dd> | |||
| negotiate the use of multiple media streams. | ||||
| </t> | <dt>Security Considerations:</dt><dd>Security considerations for this media | |||
| <t> | feature tag are discussed in <xref target="sec.security" format="default"/> of | |||
| Related standards or documents: [this draft] | RFC 8848.</dd> | |||
| </t> | ||||
| <t> | <dt>Name(s) & email address(es) of person(s) to contact for further | |||
| Security Considerations: Security considerations for this media | information:</dt><dd>Internet Engineering Steering Group <iesg@ietf.org></ | |||
| feature tag are discussed in <xref target="sec.security" /> of | dd> | |||
| [this draft]. | ||||
| </t> | <dt>Intended usage:</dt><dd>COMMON</dd> | |||
| <t> | </dl> | |||
| Name(s) & email address(es) of person(s) to contact for further | ||||
| information: | ||||
| </t> | ||||
| <t><list style='symbols'> | ||||
| <t> | ||||
| Internet Engineering Steering Group: iesg@ietf.org | ||||
| </t> | ||||
| </list></t> | ||||
| <t> | ||||
| Intended usage: COMMON | ||||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section title="Security Considerations" anchor="sec.security"> | <section anchor="sec.security" numbered="true" toc="default"> | |||
| <name>Security Considerations</name> | ||||
| <t> | <t> | |||
| CLUE makes use of a number of protocols and mechanisms, either defined by CLUE | CLUE makes use of a number of protocols and mechanisms, either defined by CLUE | |||
| or long-standing. The security considerations section of the | or long-standing. The Security Considerations section of the | |||
| <xref target="I-D.ietf-clue-framework">CLUE Framework</xref> addresses the | CLUE Framework document <xref target="RFC8845" format="default"/> addresses the | |||
| need to secure these mechanisms by following the recommendations of the | need to secure these mechanisms by following the recommendations of the | |||
| individual protocols. | individual protocols. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Beyond the need to secure the constituent protocols, the use of CLUE does | Beyond the need to secure the constituent protocols, the use of CLUE does | |||
| impose additional security concerns. One area of increased risk involves the | impose additional security concerns. One area of increased risk involves the | |||
| potential for a malicious party to subvert a CLUE-capable device to attack a | potential for a malicious party to subvert a CLUE-capable device to attack a | |||
| third party by driving large volumes of media (particularly video) traffic at | third party by driving large volumes of media (particularly video) traffic at | |||
| them by establishing a connection to the CLUE-capable device and directing the | them by establishing a connection to the CLUE-capable device and directing the | |||
| media to the victim. While this is a risk for all media devices, a | media to the victim. While this is a risk for all media devices, a | |||
| CLUE-capable device may allow the attacker to configure multiple media streams | CLUE-capable device may allow the attacker to configure multiple media streams | |||
| to be sent, significantly increasing the volume of traffic directed at the | to be sent, significantly increasing the volume of traffic directed at the | |||
| victim. | victim. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| This attack can be prevented by ensuring that the media recipient intends to | This attack can be prevented by ensuring that the media recipient intends to | |||
| receive the media packets. As such all CLUE-capable devices MUST support key | receive the media packets. As such, all CLUE-capable devices <bcp14>MUST</bcp14> | |||
| negotiation and receiver intent assurance via | support key | |||
| <xref target="RFC5763">DTLS-SRTP</xref> on CLUE-controlled RTP "m=" lines, and | negotiation and receiver intent assurance via DTLS / Secure Real-time Transport | |||
| MUST use it or some other mechanism that provides receiver intent assurance. | Protocol (SRTP) <xref target="RFC5763" format="default"/> on CLUE-controlled RTP | |||
| "m=" lines, and they | ||||
| <bcp14>MUST</bcp14> use it or some other mechanism that provides receiver intent | ||||
| assurance. | ||||
| All CLUE-controlled RTP "m" lines must be secured and implemented using | All CLUE-controlled RTP "m" lines must be secured and implemented using | |||
| mechanisms such as <xref target="RFC3711">SRTP</xref>. CLUE implementations | mechanisms such as SRTP <xref target="RFC3711" format="default"/>. CLUE implemen | |||
| MAY choose not to require the use of SRTP to secure legacy | tations | |||
| <bcp14>MAY</bcp14> choose not to require the use of SRTP to secure legacy | ||||
| (non-CLUE-controlled) media for backwards compatibility with older SIP clients | (non-CLUE-controlled) media for backwards compatibility with older SIP clients | |||
| that are incapable of supporting it. | that are incapable of supporting it. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| CLUE also defines a new media feature tag that indicates CLUE support. This | CLUE also defines a new media feature tag that indicates CLUE support. This | |||
| tag may be present even in non-CLUE calls, which increases the metadata | tag may be present even in non-CLUE calls, which increases the metadata | |||
| available about the sending device, which can help an attacker differentiate | available about the sending device; this can help an attacker differentiate | |||
| between multiple devices and help them identify otherwise anonymised users | between multiple devices and identify otherwise anonymized users | |||
| via the fingerprint of features their device supports. To prevent this, SIP | via the fingerprint of features their device supports. To prevent this, SIP | |||
| signaling used to set up CLUE sessions SHOULD always be encrypted using | signaling used to set up CLUE sessions <bcp14>SHOULD</bcp14> always be encrypted | |||
| <xref target="RFC5630">TLS</xref>. | using | |||
| TLS <xref target="RFC5630" format="default"/>. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| The CLUE protocol also carries additional information that could be used to | The CLUE protocol also carries additional information that could be used to | |||
| help fingerprint a particular user or to identify the specific version of | help fingerprint a particular user or to identify the specific version of | |||
| software being used. | software being used. | |||
| <xref target="I-D.ietf-clue-protocol">CLUE Framework</xref> provides details | The CLUE Framework <xref target="RFC8847" format="default"/> provides details | |||
| of these issues and how to mitigate them. | about these issues and how to mitigate them. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </middle> | ||||
| <back> | ||||
| <section title="Change History"> | <references> | |||
| <t> | ||||
| Note to RFC Editor: please remove this section prior to publication | ||||
| </t> | ||||
| <t><list style='hanging'> | ||||
| <t hangText="-15:"> Revision by Rob Hanton | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Clarified that using an 'EncID' defined in SDP in an CLUE ADVERTISEMENT message | ||||
| is only a SHOULD because of the inherent race conditions about the ordering of t | ||||
| he SDP and CLUE message. In contrast, changed the use of 'EncID' in a CLUE CONFI | ||||
| GURE message to a MUST as that is defined by the far end and so there is no way | ||||
| for the sending of the CONFIGURE to anticipate it. | ||||
| </t> | ||||
| <t> | ||||
| Updated the description of handling the failure of the CLUE channel to reflect t | ||||
| he fact that the protocol state machine now returns to the IDLE state on failure | ||||
| rather than a specific termination state, which also means defining an allowanc | ||||
| e for the CLUE channel being recovered. | ||||
| </t> | ||||
| <t> | ||||
| Updated all instances of advertisment, configure and ack messages throughout to | ||||
| match the styling of the protocol document | ||||
| </t> | ||||
| <t> | ||||
| Security section updated to make DTLs-SRTP mandatory to use as well as support u | ||||
| nless intent assurance is provided by some other mechanism per mailing list prop | ||||
| osal (to resolve the concern from a previous IETF session of those wanting to us | ||||
| e CLUE in a closed environment where intent assurance was provided by other pror | ||||
| ietary mechanisms). | ||||
| </t> | ||||
| <t> | ||||
| Removed OID value for "sip.clue" media feature tag pending its actual assignment | ||||
| on registration, leaving a placeholder | ||||
| </t> | ||||
| <t> | ||||
| All lower-case uses of 'must', 'should' and 'may' reviewed and a few made normat | ||||
| ive | ||||
| </t> | ||||
| <t> | ||||
| Fixed various spelling mistakes, clarified grammar, and fixed a copy/paste error | ||||
| . | ||||
| </t> | ||||
| <t> | ||||
| Updated boilerplate to RFC 8174 | ||||
| </t> | ||||
| <t> | ||||
| Some informative references moved to normative. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-14:"> Revision by Rob Hanton | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Reference to RFC5245 updated to RFC8445 | ||||
| </t> | ||||
| <t> | ||||
| Updated my name to reflect surname change (Hansen to Hanton). | ||||
| </t> | ||||
| <t> | ||||
| Reviewed recent changes to clue protocol document and concluded that none | ||||
| affected this document | ||||
| </t> | ||||
| <t> | ||||
| Added recommendation that the SDP O/A spec and clue protocol be read prior to | ||||
| this document | ||||
| </t> | ||||
| <t> | ||||
| Several acronyms expanded at the point of initial use | ||||
| </t> | ||||
| <t> | ||||
| Some unnecessary normative language replaced with prose | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-13:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Added a section on handling failures of the protocol channel or data channel mid | ||||
| -call - | ||||
| instructions are that media must continue as if the clue channel were still esta | ||||
| blished | ||||
| and unchanged until CLUE is disabled by either side via SDP exchange. | ||||
| </t> | ||||
| <t> | ||||
| Example in section on efficient operation with non-atomic transactions has had a | ||||
| ll | ||||
| normative language removed and is now entirely descriptive (normative language r | ||||
| etained | ||||
| in the non-example portion). | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-clue-protocol-14 reviewed for relevant changes, and use of CLUE ACK a | ||||
| nd | ||||
| RESPONSE messages made consistent with that document (ADVERTISEMENT ACKNOWLEDGEM | ||||
| ENT and | ||||
| CONFIGURE RESPONSE respectively). | ||||
| </t> | ||||
| <t> | ||||
| Order of authors revised to reflect updates since Jan 2014. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-12:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Title change to expand and elucidate our totally-not-contrived acronym | ||||
| </t> | ||||
| <t> | ||||
| Explicit reference to RFC3840 added when first mentioning media feature tags | ||||
| </t> | ||||
| <t> | ||||
| Have standardised references to Clue protocol messages to ADVERTISEMENT, CONFIGU | ||||
| RE and ACK, in line with section 12.4.1. of the protocol document (though the pr | ||||
| otocol document also uses ADV and CONF). | ||||
| </t> | ||||
| <t> | ||||
| 'MUST' in opening paragraph of 4.2 changed from normative 'MUST' to logical 'mus | ||||
| t' | ||||
| </t> | ||||
| <t> | ||||
| Per his request, removed Cristian's company affiliation and changed his email ad | ||||
| dress | ||||
| </t> | ||||
| <t> | ||||
| Clarified that an implementation that chooses not to send media during the initi | ||||
| al negotiation process must still send RTCP as normal | ||||
| </t> | ||||
| <t> | ||||
| Rewrote the section on adding/remove clue m-lines after the initial exchange to | ||||
| make clear that this is just standard SDP. For non-clue controlled lines, recomm | ||||
| ended they are deactivated by zeroing the port when turning them off after clue | ||||
| is successfully negotiated. | ||||
| </t> | ||||
| <t> | ||||
| Added guidance that an initial offer containing clue-controlled m-lines MUST NOT | ||||
| set them bundle-only unless they somehow know the far end actually supports BUN | ||||
| DLE | ||||
| </t> | ||||
| <t> | ||||
| Added section saying that CLUE devices that do BUNDLE SHOULD do rtcp-mux, but th | ||||
| at the requirement doesn't exist in the other direction (eg, supporting rtcp-mux | ||||
| does not require or imply the need to implement BUNDLE) | ||||
| </t> | ||||
| <t> | ||||
| For clue-controlled m-lines where the sender included more encodings than the re | ||||
| cipient wants, have standardised on using "a=inactive" to not receive RTP on the | ||||
| m (previously had a mix of "a=inactive" or port 0, or in some cases did not spec | ||||
| ify). | ||||
| </t> | ||||
| <t> | ||||
| Page break added before the big ladder diagram in the example | ||||
| </t> | ||||
| <t> | ||||
| Have added a direction attribute to the SDP example in the data channel, and mad | ||||
| e explicit that Bob is the DTLS client and hence the CLUE Channel Initiator. | ||||
| </t> | ||||
| <t> | ||||
| Have removed all language that referenced the possibility of having multiple CLU | ||||
| E groups | ||||
| </t> | ||||
| <t> | ||||
| Removed names appearing in the authors list from the acknowledgements | ||||
| </t> | ||||
| <t> | ||||
| Changed the contact for the IANA registration to iesg@ietf.org | ||||
| </t> | ||||
| <t> | ||||
| Security section updated to clarify that DTLS-SRTP must be supported (as opposed | ||||
| to DTLS) and removed the reference to RFC7202. | ||||
| </t> | ||||
| <t> | ||||
| Other syntactic tweaks based on Paul and Adam's feedback | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-11:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Some informative references added for SIP and SDP. | ||||
| </t> | ||||
| <t> | ||||
| 'a=mid' lines added to example m-lines with port 0, per RFC5888 section 6. | ||||
| </t> | ||||
| <t> | ||||
| Instace of 'must' changed to normative 'MUST', along with various minor | ||||
| clarifications and corrections. | ||||
| </t> | ||||
| <t> | ||||
| Abstract made standalone without citations, per RFC7322 section 4.3. | ||||
| </t> | ||||
| <t> | ||||
| RFC editor note added to remove this section. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-10:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Changes to draft-ietf-clue-protocol between 07 and 11 reviewed to ensure | ||||
| compatibility between documents has been maintained. | ||||
| </t> | ||||
| <t> | ||||
| Expanded the portion of the document related to fingerprinting with info on | ||||
| the CLUE channel as well as SIP. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-09:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| A few minor spelling tweaks | ||||
| </t> | ||||
| <t> | ||||
| Made removing the CLUE group mandatory when disabling CLUE mid-call. Made | ||||
| clear that any CLUE-controlled m-lines should be disabled or else how they're | ||||
| used is up to the implementation. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-08:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Spelling and grammar fixes from Paul and Christian gratefully adopted | ||||
| </t> | ||||
| <t> | ||||
| Expanded the section on disabling CLUE mid-call to make explicit the actions | ||||
| required to disable the CLUE channel gracefully, or to handle someone else | ||||
| doing the same. | ||||
| </t> | ||||
| <t> | ||||
| Made a number of fixes to the example call flow to better reflect the | ||||
| recommendations in the document. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-07:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Removed the entire 'Media line directionality' section as a discussion of the | ||||
| pros/cons of using bidirectional vs unidirectional schemes wasn't suitable for | ||||
| a finalised version. The unidirectionality requirement is covered normatively | ||||
| in an earlier section. | ||||
| </t> | ||||
| <t> | ||||
| BUNDLE no longer includes an address synchronisation step so the suggestion | ||||
| to wait until that done has been replaced with some general language about | ||||
| following any negotiated extensions. | ||||
| </t> | ||||
| <t> | ||||
| Added OPTIONS negotiation to the example flow, and revised the flow to ensure | ||||
| it matched protocol document. | ||||
| </t> | ||||
| <t> | ||||
| Section on not sending CLUE control media until CLUE negotiation completes | ||||
| narrowed to notify that only RTP should not be sent until negotiation | ||||
| completes and add RTCP to the list of things that should be sent as normal, in | ||||
| line with a=inactive. | ||||
| </t> | ||||
| <t> | ||||
| Make explicit that m=recvonly lines don't need to have a label, as only | ||||
| m=sendonly lines are referenced by CLUE protocol messages. | ||||
| </t> | ||||
| <t> | ||||
| Fix formatting of IANA sections. Improve syntax of feature tag section in line | ||||
| with Paul's suggestions. Definition of feature tag narrowed to be multiple | ||||
| media lines *negotiated via CLUE protocol* rather than more generic 'multiple | ||||
| media lines'. | ||||
| </t> | ||||
| <t> | ||||
| General corrections to grammar, spelling and readability based on Christian, | ||||
| Paul and Mark; in many cases suggested text was gratefully accepted. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-06:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| State machine interactions updated to match versions in -04 of protocol doc. | ||||
| </t> | ||||
| <t> | ||||
| Section on encoding updated to specify both encID and encodingID from data | ||||
| model doc. | ||||
| </t> | ||||
| <t> | ||||
| Removed the limitations on describing H264 encoding limits using SDP syntax | ||||
| as an open issue. | ||||
| </t> | ||||
| <t> | ||||
| Previous draft had SRTP and DTLS mandatory to implement and to use on CLUE- | ||||
| controlled m lines. Current version has DTLS mandatory to implement, and | ||||
| 'security' mandatory to use but does not define what that security is. | ||||
| </t> | ||||
| <t> | ||||
| Terminology reference to framework doc reinforced. All terminology that | ||||
| duplicates framework removed. All text updated with capitalisation that | ||||
| matches framework document's terminology. | ||||
| </t> | ||||
| <t> | ||||
| SDP example syntax updated to match that of ietf-clue-datachannel | ||||
| and hence ietf-mmusic-data-channel-sdpneg. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-05:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| SRTP/DTLS made mandatory for CLUE-controlled media lines. | ||||
| </t> | ||||
| <t> | ||||
| IANA consideration section added (text as proposed by Christian Groves). | ||||
| </t> | ||||
| <t> | ||||
| Includes provision for dependent streams on seperate "m" lines having the same | ||||
| encID as their parent "m" line. | ||||
| </t> | ||||
| <t> | ||||
| References to putting CLUE-controlled media and data channels in more than one | ||||
| CLUE group removed, since the document no longer supports using more than one | ||||
| CLUE group. | ||||
| </t> | ||||
| <t> | ||||
| Section on CLUE controlled media restrictions still applying even if the call | ||||
| does not end up being CLUE enabled being rewritten to hopefully be clearer. | ||||
| </t> | ||||
| <t> | ||||
| Other minor syntax improvements. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-04:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Updated DTLS/SCTP channel syntax in examples to fix errors and match latest | ||||
| format defined in draft-ietf-mmusic-sctp-sdp-07. | ||||
| </t> | ||||
| <t> | ||||
| Clarified the behaviour if an SDP offer includes a CLUE-controlled "m" line | ||||
| and the answer accepts that "m" line but without CLUE control of that line. | ||||
| </t> | ||||
| <t> | ||||
| Added a new section on the sending and receiving of CaptureIDs in RTP and | ||||
| RTCP. Includes a section on the necessity of the receiver coping with | ||||
| unexpected CaptureIDs (or the lack thereof) due to MCCs being redefined in | ||||
| new Advertisement messages. | ||||
| </t> | ||||
| <t> | ||||
| Added reminder on IANA section on registering grouping semantic and media | ||||
| feature tag, removed the less formal sections that did the same job. | ||||
| </t> | ||||
| <t> | ||||
| Fixed and clarified issues raised by Christian's document review. | ||||
| </t> | ||||
| <t> | ||||
| Added a number of security considerations. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-03:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Clarified text on not rejecting messages because they contain unknown encIDs. | ||||
| </t> | ||||
| <t> | ||||
| Removed normative language in section on accepting/rejecting | ||||
| non-CLUE-controlled media in the initial answer. | ||||
| </t> | ||||
| <t> | ||||
| Example SDP updated to include the data channel "m" lines. | ||||
| </t> | ||||
| <t> | ||||
| Example call flow updated to show disablement of non-CLUE-controlled media | ||||
| once CLUE-controlled media is flowing. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-02:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Added section on not accepting non-CLUE-controlled "m" lines in the initial | ||||
| answer when CLUE is to be negotiated. | ||||
| </t> | ||||
| <t> | ||||
| Removed previous language attempting to describe media restrictions | ||||
| for CLUE-controlled "m" lines that had not been configured, and replaced | ||||
| it with much more accurate 'treat as "a=inactive" was set'. | ||||
| </t> | ||||
| <t> | ||||
| Made label element mandatory for CLUE-controlled media (was previously | ||||
| "SHOULD include", but there didn't seem a good reason for this - anyone | ||||
| wishing to include the "m" line but not immediately use it in CLUE can simply | ||||
| leave it out of the <encodingIDList>.) | ||||
| </t> | ||||
| <t> | ||||
| Added a section on the specifics of relating encodings in SDP to <encID> | ||||
| elements in the CLUE protocol, including the fact that both Advertisement and | ||||
| Configure messages reference the *encoding* (eg, in the Configure case the | ||||
| sender of the Configure message includes the labels of the recipient's "m" | ||||
| lines as their <encID> contents). | ||||
| </t> | ||||
| <t> | ||||
| Minor revisions to the section on complying with normative SDP/CLUEstate | ||||
| machine language to clarify that these were not new normative language, merely | ||||
| that existing normative language still applies. | ||||
| </t> | ||||
| <t> | ||||
| Removed appendices which previously contained information to be transferred | ||||
| to the protocol and data channel drafts. Removed other text that | ||||
| discussed alternatives to the current approach. | ||||
| </t> | ||||
| <t> | ||||
| Cleaned up some 'todo' text. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-01:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Revised terminology - removed the term 'CLUE-enabled' device as insufficiently | ||||
| distinct from 'CLUE-capable' and instead added a term for 'CLUE-enabled' | ||||
| calls. | ||||
| </t> | ||||
| <t> | ||||
| Removed text forbidding RTCP and instead added text that ICE/DTLS negotiation | ||||
| for CLUE controlled media must be done as normal irrespective of CLUE | ||||
| negotiation. | ||||
| </t> | ||||
| <t> | ||||
| Changed 'sip.telepresence' to 'sip.clue' and 'TELEPRESENCE' grouping semantic | ||||
| back to CLUE. | ||||
| </t> | ||||
| <t> | ||||
| Made it mandatory to have exactly one mid corresponding to a data channel in a | ||||
| CLUE group | ||||
| </t> | ||||
| <t> | ||||
| Forbade having multiple CLUE groups unless a specification for doing so is | ||||
| published. | ||||
| </t> | ||||
| <t> | ||||
| Refactored SDP-related text; previously the encoding information had been in | ||||
| the "initial offer" section despite the fact that we recommend that the | ||||
| initial offer doesn't actually include any encodings. I moved the | ||||
| specifications of encodings and how they're received to an earlier, seperate | ||||
| section. | ||||
| </t> | ||||
| <t> | ||||
| Added text on how the state machines in CLUE and SDP are allowed to affect one | ||||
| another, and further recommendations on how a device should handle the sending | ||||
| of CLUE and SDP changes. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="-00:"> Revision by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Submitted as -00 working group document | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="draft-kyzivat-08:"> Revisions by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Added media feature tag for CLUE support ('sip.telepresence') | ||||
| </t> | ||||
| <t> | ||||
| Changed grouping semantic from 'CLUE' to 'TELEPRESENCE' | ||||
| </t> | ||||
| <t> | ||||
| Restructured document to be more centred on the grouping semantic and its use | ||||
| with O/A | ||||
| </t> | ||||
| <t> | ||||
| Lots of additional text on usage of the grouping semantic | ||||
| </t> | ||||
| <t> | ||||
| Stricter definition of CLUE-controlled m lines and how they work | ||||
| </t> | ||||
| <t> | ||||
| Some additional text on defining what happens when CLUE supports is added or | ||||
| removed | ||||
| </t> | ||||
| <t> | ||||
| Added details on when to not send RTCP for CLUE-controlled "m" lines. | ||||
| </t> | ||||
| <t> | ||||
| Added a section on using BUNDLE with CLUE | ||||
| </t> | ||||
| <t> | ||||
| Updated data channel references to point at new WG document rather than | ||||
| indivual draft | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="draft-kyzivat-07:"> Revisions by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Removed the text providing arguments for encoding limits being in SDP and | ||||
| Encoding Groups in the CLUE protocol in favor of the specifics of how to | ||||
| negotiate encodings in SDP | ||||
| </t> | ||||
| <t> | ||||
| Added normative language on the setting up of a CLUE call, and added sections | ||||
| on mid-call changes to the | ||||
| CLUE status. | ||||
| </t> | ||||
| <t> | ||||
| Added references to <xref target="I-D.ietf-clue-datachannel" /> where | ||||
| appropriate. | ||||
| </t> | ||||
| <t> | ||||
| Added some terminology for various types of CLUE and non-CLUE states of | ||||
| operation. | ||||
| </t> | ||||
| <t> | ||||
| Moved language related to topics that should be in | ||||
| <xref target="I-D.ietf-clue-datachannel" /> and | ||||
| <xref target="I-D.ietf-clue-protocol" />, but that has not yet been resolved | ||||
| in those documents, into | ||||
| an appendix. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="draft-kyzivat-06:"> Revisions by Rob Hansen | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Removed CLUE message XML schema and details that are now in | ||||
| draft-presta-clue-protocol | ||||
| </t> | ||||
| <t> | ||||
| Encoding limits in SDP section updated to note that this has been investigated | ||||
| and discussed and is the current working assumption of the WG, though | ||||
| consensus has not been fully achieved. | ||||
| </t> | ||||
| <t> | ||||
| A section has also been added on the current mandation of unidirectional | ||||
| "m" lines. | ||||
| </t> | ||||
| <t> | ||||
| Updated CLUE messaging in example call flow to match | ||||
| draft-presta-clue-protocol-03 | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="draft-kyzivat-05:"> Revisions by pkyzivat: | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Specified versioning model and mechanism. | ||||
| </t> | ||||
| <t> | ||||
| Added explicit response to all messages. | ||||
| </t> | ||||
| <t> | ||||
| Rearranged text to work with the above changes. | ||||
| (Which rendered diff almost useless.) | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t hangText="draft-kyzivat-04:"> Revisions by Rob Hansen: ???</t> | ||||
| <t hangText="draft-kyzivat-03:"> Revisions by pkyzivat: | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Added a syntax section with an XML schema for CLUE messages. | ||||
| This is a strawhorse, and is very incomplete, but it establishes | ||||
| a template for doing this based on elements defined in the data model. | ||||
| (Thanks to Roberta for help with this!) | ||||
| </t> | ||||
| <t> | ||||
| Did some rewording to fit the syntax section in and reference it. | ||||
| </t> | ||||
| <t> | ||||
| Did some relatively minor restructuring of the document to make | ||||
| it flow better in a logical way. | ||||
| </t> | ||||
| </list> | ||||
| </t> | <name>References</name> | |||
| <t hangText="draft-kyzivat-02:"> A bunch of revisions by pkyzivat: | <references> | |||
| <list style='symbols'> | <name>Normative References</name> | |||
| <t> | ||||
| Moved roberta's call flows to a more appropriate place in the document. | ||||
| </t> | ||||
| <t> | ||||
| New section on versioning. | ||||
| </t> | ||||
| <t> | ||||
| New section on NAK. | ||||
| </t> | ||||
| <t> | ||||
| A couple of possible alternatives for message acknowledgment. | ||||
| </t> | ||||
| <t> | ||||
| Some discussion of when/how to signal changes in provider state. | ||||
| </t> | ||||
| <t> | ||||
| Some discussion about the handling of transport errors. | ||||
| </t> | ||||
| <t> | ||||
| Added a change history section. | ||||
| </t> | ||||
| </list> | ||||
| These were developed by Lennard Xiao, Christian Groves and Paul, | ||||
| so added Lennard and Christian as authors. | ||||
| </t> | <!--draft-ietf-clue-framework-25 is 8845 --> | |||
| <t hangText="draft-kyzivat-01:"> | <reference anchor='RFC8845' target='https://www.rfc-editor.org/info/rfc8845'> | |||
| <front> | ||||
| <title>Framework for Telepresence Multi-Streams</title> | ||||
| <author initials='M' surname='Duckworth' fullname='Mark Duckworth' role='editor' | ||||
| > | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='A' surname='Pepperell' fullname='Andrew Pepperell'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='S' surname='Wenger' fullname='Stephan Wenger'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='January' year='2021' /> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8845' /> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8845' /> | ||||
| </reference> | ||||
| Updated by roberta to include some sample call flows. | <!-- &I-D.ietf-clue-data-model-schema; is 8846--> | |||
| <reference anchor="RFC8846" target="http://www.rfc-editor.org/info/rfc8846"> | ||||
| <front> | ||||
| <title>An XML Schema for the Controlling Multiple Streams for Telepr | ||||
| esence (CLUE) Data Model</title> | ||||
| <author initials="R" surname="Presta" fullname="Roberta Presta"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="S P." surname="Romano" fullname="Simon Romano"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8846"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8846"/> | ||||
| </reference> | ||||
| </t> | <!--draft-ietf-clue-protocol-19 is 8847 --> | |||
| <t hangText="draft-kyzivat-00:"> | <reference anchor='RFC8847' target='https://www.rfc-editor.org/info/rfc8847'> | |||
| <front> | ||||
| <title>Protocol for Controlling Multiple Streams for Telepresence (CLUE)</title> | ||||
| <author initials='R' surname='Presta' fullname='Roberta Presta'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='S P.' surname='Romano' fullname='Simon Pietro Romano'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='January' year='2021' /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8847" /> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8847' /> | ||||
| </reference> | ||||
| Initial version by pkyzivat. Established general outline for the document, | <!--draft-ietf-clue-datachannel-18 is 8850 --> | |||
| and specified a few things thought to represent wg consensus. | <reference anchor="RFC8850" target="https://www.rfc-editor.org/info/rfc8850"> | |||
| <front> | ||||
| <title>Controlling Multiple Streams for Telepresence (CLUE) Protocol Data | ||||
| Channel</title> | ||||
| <author initials="C." surname="Holmberg" fullname="Christer Holmberg"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8850"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8850"/> | ||||
| </reference> | ||||
| </t> | <!--draft-ietf-clue-rtp-mapping-14: 8849 --> | |||
| </list></t> | <reference anchor='RFC8849' target="https://www.rfc-editor.org/info/rfc8849"> | |||
| </section> | <front> | |||
| <title>Mapping RTP Streams to Controlling Multiple Streams for Telepresence | ||||
| (CLUE) Media Captures</title> | ||||
| <author initials='R' surname='Even' fullname='Roni Even'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='J' surname='Lennox' fullname='Jonathan Lennox'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='January' year='2021' /> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8849' /> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8849"/> | ||||
| </reference> | ||||
| </middle> | <!-- draft-ietf-mmusic-sctp-sdp --> | |||
| <reference anchor="RFC8841" target="https://www.rfc-editor.org/info/rfc8841"> | ||||
| <front> | ||||
| <title>Session Description Protocol (SDP) Offer/Answer Procedures for | ||||
| Stream Control Transmission Protocol (SCTP) over Datagram Transport Layer | ||||
| Security (DTLS) Transport</title> | ||||
| <author initials="C." surname="Holmberg" fullname="Christer Holmberg"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials="R." surname="Shpount" fullname="Roman Shpount"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials="S." surname="Loreto" fullname="Salvatore Loreto"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials="G." surname="Camarillo" fullname="Gonzalo Camarillo"> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month="January" year="2021" /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8841" /> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8841"/> | ||||
| </reference> | ||||
| <back> | <!--draft-ietf-mmusic-data-channel-sdpneg-28; in REF - part of C238--> | |||
| <references title="Normative References"> | <reference anchor="RFC8864" target="https://www.rfc-editor.org/info/rfc8864"> | |||
| <?rfc include="reference.I-D.ietf-clue-framework"?> | <front> | |||
| <?rfc include="reference.I-D.ietf-clue-data-model-schema"?> | <title>Negotiation Data Channels Using the Session Description | |||
| <?rfc include="reference.I-D.ietf-clue-protocol"?> | Protocol (SDP)</title> | |||
| <?rfc include="reference.I-D.ietf-clue-datachannel"?> | <author fullname="Keith Drage" initials="K." surname="Drage"> | |||
| <?rfc include="reference.I-D.ietf-clue-rtp-mapping"?> | <organization>Unaffiliated</organization> | |||
| <?rfc include="reference.I-D.ietf-rtcweb-data-channel"?> | </author> | |||
| <?rfc include="reference.I-D.ietf-mmusic-sctp-sdp"?> | <author fullname="Raju Makaraju" initials="M." surname="Makaraju"> | |||
| <?rfc include="reference.I-D.ietf-mmusic-data-channel-sdpneg"?> | <organization>Nokia</organization> | |||
| <?rfc include="reference.I-D.ietf-mmusic-sdp-bundle-negotiation"?> | </author> | |||
| <?rfc include="reference.RFC.2119"?> | <author fullname="Richard Ejzak" initials="R." surname="Ejzak"> | |||
| <?rfc include="reference.RFC.3711"?> | <organization>Unaffiliated</organization> | |||
| <?rfc include="reference.RFC.3840"?> | </author> | |||
| <?rfc include="reference.RFC.4574"?> | <author fullname="Jerome Marcon" initials="J." surname="Marcon"> | |||
| <?rfc include="reference.RFC.5763"?> | <organization>Unaffiliated</organization> | |||
| <?rfc include="reference.RFC.5888"?> | </author> | |||
| <?rfc include="reference.RFC.8174"?> | <author fullname="Roni Even" initials="R." surname="Even" role="editor"> | |||
| </references> | <organization>Huawei</organization> | |||
| <references title="Informative References"> | </author> | |||
| <?rfc include="reference.RFC.2506"?> | <date month="January" year="2021"/> | |||
| <?rfc include="reference.RFC.3261"?> | </front> | |||
| <?rfc include="reference.RFC.3264"?> | <seriesInfo name="RFC" value="8864"/> | |||
| <?rfc include="reference.RFC.3311"?> | <seriesInfo name="DOI" value="10.17487/RFC8864"/> | |||
| <?rfc include="reference.RFC.4566"?> | </reference> | |||
| <?rfc include="reference.RFC.8445"?> | ||||
| <?rfc include="reference.RFC.5630"?> | ||||
| <?rfc include="reference.RFC.5761"?> | ||||
| <?rfc include="reference.RFC.6184"?> | ||||
| </references> | ||||
| </back> | <!-- draft-ietf-mmusic-sdp-bundle-negotiation (RFC 8843) --> | |||
| <reference anchor="RFC8843" target="https://www.rfc-editor.org/info/rfc8843" | ||||
| > | ||||
| <front> | ||||
| <title>Negotiating Media Multiplexing Using the Session Description Prot | ||||
| ocol (SDP)</title> | ||||
| <author initials="C" surname="Holmberg" fullname="Christer Holmberg"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="H" surname="Alvestrand" fullname="Harald Alvestrand"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="C" surname="Jennings" fullname="Cullen Jennings"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8843"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8843"/> | ||||
| </reference> | ||||
| <!-- draft-ietf-rtcweb-data-channel: 8831 --> | ||||
| <reference anchor="RFC8831" target="https://www.rfc-editor.org/info/rfc8831"> | ||||
| <front> | ||||
| <title>WebRTC Data Channels</title> | ||||
| <author initials="R" surname="Jesup" fullname="Randell Jesup"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="S" surname="Loreto" fullname="Salvatore Loreto"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month='January' year='2021'/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8831"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8831"/> | ||||
| </reference> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.2119.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3711.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3840.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.4574.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.5763.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.5888.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8174.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.2506.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3261.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3264.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3311.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.4566.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.5630.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.5761.xml"/> | ||||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 6184.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8445.xml"/> | ||||
| </references> | ||||
| </references> | ||||
| <section numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t> | ||||
| Besides the authors, the team focusing on this document consists of: | ||||
| <contact fullname="Roni Even"/>, <contact fullname="Simon Pietro Romano"/>, and | ||||
| <contact fullname="Roberta Presta"/>. | ||||
| </t> | ||||
| <t> | ||||
| <contact fullname="Christian Groves"/>, <contact fullname="Jonathan Lennox"/>, a | ||||
| nd <contact fullname="Adam Roach"/> have contributed detailed | ||||
| comments and suggestions. | ||||
| </t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 225 change blocks. | ||||
| 1410 lines changed or deleted | 1035 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||