Network Working Group | S. Nandakumar |
Internet-Draft | C. Jennings |
Intended status: Informational | Cisco |
Expires: August 22, 2013 | February 18, 2013 |
Glareless addition of media to existing RTCWeb Sessions
draft-nandakumar-rtcweb-glare-handling-00.txt
The RFC3264 Offer/Answer model specifies rule for the bilateral exchange of Session Description Protocol (SDP) [RFC4566] messages for setting up, updating and tearing down of multimedia streams. Rarely, there might be situations wherein either of the communicating parties, might end up being the offerer for updating an on-going session. This scenario is commonly known as "glare" condition and it needs to be handled nevertheless. This specification describes procedures for parties involved in an ongoing RTCWeb session to add new media in a glareless fashion.
There are various ways this problem might be solved - this draft sketches out one possible solution to the problem.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 22, 2013.
Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
In the most basic form,the RFC3264 [RFC3264] protocol operation begins by one of the participants sending an initial SDP offer describing its intent to start a multimedia communication session. The participant receiving the offer MAY generate an SDP answer accepting the offer or it MAY reject the offer. Once the session is setup, at any time, either agent MAY generate a new offer that updates the session. However, it MUST NOT generate a new offer if it has received an offer which it has not yet been answered or rejected. If an agent receives an offer after having sent one, but before receiving an answer to it,the situation is considered as "glare" condition.
This specification defines set of procedures for RTCWeb end-points to add new media to an ongoing session in a glareless fashion. The rest of this document is organized as follow. Section 2 provides motivation for dealing with glare condition. Section 3 explains the detailed call-flows with examples describing the solution proposed in this specification. Finally Section 4 concludes with a note on applicability.
The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
m-line: An RFC4566 [RFC4566] media description identifier that starts with "m=" field and conveys following values:media type,transport port,transport protocol and media format descriptions.
m-block: An RFC4566 [RFC4566] media description that starts with an m-line and is terminated by either the next m-line or by the end of the session description.
Offer: An [RFC3264] SDP message generated by the participant who wishes to initiate a multimedia communication session. An Offer describes participants capabilities for engaging in a multimedia session.
Answer: An [RFC3264] SDP message generated by the participant in response to an Offer. An Answer describes participants capabilities in continuing with the multimedia session with in the constraints of the Offer.
The following example serves as base case for "glare" condition that will be discussed throughout this document in the context of the proposed solution.
End points stuck in the "glare" condition stay there forever unless the condition is resolved either by some higher layer protocol mechanisms or by some application logic. An example for the former is SIP [RFC3261] that provides means for ordering of messages in each direction to resolve "glare" condition. This documents proposes a case for the latter.
Here is the basic outline of the solution described herein.
Following represent the basic ideas and the requirements for the proposed solution to perform glareless addition of new media.
Below is the high-level call flow that captures the procedure for adding one-way video to an ongoing RTCWeb session in a glareless fashion. Also to note, the call-flow captures the proposed solution from the Alice's perspective alone due to the implied symmetry.
title Glareless One-Way Video Add participant Alice_PC participant Alice_JS participant BOB_JS participant BOB_PC note over Alice_PC, BOB_PC On-Going RTP Session with any combination of audio and/or video and/or data-channel. end note note over Alice_JS, BOB_JS Alice and Bob's JS application have local copies of the most recent successfully negotiated SDP end note Alice_JS->Alice_PC: AddStream(Video) Alice_JS->+Alice_PC: CreateOffer() Alice_PC-->-Alice_JS:offer with video sendonly. Alice_JS->Alice_PC: ExpectedAnswer w/video inactive Alice_JS->BOB_JS: m-block offer for added video source BOB_JS->BOB_JS: Merge m-block to local set BOB_JS->BOB_JS: Generate Offer from the local set BOB_JS->BOB_PC: SetRemoteDesc(Offer) BOB_JS->+BOB_PC: CreateAnswer() BOB_PC-->-BOB_JS: answer with video recvonly BOB_JS->BOB_JS: ReMap answer to local set BOB_JS->Alice_JS:m-block answer accepting the video stream Alice_JS->Alice_JS: Merge Bob's m-block to generate updated offer Alice_JS->Alice_PC: SetRemoteDesc() w/updated offer Alice_JS->+Alice_PC: CreateAnswer() Alice_PC-->-Alice_JS: answer with video recv-only Alice_JS->Alice_JS: Check for Success/Failure note left of Alice_JS For success, the m-block values from the generated answer MUST match with the corresponding values in the local set matched by their MIDs end note
The table below provides step-by-step analysis of various states as reflected at Alice's and Bob's end point when applied to example mentioned in the Motivation section Section 3
Only the relevant aspects of SDP media descriptions are captures for the sake of clarity.
Timeline | Alice's JS View | Bob's JS View |
---|---|---|
t+0 | Local Set: m=audio (sendrecv) | Local Set: m=audio (sendrecv) |
t+1 | AddStream(Video)-sendonly | AddStream(Video)-sendonly |
t+2 | CreateOffer with m=audio,m=video[mid:1,sendonly] | CreateOffer with m=audio,m=video[mid:2,sendonly] |
t+3 | Generate ExpectedAnswer with m=audio,m=video[mid:1,inactive] | Generate ExpectedAnswer with m=audio,m=video[mid:2,inactive] |
t+4 | Install ExpectedAnswer | Install ExpectedAnswer |
t+5 | Send video m-block [mid:1,sendonly] | Send video m-block [mid:2,sendonly] |
t+6 | Video m-block [mid:2,sendonly] Arrives | Video m-block [mid:1,sendonly] Arrives |
t+7 | Merge/Update Local Set | Merge/Update Local Set |
t+8 | LocalSet:m=audio,m=video[mid:1,sendonly],m=video[mid:2,sendonly] | Local Set:m=audio,m=video[mid:2,sendonly],m=video[mid:1,sendonly] |
t+9 | Install RemoteDescription | Install RemoteDescription |
t+10 | CreateAnswer m=audio,m=video[mid:1,sendonly] m=video[mid:2,recvonly] | CreateAnswer for m=audio,m=video[mid:1,recvonly] m=video[mid:2,sendonly] |
t+11 | Merge/Update Local Set | Merge/Update Local Set |
t+12 | Local Set:m=audio,m=video[mid:1,sendonly],m=video[mid:2 recvonly] | Local Set:m=audio,m=video[mid:2,sendonly],m=video[mid:1,recvonly] |
t+13 | Send video m-block [mid:2,recvonly] | Send video m-block [mid:1,recvonly] |
t+14 | Video m-block [mid:1,recvonly] Arrives | Video m-block [mid:2 recvonly] Arrives |
t+15 | Install updated Offer m=audio,m=video[mid:1 recvonly],m=video[mid:2,recvonly] | Generate Update Offer m=audio,m=video[mid:1 recvonly],m=video[mid:2,recvonly] |
t+16 | Create Answer with m=audio,m=video[mid:1 sendonly],m=video[mid:2 recvonly] | Create Answer with m=audio,m=video[mid:1 recvonly],m=video[mid:2,sendonly] |
t+17 | Compare Local Set and generated Answer | Compare Local Set and generated Answer |
t+18 | Local Set at t+12 matches with Answer m-blocks at t+16 | Local Local Set at t+12 matches with Answer m-blocks at t+16 |
As mentioned earlier, generating an Offer from the Answer created in response to m-block received from the Answerer might fail due to possible mismatches in the configurations between Offered m-block, applied Expected Answer and the actual Answer received from the Answerer.
On the other hand, this solution works best in all the cases where the first side can easily predict what the far side's answer will be. Given that the Offerer offering a capability that is supposed to fail on purpose is a rarity and also given the higher chances of Offer(s) being accepted in practice, we believe this solution should enable successful glareless media addition with high frequency.
TBD
This document requires no actions from IANA.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC3264] | Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002. |
[RFC4566] | Handley, M., Jacobson, V. and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006. |
[RFC3261] | Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002. |
[RFC5888] | Camarillo, G. and H. Schulzrinne, "The Session Description Protocol (SDP) Grouping Framework", RFC 5888, June 2010. |
[I-D.alvestrand-mmusic-msid] | Alvestrand, H., "Cross Session Stream Identification in the Session Description Protocol", Internet-Draft draft-alvestrand-mmusic-msid-02, December 2012. |