W3C home > Mailing lists > Public > public-webrtc@w3.org > February 2012

Re: [rtcweb] Single offer with multiple answer handling in JSEP [was RE: New JSEP draft posted]

From: Justin Uberti <juberti@google.com>
Date: Mon, 20 Feb 2012 23:50:10 -0500
Message-ID: <CAOJ7v-3POhmSDX5u-JWDD8fq_tzaqvq=B_r3t3POtn+_m1wdrQ@mail.gmail.com>
To: "Ravindran, Parthasarathi" <pravindran@sonusnet.com>
Cc: Cullen Jennings <fluffy@iii.ca>, "rtcweb@ietf.org" <rtcweb@ietf.org>, "public-webrtc@w3.org" <public-webrtc@w3.org>
Partha,

Thanks for these example flows. I'm out on vacation this week but will try
to distill and incorporate the consensus on this topic when I return.

Regards,
--justin

On Sun, Feb 19, 2012 at 2:25 PM, Ravindran, Parthasarathi <
pravindran@sonusnet.com> wrote:

> Cullen,
>
> As I mentioned below, the problem statement is for multiple answer and
> multiple 200 is one of the IETF SIP (RFC 3261) defined multiple answer
> usecase. Deployed (real) SIP world usecase for multiple answer exists in
> form of 18x with answer1 and 2xx with answer2 for INVITE offer. I
> worked/interoped with multiple well deployed implementation which supports
> "receiving" multiple answer with slight different variance (and no UPDATE
> [RFC 3311] in the middle) and I'm sure more implementation exists. The
> reason for allowing "receiving" multiple answer is leniency while receiving
> the SIP message which is generally accepted in Product development. Even
> though some of the deployed implementation violates RFC 3264 for the noble
> reason of reducing the number of SIP messages (no UPDATE Offer/answer
> transaction after 18x) for the basic call, it is possible to make those
> implementation SIP RFC compliance by changing 18x To-Tag, Please look into
> "18x with SDP and 2xx with different SDP & To Tag" attachment for more
> details.
>
> Also, 18x with SDP and 2xx without SDP is the another set implementation
> exists as mentioned in "18x with SDP and 2xx without SDP" attachment. In
> case these details are not enough, I'll add Multiple 18x with different 2xx
> callflow later.
>
> Keeping aside SIP deployment, I'm still not convinced why browser MUST be
> restricted from multiple answer as I didn't see the technical reason for
> restricting. As I mentioned, Fixed-Mobile application is possible to
> implement using this mechanism and WebRTC shall provide the building block
> for it.  The callflow is shown in "Single Offer Multiple Answer callflow"
> example.
>
> AFAIK, offer results in RTP port allocation in the resource manager and
> SRTP key generation. In case first answer is received, those resources are
> required irrespective of multiple answer will receive or not. In case your
> argument is about pre-allocated (RSVP kind of) bandwidth for offer, those
> specific WebRTC applications are free to reject the second answer onwards
> and consider first answer as the final answer, so this proposal in not
> limiting those applications.  Could you please clarify any other list of
> resources lock/leak in your mind due to offer for my understanding. I'm
> asking this query as I get the feeling from other mail threads that
> resource lock/leak is one of the reason for requesting final answer by you.
>
> Justin,
>
> I have added 3 callflow as a starting point for the discussion which shall
> be added later in case consensus is reached. I'll provide multiple 18x with
> different order 2xx later.
>
> Thanks
> Partha
>
> >-----Original Message-----
> >From: Cullen Jennings [mailto:fluffy@iii.ca]
> >Sent: Saturday, February 18, 2012 2:51 AM
> >To: Justin Uberti
> >Cc: Ravindran, Parthasarathi; rtcweb@ietf.org; public-webrtc@w3.org
> >Subject: Re: [rtcweb] Single offer with multiple answer handling in JSEP
> >[was RE: New JSEP draft posted]
> >
> >
> >I'm most interested in real world use cases which if they were being
> >done with SIP would result in multiple 200 being processed by the
> >browser. I have not got my head around why this would be needed yet and
> >without the use cases I'm having a hard time deciding if there is a
> >problem or not.
> >
> >
> >On Feb 16, 2012, at 7:35 PM, Justin Uberti wrote:
> >
> >> Agree it has not been addressed. I'm having some trouble understanding
> >the exact flows that we need to address here (multiple 2xx, multiple 18x
> >followed by 2xx, multiple 18x followed by multiple 2xx) but if I
> >understand correctly your suggestion was:
> >>
> >> 1) allow a setRemoteDesc(SDP_ANSWER) to follow a
> >> setRemoteDesc(SDP_ANSWER)
> >> 2) document that in this case (multiple 2xx), the JS is responsible
> >for sending BYE to the previous answerer.
> >>
> >> which sounds totally reasonable to me.
> >>
> >> If this sounds good to you, would you mind sketching out a call flow
> >that I could include in the examples section?
> >>
> >> On Thu, Feb 16, 2012 at 2:11 AM, Ravindran, Parthasarathi
> ><pravindran@sonusnet.com> wrote:
> >> Cullen/Justin,
> >>
> >> Single offer with multiple answer open item is not addressed in -02
> >version of JSEP draft. Hope you first agree this as an open item in
> >JSEP.
> >>
> >> Thanks
> >> Partha
> >>
> >> >-----Original Message-----
> >> >From: Ravindran, Parthasarathi
> >> >Sent: Wednesday, February 15, 2012 2:43 PM
> >> >To: 'Cullen Jennings'
> >> >Cc: Justin Uberti; rtcweb@ietf.org; public-webrtc@w3.org
> >> >Subject: RE: [rtcweb] Single offer with multiple answer handling in
> >> >JSEP [was RE: New JSEP draft posted]
> >> >
> >> >Cullen,
> >> >
> >> >RFC3261 references for receiving multiple 2xx in UAC which does not
> >> >fork INVITE are as follows:
> >> >
> >> ><RFC quote>
> >> >Sec 13.1 Para 3:
> >> >
> >> >Therefore, when multiple 2xx responses are received from different
> >> >remote UAs (because the INVITE forked), each 2xx establishes a
> >> >different dialog.  All these dialogs are part of the same call.
> >> >
> >> >Sec 13.2.2.4 2xx Responses
> >> >
> >> >   Multiple 2xx responses may arrive at the UAC for a single INVITE
> >> >   request due to a forking proxy.  Each response is distinguished by
> >> >   the tag parameter in the To header field, and each represents a
> >> >   distinct dialog, with a distinct dialog identifier.
> >> >
> >> >   If, after acknowledging any 2xx response to an INVITE, the UAC
> >does
> >> >   not want to continue with that dialog, then the UAC MUST terminate
> >> >   the dialog by sending a BYE request as described in Section 15.
> >> ></RFC quote>
> >> >
> >> >As per the last statements, it is upto the SIP application to decide
> >> >which one of the final 2xx response has to be included within the
> >call.
> >> >The usecase 3 is based on RFC3262 (PRACK) support wherein it is
> >> >possible to receive multiple forked 18x with SDP followed by 2xx with
> >> >or without SDP and SIP 2xx response is not tied to offer/answer
> >exchange.
> >> >
> >> >I have provided mobile to desktop as an example to justify the last
> >> >answer may be used in the offer in some JS application. As I
> >> >mentioned below, there is no need to restrict updating latest answer
> >> >for an offer in terms of API and protocol.
> >> >
> >> >Thanks
> >> >Partha
> >> >
> >> >>-----Original Message-----
> >> >>From: Cullen Jennings [mailto:fluffy@iii.ca]
> >> >>Sent: Wednesday, February 15, 2012 1:31 PM
> >> >>To: Ravindran, Parthasarathi
> >> >>Cc: Justin Uberti; rtcweb@ietf.org; public-webrtc@w3.org
> >> >>Subject: Re: [rtcweb] Single offer with multiple answer handling in
> >> >>JSEP [was RE: New JSEP draft posted]
> >> >>
> >> >>
> >> >>I'm a bit lost on use case in SIP context - assuming that the UAC
> >> >>did not fork but that a proxy or B2BUA did the forking, it seems
> >> >>like the UAC should never receive more than one final response.
> >> >>
> >> >>In the case of moving from desktop to mobile, it seems like that is
> >> >>updating the stream and would use a call flow more like update
> >> >>examples in the draft instead of trying to reuse some old answer.
> >> >>
> >> >>
> >> >>On Feb 14, 2012, at 11:24 , Ravindran, Parthasarathi wrote:
> >> >>
> >> >>> Justin,
> >> >>>
> >> >>> Some of the usecases could be
> >> >>> 1)      The same user of a website signed-in in the multiples
> >devices
> >> >>and acts as answerer,  the session establishment request to the
> >> >>identity will alert all the signed-in devices and it is possible
> >> >>that multiple devices answer to the session. Here, user may move
> >> >>from one device
> >> >>(mobile) to another device (desktop) within the session and wishes
> >> >>to continue the session with the last answer. Please note that
> >> >>website is flexible to provide this service.
> >> >>> 2)      RFC 3261 SIP UA offer/answer handling w.r.t INVITE with
> >SDP
> >> >to
> >> >>multiple 2xx with SDP handling scenario using JSEP
> >> >>> 3)      Another SIP usecase could be multiple 18x responses with
> >SDP
> >> >>for INVITE with SDP and multiple 2xx responses without SDP but order
> >> >>within 18x and 200 are not same. Say 2xx of the second 18x is
> >> >>received as the first 2xx. Here, we need to know how second 18x is
> >> >>handled and also, the subsequent 2xx is handled.
> >> >>>
> >> >>> Of course, it is possible to build more usecases around this area.
> >> >>> As
> >> >>we made signaling outside the scope of WebRTC, it is upto JS
> >> >>application to decide the order in which offer/answer happens. I'm
> >> >>not relating offer/answer FSM with session establishment state like
> >> >>18x, 2xx but I'm interested in knowing browser media plane behavior
> >> >>in different state of offer/answer handling by which JS application
> >> >>behaves consistently in all browsers.
> >> >>>
> >> >>> Thanks
> >> >>> Partha
> >> >>>
> >> >>>
> >> >>> From: Justin Uberti [mailto:juberti@google.com]
> >> >>> Sent: Tuesday, February 14, 2012 11:36 PM
> >> >>> To: Ravindran, Parthasarathi
> >> >>> Cc: rtcweb@ietf.org; public-webrtc@w3.org
> >> >>> Subject: Re: Single offer with multiple answer handling in JSEP
> >> >>> [was
> >> >>RE: [rtcweb] New JSEP draft posted]
> >> >>>
> >> >>> Partha,
> >> >>>
> >> >>> I need more information about the use case to provide an accurate
> >> >>response. As mentioned in my earlier mail, are both answers 2xx
> >> >>responses?
> >> >>>
> >> >>> On Tue, Feb 14, 2012 at 12:17 PM, Ravindran, Parthasarathi
> >> >><pravindran@sonusnet.com> wrote:
> >> >>> Hi Justin,
> >> >>>
> >> >>> In this mail thread, Let us define the behavior of multiple
> >> >>> (atleast
> >> >>two) answers for the single offer in WebRTC browser.  Now, Please
> >> >>let me know your opinion for my below mail.
> >> >>>
> >> >>> Thanks
> >> >>> Partha
> >> >>>
> >> >>> From: Justin Uberti [mailto:juberti@google.com]
> >> >>> Sent: Tuesday, February 14, 2012 9:47 PM
> >> >>>
> >> >>> To: Ravindran, Parthasarathi
> >> >>> Cc: rtcweb@ietf.org; public-webrtc@w3.org
> >> >>> Subject: Re: Single offer with multiple answer handling in JSEP
> >> >>> [was
> >> >>RE: [rtcweb] New JSEP draft posted]
> >> >>>
> >> >>>
> >> >>>
> >> >>> On Tue, Feb 14, 2012 at 6:39 AM, Ravindran, Parthasarathi
> >> >><pravindran@sonusnet.com> wrote:
> >> >>> Hi Justin,
> >> >>>
> >> >>> It will be good to mention in the JSEP draft  that multiple
> >> >>> answers
> >> >>for single offer will not lead to RTP Mixing and WebRTC client acts
> >> >>as RTP Endpoint.
> >> >>>
> >> >>> Failing the second Answer will be limiting the provision in RFC
> >> >>> 3264
> >> >>offer/answer itself as RFC 3264 supports single offer with multiple
> >> >>answer. Also, it is better to define the behavior in API rather than
> >> >>putting this scenario in the browser implementation specific. In
> >> >>simple scenarios (like alerting with one answer, connect with second
> >> >>answer), replacing the previous ANSWER will be expected behavior.
> >> >>This may not be desired behavior in case two connect responses from
> >> >>different WebRTC clients received with different answers  but there
> >> >>is no other alternative solution possible without mixing.
> >> >>>
> >> >>> Do you need to support 2 final answers, or would the provisional
> >> >>answer support provided via SDP_PRANSWER work for you?
> >> >>>
> >> >>> IMO, it is better to define it explicitly in JSEP that "latest
> >> >>> ANSWER
> >> >>to the offer will replace the existing answer is the expected
> >> >>behavior ". Also, Please mentioned that JS application is
> >responsible for
> >> >>discarding (terminating) previous ANSWER notification.   Please let
> >me
> >> >>your opinion on this closure.
> >> >>>
> >> >>> Thanks
> >> >>> Partha
> >> >>>
> >> >>> From: Justin Uberti [mailto:juberti@google.com]
> >> >>> Sent: Tuesday, February 14, 2012 7:29 PM
> >> >>> To: Ravindran, Parthasarathi
> >> >>> Cc: rtcweb@ietf.org; public-webrtc@w3.org
> >> >>> Subject: Re: Single offer with multiple answer handling in JSEP
> >> >>> [was
> >> >>RE: [rtcweb] New JSEP draft posted]
> >> >>>
> >> >>> Regarding your previous mail, an ANSWER after an ANSWER would
> >> >>> either
> >> >>fail (if we wanted to simplify), or replace the previous ANSWER
> >> >>(essentially the same as if you had done setLocalDescription(OFFER,
> >> >>localDescription) followed by setRemoteDescription(ANSWER, answer2).
> >> >>>
> >> >>> In no case would it mix the descriptions/media from both answers.
> >> >>>
> >> >>> Other comments inline below.
> >> >>>
> >> >>> On Tue, Feb 14, 2012 at 1:24 AM, Ravindran, Parthasarathi
> >> >><pravindran@sonusnet.com> wrote:
> >> >>> Hi Justin,
> >> >>>
> >> >>> Adding to my earlier mail, In case answer2 SDP is updated in
> >> >>> offerer1
> >> >>browser without notifying answerer1, then answer1 will continue to
> >> >>transmit RTP which may not be desired behavior. IMO, we need to
> >> >>define this behavior clearly in offerer side. Some of the possible
> >> >>solutions are
> >> >>>
> >> >>> 1)      offerer1 has to send atleast RTCP BYE packets towards
> >> >>answerer1 while accepting the answerer2 SDP.
> >> >>>
> >> >>> 2)      Throw callback to clear answer1 SDP towards offererJS.
> >> >>>
> >> >>>
> >> >>> The application which called setRemoteDescription twice should
> >> >>> have
> >> >>the best idea about what is going on, and therefore is responsible
> >> >>for notifying answerer1 that its answer has been discarded, if it
> >> >>makes sense to do so. No callback should be needed here.
> >> >>>
> >> >>>
> >> >>> Please let me know your opinion here.
> >> >>>
> >> >>> Thanks
> >> >>> Partha
> >> >>>
> >> >>> From: Ravindran, Parthasarathi
> >> >>> Sent: Tuesday, February 14, 2012 12:07 AM
> >> >>> To: 'Justin Uberti'; rtcweb@ietf.org; public-webrtc@w3.org
> >> >>> Subject: Single offer with multiple answer handling in JSEP [was
> >RE:
> >> >>[rtcweb] New JSEP draft posted]
> >> >>>
> >> >>> Hi Justin,
> >> >>>
> >> >>> In the draft, it is not spelled out explicitly what is the
> >> >>> expected
> >> >>behavior in offerer browser in case multiple answer is received for
> >> >>single offer. Offer/answer exchange in offerer is as follows:
> >> >>>
> >> >>> OffererJS->OffererUA: var offer = pc.createOffer(null);
> >> >>> OffererJS->OffererUA: pc.setLocalDescription(SDP_OFFER, offer);
> >> >>> OffererJS->OffererUA:  pc.setRemoteDescription(SDP_ANSWER,
> >> >>> OffererJS->answer1);
> >> >>> OffererUA->Answerer1UA: <media>
> >> >>> OffererJS->OffererUA:  pc.setRemoteDescription(SDP_ANSWER,
> >> >>> OffererJS->answer2);
> >> >>> OffererUA->Answerer?UA: <media>?
> >> >>>
> >> >>> My understanding is that "answer2" will update "answer1" in
> >> >>> browser
> >> >>and starting sending/receiving media towards answer2 media IP and
> >port.
> >> >>Could you please explain the expected behavior in offerer browser
> >> >>whether it updates the media stream based on the last answer or
> >> >>mixes both answerer.
> >> >>>
> >> >>> Thanks
> >> >>> Partha
> >> >>>
> >> >>> From: rtcweb-bounces@ietf.org [mailto:rtcweb-bounces@ietf.org] On
> >> >>Behalf Of Justin Uberti
> >> >>> Sent: Thursday, February 09, 2012 2:27 AM
> >> >>> To: rtcweb@ietf.org; public-webrtc@w3.org
> >> >>> Subject: [rtcweb] New JSEP draft posted
> >> >>>
> >> >>> Now available at http://www.ietf.org/id/draft-uberti-rtcweb-jsep-
> >> >>01.txt
> >> >>>
> >> >>> Includes changes based on implementation feedback, and I believe
> >> >>> it
> >> >>addresses most of the concerns raised in last week's interim
> >meetings:
> >> >>> - Initial documentation provided for each API call, and what state
> >> >>changes it causes
> >> >>> - More examples, including a complete basic sample application
> >> >>> - Simplified approach to trickle candidate handling
> >> >>> - Resolved concerns about how to separate SDP attributes into
> >> >>> media /
> >> >>transport
> >> >>> - Provided encapsulation for SDP blobs and ICE candidate lines, in
> >> >>> the
> >> >>event we want to change encodings or provide helper functions for JS
> >> >>> - Provided mechanism for limiting candidates to TURN-only
> >> >>> - Resolved several implementation issues
> >> >>>
> >> >>> I have not yet addressed the non-overlapping codec concern
> >> >>> mentioned
> >> >>in the interim meeting. I think there are ways of handling this
> >> >>either in the application or the implementation, but I wanted to get
> >> >>this -01 out first for feedback.
> >> >>>
> >> >>>
> >> >>>
> >> >>> _______________________________________________
> >> >>> rtcweb mailing list
> >> >>> rtcweb@ietf.org
> >> >>> https://www.ietf.org/mailman/listinfo/rtcweb
> >>
> >>
>
>
Received on Tuesday, 21 February 2012 04:51:02 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 21 February 2012 04:51:05 GMT