This section defines a new SDP Grouping Framework [
RFC 5888] extension called 'CLUE'.
The CLUE extension can be indicated using an SDP session-level '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 channel that is also included in this CLUE group.
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 document. A device
MUST NOT include more than one CLUE group in its SDP message unless it is following a specification that defines how multiple CLUE channels are signaled and is able to either determine that the other side of the SDP exchange supports multiple CLUE channels or fail gracefully in the event it does not.
The CLUE data channel [
RFC 8850] is a bidirectional data channel [
RFC 8831] used for the transport of CLUE messages, conveyed within an SCTP over DTLS connection. This channel must be established before CLUE protocol messages can be exchanged and CLUE-controlled media can be sent.
The data channel is negotiated over SDP as described in [
RFC 8864]. A CLUE-capable device wishing to negotiate CLUE
MUST also include a CLUE group in their SDP Offer or Answer and include the "mid" of the "m=" line for the data channel in that group. The CLUE group
MUST include the "mid" of the "m=" line for one (and only one) data channel.
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 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 and, when allowed by [
RFC 3264], answers.
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 CLUE protocol [
RFC 8847]. For an "m=" line to be CLUE controlled, its "mid" attribute value
MUST be included in the CLUE group. CLUE-controlled media is controlled by the CLUE protocol as negotiated on the CLUE data channel with a "mid" included in the CLUE group.
"m=" lines not specified as being under CLUE control follow normal rules for media streams negotiated in SDP as defined in documents such as [
RFC 3264].
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 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" of the corresponding "m=" line in their CLUE group.
The CLUE Framework [
RFC 8845] defines the concept of "Encodings", which represent the sender's encode ability. Each 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 "a=sendonly" attribute or as inactive with the "a=inactive" attribute.
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
Section 8.2.2 of
RFC 6184 for a list of valid parameters for representing encoder sender stream limits.
These Encodings are CLUE controlled and hence
MUST include a "mid" in the CLUE group as defined above.
In addition to the normal restrictions defined in [
RFC 3264], the stream
MUST be treated as if the "m=" line direction attribute had been set to "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 RTP packets
MUST NOT be sent until configuration is complete, while non-media packets such as STUN, RTCP, and DTLS
MUST be sent as per their relevant specifications, if negotiated.
Every "m=" line representing a CLUE Encoding
MUST contain a "label" attribute as defined in [
RFC 4574]. This label is used to identify the 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
MUST be different from the label on all other "m=" lines in the CLUE group, unless an "m=" line represents a dependent stream related to another "m=" line (such as a Forward Error Correction (FEC) stream), in which case it
MUST have the same label value as the "m=" line on which it depends.
CLUE Encodings are defined in SDP but can be referenced from CLUE protocol messages -- this is how the protocol defines which Encodings are a part of an Encoding Group (in 'advertisement' messages) and which Encoding is used to encode a specific Capture (in 'configure' messages). The labels on the CLUE-controlled "m=" lines are the references that are used in the CLUE protocol.
Each <encID> (in encodingIDList) in a CLUE 'advertisement' message
SHOULD represent an Encoding defined in SDP; the specific Encoding referenced 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 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 SDP Offer/Answer exchange.
Each <encodingID> (in captureEncodingType) in a CLUE 'configure' message
MUST represent an Encoding defined in SDP; the specific Encoding referenced is 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 corresponding to the text content of the <encodingID>.
Note that the non-atomic nature of SDP/CLUE protocol interaction may mean that there are temporary periods where an <encID>/<encodingID> in a CLUE message does not reference an SDP "m=" line, or where an Encoding represented in SDP is not referenced in a CLUE protocol message. See
Section 5 for specifics.
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.
These "m=" lines are CLUE controlled and hence
MUST include their "mid" in the CLUE group. They
MAY include a "label" attribute, but this is not required by CLUE, as only label values associated with "a=sendonly" Encodings are referenced by CLUE protocol messages.
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 convey the CLUE protocol, along with a CLUE group containing the "mid" of the data channel "m=" line.
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 beyond the "m=" line for the CLUE data channel, and it
SHOULD include at least one non-CLUE-controlled media "m=" line.
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 "sip.clue" media feature tag, the above recommendation is waived, and the initial offer
MAY contain "m=" lines for CLUE-controlled media.
With the same interoperability recommendations as for Encodings, the sender of the initial SDP Offer
MAY also include "a=recvonly" media lines to preallocate "m=" lines to receive media. Alternatively, it
MAY wait until CLUE protocol negotiation has completed before including these lines in a new offer/answer exchange -- see
Section 5 for recommendations.
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 that "m=" line, they
SHOULD negotiate data channel support for an "m=" line and include the "mid" of that "m=" line in a corresponding CLUE group.
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 include a corresponding data channel "m=" line if there are any other non-CLUE protocols it can convey over that channel, but the use of the CLUE protocol
MUST NOT be negotiated on this channel.
If the initial offer contained "a=recvonly" CLUE-controlled media lines, the recipient
SHOULD include corresponding "a=sendonly" CLUE-controlled media 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
MUST be included in the corresponding CLUE group. The recipient
MUST set the direction of the corresponding "m=" lines of any remaining "a=recvonly" CLUE-controlled media lines received in the offer to "a=inactive".
If the initial offer contained "a=sendonly" CLUE-controlled media lines, the recipient
MAY include corresponding "a=recvonly" CLUE-controlled media lines, up to the maximum number of Capture Encodings it wishes to receive. Alternatively, it
MAY wait until CLUE protocol negotiation has completed before including these lines in a new offer/answer exchange -- see
Section 5 for recommendations. The recipient
MUST set the direction of the corresponding "m=" lines of any remaining "a=sendonly" CLUE-controlled media lines received in the offer to "a=inactive".
A CLUE-controlled device implementation
MAY prefer to render initial, single-stream audio and/or video for the user as rapidly as possible, transitioning to CLUE-controlled media once that has been negotiated. Alternatively, an implementation
MAY wish to suppress initial media, only providing media once the final, CLUE-controlled streams have been negotiated.
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 rejecting non-CLUE-controlled media lines. Rejecting these "m=" lines will ensure that no non-CLUE-controlled media flows before the 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.
If the answerer chooses to send initial non-CLUE-controlled media in a CLUE-enabled call,
Section 4.5.4.1 addresses the need to disable it once the CLUE-controlled media is fully negotiated.
In the event that both the offer and answer include a data channel "m=" line with a "mid" value included in corresponding CLUE groups, CLUE has been successfully negotiated, and the call is now CLUE enabled. If not, then the call is not CLUE enabled.
In the event of successful CLUE enablement of the call, devices
MUST now begin negotiation of the CLUE channel; see [
RFC 8850] for negotiation details. If negotiation is successful, the sending of CLUE protocol messages [
RFC 8847] can begin.
A CLUE-capable device
MAY choose not to send RTP on the non-CLUE-controlled 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). However, a CLUE-capable device
MUST still be prepared to receive media on non-CLUE-controlled media lines that have been successfully negotiated as defined in [
RFC 3264].
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 a new SDP Offer following the normal rules of SDP Offer/Answer and any negotiated extensions.
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 not in use in the call. CLUE-capable devices
MUST either revert to non-CLUE behavior or terminate the call.
Subsequent offer/answer exchanges
MAY add additional "m=" lines for CLUE-controlled media or activate or deactivate existing "m=" lines per the standard SDP mechanisms.
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 the ability to receive Encodings that they desire. Devices
MAY delay adding "a=recvonly" CLUE-controlled "m=" lines until after CLUE protocol negotiation completes -- see
Section 5 for recommendations.
Once CLUE media has been successfully negotiated, devices
SHOULD ensure that 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 successfully negotiated. This deactivation may require an additional SDP exchange or may be incorporated into one that is part of the CLUE negotiation.
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 group in any subsequent offers it sends, to indicate that it is CLUE capable.
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 "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 protocol begins.
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
Section 6.6.1 of
RFC 8864: sending a new SDP Offer/Answer exchange and subsequent SCTP Stream Sequence Number (SSN) reset for the CLUE channel. It
MUST also remove the CLUE group. Without the CLUE group, any "m=" lines that were previously CLUE controlled no longer are; implementations
MAY disable them by setting their ports to 0 or
MAY continue to use them -- in the latter case, how they are used is outside the scope of this document.
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 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 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 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 group semantic, CLUE protocol messages
MUST no longer be sent.
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 are:
-
The CLUE data channel terminates, either gracefully or ungracefully, withoutany corresponding SDP renegotiation.
-
A channel error of the CLUE protocol causes it to return to the IDLE state asdefined in Section 6 of RFC 8847.
In this circumstance, implementations
SHOULD continue to transmit and receive 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 disabled mid-call by an SDP exchange as defined in
Section 4.5.4.3. Implementations
MAY choose to send such an SDP request to disable CLUE immediately or
MAY continue on in a call-preservation mode.